Haskell 生成从开始字符到结束字符的符号列表的方法是什么?

What is Haskell way to generate list of symbols from Start character to Finish character?

让我想以相反的顺序生成所有英文字母字符 ([a, b, ..., z])。我该怎么做?

我的解决方案是:

returnPrev c = chr (ord c - 1)

generateList t = unfoldr (\b -> if b == (returnPrev (fst t)) then Nothing else Just (b, returnPrev b)) (snd t)

*Main> generateList ('a', 'z')
"zyxwvutsrqponmlkjihgfedcba"

还有更正确的解法吗?

对于这种情况,您可以使用 ['z', 'y' .. 'a'] 并获得所需的列表,这实际上适用于任何 Enum,因为它转换为调用 enumFromThenTo 'z' 'y' 'a' .