Concurrent Clean: AltEnvでの文字列表現
今作業中のAltEnvというのは、StdEnvの関数を再定義して、さらに不足している関数を補って、もっとスマートな標準ライブラリを整備しようという取り組みなのだ。
で、その中で、文字列表現として、3つの表現をサポートすることにしている。なぜ3つもサポートするかというと、パフォーマンス上の特性の違う3つに対して互換性のある関数を提供することで、チューニングを簡単に行うことができるようにするという意図がある。
選択した3つの表現とは、次の3つだ。
- [#Char]
- {#Char}
- String2 :== FingerTree Int {#Char}
もっとも一般的に使うのが{#Char}で、もっともコンパクトな表現であり、適度なサイズの文字列に対して最適なパフォーマンスを提供する。
[#Char]は、文字列の頭部に対して、パターンマッチを使った操作を行うのに適している。
String2は、長いサイズの文字列に対して、最適なパフォーマンスを提供する。
-
-
- -
-
ただ、標準のParserライブラリは、[Char]で使わないとダメなんだよな・・・
一番下のトークン化の処理は、Parserライブラリではなくて、文字列ライブラリ側で提供するというのも一案。多分、そのような扱いにする方がパフォーマンスが出ると思うから、それの方がよいかも。