回想一下延续通过变换(CPS变换)这需要到β 甲:= - [R [R 阿(其中[R是固定的)和˚F :甲→ 乙至β ˚F :β 甲→ β 乙通过定义 β 事实上我们有延续单子与单元 η 甲:甲→交通β 阿通过定义 η 甲 X := λ [R 。[R
和乘法 μ 阿:β (β 甲)→交通β 阿通过定义
μ 阿
现在让我们想想我们如何可以改变一个二进制地图,即我们要γ ˚F :β 一→ β 乙→ β Ç。一个很快想出 γ 从编程的角度来看,这也是有意义的。
这里是我的问题:是有更深层次的原因,比其他的事实,它看起来右从编程的角度来看?例如,是否存在类别理论或其他“理论”原因认为γ有意义?例如,我们可以系统地蒸煮单子中的γ吗?
我正在寻找对函数的CPS转换的见解。
我知道如何写这些概括,我想知道为什么会这样。范畴论者会理解我的要求。
—
Andrej Bauer 2013年
是的,这
—
copumpkin 2013年
liftA2
是我建议的一部分。“惯用括号”的概念((| f x y z ... |)
转换为pure f <*> x <*> y <*> z <*> ...
)Applicative
似乎是获取问题的n元形式的系统方法。我知道CT,但是用标准编程术语谈论它似乎最简单。如果您以前从未遇到过Applicative
,那么您可能想看看松散的单曲面函子(尽管Haskell的陈述也<*>
涉及指数)。无论如何,我对您没有答案,但是我试图更好地了解您的意思:)
Hayo Thielecke的博士学位论文是关于CPS的分类结构的。答案可能在那里或在他的其他出版物中。cs.bham.ac.uk/~hxt/research/hayo-thielecke-publications.shtml
—
Dave Clarke
liftM2
或概化之外的东西Applicative
?您可以直接从延续应用结构派生所描述内容的n元版本(使用一种可以让您谈论n元多态函数的语言)。