Concurrent Clean : String2

いろいろ試しているわけですが、いまのところ、次のセッティングが一番効率がよくなるようで。

:: String2 :== String2Cons Char
:: String2Cons a = ST !{#Char}
                 | FT !(FingerTree Int String2Elem)

BLOCKSIZE :== 512

:: String2Elem = {cArr :: !{#Char}
                 ,sInd :: !Int
                 ,eInd :: !Int
                 }

これで決まりかなー、という感じ。

      • -

あ、いや、これも同じ性能だな。

:: String2 :== String2Cons Char
:: String2Cons a = ST !{#Char}
                 | FT !(FingerTree Int {#Char})

BLOCKSIZE :== 512

シンプルさでいうとこっちだから、こっちかな。