Rubyの「関数」

Rubyでグローバルスコープでdef定義をすると、それはKernelモジュールにメソッドを定義しているという意味になる。
KernelモジュールはObjectクラスにインクルードされたモジュールだから、結果的にどこからでも呼べる関数を定義しているのと同じだ。


厳密に言うと、Rubyには関数はなく、関数のように振舞うメソッドがある、ということになる。
そのような説明を読んで理解できる人には、正確な説明をするほうがよい。
それがさっぱり理解できない人には、Rubyでも関数がある、というほうがよいと思う。
「関数のように定義し、関数のように動き、関数のように結果を返すものは、関数である」
ダックタイピング的発想でいけば、これはまさしく関数である。
実装としてどのように関数を実現しているかはあまり問題ではない。


関数ではなくメソッドであるとあくまでも主張するなら、たとえば、Rubyのクラス定義はClassクラスのインスタンスなのだから、クラスではなくオブジェクトである、とも主張しなければならない。
クラス定義をClassクラスのインスタンスという形で実装しているだけで、クラス定義と考えてなんら問題はないから、Rubyとしてはそれはクラス定義なのだ。


まあ、どうでもいいんだけど。
初心者相手の説明で「関数」って表現してもいいのかなーって思って考えてただけ。