【问题标题】:What does Haskell call the Hom Functor/Monad?Haskell 怎么称呼 Hom Functor/Monad?
【发布时间】:2011-07-15 02:44:07
【问题描述】:

我想在我的代码中使用它并且不想复制它,但由于它只涉及像“函数”或“组合”这样的大量通用词,我无法通过搜索找到它。

具体来说,我正在寻找

instance Functor (x->) where
    fmap f p = f . p

【问题讨论】:

    标签: haskell monads functor


    【解决方案1】:

    这是基本的阅读器(或环境)monad,通常称为((->) e)。 (这是(e ->) 写成一个部分应用的函数而不是一个部分;后一种语法难以解析。)您可以通过导入Control.Monad.ReaderControl.Monad.Instances 来获得它。

    【讨论】:

    • 请注意,Reader 本身只是 ((->) e) 的包装。此外,对于 Applicative 实例,pure(<*>) 恰好是 KS 组合子,这总是很有趣。 :]
    • 是的,这就是我说“基本阅读器单子”的原因;实际的 Reader monad 是基本 ((->) e) 构造的一部分,主要用于 local 机制为环境引入一个附属“范围”。
    • 应该叫它 Hom ;)
    • 可能,但 Haskell 中的大多数类别理论东西实际上是一个 retcon。 :)
    • @Owen:好吧,如果你在do 符号和计算解释的上下文中查看,它是有意义的“访问只读环境的计算”,@987654333 @ 大致是ReaderWriter 的组合...所以有一定的逻辑,但从CT 的角度来看是没有意义的。
    猜你喜欢
    • 2017-12-28
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2011-11-05
    相关资源
    最近更新 更多