だから私は(->) r
Reader モナドのインスタンスであると言われていますが、これがどのように機能するかの具体的な例を見つけることができないようです. 一部のコードを Reader で明示的にラップすることなく、これを使用したい
import Control.Monad.Reader
testOne :: Reader String String
testOne = do
env <- ask
return $ "Hello, " ++ env
testTwo :: String -> String
testTwo = do
env <- ask
return $ "G'day, " ++ env
実行runReader testOne "there"
はうまくいきますが、実行runReader testTwo "mate"
は次のメッセージで見事に失敗します:
Couldn't match type ‘String -> String’
with ‘ReaderT [Char] Data.Functor.Identity.Identity a’
Expected type: Reader [Char] a
Actual type: String -> String
それで、私はここで何が欠けていますか?