【问题标题】:What's the reason behind the name Market in Control.Lens?Control.Lens 中的 Market 名称背后的原因是什么?
【发布时间】:2019-12-24 10:55:22
【问题描述】:

Edward Kmett's optics library; Control.Lens 定义了大量的类型。

其中大多数都有相对不言自明的名称,例如 TraversalFold

它还定义了一些名称不太明显的类型,例如Bazaar

来自 Bazaar 页面:

又名。索引笛卡尔存储comonad、索引Kleene 存储comonad 或索引FunList。

...

从记忆力上讲,Bazaar 拥有许多商店,您可以轻松添加更多。

我无法弄清楚Market 类型名称背后的原因。 我认为这在某种程度上也与 store monads/comonads 有关? 这是正确的吗?

【问题讨论】:

  • A Market 似乎只不过是Prism 的具体表示,其类型参数按APrism 方便的顺序排列。 Bazaar 不一样,我真的不知道它和Store 有什么关系。
  • 对于Bazaar,请尝试查看schoolofhaskell.com/school/to-infinity-and-beyond/…——它在开头提供了一个非常简短的概述。

标签: haskell terminology haskell-lens lenses


【解决方案1】:

我不知道真实的历史,但我怀疑以下内容。让我们这样排列类型:

Market' a s t: Market (a -> t) (s -> Either t a)
Store   a   t: Store  (a -> t)                a

所以:Market a s t 有点像由s 索引的Store a ts 的集合。事实上,如果您选择特定的s,那么您的Market' a s t 将成为以下两件事之一:

  1. s -> Either t a 返回一个由Right 标记的事物,因此您有一个a -> t 和一个a。这与Store a t 完全相同。
  2. s -> Either t a 返回一个由Left 标记的事物。您已经将自己大部分时间带到了商店:您有一个a -> t,但您没有可以应用该功能的特定索引a,而是直接将您的手放在t 上。 (注意,我认为没有任何理由相信 t 一定在 a -> t 的共同域中。我只是给出了名称的直觉,而不是行为规律。)

我认为这没关系:现实世界的市场中通常也有与商店相似但不完全一样的东西。 =)

【讨论】:

    猜你喜欢
    • 2011-06-20
    • 1970-01-01
    • 2010-10-03
    • 2018-08-31
    • 2020-01-26
    • 2016-03-31
    • 2021-11-01
    • 2018-02-28
    • 1970-01-01
    相关资源
    最近更新 更多