我是 mozart oz 的初学者,我想编写一个简单的高阶函数,例如 {{Add 1}2},其结果必须为 3。我想这类似于 C 中的嵌套调用,其中一个函数可以调用自己吗?我不知道如何定义这个函数,我应该写
declare
fun {Add I}
或者
declare
fun {{Add I}J}
? 而且我真的不知道如何完成这样的功能。我已经尝试了几次,但我从来没有成功过。
像这样的东西应该可以工作(未经测试):
declare
fun {Add I}
% define a local function which adds I to its argument
fun {Adder J}
J + I
end
in
% returns this new function
Adder
end
{Show {{Add 1} 2}} % should print 3
% or more verbose:
declare
Add1 = {Add 1}
{Show {Add1 2}}
简洁的代码:
fun{Add I}
fun{$ J} I+J end
end