[英]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.