文字列を長さ1の文字列のリストに分割したい(Haskell編)

以前、Scheme では書いた。

 cf. 文字列を長さ1の文字列のリストに分割したい – blog.PanicBlanket.com

今日は Haskell でやってみよう。

Prelude> map (\ c -> [c]) "abcdefg"
["a","b","c","d","e","f","g"]

というわけで、とりあえず出来たわけだけどなんだか冗長できれいじゃない。
こんなふうじゃダメなんだろうか。

Prelude> map ([]) "abcdefg"

<interactive>:3:6:
    Couldn't match expected type `Char -> b0' with actual type `[a0]'
    In the first argument of `map', namely `([])'
    In the expression: map ([]) "abcdefg"
    In an equation for `it': it = map ([]) "abcdefg"

ダメだった。
いや、空リストに cons すればいいのか。

Prelude> map (:[]) "abcdefg"
["a","b","c","d","e","f","g"]

出来た。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください