【发布时间】:2016-04-14 04:31:16
【问题描述】:
当我尝试编译我的代码时:
[1 of 1] Compiling Main ( survey2.hs, survey2.o )
survey2.hs:20:1:
Couldn't match expected type ‘IO t0’ with actual type ‘Integer’
In the expression: main
When checking the type of the IO action ‘main’
我尝试过将输入到 main 的 '9' 指定为一堆不同的类型,包括 IO、IO t、IO t0、int 等。我了解基于我拥有的函数定义在其他地方,如果一个 Integer 没有输入到函数中,那么其他函数都不会正常工作。我不确定如何将正确的类型放入 main 中。
factorial:: Integer -> Integer
factorial n
| n <= 1 = 1
| otherwise = n * factorial(n-1)
binomial :: (Integer, Integer) -> Integer
binomial (n, k)
| k > n = 0
| k < 0 = 0
| otherwise = factorial(n) / (factorial(n-k) * factorial(k))
bell :: Integer -> Integer
bell n
| n <= 1 = 1
| otherwise = sum [ binomial(n-1, k-1) * bell (k-1) | k<-[0..n-1] ]
bellSum :: Integer -> Integer
bellSum n = sum [ bell(k) | k<-[0..n] ]
main = bell(9 :: Integer )
【问题讨论】:
标签: haskell functional-programming type-mismatch