さまざまなクラスの副作用関数を作成したいので、一部の副作用を他のものよりも安全であるとマークできます。
副作用モナドにnewtypeを作成し、それをdo記法で使用したいので、次のように宣言します。Fay
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE PackageImports #-}
import "base" Control.Monad
newtype ReadFay a = ReadFay { readFay :: Fay a } deriving Monad
この時点で、コンパイラはbase
パッケージを見つけることができません。どうにかしてそれを行うことは可能ですか?
>>=
、return
などの独自のバージョンを のために作成することはできますがReadFay
、それをdo記法で使用できると便利です。
または、この私のアプローチよりも異なるクラスの副作用を作成する方法はありますか?