所有
这是我需要转换为ML表达式的类型表达式:
int -> (int*int -> 'a list) -> 'a list
现在我知道这是一个currying样式表达式,它有两个参数: 第一个参数=类型int 和第二个参数=将前一个int值取两次并且返回任何类型的列表的函数
我很难找到需要int
并返回'a list
的功能。
我是ML的新手,因此对其他人来说这可能是微不足道的,但显然不是我。
非常感谢任何帮助。
答案 0 :(得分:1)
您获得int
和函数int*int -> 'a list
。你应该返回一个'a list
。所以你需要做的就是调用你得到的函数(x,x)(其中x是你得到的int)并返回结果。所以
fun foo x f = f (x,x)
请注意,这不是类型int -> (int*int -> 'a list) -> 'a list
唯一可能的函数。例如,函数fun foo x f = f (x, 42)
和fun foo x f = f (23, x)
也将具有该类型。
编辑:
要使类型匹配完全添加类型注释以限制f:
的返回类型fun foo x (f : int*int -> 'a list) = f (x,x)
但请注意,没有真正的理由这样做。此版本的行为与之前版本完全相同,只是它只接受返回列表的函数。