【问题标题】:What does "lax" mean in "lax monoidal functor"?“宽松的幺半群函子”中的“宽松”是什么意思?
【发布时间】:2018-09-07 09:57:21
【问题描述】:

我知道Applicative 类在范畴论中被描述为“松弛单曲面函子”,但我以前从未听说过“松弛”一词,the nlab page on lax functor 是一堆我不认识的东西所有,回复:我不知道我们在 Haskell 中关心的双类别和事物。如果它实际上是关于双类别的,有人可以给我一个平民的观点吗?否则,以这个名义“松懈”在做什么?

【问题讨论】:

标签: haskell applicative category-theory


【解决方案1】:

让我们切换到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))

对于严格单曲面函子,unitmult 必须是同构。 “松懈”的影响是放弃该要求。

例如,(直到通常的天真)(-&gt;) a 是严格单向的,但 [] 只是松弛-单向的。

【讨论】:

  • 我不确定我是否看到这里给出的 unitmult 可能是同构的,因为不清楚 unitmult 是如何构成的,更不用说有 @ 987654331@.
  • 我不是说它们是一对互逆:我的意思是它们每个都有逆。
猜你喜欢
  • 2014-06-12
  • 1970-01-01
  • 2011-08-27
  • 2018-10-05
  • 1970-01-01
  • 2014-12-01
  • 2011-04-21
  • 1970-01-01
相关资源
最近更新 更多