【发布时间】:2018-04-14 00:15:15
【问题描述】:
我有这个提示:创建一个函数,它接受一个字符串并查看是否每个其他字母都是 ['a' .. 'f'] 的元素
所以我有这个:
betweenAF :: String -> Bool
betweenAF (x:y:xs)
| x `elem` ['a' .. 'f'] = True
| otherwise = betweenAF xs
betweenAF _ = False
现在它适用于字符串的第一个字母,就像我将 betweenAF "all" 放入,但如果我放入 betweenAF "lla" 则不起作用。谁能告诉我我做错了什么以及如何解决它?
【问题讨论】:
-
它不起作用:
betweenAF "all"在应该是False时返回True。 -
betweenAF "lla"按预期产生false:ideone.com/E54So5。 -
(x:y:xs)只匹配长度为 2 或以上的字符串;您的_案例捕获所有单例列表和空列表,并非所有列表都应具有相同的返回值。
标签: string list function haskell recursion