[#17615] substitution at when-clause — Takaaki Tateishi <ttate@...>

立石です.

47 messages 2002/07/01
[#17619] Re: substitution at when-clause — matz@... (Yukihiro Matsumoto) 2002/07/01

まつもと ゆきひろです

[#17621] Re: substitution at when-clause — Takaaki Tateishi <ttate@...> 2002/07/02

At Tue, 2 Jul 2002 02:54:01 +0900,

[#17622] Re: substitution at when-clause — matz@... (Yukihiro Matsumoto) 2002/07/02

まつもと ゆきひろです

[#17624] Re: substitution at when-clause — Takaaki Tateishi <ttate@...> 2002/07/02

At Tue, 2 Jul 2002 13:30:17 +0900,

[#17627] Re: substitution at when-clause — matz@... (Yukihiro Matsumoto) 2002/07/02

まつもと ゆきひろです

[#17630] Re: substitution at when-clause — Takaaki Tateishi <ttate@...> 2002/07/02

立石です.

[#17631] Re: substitution at when-clause — matz@... (Yukihiro Matsumoto) 2002/07/02

まつもと ゆきひろです

[#17635] Re: substitution at when-clause — Takaaki Tateishi <ttate@...> 2002/07/03

立石です.

[#17639] Re: substitution at when-clause — matz@... (Yukihiro Matsumoto) 2002/07/03

まつもと ゆきひろです

[#17644] Re: substitution at when-clause — keiju@... (石塚圭樹) 2002/07/03

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

[#17645] Re: substitution at when-clause — matz@... (Yukihiro Matsumoto) 2002/07/03

まつもと ゆきひろです

[#17647] Re: substitution at when-clause — keiju@... (石塚圭樹) 2002/07/03

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

[#17649] Re: substitution at when-clause — Takaaki Tateishi <ttate@...> 2002/07/03

At Wed, 3 Jul 2002 17:48:58 +0900,

[#17651] Re: substitution at when-clause — keiju@... (石塚圭樹) 2002/07/03

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

[#17730] Re: self in block — masaki <GEC01122@...>

16 messages 2002/07/20

[#17764] Re: self in block — masaki <GEC01122@...>

31 messages 2002/07/22
[#17765] Re: self in block — matz@... (Yukihiro Matsumoto) 2002/07/23

まつもと ゆきひろです

[#17768] Re: self in block — Tanaka Akira <akr@...17n.org> 2002/07/23

In article <1027383423.558649.31176.nullmailer@picachu.netlab.jp>,

[#17769] Re: self in block — matz@... (Yukihiro Matsumoto) 2002/07/23

まつもと ゆきひろです

[#17770] Re: self in block — Tanaka Akira <akr@...17n.org> 2002/07/23

In article <1027404202.545188.1283.nullmailer@picachu.netlab.jp>,

[#17771] Re: self in block — matz@... (Yukihiro Matsumoto) 2002/07/23

まつもと ゆきひろです

[#17772] Re: self in block — Tanaka Akira <akr@...17n.org> 2002/07/23

In article <1027406979.880878.1358.nullmailer@picachu.netlab.jp>,

[#17832] Re: [ruby-cvs] ruby: * random.c: replace with Mersenne Twister RNG. — nobu.nakada@...

なかだです。

17 messages 2002/07/26
[#17835] Re: [ruby-cvs] ruby: * random.c: replace with Mersenne Twister RNG. — matz@... (Yukihiro Matsumoto) 2002/07/26

まつもと ゆきひろです

[#17837] Re: [ruby-cvs] ruby: * random.c: replace with Mersenne Twister RNG. — nobu.nakada@... 2002/07/26

なかだです。

[#17842] Re: [ruby-cvs] ruby: * random.c: replace with Mersenne Twister RNG. — matz@... (Yukihiro Matsumoto) 2002/07/26

まつもと ゆきひろです

[#17886] line number(Re: Re: [ruby-cvs] ruby: * random.c: replace with Mersenne Twister RNG.) — nobu.nakada@... 2002/08/02

なかだです。

[#17893] Re: line number(Re: Re: [ruby-cvs] ruby: * random.c: replace with Mersenne Twister RNG.) — matz@... (Yukihiro Matsumoto) 2002/08/03

まつもと ゆきひろです

[#17897] Re: line number(Re: Re: [ruby-cvs] ruby: * random.c: replace with Mersenne Twister RNG.) — nobu.nakada@... 2002/08/03

なかだです。

[#17973] Re: line number(Re: Re: [ruby-cvs] ruby: * random.c: replace with Mersenne Twister RNG.) — nobu.nakada@... 2002/08/11

なかだです。

[ruby-dev:17747] Re: self in block

From: masaki <GEC01122@...>
Date: 2002-07-21 03:12:15 UTC
List: ruby-dev #17747
正木です。

In message "[ruby-dev:17738] Re: self in block"
 matz@ruby-lang.org (Yukihiro Matsumoto) writes:

|すみません。私にとって「自然」というのは意味がないので、どう
|してそのselfが無名関数自身を指すべきなのか、それから正木さん

何を自然と思うかという感覚は、非常に大事なことだと思っていますが、
伝わらなければ意味がないことも事実です。
この場合の判断基準は
"本来不必要な情報は使わない"
です。

以前に
[ruby-list:35087] Re: Y Combinator
で書いた例で具体的に説明します。

class Function
  attr_accessor :hash
  def initialize(hash={},*parameter)
    @hash=hash
    @para=parameter
    @lambda=eval "lambda{"+yield+"}"
  end

  def [](x)
    @hash[x] || @hash[x]=@lambda.call(x,*@para)
  end
end

ここで
Fact=Function.new({0=>1}){"|n| n*self[n-1] "}
と
Fact=Function.new({0=>1}){"|n| n*Fact[n-1] "}
を比べると、後者は、本来不必要な関数名、を使っている点で前者より
劣ります。そのために
関数名を換えたら block 内の関数名もそれにあわせて換えないといけない。
小文字の関数名は使えない。
といった欠陥が生じます。
前者のような書き方ができるためには self が関数自身を指すことが必要です。 

|してそのselfが無名関数自身を指すべきなのか、それから正木さん
|がblockの新仕様に期待するものはなんなのか、


原さんに
|しかし、lambda の上に eval までされると、いよいよ頭がぐちゃぐちゃ
|に、、、(^^;

と言われた上記の initialize を

  def initialize(hash={},*parameter,&block)
    @hash=hash
    @para=parameter
    @lambda=block
  end

のようにすっきり書きたいということです。

|あとblockの形の方
|が使いやすいと思う理由はなにかということについて教えていただ
|けませんか?

無名関数の受渡し方として

Fact=Function.new({0=>1}){<n> n*self[n-1] }

という形が一番簡潔だと思うからです。

In This Thread

Prev Next