String で foo ['a','b',_] = ... とか書いていたのは、Text ではどうやるのが正しい? ByteString では length が使えるから安心。ひょっとして Text でも BS でも isPrefixOf を使う?
2012-06-13 14:02:04.@tanakh String vs ByteString vs Text は、これぐらいのことが分かればいいでしょうかね? http://t.co/gR0dV8Vp
2012-06-13 14:17:40@kazu_yamamoto うーん、あとは使い分けと、相互変換と、エンコーディングと、大体の速度感覚とかそういうのもですかねえ?あとその他のIsStringで割と使われている、Ascii、FilePathとかに対応できるように、そのあたり一般の話とか。
2012-06-13 14:20:17.@tanakh すごいHaskellで、Lazy Text を紹介している意図はなんですか? Lazy は、Builder の内部構造ぐらいの位置づけだと思うんですが。
2012-06-13 14:20:31なんだかんだ言って、書き捨てのスクリプトではまだLazyほげほげをつかってしまう。Conduitでも大して面倒じゃないかもしれないけれども。
2012-06-13 14:29:57.@tanakh System.* には ByteString 版が付いてくるようになりましたが、ByteString 用の FilePath って、まだないんでしょうか?
2012-06-13 14:32:09@kazu_yamamoto ええとすいません。FilePathってのは、http://t.co/ePXvsyYP これのことです。パス区切りとかに環境依存のものを含んでしまうことを型で弾くために作られた別の型です
2012-06-13 14:33:47.@tanakh FilePath パッケージの FilePath は、最終的に何にどうやって変換するのが想定されているんでしょうか? あと、Builder とかを使わなくて、速度は大丈夫ですか?
2012-06-13 14:38:25@kazu_yamamoto パスは短いものしか想定していないのじゃないでしょうか?カレントパスとか、ホームとか、パス区切り文字やらを環境に合わせて展開したStringに最終的に変換していると思います。
2012-06-13 14:43:37速度を考えないのなら、Filesystem.Path.FilePath を encode して ByteString にし、System.*.ByteString へ渡すのがよさそう。
2012-06-13 14:51:50.@tanakh Filesystem.Path.CurrentOS を読み込まないと、encode する方法がないように見えますけど。
2012-06-13 14:57:10@kazu_yamamoto はい。しかし普通は自分ではencodeせずに、http://t.co/IROEgrGQ これ経由で使いますので。
2012-06-13 14:58:08@kazu_yamamoto はい。あとこれを使ってる http://t.co/wRamikuy これとか便利に使ってます。
2012-06-13 15:08:49system-fileio は、内部で String に変換している。おしい。GHC 7.4 以上では直接 ByteString にしてほしいところ。
2012-06-13 15:10:52