Haskell - 执行错误
我尝试编写一个这个 monad
data W x = W x [String]
instance Monad W where
return x = W x []
W a h1 >>= f = case f a of
W b h2 -> W b (h1++h2)
但是,现在当我使用这个 monad 并尝试在代码中编写 return 或 >>= 时,我通过编译得到警告:
实例声明中没有 Prelude.return 的显式方法或默认方法。 Prelude 没有显式方法,也没有默认方法。实例声明中>>=。
有谁知道如何解决这个警告?
非常感谢
I try to write a this monad
data W x = W x [String]
instance Monad W where
return x = W x []
W a h1 >>= f = case f a of
W b h2 -> W b (h1++h2)
But, now when i will use this monad and try to write return or >>= in code I get by compilation the warnings:
No explicit method nor default method for Prelude.return in the instance declaration.
No explicit method nor default method for Prelude.>>= in the instance declaration.
Does anyone know how to fix this warnings?
thank you very much
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
假设代码的布局与您的问题中显示的完全相同,问题是您的
return
和>>=
定义没有缩进,因此它们被定义为与 Monad 类无关的新顶级函数。缩进它们,它应该可以工作。Assuming that the layout of the code is exactly as displayed in your question, the problem is that your
return
and>>=
definitions are not indented, so they are being defined as new top-level functions unrelated to the Monad class. Indent them and it should work.