首页 > 解决方案 > 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

标签: haskellfunctional-programmingmonadsmaybe

解决方案


推荐阅读