From: Yukihiro Matsumoto Date: 2005-07-30T09:44:03+09:00 Subject: [ruby-dev:26654] Re: Ruby2.0BlockParameterNotation まつもと ゆきひろです In message "Re: [ruby-dev:26653] Re: Ruby2.0BlockParameterNotation" on Sat, 30 Jul 2005 07:46:08 +0900, Shin-ichiro HARA writes: |>Perl6, Ruby2 |> |> -> (x,y) {...} |> |>Groovy |> |> {x, y -> ...} |> |>Haskell |> |> \x y -> {....} | |このうち見た目がいいのは、Groovy ですけど、それもyaccの制約で難しい |わけですね? いいえ。yaccの制約はありません。 Groovy式はlambdaの代替ではなく、ブロックの「ゴールポスト (|a,b|のこと)」の代わりになるわけですが、これだとパラメータ がないときにも「->」を書かなければいけません。(「いけない」 のはyaccの制約。Groovyは手書きパーザなのでできるのかも)。パ ラメータのないブロックでも {->....} と書かねばならないのはあまり好みではありません。 |で、Perl6式ですけど、今のRubyのブロックパラメータは一種の代入文だと |思えるので、 | | -> (x,y) {...} | |だとブロックの外で変数x,yへの代入が行われているように感じられてちょ |っと違和感があります。 しかし、 function(x, y) {....} のような書き方はわりと一般的ではあります(例: JavaScript)。