Rubyでポイントフリー続きの補足

def g
  ->x, y { x * y }.curry
end

def f
  ->y { y * 4 }
end

def foo(x, y)
   f.(g.(x).(y))
end

あんなわけのわからんことしなくてもこれでいけた。

def foo
#    f.(g.(x).(y))
#    (f << g.(x)).(y)
#    (f.method(:<<) << g).(x).(y)
  (f.method(:<<) << g) # haskelの(f.).gと大体同じになった
end

foo.(2).(2)
#=> 16

関数合成のほうもλにしたりとかわけのわからないことする必要なかった。