>>223
そもそもRubyは「関数」を返すことが出来ない。
ブロック(=Procクラスのインスタンス)を返すことは出来るから
まあ意味合いとして似たようなことはできるんだけど。

そもそもRubyには「関数」ってオブジェクトが無いんだわ。
・関数とは、メソッドの一種を便宜上そう呼ぶに過ぎない
・メソッドは必ずオブジェクトに所属する
 (いわゆる「関数」と呼ばれるものも例外でなく、「トップレベルでのself」(通称main)に所属する)
・関数が無い代わりに、無名の「手続きの塊」を扱うProcクラスがある
・ブロックやlambdaはProcクラスのインスタンスとして扱われる

ちなみにメソッドや関数の定義内で def を使っても「関数内関数」のようにならず
「メソッドを呼んだ際にメソッドを定義する」という動作になってしまうのも
defが「メソッドの定義」であり、所属先がその際のselfになってしまうから。
「関数内関数」とか「関数を値として使う」みたいなことをしたいときは、Procクラス(lambdaもこれ)を利用する。