[#13493] yield *[[]] — Tanaka Akira <akr@...17n.org>

しばらく前に、yield *[[]] の挙動に関して bug report をして、まつもとさ

96 messages 2001/06/07
[#13494] Re: yield *[[]] — nobu.nakada@... 2001/06/07

なかだです。

[#13496] Re: yield *[[]] — Tanaka Akira <akr@...17n.org> 2001/06/08

In article <200106071409.XAA21101@sharui.nakada.kanuma.tochigi.jp>,

[#13503] Re: yield *[[]] — matz@... (Yukihiro Matsumoto) 2001/06/08

まつもと ゆきひろです

[#13506] Re: yield *[[]] — Tanaka Akira <akr@...17n.org> 2001/06/08

In article <991988462.179562.20598.nullmailer@ev.netlab.zetabits.com>,

[#13512] Re: yield *[[]] — matz@... (Yukihiro Matsumoto) 2001/06/08

まつもと ゆきひろです

[#13497] Re: yield *[[]] — Shugo Maeda <shugo@...> 2001/06/08

前田です。

[#13500] Re: yield *[[]] — "K.Kosako" <kosako@...> 2001/06/08

Shugo Maedaさんの<87lmn336s3.wl@localhost.netlab.jp>から

[#13501] Re: yield *[[]] — Shugo Maeda <shugo@...> 2001/06/08

前田です。

[#13504] Re: yield *[[]] — "K.Kosako" <kosako@...> 2001/06/08

Shugo Maedaさんの<87hexr316u.wl@localhost.netlab.jp>から

[#13505] Re: yield *[[]] — Shugo Maeda <shugo@...> 2001/06/08

前田です。

[#13511] Re: yield *[[]] — matz@... (Yukihiro Matsumoto) 2001/06/08

まつもと ゆきひろです

[#13526] Re: yield *[[]] — Shugo Maeda <shugo@...> 2001/06/09

前田です。

[#13530] Re: yield *[[]] — Tanaka Akira <akr@...17n.org> 2001/06/09

In article <m38zj242y9.wl@localhost.localdomain>,

[#13549] Re: yield *[[]] — Shin-ichiro HARA <sinara@...> 2001/06/12

原です。

[#13553] Re: yield *[[]] — Tanaka Akira <akr@...17n.org> 2001/06/12

In article <4.3.2-J.20010612154813.02c89a70@blade.nagaokaut.ac.jp>,

[#13554] Re: yield *[[]] — Shin-ichiro HARA <sinara@...> 2001/06/12

原です。

[#13560] Re: yield *[[]] — Tanaka Akira <akr@...17n.org> 2001/06/13

In article <4.3.2-J.20010612185543.00c8b988@blade.nagaokaut.ac.jp>,

[#13561] Re: yield *[[]] — matz@... (Yukihiro Matsumoto) 2001/06/13

まつもと ゆきひろです

[#13566] Re: yield *[[]] — Tanaka Akira <akr@...17n.org> 2001/06/13

In article <992410104.066682.22743.nullmailer@ev.netlab.zetabits.com>,

[#13591] Re: yield *[[]] — Tanaka Akira <akr@...17n.org> 2001/06/14

In article <hvor8wo501g.fsf@flux.etl.go.jp>,

[#13597] Re: yield *[[]] — matz@... (Yukihiro Matsumoto) 2001/06/14

まつもと ゆきひろです

[#13598] Re: yield *[[]] — Tanaka Akira <akr@...17n.org> 2001/06/15

In article <992533086.935976.4066.nullmailer@ev.netlab.zetabits.com>,

[#13616] Re: yield *[[]] — matz@... (Yukihiro Matsumoto) 2001/06/19

まつもと ゆきひろです

[#13622] Re: yield *[[]] — matz@... (Yukihiro Matsumoto) 2001/06/22

まつもと ゆきひろです

[#13628] Re: yield *[[]] — matz@... (Yukihiro Matsumoto) 2001/06/23

まつもと ゆきひろです

[#13633] Re: yield *[[]] — keiju@... (石塚圭樹) 2001/06/24

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

[#13647] Re: yield *[[]] — "KANEMITSU Masao" <masao-k@...> 2001/06/25

金光です。

[#13567] Parallel Assignment — Shin-ichiro HARA <sinara@...> 2001/06/13

原です。

[#13577] Re: Parallel Assignment — matz@... (Yukihiro Matsumoto) 2001/06/13

まつもと ゆきひろです

[#13650] Re: [ruby-ext:01803] Re: Ruby/SDL on PS2 LinuxKit — WATANABE Hirofumi <eban@...>

わたなべです。

56 messages 2001/06/26
[#13653] Re: [ruby-ext:01803] Re: Ruby/SDL on PS2 LinuxKit — matz@... (Yukihiro Matsumoto) 2001/06/26

まつもと ゆきひろです

[#13659] library search path — matz@... (Yukihiro Matsumoto) 2001/06/26

まつもと ゆきひろです

[#13906] Re: library search path — nobu.nakada@... 2001/07/16

なかだです。

[#13978] Re: library search path — nobu.nakada@... 2001/07/21

なかだです。

[#13990] Re: library search path — matz@... (Yukihiro Matsumoto) 2001/07/22

まつもと ゆきひろです

[#14002] Re: library search path — nobu.nakada@... 2001/07/23

なかだです。

[#14011] Re: library search path — matz@... (Yukihiro Matsumoto) 2001/07/23

まつもと ゆきひろです

[#14017] Re: library search path — "U.Nakamura" <usa@...> 2001/07/24

こんにちは、なかむら(う)です。

[#14020] Re: library search path — matz@... (Yukihiro Matsumoto) 2001/07/24

まつもと ゆきひろです

[#14036] Re: library search path — nobu.nakada@... 2001/07/24

なかだです。

[#14075] Re: library search path — nobu.nakada@... 2001/07/25

なかだです。

[#14079] Re: library search path — matz@... (Yukihiro Matsumoto) 2001/07/25

まつもと ゆきひろです

[#14090] Re: library search path — nobu.nakada@... 2001/07/25

なかだです。

[#14095] Re: library search path — matz@... (Yukihiro Matsumoto) 2001/07/26

まつもと ゆきひろです

[#14115] Re: library search path — akira yamada / やまだあきら <akira@...> 2001/07/26

[#14121] Re: library search path — matz@... (Yukihiro Matsumoto) 2001/07/26

まつもと ゆきひろです

[#14136] Re: library search path — matz@... (Yukihiro Matsumoto) 2001/07/27

まつもと ゆきひろです

[#14137] Re: library search path — nobu.nakada@... 2001/07/27

なかだです。

[#14138] Re: library search path — matz@... (Yukihiro Matsumoto) 2001/07/27

まつもと ゆきひろです

[#14141] Re: library search path — nobu.nakada@... 2001/07/27

なかだです。

[#14142] Re: library search path — matz@... (Yukihiro Matsumoto) 2001/07/27

まつもと ゆきひろです

[#14148] Re: library search path — nobu.nakada@... 2001/07/28

なかだです。

[#13666] net/http.rb warnings — nobu.nakada@...

なかだです。

14 messages 2001/06/26

[#13668] ruby_m17n make error — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

43 messages 2001/06/26
[#14038] Re: m17n ruby 特に TRON 文字コード — "TOYOFUKU Chikanobu" <toyofuku@...> 2001/07/24

豊福です。

[#13705] eval(code, true, filename) — Shugo Maeda <shugo@...>

前田です。

14 messages 2001/06/29

[ruby-dev:13503] Re: yield *[[]]

From: matz@... (Yukihiro Matsumoto)
Date: 2001-06-08 08:21:02 UTC
List: ruby-dev #13503
まつもと ゆきひろです

In message "[ruby-dev:13496] Re: yield *[[]]"
    on 01/06/08, Tanaka Akira <akr@m17n.org> writes:

|いまの挙動で決定というわけでもない(と思っている)のでリリースしないのが
|正解かと思います。

今の挙動は私でさえ気がつくバグがあります。

|できれば「新しい挙動は素晴らしい」とか「前のほうが良かった」とか「どっ
|ちも気にくわない」とか感想を聞かせていただけると嬉しいですが。

一応、test first programmingの思想にのっとり、「こんな風にし
ようと思ってます」という仕様を表現してみようと思います。

で、右辺の * の挙動を、私は「右の式の結果を(配列であれば)展
開してソースコードに埋めこんだときと同じ挙動」と見なしている
のに対して、田中さんは「[*r]の省略形」と考えておられるのが違
いなのではないだろうか、という気がしました。

ルールとしては田中さんのものの方がシンプルなのですが(たしか
に私の仕様では組み合わせを考えてるとくらくらしました)、互換
性の点から変更が大きすぎるように感じました。といっても、下に
記述した私の挙動でも非互換性があるんですが。

最大の原因は代入の右辺やyieldやreturnの引数が、配列かそうで
ないかで、挙動がかなり違う(が、それを無視するわけにはいかな
い)って点でしょう。

でも、まだ田中さんの真の意図を読みそこねているような気がする
んで、もうちょっと考えてみます。2日前から考えつづけてるんで
すが、脳の容量が足りないギミです。

                                まつもと ゆきひろ /:|)

--- asgn.rb
def assert(a, b)
  ai = a.inspect
  bi = b.inspect
  if a != b
    print "failed Assertion: <%s> == <%s>\n" % [ai, bi]
  else
    print "Assertion OK: <%s> == <%s>\n" % [ai, bi]
  end
end

# 1-1..1-2
a = nil; assert(a, nil)
a = 1; assert(a, 1)
a = []; assert(a, [])
a = [1]; assert(a, [1])
a = [nil]; assert(a, [nil])
a = [[]]; assert(a, [[]])
a = [*[]]; assert(a, [])
a = [*[1]]; assert(a, [1])
a = [*[1,2]]; assert(a, [1,2])

# 1-3..1-8
a = *nil; assert(a, nil)
a = *1; assert(a, 1)
a = *[]; assert(a, nil)
a = *[1]; assert(a, 1)
a = *[nil]; assert(a, nil)
a = *[[]]; assert(a, [])
a = *[*[]]; assert(a, nil)
a = *[*[1]]; assert(a, 1)
a = *[*[1,2]]; assert(a, [1,2])

# 2-1..2-2
*a = nil; assert(a, [])
*a = 1; assert(a, [1])
*a = []; assert(a, [])
*a = [1]; assert(a, [1])
*a = [nil]; assert(a, [nil])
*a = [[]]; assert(a, [[]])
*a = [*[]]; assert(a, [])
*a = [*[1]]; assert(a, [1])
*a = [*[1,2]]; assert(a, [1,2])

# 2-3..2-8
*a = *nil; assert(a, [])
*a = *1; assert(a, [1])
*a = *[]; assert(a, [])
*a = *[1]; assert(a, [1])
*a = *[nil]; assert(a, [])
*a = *[[]]; assert(a, [])
*a = *[*[]]; assert(a, [])
*a = *[*[1]]; assert(a, [1])
*a = *[*[1,2]]; assert(a, [1,2])

# 3-1..3-2
a,b,*c = nil; assert([a,b,c], [nil, nil, []])
a,b,*c = 1; assert([a,b,c], [1, nil, []])
a,b,*c = []; assert([a,b,c], [nil, nil, []])
a,b,*c = [1]; assert([a,b,c], [1, nil, []])
a,b,*c = [nil]; assert([a,b,c], [nil, nil, []])
a,b,*c = [[]]; assert([a,b,c], [[], nil, []])
a,b,*c = [*[]]; assert([a,b,c], [nil, nil, []])
a,b,*c = [*[1]]; assert([a,b,c], [1, nil, []])
a,b,*c = [*[1,2]]; assert([a,b,c], [1, 2, []])

# 3-3..3-8
a,b,*c = *nil; assert([a,b,c], [nil, nil, []])
a,b,*c = *1; assert([a,b,c], [1, nil, []])
a,b,*c = *[]; assert([a,b,c], [nil, nil, []])
a,b,*c = *[1]; assert([a,b,c], [1, nil, []])
a,b,*c = *[nil]; assert([a,b,c], [nil, nil, []])
a,b,*c = *[[]]; assert([a,b,c], [nil, nil, []])
a,b,*c = *[*[]]; assert([a,b,c], [nil, nil, []])
a,b,*c = *[*[1]]; assert([a,b,c], [1, nil, []])
a,b,*c = *[*[1,2]]; assert([a,b,c], [1, 2, []])

p "----"

# 1-1..1-2
def f; yield nil; end; f {|a| assert(a, nil)}
def f; yield 1; end; f {|a| assert(a, 1)}
def f; yield []; end; f {|a| assert(a, [])}
def f; yield [1]; end; f {|a| assert(a, [1])}
def f; yield [nil]; end; f {|a| assert(a, [nil])}
def f; yield [[]]; end; f {|a| assert(a, [[]])}
def f; yield [*[]]; end; f {|a| assert(a, [])}
def f; yield [*[1]]; end; f {|a| assert(a, [1])}
def f; yield [*[1,2]]; end; f {|a| assert(a, [1,2])}

# 1-3..1-8
def f; yield *nil; end; f {|a| assert(a, nil)}
def f; yield *1; end; f {|a| assert(a, 1)}
def f; yield *[]; end; f {|a| assert(a, nil)}
def f; yield *[1]; end; f {|a| assert(a, 1)}
def f; yield *[nil]; end; f {|a| assert(a, nil)}
def f; yield *[[]]; end; f {|a| assert(a, [])}
def f; yield *[*[]]; end; f {|a| assert(a, nil)}
def f; yield *[*[1]]; end; f {|a| assert(a, 1)}
def f; yield *[*[1,2]]; end; f {|a| assert(a, [1,2])}

# 2-1..2-2
def f; yield nil; end; f {|*a| assert(a, [])}
def f; yield 1; end; f {|*a| assert(a, [1])}
def f; yield []; end; f {|*a| assert(a, [])}
def f; yield [1]; end; f {|*a| assert(a, [1])}
def f; yield [nil]; end; f {|*a| assert(a, [nil])}
def f; yield [[]]; end; f {|*a| assert(a, [[]])}
def f; yield [*[]]; end; f {|*a| assert(a, [])}
def f; yield [*[1]]; end; f {|*a| assert(a, [1])}
def f; yield [*[1,2]]; end; f {|*a| assert(a, [1,2])}

# 2-3..2-8
def f; yield *nil; end; f {|*a| assert(a, [])}
def f; yield *1; end; f {|*a| assert(a, [1])}
def f; yield *[]; end; f {|*a| assert(a, [])}
def f; yield *[1]; end; f {|*a| assert(a, [1])}
def f; yield *[nil]; end; f {|*a| assert(a, [])}
def f; yield *[[]]; end; f {|*a| assert(a, [])}
def f; yield *[*[]]; end; f {|*a| assert(a, [])}
def f; yield *[*[1]]; end; f {|*a| assert(a, [1])}
def f; yield *[*[1,2]]; end; f {|*a| assert(a, [1,2])}

# 3-1..3-2
def f; yield nil; end; f {|a,b,*c| assert([a,b,c], [nil, nil, []])}
def f; yield 1; end; f {|a,b,*c| assert([a,b,c], [1, nil, []])}
def f; yield []; end; f {|a,b,*c| assert([a,b,c], [nil, nil, []])}
def f; yield [1]; end; f {|a,b,*c| assert([a,b,c], [1, nil, []])}
def f; yield [nil]; end; f {|a,b,*c| assert([a,b,c], [nil, nil, []])}
def f; yield [[]]; end; f {|a,b,*c| assert([a,b,c], [[], nil, []])}
def f; yield [*[]]; end; f {|a,b,*c| assert([a,b,c], [nil, nil, []])}
def f; yield [*[1]]; end; f {|a,b,*c| assert([a,b,c], [1, nil, []])}
def f; yield [*[1,2]]; end; f {|a,b,*c| assert([a,b,c], [1, 2, []])}

# 3-3..3-8
def f; yield *nil; end; f {|a,b,*c| assert([a,b,c], [nil, nil, []])}
def f; yield *1; end; f {|a,b,*c| assert([a,b,c], [1, nil, []])}
def f; yield *[]; end; f {|a,b,*c| assert([a,b,c], [nil, nil, []])}
def f; yield *[1]; end; f {|a,b,*c| assert([a,b,c], [1, nil, []])}
def f; yield *[nil]; end; f {|a,b,*c| assert([a,b,c], [nil, nil, []])}
def f; yield *[[]]; end; f {|a,b,*c| assert([a,b,c], [nil, nil, []])}
def f; yield *[*[]]; end; f {|a,b,*c| assert([a,b,c], [nil, nil, []])}
def f; yield *[*[1]]; end; f {|a,b,*c| assert([a,b,c], [1, nil, []])}
def f; yield *[*[1,2]]; end; f {|a,b,*c| assert([a,b,c], [1, 2, []])}

In This Thread