Haskell 什么是;“宽松”;“中的平均值”;lax幺半函子;?

Haskell 什么是;“宽松”;“中的平均值”;lax幺半函子;?,haskell,applicative,category-theory,Haskell,Applicative,Category Theory,我知道,Applicative类在范畴论中被描述为一个“lax幺半函子”,但我以前从未听说过“lax”这个词,还有一大堆我根本不认识的东西,关于双范畴和我不知道我们在Haskell中关心的东西。如果它实际上是关于两大类,有人能给我一个关于这意味着什么的平民观点吗?否则,“lax”在这个名称中做什么呢?让我们切换到Applicative的monoid视图: unit :: () -> f () mult :: (f s, f t) -> f (s, t) pure

我知道,
Applicative
类在范畴论中被描述为一个“lax幺半函子”,但我以前从未听说过“lax”这个词,还有一大堆我根本不认识的东西,关于双范畴和我不知道我们在Haskell中关心的东西。如果它实际上是关于两大类,有人能给我一个关于这意味着什么的平民观点吗?否则,“lax”在这个名称中做什么呢?

让我们切换到
Applicative
的monoid视图:

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))
单位::()->f()
mult::(FS,FT)->f(s,t)
纯::x->fx
纯x=fmap(常数x)(单位())
()::f(s->t)->f s->f t
ff fs=fmap(未到期($)(多个(ff,fs))
对于严格幺半函子,
unit
mult
必须是同构的。“宽松”的影响是放弃这一要求


例如,(直到通常的朴素)
(>)a
是严格的幺半群,但
[]
只是松散的幺半群。

错误的nlab页。我不确定这里给出的
unit
mult
是如何构成同构的,因为不清楚
unit
mult
是如何构成的,更不用说
unit了。mult==mult。unit==id
。我不是说它们是一对相互的倒数:我是说它们每个都有倒数。