小编pan*_*nic的帖子

为什么需要“Monad”才能使用“pure”?

我正在通过Luis Morillo 的 Haskell 初学者挑战 (snake-fury)学习 Haskell。\n练习 4中的任务之一是“实现Applicative新类型的实例”,其中新类型如下:

\n
newtype GameStep m a = GameStep {runGameStep :: ReaderT BoardInfo (StateT GameState m) a}\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的第一次尝试,但没有编译。

\n
instance (Applicative m) => Applicative (GameStep m) where\n  pure a = GameStep $ pure a\n  (GameStep r) <*> (GameStep s) = GameStep $ r <*> s\n
Run Code Online (Sandbox Code Playgroud)\n

GHC 说

\n
    \xe2\x80\xa2 Could not deduce (Monad m) arising from a use of \xe2\x80\x98pure\xe2\x80\x99\n      from the context: Applicative m\n        bound by …
Run Code Online (Sandbox Code Playgroud)

haskell

10
推荐指数
1
解决办法
212
查看次数

标签 统计

haskell ×1