ねこものがたり

いちにちいっぽ

プログラミングの基礎 #22

https://nerimarb.esa.io/posts/35

戻り値が関数の関数について学習しました。

ふとした流れで"Rubyで書き換えてみよう"ということになったのでやってみたら、同じようにできなくてすごく悔しい結果に・・・。元とRubyで書いたのは以下のような感じです。

(* OCaml *)
let twice f = let g x = f (f x) in g ;;
let twice f = let g x = f in g ;;
twice add3 7 ;;
# ruby

def twice(f, arg)
  f.call(f.call(arg))
end

def add3
  -> (arg) { arg + 3 }
end

Rubyでは引数で渡したメソッドのメソッドと引数をそれぞれ変数に入れるというのができない、というか、OCamlではそれができることが発見でした。何気ないことだけどもしこれがRubyでもできたら便利そうです!