1

我是 mozart oz 的初学者,我想编写一个简单的高阶函数,例如 {{Add 1}2},其结果必须为 3。我想这类似于 C 中的嵌套调用,其中一个函数可以调用自己吗?我不知道如何定义这个函数,我应该写

declare
fun {Add I}

或者

declare
fun {{Add I}J}

? 而且我真的不知道如何完成这样的功能。我已经尝试了几次,但我从来没有成功过。

4

2 回答 2

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}}
于 2013-01-14T12:20:13.663 回答
0

简洁的代码:

fun{Add I}
   fun{$ J} I+J end
end
于 2014-04-01T11:16:00.257 回答