2012-09-07から1日間の記事一覧

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) # hask…

Rubyでポイントフリー続き

さっきとは少し変わってgとf関数はλにしてます。 def g ->x, y { x * y }.curry end def f ->y { y * 4 } end def foo(x, y) f.(g.(x).(y)) end さて、このfoo(x,y)からxとyを取り除きます。 結果… def foo ((f.<<).<<.(g)) # f(g(x,y)) end foo.(2).(2) #=>…

Rubyでポイントフリー

まずは普通に関数定義するとこんなんですよね? def g(x) end def f(y) end def foo(x) f(g(x)) end foo関数をポイントフリーにしてみます。 まずは、関数合成 def foo(x) (method(:f) << method(:g).(x) #もしくは ->x { f (g x) } end 合成したので(method…