需要为Proc实现Haskell的翻转

ako*_*nsu 6 ruby haskell functional-programming

Haskell的Prelude有一个有用的函数来交换函数的参数:http://zvon.org/other/haskell/Outputprelude/flip_f.html

我需要在Ruby中做同样的事情.我不想仅仅定义一个自定义方法,而是想修补这个Proc类,以便我可以flip一起使用Proc#curry.就像是

f = lambda {|x, y| [x, y]}
g = f.flip.curry.(2)
Run Code Online (Sandbox Code Playgroud)

为...提供价值y.

我不知道如何重新开课Proc.

tok*_*and 6

class Proc
  def flip
    lambda { |x, y| self.(y, x) }
  end
end


f = lambda { |x, y| [x, y] }
f.flip.(1, 2)
#=> [2, 1]
Run Code Online (Sandbox Code Playgroud)