haskell - Map.lookup 被定义为在任何 monad 中工作
问题描述
所以我正在学习一些 Haskell,在阅读 Martin Grabmüller 的“Monad Transformers Step by Step”时,我遇到了以下示例。
这些是给定代码中使用的导入。
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
我既无法编译代码,也无法理解解释。所以我错过了什么吗?任何人都可以对代码给出更好的解释吗?
PS 论文链接 https://page.mi.fu-berlin.de/scravy/realworldhaskell/materialien/monad-transformers-step-by-step.pdf