我想创建不同类别的副作用函数,因此我可以将一些副作用标记为比其他副作用更安全。
我想在副作用单子上创建一个新类型并在 do 表示法中使用它,所以我这样声明它:Fay
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE PackageImports #-}
import "base" Control.Monad
newtype ReadFay a = ReadFay { readFay :: Fay a } deriving Monad
A至此,编译器找不到base
包。有可能以某种方式做到这一点吗?
>>=
我仍然可以为、return
等创建自己的版本ReadFay
,但能够在do表示法中使用它会很好。
或者,有没有更好的方法,如何创建与我的方法不同的副作用类别?