Control.Lens 中的市场名称背后的原因是什么?
What's the reason behind the name Market in Control.Lens?
Edward Kmett's optics library; Control.Lens定义了大量类型。
其中大部分都有相对不言自明的名称,例如 Traversal and Fold。
它还定义了一些名称不太明显的类型,例如Bazaar
来自 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。
我假设这在某种程度上也与商店 monads/comonads 有关?
这是正确的吗?
我不知道真实的历史,但我怀疑以下内容。让我们这样排列类型:
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
,那么您的 Market' a s t
将成为以下两个之一:
-
s -> Either t a
returns 被 Right
标记的东西,所以你有一个 a -> t
和一个 a
。这与 Store a t
. 完全相同
-
s -> Either t a
returns 被 Left
标记的事物。您已经完成了去商店的大部分路程:您有一个 a -> t
,但您没有可以应用该功能的特定索引 a
,而是直接接触 t
这将导致。 (N.B。我看不出有任何理由相信 t
一定在 a -> t
的同域中。我只是给出名称的直觉,而不是行为规律.)
我觉得没关系:现实世界的市场通常也有类似但不完全相同的商店。 =)
Edward Kmett's optics library; Control.Lens定义了大量类型。
其中大部分都有相对不言自明的名称,例如 Traversal and Fold。
它还定义了一些名称不太明显的类型,例如Bazaar
来自 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。 我假设这在某种程度上也与商店 monads/comonads 有关? 这是正确的吗?
我不知道真实的历史,但我怀疑以下内容。让我们这样排列类型:
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
,那么您的 Market' a s t
将成为以下两个之一:
-
s -> Either t a
returns 被Right
标记的东西,所以你有一个a -> t
和一个a
。这与Store a t
. 完全相同
-
s -> Either t a
returns 被Left
标记的事物。您已经完成了去商店的大部分路程:您有一个a -> t
,但您没有可以应用该功能的特定索引a
,而是直接接触t
这将导致。 (N.B。我看不出有任何理由相信t
一定在a -> t
的同域中。我只是给出名称的直觉,而不是行为规律.)
我觉得没关系:现实世界的市场通常也有类似但不完全相同的商店。 =)