Haskell 名字在哪里;第「;来自部分应用的中缀运算符?
在Haskell中,我们使用术语“section”来表示中缀位置中使用的部分应用函数。例如,对于函数Haskell 名字在哪里;第「;来自部分应用的中缀运算符?,haskell,category-theory,Haskell,Category Theory,在Haskell中,我们使用术语“section”来表示中缀位置中使用的部分应用函数。例如,对于函数foo::a->b->c和值x::a和y::b,我们有两个部分 s1 = (x `foo`) :: b -> c == \b -> foo x b 及 然而,在范畴理论中,f的g部分被定义为f的右倒数(因此f.g==id) 我认为这两个定义之间没有明显的联系。例如,s1显然不是foo的反义词,至少在Hask中不是。我想s1甚至不必在Hask中有一个倒数 范畴理论定义是哈斯凯尔定义的来
foo::a->b->c
和值x::a
和y::b
,我们有两个部分
s1 = (x `foo`) :: b -> c == \b -> foo x b
及
然而,在范畴理论中,f
的g
部分被定义为f
的右倒数(因此f.g==id
)
我认为这两个定义之间没有明显的联系。例如,s1
显然不是foo
的反义词,至少在Hask中不是。我想s1
甚至不必在Hask中有一个倒数
范畴理论定义是哈斯凯尔定义的来源吗?如果是,如何定义?正如评论中所指出的,哈斯凯尔从米兰达(和奥威尔)那里得到了这些章节。大卫·特纳说他是从理查德·伯德和大卫·威尔那里得到这个主意的 我刚和理查德·伯德聊过。他说他不记得这个名字是从哪里来的,但他认为是大卫·威尔创造的。不幸的是,大卫·威尔去年去世了,所以我们可能永远也不会知道。但是,理查德承认是他说服了大卫·特纳和菲尔·瓦德勒用他们的语言添加章节 这是Wile论文中的一页,这是第一次提到“章节” 它可能来自“array section”操作,主要用于Fortran,特别是用于列或行提取。这是有意义的,如果您考虑使用两个参数函数来创建查找表。
我猜这两个完全不相关。我把“节”解释为:你取<代码>(x+y)< /代码>,砍掉其中的一部分(取一个部分),然后考虑剩下的。虽然平淡无奇。我不知道,但我会努力找出答案。米兰达语言有章节,由大卫·特纳设计。Miranda对Haskell的设计产生了重大影响。从Miranda手册第9章:确认:章节的概念是由Richard Bird(牛津大学编程研究小组)和David Wile(南加州大学信息科学研究所)提出的。谢谢你的检查。我从来没有仔细考虑过,但是很多其他的东西都是基于范畴理论的,这似乎也是可能的。
s2 = (`foo` y) :: a -> c == \a -> foo a y