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'
.
让我想以相反的顺序生成所有英文字母字符 ([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'
.