"松散的monoidal仿函数"中"松散"是什么意思?

luq*_*qui 18 haskell category-theory applicative

我知道这个Applicative类在类别理论中被描述为"松散的monoidal仿函数",但我之前从未听过"lax"这个术语,并且关于松散仿函数nlab页面是一堆我根本不认识的东西,re:在Haskell,我不知道我们关心的双类和事物.如果它实际上是关于bicategories,有人可以给我一个plebian视图,这意味着什么?否则,这个名字的"松懈"是什么?

pig*_*ker 21

让我们切换到以下的monoidal视图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))
Run Code Online (Sandbox Code Playgroud)

对于严格 monoidal函子,unit并且mult必须是同构."松懈"的影响是放弃这个要求.

例如,(直到通常的天真)(->) a是严格的幺半群,但[]只是松散的幺半群.

  • 我并不是说他们是一对相互的反转:我的意思是他们每个都有逆. (7认同)