Enum
Haskell では文字列はリストであるため、拡張機能なしで文字列だけのインスタンスを作成することはできないため、リストが にない理由を尋ねることもできます。しかし、それは問題ではありません。問題は、最後に最小の文字を無期限に追加し続けるだけなので、辞書順での列挙はあまり役に立たないことです。
簡単にするためにアルファベットを使用するa..z
と、辞書順では最初の文字が繰り返されるだけです。
"", "a", "aa", "aaa", "aaaa", "aaaaa" ...
文字列を列挙するためのより便利な順序は、長さです。このようにして、最初に空の文字列を取得し、次に長さ 1 のすべての文字列、次に長さ 2 のすべての文字列を取得します。
"", "a", "b", ... "z", "aa", "ba", ... "za", "ab", ... "zz", "aaa", "baa" ...
これは基本的に整数の列挙と同じですが、桁が逆になっているため、99 から 100 に到達するのと同じように、"zz"
キャリーして getに到達します。"aaa"
Ord
ただし、これは、辞書編集順序を使用するリストのインスタンスとは矛盾します。