【发布时间】:2011-07-15 02:44:07
【问题描述】:
我想在我的代码中使用它并且不想复制它,但由于它只涉及像“函数”或“组合”这样的大量通用词,我无法通过搜索找到它。
具体来说,我正在寻找
instance Functor (x->) where
fmap f p = f . p
【问题讨论】:
我想在我的代码中使用它并且不想复制它,但由于它只涉及像“函数”或“组合”这样的大量通用词,我无法通过搜索找到它。
具体来说,我正在寻找
instance Functor (x->) where
fmap f p = f . p
【问题讨论】:
这是基本的阅读器(或环境)monad,通常称为((->) e)。 (这是(e ->) 写成一个部分应用的函数而不是一个部分;后一种语法难以解析。)您可以通过导入Control.Monad.Reader 或Control.Monad.Instances 来获得它。
【讨论】:
Reader 本身只是 ((->) e) 的包装。此外,对于 Applicative 实例,pure 和 (<*>) 恰好是 K 和 S 组合子,这总是很有趣。 :]
((->) e) 构造的一部分,主要用于 local 机制为环境引入一个附属“范围”。
do 符号和计算解释的上下文中查看,它是有意义的“访问只读环境的计算”,@987654333 @ 大致是Reader 和Writer 的组合...所以有一定的逻辑,但从CT 的角度来看是没有意义的。