由于部分应用函数are instances of the MonadReader
,为什么以下代码不正确?
runReader (\x -> x + 2) 4
甚至
runReader (\x -> pure $ x + 2) 4
答案 0 :(得分:2)
作为MonadReader
的实例,您可以使用"阅读器操作" (local
,ask
,asks
),但runReader
明确用于运行Reader
类型。
例如,您可以执行此操作,因为monadReaderFun
:
readerFunction :: Int -> Int
readerFunction = do
x <- ask
pure (x + 2)
但是没有必要&#34;运行&#34;它,使用Reader
或ReaderT
类型值的方式。