我无法理解这种递归是如何工作的,例如,如果我想进行String -> Boolean
练习以了解字符串是否包含小写,我该怎么办呢?这是我的大业余代码,甚至没有正确运行列表,虽然我不知道更好:
lowercase (x:xs) | isLower x lowercase xs = True
| otherwise = False
答案 0 :(得分:2)
你有一个好主意,但语法不好。
lowercase :: String -> Bool
lowercase [] = True -- this case is needed to ensure that recursion stops
lowercase (x:xs) | isLower x = lowercase xs
lowercase _ = False
或者,使用标准库,
lowercase = all isLower
答案 1 :(得分:0)
怎么样:
lowercase (x:xs) = if isLower x
then lowercase xs
else False
但是你还需要覆盖空字符串:
lowercase [] = ???
另请注意,无需显式测试布尔值是等于True还是False。即而不是if boolexpr == True ...
只需使用if boolexpr ...