Rubyのクロージャ

ふと気になったので、知り合いにRubyクロージャ関係の機能について聞いたのですが、

  • defで定義される普通のメソッド
  • メソッド呼び出しの引数の位置で{|x| …}のように書かれ、メソッドの暗黙の引数となって、yieldで呼び出される「ブロック」
  • ブロックをfirst-class valueとして保存(new)・適用(call)するためのProcオブジェクト

の3つはすべて別のもの、ということでしょうか。SchemeStandard MLOCamlに慣れていると、(lambda (x) …)なりfn x => …なりfun x -> …なり、3つとも同じなので、ちょっと理解に時間がかかってしまいました。想像ですが、クロージャ≠関数、というポリシー?