[#17276] blocks and local variables — Takaaki Tateishi <ttate@...>
立石です.
まつもと ゆきひろです
At Mon, 3 Jun 2002 06:26:56 +0900,
まつもと ゆきひろです
なかだです。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
In article <1023423387.175193.27185.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
Yukihiro Matsumotoさんの
まつもと ゆきひろです
なかだです。
前田です。
At Fri, 7 Jun 2002 13:23:37 +0900,
まつもと ゆきひろです
Yukihiro Matsumotoさんの
まつもと ゆきひろです
Yukihiro Matsumotoさんの
なかだです。
nobu.nakada@nifty.ne.jpさんの
まつもと ゆきひろです
Yukihiro Matsumotoさんの
まつもと ゆきひろです
Yukihiro Matsumotoさんの
原です。
原です。
なかだです。
原です。
どうも西尾です。
なかだです。
At Sun, 16 Jun 2002 10:40:40 +0900,
なかだです。
At Sun, 16 Jun 2002 12:24:00 +0900,
なかだです。
At Sun, 16 Jun 2002 16:57:13 +0900,
なかだです。
どうも西尾です。
まつもと ゆきひろです
[#17315] Re: mswin32 での config.status の自動生成 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#17327] irb 0.9 alpha — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#17367] Ruby bcc32 on Win32 版のコミットについて — 小西 弘将 <konishih@...6.so-net.ne.jp>
小西 弘将です。
まつもと ゆきひろです
小西 弘将です。
こんにちは、なかむら(う)です。
小西 弘将です。
[#17384] avoid VC++ warnings — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#17392] [mswin32] exporting needless string literal — Tietew <tietew-ml-ruby-dev@...>
なかだです。
[#17393] [mswin32] static linked exts — Tietew <tietew-ml-ruby-dev@...>
[#17421] broken string when unterminated "#{". — WATANABE Hirofumi <eban@...>
わたなべです。
まつもと ゆきひろです
わたなべです。
In article <1023943870.232495.9282.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1023945463.297286.10112.nullmailer@picachu.netlab.jp>,
なかだです。
まつもと ゆきひろです
In article <1023987024.717469.15784.nullmailer@picachu.netlab.jp>,
なかだです。
まつもと ゆきひろです
In article <1024642728.541545.22623.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
In article <200206220646.g5M6kPY04591@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200206230606.g5N66RY15961@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
まつもと ゆきひろです
In article <1024667757.665595.25808.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1024750854.951300.30306.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1024887804.945188.6501.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1024895400.920419.6574.nullmailer@picachu.netlab.jp>,
[#17430] return value from methods of Array's subclass — "Shin'ya Adzumi" <adzumi@...>
あづみです。
あづみです。
まつもと ゆきひろです
あづみです。
[#17446] ternary operator and char literal (Re: parse error with `true || break ? 0 : 1' (PR#261)) — nobu.nakada@...
なかだです。
まつもと ゆきひろです
なかだです。
In article <200206160226.g5G2QO228336@sharui.nakada.kanuma.tochigi.jp>,
なかだです。
In article <200206160749.g5G7nI231269@sharui.nakada.kanuma.tochigi.jp>,
まつもと ゆきひろです
[#17471] break from proc-closure — m_seki@...
まつもと ゆきひろです
In article <1033663928.287610.25914.nullmailer@picachu.netlab.jp>,
なかだです。
[#17475] String#crypt always returns tainted string — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#17513] __END__ in literal — nobu.nakada@...
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
In article <200206211121.g5LBLl211556@sharui.nakada.kanuma.tochigi.jp>,
[#17579] Re: [ruby-cvs] ruby: * dln.c: remark definition rb_loaderror(). — WATANABE Hirofumi <eban@...>
わたなべです。
[ruby-dev:17564] Re: blocks and local variables
In article <1024899653.239780.6639.nullmailer@picachu.netlab.jp>,
matz@ruby-lang.org (Yukihiro Matsumoto) writes:
> ただ、x = foo(x) を許すと今度は「x のスコープはなに?」とい
> う疑問を呼ぶことになると思います。ということで、いっそ
>
> {<> ..>
>
> の中では(宣言しない限り)外のローカル変数は見えないという割り
> 切りが分かりやすさの総和が最大ではないかと考えるようになって
> ます。
ふむ。現在も x = foo(x) は可能で、スコープとしては両方の x は同じで、
右辺で参照した時点では nil であり、そのあとに左辺の x に代入することに
なるわけです。
これは、プログラムを左から右に scan して変数宣言(代入)を見つけていくか
らですが、このために、
x = foo(x)
としてなぜか nil が引数として渡されるということ以外に、
if false
x = 1
else
p x
end
とできてしまうとか、
p x if (x = ...).pred?
とできないとか、さまざまな問題が現れています。
したがって、この問題は {<> ...} の外が見えるかどうかという話とは独立で、
この問題を理由にして {<> ...} の外を見えないようにしようというのは適切
な選択だとは思えません。
個人的にはこの問題を解決するには左から右に scan するのではなく、静的に
決まる制御の流れの順で scan するといいのではないかと思っていたりします。
(Java の definitive assignment みたいに。)
また、パラメータのところで宣言させて外を見るというのは Python 2.0 まで
がまさにそんなかんじでした。が、これは使いにくくて Python 2.1 でついに
変わったわけです。
http://www.python.org/peps/pep-0227.html
http://www.amk.ca/python/2.1/index.html#SECTION000300000000000000000
まぁ、昔の Python の場合は外を見るのに専用の宣言ではなくオプショナル引
数を使ってましたからその意味では今回の案よりもまずかったわけですが、記
述することはよくにています。従って、おそらく、同様に使いにくいものと思
われます。
私の好みは、(多分に関数型言語の背景からですが)外のローカル変数は 現在
の {|| ...} のようにそのまま見え、かつ、yield/call された時の値の割り
当て方はメソッド呼び出しに近いものです。従って、もし、{<> ...} で外を
見るのに余計な記述が必要になると、{|| ...} と {<> ...} のどちらも不満
が残るものになります。つまり、外の見え方と値の割り当て方という異なる性
質を無理矢理比べてどちらかをえらばないといけません。これはおそらく厄介
ですし、後から {|| ...} と {<> ...} を切替えるのも面倒です。
私としては、デフォルトで外が見えないようにするのはやめて欲しいなぁ、と
思っています。
--
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)