【发布时间】:2018-08-07 20:07:55
【问题描述】:
我正在使用 GHCI 7.10.3,但在一个简单的代码中出现错误。
我想做这样的事情:
fatorial n
| n == 0 = 1
| n > 0 = n * fatorial(n-1)
| otherwise = error "My error"
但是当fatorial -4被调用时,输出是:
:21:1: 约束中的非类型变量参数:Num (a -> a) (使用 FlexibleContexts 来允许这样做) 检查“它”是否具有推断类型时 它 :: forall a. (Num a, Num (a -> a), Ord a) => a -> a
我的代码没有最后一行就可以正常工作。那么如何在haskell中使用错误信息呢?
【问题讨论】:
-
那是因为 Haskell 把它解释为
factorial - 4(所以是减法),你应该使用factorial (-4)。 -
我不太相信“我的代码没有最后一行也能正常工作”。是什么让你这么认为?