在通过Real World Haskell工作时,我尝试使用以下代码解决方案完成回文练习:
palin :: [a] -> [a]
palin list = list ++ rev list
where rev list
| null list = []
| otherwise = rev (tail list) ++ (head list)
Run Code Online (Sandbox Code Playgroud)
这引发了"无法构造无限类型错误.但是,只需用方括号替换头列表周围的括号,它就可以正常工作,如下例所示:
palin :: [a] -> [a]
palin list = list ++ rev list
where rev list
| null list = []
| otherwise = rev (tail list) ++ [head list]
Run Code Online (Sandbox Code Playgroud)
我真的不明白为什么这很重要,我也不明白"无法构造无限类型a = [a]"错误意味着什么.有人可以解释一下吗?
haskell ×1