【发布时间】:2011-12-19 06:12:27
【问题描述】:
我正在尝试理解 Monad,我有以下代码
f a b c d =
do one <- a + b
two <- c * d
three <- one + two
return three
以上编译
但是当我遇到错误时
*主> f 1 2 3 4 :1:1: (Num (a0 -> t0), Monad ((->) a0), Monad ((->) t0)) 没有实例 因使用“f”而产生 可能的修复: 添加实例声明 (Num (a0 -> t0), Monad ((->) a0), Monad ((->) t0)) 在表达式中:f 1 2 3 4 在“it”的等式中:it = f 1 2 3 4 :1:9: (Num (a0 -> a0 -> t0)) 没有实例 源自文字“4” 可能的修复: 为 (Num (a0 -> a0 -> t0)) 添加一个实例声明 在`f'的第四个参数中,即`4' 在表达式中:f 1 2 3 4 在“it”的等式中:it = f 1 2 3 4如果我知道为什么上面的代码不起作用,我想我会更接近理解 Monadf 1 2 3 4
【问题讨论】: