Control.Lens 中的 Market 名称背后的原因是啥?
Posted
技术标签:
【中文标题】Control.Lens 中的 Market 名称背后的原因是啥?【英文标题】: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 定义了大量的类型。
其中大多数都有相对不言自明的名称,例如 Traversal 和 Fold。
它还定义了一些名称不太明显的类型,例如Bazaar
来自 Bazaar 页面:
又名。索引笛卡尔存储comonad、索引Kleene 存储comonad 或索引FunList。
...
从记忆力上讲,Bazaar 拥有许多商店,您可以轻松添加更多。
我无法弄清楚Market 类型名称背后的原因。 我认为这在某种程度上也与 store monads/comonads 有关? 这是正确的吗?
【问题讨论】:
AMarket
似乎只不过是Prism
的具体表示,其类型参数按APrism
方便的顺序排列。 Bazaar
不一样,我真的不知道它和Store
有什么关系。
对于Bazaar
,请尝试查看schoolofhaskell.com/school/to-infinity-and-beyond/…——它在开头提供了一个非常简短的概述。
【参考方案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 t
s 的集合。事实上,如果您选择特定的s
,那么您的Market' a s t
将成为以下两件事之一:
s -> Either t a
返回一个由Right
标记的事物,因此您有一个a -> t
和一个a
。这与Store a t
完全相同。
s -> Either t a
返回一个由Left
标记的事物。您已经将自己大部分时间带到了商店:您有一个a -> t
,但您没有可以应用该功能的特定索引a
,而是直接将您的手放在t
上。 (注意,我认为没有任何理由相信 t
一定在 a -> t
的共同域中。我只是给出了名称的直觉,而不是行为规律。)
我认为这没关系:现实世界的市场中通常也有与商店相似但不完全一样的东西。 =)
【讨论】:
以上是关于Control.Lens 中的 Market 名称背后的原因是啥?的主要内容,如果未能解决你的问题,请参考以下文章