> -----Original Message-----
> From: Tanaka Akira [mailto:akr / m17n.org]
> >   /(?<name>...)/.vmatch("abc")
> >
> ....   
> というものなわけですが、後者の要求を満たそうとすると、どうしてもリテラ
> ルとそれ以外の式を別に扱う必要があります。そのように式として評価すると
> 同じ値になるのに異なる扱いをするという仕掛けには、普通のメソッド呼び出
> しという形式はあまりに普通すぎて、その特別扱いが違和感を生じるように思
> います。

メソッドコール(vmatch)の場合には、レシーバがリテラルでも変数でも
ローカル変数に結果をmapする、というつもりでした。
正規表現が変数にセットされているからといっても、予測不可能なほど
変化する場合だけとは限らないので、機能として提供されていても良いかなと
考えていたのですが、必要性は低いかもしれません。

> それに対し、= の左辺は評価される式じゃありませんから違和感がないわけで
> すが、先に述べた通り他の = との返値に関する一貫性の問題があります。
> 
> で、もしかしたら、=~ や when が
> 
>   /(?<name>...)/ =~ "abc"
> 
>   case "abc"
>   when /(?<name>...)/
>   ...
>   end
> 
> という形で使われた時を特別扱いするのがいいのではなかろうか、という気が
> して来ました。これらは、形としてはメソッド呼び出しではないので、リテラ
> ルの特別扱いによる違和感が少ないですし、新しい記法を導入しないので既存
> の構文と自然に融合します。

賛成です。
ただ、named groupの導入からローカル変数へ反映させる機能追加までに
時間がかなり空いてしまうと、新しい記法にしなければならなくなるかも。
--
小迫@出向中