【发布时间】:2012-02-28 01:38:32
【问题描述】:
考虑以下 SML 函数:
fn x => x x
这会产生以下错误(新泽西州标准 ML v110.72):
stdIn:1.9-1.12 Error: operator is not a function [circularity]
operator: 'Z
in expression:
x x
我可以理解为什么这是不允许的——首先,我不确定如何写下它的类型——但这并不是完全荒谬的;例如,我可以将标识函数传递给它并取回它。
这个函数有名字吗? (有没有办法用SML来表达?)
【问题讨论】:
-
如果有人感兴趣,我发现这叫U Combinator (see bottom of page),但找不到更多相关信息。
-
我不知道它被称为 U 组合子,但正如该页面所述,它用于构建我在答案中输入的无类型 lambda 演算的(显然最短的)非终止程序.
标签: types functional-programming sml smlnj