rubyのブロック付きメソッドが1つしかブロックを取らないワケ

 yieldの使い方を覚えたら、Rubyのブロック付きメソッドがなぜ一つしかブロックを取れないか、その理由も明らかになる。Rubyでは、ブロックをくっつけてメソッドを呼び出すと、そのブロックはメソッドへと変換されてyieldというシンボルに束縛される、と考えると、わかりやすい。ポイントはyieldというシンボルへ束縛される、というところである。(厳密には、ブロックはメソッドでは無い。ブロックの中からreturnを呼ぶと、そのyieldの呼出し元へreturnするのではなく、ブロックのある場所からreturnする。たぶん、ある値を見つけたら、そのままreturnする、というようなメソッドを簡単に実装するためにこうなっているのだろう。)つまり、ブロック付きメソッドがブロックを1つしか取らないのは、文法の制限によるものである。
 とか考えたんだけど、どうも、引数として明示的にブロックを受け取ることもできるようだ。とすると、ブロックを1つしか取れない、という制限をつけなければいけない、という理由は確かにどこにもないように思う。
 ただ、高階関数に2つ以上の関数を渡したい局面を考えてみると、大体は新しいオブジェクトを作るだとか、新しい関数を作るだとか、そういうような場合だと思う。そんな場合はクラスを作れとか、そういう、プログラミングスタイルに関するポリシーなのかもしれない。