Edward Kmett's optics library; Control.Lens定义了大量的类型。
其中大多数都有相对不言自明的名称,例如 Traversal和 Fold 。
它还定义了一些名称不太明显的类型,例如 Bazaar
从集市页面:
a.k.a. indexed Cartesian store comonad, indexed Kleene store comonad, or an indexed FunList.
...
Mnemonically, a Bazaar holds many stores and you can easily add more.
我无法弄清楚类型名称 Market 背后的原因。 我认为这在某种程度上也与商店单子(monad)/共单子(monad)有关? 这是正确的吗?
最佳答案
我不了解真实的历史,但我怀疑以下内容。让我们这样排列类型:
Market' a s t: Market (a -> t) (s -> Either t a)
Store a t: Store (a -> t) a
所以:a Market a s t
有点像 Store a t
的集合s 索引为 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
的同域中。我只是给出名称的直觉,而不是行为法则。)
我认为没关系:现实世界的市场通常也有与商店相似但不完全相同的东西。 =)
关于haskell - Control.Lens 中的 Market 这个名称背后的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57553042/