[英]Verify if a function is a palindrome in 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
我不得不提到我必须用那个签名来做: [a] -> Bool
有一天我会集中精力整理一个大问题来解决两个常见的初学者列表错误:认为[x]
匹配任意长度的列表,以及认为列表中的任何函数都必须具有[]
和x:xs
模式。 这个问题是后者的一个例子。 无论列表长度如何,当你做同样的事情时,你不需要多个模式! 只是palindrome xs = ...
很好。 考虑到这一点,尝试再次编写您的palindrome
函数; 您的错误将作为副作用得到修复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.