因此,我正在学习一些Haskell,并且在阅读MartinGrabmüller的“一步一步的Monad变形金刚”时,遇到了以下示例。
这些是给定代码中使用的导入。
import Control.Monad.Identity
import Control.Monad.Error
import Control.Monad.Reader
import Control.Monad.State
import Control.Monad.Writer
import Data.Maybe
import qualified Data.Map as Map
我不太了解eval1 env (Var n) = Map.lookup n env
行应该如何工作。在解释中写道,函数Map.lookup
适用于每个monad,而返回类型明确定义为Maybe a
Map.lookup :: Ord k => k -> Map.Map k a -> Maybe a
我既无法编译代码,也无法理解其解释。那我想念什么吗?任何人都可以对代码进行更好的解释吗?
P.S。链接到论文 https://page.mi.fu-berlin.de/scravy/realworldhaskell/materialien/monad-transformers-step-by-step.pdf