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 に答える