[#3587] Multiple assignment at yield() — Shin-ichro Hara <sinara@...>

原です。

86 messages 1998/11/17
[#3588] Re: Multiple assignment at yield() — matz@... (Yukihiro Matsumoto) 1998/11/17

まつもと ゆきひろです

[#3589] Re: Multiple assignment at yield() — Shin-ichro Hara <sinara@...> 1998/11/17

原です。

[#3590] Re: Multiple assignment at yield() — matz@... (Yukihiro Matsumoto) 1998/11/17

まつもと ゆきひろです

[#3594] Re: Multiple assignment at yield() — Shin-ichro Hara <sinara@...> 1998/11/18

原です。

[#3595] Re: Multiple assignment at yield() — matz@... (Yukihiro Matsumoto) 1998/11/18

まつもと ゆきひろです

[#3596] Re: Multiple assignment at yield() — Shin-ichro Hara <sinara@...> 1998/11/18

原です。

[#3598] Re: Multiple assignment at yield() — matz@... (Yukihiro Matsumoto) 1998/11/19

まつもと ゆきひろです

[#3600] Re: Multiple assignment at yield() — Shin-ichro Hara <sinara@...> 1998/11/20

原です。

[#3610] Re: Multiple assignment at yield() — Shin-ichro Hara <sinara@...> 1998/11/20

原です。

[#3611] Re: Multiple assignment at yield() — matz@... (Yukihiro Matsumoto) 1998/11/20

まつもと ゆきひろです

[#3622] Re: Multiple assignment at yield() — Shin-ichro Hara <sinara@...> 1998/11/21

原です。

[#3630] Re: Multiple assignment at yield() — shugo@... (MAEDA Shugo) 1998/11/22

前田です。

[#3635] Re: Multiple assignment at yield() — Shin-ichiro Hara <sinara@...> 1998/11/23

原です。

[#3658] Re: Multiple assignment at yield() — matz@... (Yukihiro Matsumoto) 1998/11/24

まつもと ゆきひろです

[#3660] Re: Multiple assignment at yield() — Shin-ichro Hara <sinara@...> 1998/11/24

原です。

[#3722] multiple assignment, yield and return — Shin-ichro Hara <sinara@...> 1998/12/01

原です。

[#3724] Re: multiple assignment, yield and return — Shin-ichro Hara <sinara@...> 1998/12/01

原です。

[#3742] List() — Shin-ichro Hara <sinara@...> 1998/12/04

原です。

[#3743] Re: List() — shugo@... (MAEDA Shugo) 1998/12/06

前田です。

[#3744] Re: List() — Shin-ichiro Hara <sinara@...> 1998/12/06

原です。

[#3755] Re: List() — shugo@... (MAEDA Shugo) 1998/12/07

前田です。

[#3758] Re: List() — Shin-ichro Hara <sinara@...> 1998/12/07

原です。

[#3760] Re: List() — shugo@... (MAEDA Shugo) 1998/12/07

前田です。

[#3761] Re: List() — Shin-ichiro Hara <sinara@...> 1998/12/07

原です。

[#3774] Re: List() — shugo@... (MAEDA Shugo) 1998/12/08

前田です。

[#3780] Re: List() — Shin-ichiro Hara <sinara@...> 1998/12/08

原です。

[#3784] Re: List() — shugo@... (MAEDA Shugo) 1998/12/09

前田です。

[#3788] Re: List() — Shin-ichro Hara <sinara@...> 1998/12/09

原です。

[#3789] Re: List() — MAEDA Shugo <shugo@...> 1998/12/10

前田です。

[#3602] problem of Delegator — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

17 messages 1998/11/20
[#3605] Re: problem of Delegator — matz@... (Yukihiro Matsumoto) 1998/11/20

まつもと ゆきひろです

[#3606] Re: problem of Delegator — keiju@... (石塚圭樹 ) 1998/11/20

けいじゅ@日本ラショナルソフトウェアです.

[#3607] Re: problem of Delegator — matz@... (Yukihiro Matsumoto) 1998/11/20

まつもと ゆきひろです

[#3612] Re: problem of Delegator — keiju@... (石塚圭樹 ) 1998/11/20

けいじゅ@日本ラショナルソフトウェアです.

[#3613] Re: problem of Delegator — matz@... (Yukihiro Matsumoto) 1998/11/20

まつもと ゆきひろです

[#3626] block local variable (Re: スコープの範囲) — shugo@... (MAEDA Shugo)

前田です。

47 messages 1998/11/22
[#3628] Re: block local variable (Re: スコープの範囲) — Koji Arai <JCA02266@...> 1998/11/22

新井です。

[#3629] Re: block local variable (Re: スコープの範囲) — shugo@... (MAEDA Shugo) 1998/11/22

前田です。

[#3632] Re: block local variable (Re: スコープの範囲) — Koji Arai <JCA02266@...> 1998/11/22

新井です。

[#3633] Re: block local variable (Re: スコープの範囲) — shugo@... (MAEDA Shugo) 1998/11/22

前田です。

[#3636] Re: block local variable (Re: スコープの範囲) — Shin-ichiro Hara <sinara@...> 1998/11/23

原です。

[#3642] Re: block local variable (Re: スコープの範囲) — Koji Arai <JCA02266@...> 1998/11/23

新井です。

[#3645] Re: block local variable(Re: スコープの範囲) — Shin-ichiro Hara <sinara@...> 1998/11/23

原です。

[#3674] Re: block local variable(Re: スコープの範囲) — Koji Arai <JCA02266@...> 1998/11/25

新井です。

[#3678] Re: block local variable(Re: スコープの範囲) — matz@... (Yukihiro Matsumoto) 1998/11/26

まつもと ゆきひろです

[#3681] Re: block local variable(Re: スコープの範囲) — Kazuhiro HIWADA <hiwada@...> 1998/11/26

ひわだです。

[#3682] Re: block local variable(Re: スコープの範囲) — Shin-ichro Hara <sinara@...> 1998/11/26

原です。

[#3683] Re: block local variable(Re: スコープの範囲) — matz@... (Yukihiro Matsumoto) 1998/11/26

まつもと ゆきひろです

[#3684] Re: block local variable(Re: スコープの範囲) — Shin-ichro Hara <sinara@...> 1998/11/26

原です。

[#3685] Re: block local variable(Re: スコープの範囲) — matz@... (Yukihiro Matsumoto) 1998/11/26

まつもと ゆきひろです

[#3709] ruby-1.1c9 install 中に SEGV — Koji Arai <JCA02266@...>

新井です。

18 messages 1998/11/30

[ruby-dev:3638] Re: block local variable (Re: スコープの範囲)

From: shugo@... (MAEDA Shugo)
Date: 1998-11-23 05:21:56 UTC
List: ruby-dev #3638
前田です。

>>>>> In [ruby-dev:3634]
>>>>> "新井" == Koji Arai <JCA02266@nifty.ne.jp> san wrote:

>> あ、ひょっとしたらローカル変数の宣言を:=(もしくは::=)でしない
>> といけないようにする、という提案と勘違いなさってます?

新井> そういうわけではないです。

そうですか、失礼しましたm(..)m

新井> 気になってたのは、「Rubyは、変数宣言が不要な言語」
新井> が嘘になるということ。ただそれだけ。

新井> 結局、初めての代入は暗黙の宣言だし、このことが「見
新井> ためでブロックローカルかどうかを判断できない」原因
新井> なわけだし…

この場合は変数の宣言が不要なのがネガティブに働いてしまって
いるわけですね。

新井> 考えていたら、前田さんの案もいいように思えてきまし
新井> た。(新しい仕様は受け入れるのに時間がかかるモノで
新井> す ^^;)

ありがとうございます:-)

新井> 一応、"_" で始まる変数なら、|v,_v| のように、ブロッ
新井> クローカルにするかどうかを制御できる利点があること
新井> は言っておこう。

確かに僕の案ではこれはできませんね。
でも_だと普通の識別子なので、他の記号の方が良いような気がします。
僕の案の延長で|i:, j:|とするとブロックローカルになるようにするとか。
# 文法が破綻しそうな気が(^^;

新井> := が採用されれば、イテレータに新たなスコープを導
新井> 入しない件も採用すべきでしょうね。(その方がわかり
新井> やすい)

問題は原さんも指摘されてるように文法を変えすぎという
ことですが(^^;

新井> あとは、互換性の問題か。普通なら、

新井>                 現在            提案
新井> iter {
新井>   v = 0         宣言            宣言
新井>   ....
新井> }

新井> v = 0           宣言            代入

新井> イテレータの後に必ず代入文があるはずだから、問題な
新井> さそうなんですが。

>> ブロック内変数は

>> Thread固有変数
>> 手続きオブジェクト固有変数

>> などのために必要なものです.

新井> この点が気になる。私は、Threadもprocもまだ未経験な
新井> のでよくわからないのですが、:= への書き直しが必要
新井> になるんでしょうね。(これの元記事ってどこですか?)

例えば、

loop do
  ns = @server.accept
  Thread.start do
    while command = ns.read(1) # 何でgetcじゃなくてread(1)なの?>私
      ...
    end
  end
end

みたいなコードだとnsが各スレッドで共有されてしまうので動作が
おかしくなります。
これは

ns = @server.accept
Thread.start do
  s = ns
  while command = s.read(1)
    ...

のようにブロックローカルな変数に値を移すことで解決できます。
僕の案が採用されれば、これは

ns = @server.accept
Thread.start do
  ns := ns
  while command = ns.read(1)
    ...

と書くことになります。
上の場合だとブロックの外側でsが定義されているかどうか気に
しないといけないのですが、下の場合ではその必要はなくなります。

Procオブジェクトの場合は、ブロックの実行が遅延されることで、
似たような問題が起こります。

p = proc { foo = 0 }
foo = 1
p.call

ブロックローカルな変数がないと、fooが破壊されてしまいます。
# こちらは現実的な例を思いつきませんでした。
# Procの場合はThreadと組み合わせないかぎりあまり問題にならないのかも。

-- 
前田 修吾 (mailto:shugo@aianet.ne.jp)

In This Thread