Haskellに文字列トークナイザーが必要でしたが、プレリュードや他のモジュールにはまだ何も定義されていないようです。Data.TextにはsplitOnがありますが、文字列をテキストにラップする必要があるため、これを使用するのは面倒です。
トークナイザーはそれほど難しくないので、1つ作成しました(複数の隣接する区切り文字を処理しませんが、必要なものにはうまく機能しました)。このようなものはすでにどこかのモジュールにあるはずだと思います。
これは私のバージョンです
tokenizer :: Char -> String -> [String]
tokenizer delim str = tokHelper delim str []
tokHelper :: Char -> String -> [String] -> [String]
tokHelper d s acc
| null pos = reverse (pre:acc)
| otherwise = tokenizer d (tail pos) (pre:acc)
where (pre, pos) = span (/=d) s
私はインターネットで他の解決策を検索し、このブログ投稿のようないくつかの議論を見つけました。
最後のコメント(2011年6月10日のMaheeによる)は特に興味深いものです。これを処理するために、単語のバージョンをより一般的に機能させてみませんか?そのような関数を検索してみましたが、見つかりませんでした。
これを行うためのより簡単な方法はありますか、それとも文字列の「トークン化」はそれほど頻繁に発生する問題ではありませんか?:)