0

基本的に結果として関数を返す関数を作成しようとしています。私はこのようなことを達成しようとしています:

{{Add 3}4}

結果は7として出てきます。同じ質問がある次のSO質問を見つけましたが、答えはうまくいきませんでした。「Variable Adder not Introduced」というメッセージが表示されます。ローカルで宣言し、それに等しい変数を設定しようとしましたが、まだ何も機能していません。私は自分が何をしたいのか知っています。外部関数で装飾された関数を返したい。残念ながら、それを行う方法に関するドキュメントには、確かなものは何も見つかりません。オンラインドキュメントに基づいて、私が試したことは次のとおりです。

declare
local
   proc {And M ?B}
      if M > 0 then B = M else B = 0 end
   end
in
   proc {Add2 J ?B}
     J +  {And}
   end
end

電話すると

{{Browse {Add2 1}2}

私は 3 を取得したいと考えています。実際に取得したのは、エラーのないコンパイルであり、実際には何も参照していません。これが私が探しているものではないことはわかっていますが、これまでのところ、これがすべてです。私は J を取り、そこに残っているものを呼び出した結果に追加したいと思います。誰かが道を示すことができますか?

ありがとう、

4

2 に答える 2

0

Ankurの回答でファンクター構文を使用したくない場合は、次のように書くこともできます

local
    fun {Add A}
        fun {$ B} A+B end
    end
in
    {Browse {{Add 3} 4}}
end
于 2014-02-09T11:04:18.990 に答える