Mat*_*ick 8 haskell typeclass monad-transformers language-extension
我试图通过基于现有设计实现我自己的小型库来理解monad变换器.
我坚持的是语言扩展.在MonadError中,提到的唯一扩展是UndecidableInstances.但是,我无法使用FunctionalDependencies和编译代码来编译FlexibleInstances.
我认为需要FunDeps的例子:
class (Monad m) => MonadError e m | m -> e where
Run Code Online (Sandbox Code Playgroud)
一个灵活的实例:
instance MonadError e m => MonadError e (MaybeT m) where
Run Code Online (Sandbox Code Playgroud)
MonadError代码如何避免额外的两个扩展?
sha*_*ang 11
您不必拼写源文件本身的所有扩展名.所有/大多数模块使用的公共扩展可以列在项目的cabal文件中.在mtl的情况下:
extensions:
MultiParamTypeClasses
FunctionalDependencies
FlexibleInstances
Run Code Online (Sandbox Code Playgroud)