0 haskell
我尝试使用一个函数来计算列表的反转。所以我可以在其他函数中使用它,这将是回文函数,但我总是收到错误。第一个有效。
这是代码:
rev :: [a] -> [a]
rev [] = []
rev (x:xs) = rev xs ++ [x]
palindrome :: [a] -> Bool
palindrome [] = True
palindrome (x:xs) = if xs == rev (x:xs) then True else False
Run Code Online (Sandbox Code Playgroud)
我必须提到我必须使用该签名来做到这一点:[a] -> Bool
有一天,我会集中精力提出一个大问题,以解决两个常见的初学者列表错误:认为[x]匹配任何长度的列表,以及认为列表上的任何函数都必须具有[]和x:xs模式。这个问题就是后者的一个例子。当您执行相同的操作而不管列表长度如何时,您不需要多个模式!刚刚palindrome xs = ...好。palindrome记住这一点,再次尝试编写你的函数;您的错误将作为副作用得到修复。