Ruby の Proc は return の挙動が少しクセが
あります。(・´ ○)
Proc の中で return を書くと、その Proc を
呼び出したメソッド全体から抜けてしまうん
です。つまり「呼び出し元ごと終了する」
という動きになります。
これに対して lambda はよりメソッドに近い
振る舞いをしていて、return を書いても
そのラムダの中だけで処理が終わり
呼び出し元のメソッドには影響しません。
この違いがあるため、ちょっとした制御の
仕方で「思ったより早くメソッドが抜けて
しまった」ということが起こりやすいのが
Proc の特徴です。