いつ関数/メソッドは実行されるのか

 Monadic Rubyという失敗ネタをきっかけにして、どう書いたときに関数/メソッドが実行されるのか、ちょっと気になったので、知ってる言語について挙げてみた。
 C言語では関数はfunc(args)と書いた場合に実行される。単にfuncと書くと関数ポインタの値が取れる。関数呼び出しの括弧は省略できないので、この区別は常に可能。
 Schemeだと、(func args)の形で書いたときにfuncが実行される。リストのcar部以外の場所に関数を書いても関数として評価されるだけで実行はされない。(マクロがあるので確実にそうであるとは言えないかもしれないが、原則的には。)書く場所で実行されるかどうかは決まるので、区別は常に可能。
 Rubyだとfunc(args)と書いたときに実行される。引数の括弧は省略できるので、単にfuncと書いた場合にもfuncが実行される。関数ポインタ的な物はない。(Procを使うことはできるが、ちょっと長い。)
 OCamlはfunc argsと書いたときに実行されるが、カリー化されているので、引数が足りない場合は部分適用された関数が戻ってくる。Ocamlでは引数のない関数は書けないので、単に関数名のみを書いた場合には関数が返ってくると考えて問題ない。引数がない関数を書く場合には、unit型を引数として取る。(例:Sys.getcwd ())unit型の値は()なので、見た目はC言語での関数呼び出しと似た感じになる。なお、OCamlはほとんど使ったことがないので、間違ってるかもしれない。
 JavaScriptC言語とほぼ同じ。funcと書いた場合に取れるのは関数ポインタというか関数オブジェクトになるけど。
 まとめてみると、知ってる中では、Rubyだけがちょっと毛色が違い、関数オブジェクトを簡単に取得することができない。Rubyの場合はpoint.xみたいに書きたいという事を優先したのだろう。高階関数的なメソッドのためにはブロックがあるから良い、ということでもあるかもしれない。