这里是我的代码:
data = [1,2,3,4,5,6,7,8,9,10]
cak' [] = []
cak' (x:xs) =
if x >= 2 then
cak' (x - 2) : cak' (xs)
else
x : cak' (xs)
run = cak' data
,直到我改变cak' (x - 2) : cak' (xs)
到cak' $ x - 2 : cak' (xs)
它不会工作。它为什么会产生这样的影响?
如果你有任何typecheck错误,请包括他们。了解如何阅读这些内容在Haskell中非常重要(并且帮助很大程度上追踪错误)。 – Thilo
确实。另外,为所有函数添加类型签名是一个非常好的主意,这使得更容易理解你正在做的事情,并且通常还会导致类型错误变得不那么神秘。 – leftaroundabout