我在研究ISWIM时听说过“J算子”或“节目点算子”。我想知道它是什么。维基百科的文章非常模糊:
在计算机科学中,Peter Landin 的 J 运算符是一种编程结构,它可以后组合 lambda 表达式并延续当前的 lambda 上下文。生成的“函数”是一流的,可以传递给后续函数,如果应用它,它将返回其结果到创建它的函数的延续。
“后作曲”是什么意思?我查了一下,只能找到一个数学定义。我在其他地方搜索了很多,但发现的很少。有几页提到了它,但没有一个详细描述它的实际含义。
那么,J 运算符是什么,它有什么作用,与 call/cc 类似吗?
Peter Landin 1965 年的文章 ALGOL 60 与 Church 的 Lambda 表示法之间的对应关系:第一部分 指出:
考虑一个定义
f(x) = ... g(...,...) ... where g = Jλ(u,v)
其中子表达式
可以出现在右侧的任何 λ 深度处以及任何上下文中。g(...,...)
如果在应用
时计算该子表达式,则其值将立即成为f
产生的结果。f
它还引用了这篇论文。