什么是Haskell生成符号列表从Start字符到Finish字符的方法?

Dav*_*vid 1 haskell linked-list

我想以([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"
Run Code Online (Sandbox Code Playgroud)

有更正确的解决方案吗?

bhe*_*ilr 7

对于这种情况,你可以使用['z', 'y' .. 'a'],你将得到你想要的列表,这实际上适用于任何Enum,因为它转换为调用enumFromThenTo 'z' 'y' 'a'.