我是一个初学者,我正在尝试使用Hoed来跟踪 Haskell 评估,因为它可能会进一步帮助我的学习过程。
我在他们的示例代码中看到了这样的
isEven :: Int -> Bool
isEven = observe "isEven" isEven'
isEven' n = mod2 n == 0
我在想如何才能observe
跟踪实例定义的函数>>=
,例如。
我写了类似的东西
bind' = observe "bind'" (>>=)
当然我有一个错误
* Ambiguous type variable 'm0' arising from a use of '>>='
prevents the constraint '(Monad m0)' from being solved.
Relevant bindings include
bind' :: m0 a0 -> (a0 -> m0 b0) -> m0 b0 (bound at my.hs:46:1)
Probable fix: use a type annotation to specify what 'm0' should be.
These potential instances exist:
...
我应该/如何使用类型注释来指定哪个Monad
实例的(例如 Reader、State 等)>>=
函数