警卫解析错误

时间:2015-10-10 10:03:57

标签: haskell

factorial :: Int -> Int 

factorial 0 = 1

factorial n 
   | n < 0 == error "Cant call a nagative number"
   | otherwise = n * factorial (n-1)

有人可以解释我收到此错误的原因吗?

haskell.hs:77:2: parse error on input ‘|’

1 个答案:

答案 0 :(得分:9)

您需要在函数定义中使用=而不是==

factorial :: Int -> Int 
factorial 0 = 1
factorial n 
   | n < 0     = error "Cant call a nagative number"
   | otherwise = n * factorial (n-1)
  • =是一个用于定义事物的句法原子;
  • ==是用于比较值的函数/运算符。