助手函数中的Haskell分析错误

助手函数中的Haskell分析错误,haskell,Haskell,我正在学习Haskell,我决定尝试编写自己版本的pred,它返回参数前面的数字。我正在使用WinGHCi并加载一个名为test.hs的文件。这是我的密码: prev :: (Num a) => a -> a prev x = prev' 0 x where prev' y z | (succ y) == z = y | otherwise = prev' (succ y) z 我得到一个错误: test.hs:4:5: parse error (pos

我正在学习Haskell,我决定尝试编写自己版本的
pred
,它返回参数前面的数字。我正在使用WinGHCi并加载一个名为
test.hs
的文件。这是我的密码:

prev :: (Num a) => a -> a
prev x = prev' 0 x
  where prev' y z
    | (succ y) == z = y
    | otherwise = prev' (succ y) z
我得到一个错误:

test.hs:4:5:
    parse error (possibly incorrect indentation or mismatched brackets)


如何正确编写带有防护装置的帮助函数?

您的图案防护装置需要更深入的缩进,它们需要比
prev'
定义中的
p
更靠右。此版本未给出解析错误:

prev :: (Num a) => a -> a
prev x = prev' 0 x
  where prev' y z
            | (succ y) == z = y
            | otherwise = prev' (succ y) z

尽管需要更多的类型类约束,但仍然会出现类型错误。

这里标准答案的可能重复之处在于确保您使用的是空格,而不是制表符。。感谢您提供了出色的答案!你所说的类型类约束是什么意思?我明白了-我需要用类似
(积分a)
的东西替换
(数值a)
,这样它就可以测试等式了。谢谢