【问题标题】:Where does the name "section" come from for a partially applied infix operator?部分应用的中缀运算符的名称“节”从何而来?
【发布时间】:2016-12-24 10:25:47
【问题描述】:

在 Haskell 中,我们使用术语“节”来表示用于中缀位置的部分应用函数。例如,对于函数foo :: a -> b -> c 和值x :: ay :: b,我们有两个部分

s1 = (x `foo`) :: b -> c == \b -> foo x b

s2 = (`foo` y) :: a -> c == \a -> foo a y

然而,在范畴论中,f 的部分g 被定义为f 的右逆(因此f . g == id)。

我认为这两个定义之间没有明显的联系。例如,s1 显然不是 foo 的倒数,至少在 Hask 中不是。我想s1 甚至不必 Hask 中的逆。

类别理论定义是否是 Haskell 定义的来源,如果是,如何?

【问题讨论】:

  • 我的猜测是两者完全不相关。我将“部分”解释为:您取(x+y),切掉其中一部分(取“部分”),然后考虑剩下的部分。
  • 不过如此……平淡无奇。
  • 我不知道,但我会试着找出答案。
  • Miranda 语言有部分,由 David Turner 设计。 Miranda 强烈影响了 Haskell 的设计。
  • 摘自 Miranda 手册,第 9 章:致谢:部分的想法归功于 Richard Bird(牛津大学编程研究小组)和 David Wile(南加州大学信息科学研究所)。 miranda.org.uk

标签: haskell category-theory


【解决方案1】:

正如 cmets 中所指出的,Haskell 从米兰达(和奥威尔)那里得到了部分。大卫·特纳说他从理查德·伯德和大卫·怀尔那里得到了这个想法。

我刚刚和理查德·伯德聊天。他说他不记得这个名字是从哪里来的,但他认为是大卫·怀尔创造了这个名字。不幸的是,大卫威尔去年去世了,所以我们可能永远不会知道。但是,Richard 确实承认是他说服了 David Turner 和 Phil Wadler 以他们的语言添加部分。

这是 Wile 论文中第一次知道提到“部分”的页面。 http://imgur.com/a/cQDlu

【讨论】:

  • 感谢您的检查。我从来没有考虑过,但是很多其他的东西都是基于范畴论的,这似乎也是可能的。
【解决方案2】:

它可能来自“数组部分”操作,主要用于 Fortran,特别是用于列或行提取。这是有道理的,如果您考虑从两个参数函数制作查找表。 https://www.phy.ornl.gov/csep/pl/node16.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    相关资源
    最近更新 更多