如何在莫扎特盎司写一个简单的高阶函数?

时间:2013-01-14 10:45:25

标签: oz mozart

我是莫扎特盎司的初学者,我想写一个简单的高阶函数,比如{{Add 1} 2},其结果必须是3.我想这就像嵌套调用C,函数可以调用自身吗?我不知道如何定义这个函数,我应该写

declare
fun {Add I}

declare
fun {{Add I}J}

? 我真的不知道如何完成这样的功能。我曾多次尝试过,但我从来没有尝试过。

2 个答案:

答案 0 :(得分:1)

这样的事情应该有效(未经测试):

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}}

答案 1 :(得分:0)

简洁代码:

fun{Add I}
   fun{$ J} I+J end
end