5

ruby の関数型プログラミングの部分を理解するために、引数として 2 つの関数 f(x,y),g(x) を受け取り、新しい関数 h(x,y)=f(g(x(x) ),g(y))。

def foo(x, y)
    return x+y
end

def bar(x)
    return 2*x
end

def comp(f,g)

end

f=comp(f,g)
f(1,2) #=> 6

私は次のようなことを試しました

def comp(f,g)
    mylambda = lambda {|x,y| return f(g(x),g(y))}
    return mylambda
end
f=comp(foo, bar)
f.call(1,2)

f は Proc になると思っていたので、そのまま呼び出すことができました。しかし、明らかに「`foo': 引数の数が間違っています (2 の場合は 0) (ArgumentError)」

どの構文を使用する必要がありますか? また、Proc の代わりに「実際の」関数を返すことは可能ですか?

4

5 に答える 5