2016-05-21 5 views
1

エッフェルプログラミング言語でfunction compositionを実行しようとしています。関数の構成とは、2つの関数f(x)、g(x)をとり、関数f(g(x))を返す関数を作成することです。エッフェルエージェントを使用した関数の構成

問題は、インラインエージェントがローカル値にアクセスできないことです。以下のコードでは、fとgはエージェント内の未知の識別子です。

comp (f: FUNCTION [INTEGER, INTEGER]; g: FUNCTION [INTEGER, INTEGER]) : FUNCTION [INTEGER, INTEGER] 
    do 
     Result := agent (x: INTEGER) : INTEGER do Result := f(g(x)) end 
    end 

私は、明示的にそのエージェントにfとgを渡し、整数および2つの関数の引数を取り剤を使用することによってそれを行うにはいくつかの方法があるかもしれない疑いがあるが、私はわかりませんよ。

誰かがある程度の洞察力を提供できれば、非常に感謝しています。

答えて

0

defauts引数は、インラインエージェントで使用できます。あなたの場合、試してみてください:

comp(f: FUNCTION [INTEGER, INTEGER]; g: FUNCTION [INTEGER, INTEGER]):FUNCTION [INTEGER, INTEGER] 
    do 
     Result := agent (a_f: FUNCTION [INTEGER, INTEGER]; a_g: FUNCTION [INTEGER, INTEGER]; x:INTEGER):INTEGER 
         do 
          Result := a_f(a_g(x)) 
         end(f, g, ?) 
    end 
関連する問題