【发布时间】:2010-07-24 21:24:42
【问题描述】:
在处理Real World Haskell 时,我尝试使用以下代码解决方案完成回文练习:
palin :: [a] -> [a]
palin list = list ++ rev list
where rev list
| null list = []
| otherwise = rev (tail list) ++ (head list)
这引发了“无法构造无限类型错误。但是,只需将头部列表周围的括号替换为方括号,它就可以正常工作,如下例所示:
palin :: [a] -> [a]
palin list = list ++ rev list
where rev list
| null list = []
| otherwise = rev (tail list) ++ [head list]
我真的不明白它为什么重要,也不明白“无法构造无限类型 a = [a]”错误是什么意思。有人可以解释一下吗?
【问题讨论】:
-
(something)never 形式的表达式与[something]形式的相应表达式具有相同的类型,您只需将括号替换为方括号即可。这总是很重要!
标签: haskell