“ lax”在“ laid monoidal functor”中是什么意思?

时间:2018-09-07 09:57:22

标签: haskell applicative category-theory

我知道Applicative类在类别理论中被描述为“松散单曲面函子”,但我之前从未听说过“松散”一词,还有the nlab page on lax functor一堆我不知道的东西我完全不认识,例如:双类别和我不知道我们在Haskell关心的事物。如果它实际上是关于双类别的,那么有人可以告诉我这是什么意思吗?否则,“松弛”用这个名字做什么?

1 个答案:

答案 0 :(得分:17)

让我们切换到Applicative的单面视图:

unit ::     ()     -> f   ()
mult :: (f s, f t) -> f (s, t)

pure :: x -> f x
pure x = fmap (const x) (unit ())
(<*>) :: f (s -> t) -> f s -> f t
ff <*> fs = fmap (uncurry ($)) (mult (ff, fs))

对于 strict 单等子函子,unitmult必须是同构。 “宽松”的影响就是放弃了这一要求。

例如,(直到通常的天真)(->) a是严格单调的,而[]只是松散的单调的。