Zhi*_*gor 5 haskell arrows category-theory applicative
众所周知,Applicative概括Arrows。在习语是健忘,箭都一丝不苟,单子是混杂由Sam林德利,菲利普·沃德勒和Jeremy Yallop纸据说Applicative是相当于静态箭头,这是其下述同构持有箭头:
arr a b :<->: arr () (a -> b)
据我所知,它可以通过以下方式说明:
注:newtype Identity a = Id { runId :: a }。
Klesli Identity是一个静态箭头,因为它包裹k :: a -> Identity b。同构只是删除或添加包装器。
Kleilsi Maybe不是k = Kleisli (const Nothing)存在的静态箭头- 所有f :: a -> bs 都对应于Just . f,并且k在同构中没有位置。
但在同一时间都Kleisli Identity和Kleisli Maybe是Arrow实例。因此,我看不出泛化是如何工作的。
在Wikibooks上的Haskell/Understanding Arrows 教程中,他们说静态态射并注意以下几点:
这两个概念通常分别称为静态箭头和 Kleisli 箭头。由于使用具有两种微妙不同含义的“箭头”一词会使本文非常混乱,因此我们选择了“态射”,它是这种替代含义的同义词。
这是我迄今为止唯一的线索 - 我是否混淆了 HaskellArrow和箭头?
那么,这种层次结构是如何运作的呢?这个Applicative财产是如何形式化/证明的?