他力本願メソッドによるRubyの習得、およびRuby 1.8と1.9のProc.newとprocとlambdaとブロックの動作について

http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070614#p02

おお、これは(私にとっては)Rubyの習得にピッタリでナイスです!(笑)

教えて君モードその1:Proc.newとprocとlambdaは(マニュアルには同じと書いてありますが)return文の振る舞いが違うみたいですが(かつ、procはRuby 1.8と1.9でも違うみたいですが)、何で違うんでしょうか。(ruby-1.8.6/eval.cを見るとわざと変えているようですが、ソースコード以外のドキュメントは存在しない?) あと、return(と引数のチェック)以外はまったく等価なのでしょうか。

教えて君モードその2:recvの定義を

def recv(y)
  f = Proc.new{|x| yield x}
  ...

みたくすれば、ブロックのおかげでrecvの構文が

recv(y){|x| p x}

みたく単純になったりしないのでしょうか。何か違いがあって、動作が変化してしまう?(追記:ITproの記事に書いた例は動作するみたいです。)(追記2:def recv(y,&f)と書くだけで良かったらしい。)