[#31787] MIME decoding — Tietew <tietew@...>

Tietew です。

24 messages 2001/10/08

[#31866] 先祖がえり — "T.Shirakawa" <niegh@...>

はじめまして つい最近、MLに登録した白川です。

20 messages 2001/10/14
[#31867] Re: 先祖がえり — Koji Arai <JCA02266@...> 2001/10/14

新井です。

[#31889] Ruby Conference — Minero Aoki <aamine@...>

あおきです。

31 messages 2001/10/16
[#31905] Re: Ruby Conference — matz@... (Yukihiro Matsumoto) 2001/10/17

まつもと ゆきひろです

[#31923] Re: Ruby Conference — TAKAHASHI Masayoshi <maki@...> 2001/10/17

高橋征義です。

[#31932] しぶらぐ — "KANEMITSU Masao" <masao-k@...> 2001/10/18

http://www.ne.jp/asahi/masao-k/home/newpage1.htm

[#31906] 数値の配列の一部を文字列にして、多重代入したい — みかみまさと <kofu@...>

こんにちは。みかみにございます。

9 messages 2001/10/17

[#32016] Re: コメント削除スクリプト — "Tatsuaki Nagai" <Tatsuaki_Nagai@...>

こんにちは。永井です。

15 messages 2001/10/24
[#32018] Re: コメント削除スクリプト — TASHIRO Katsuya <tashiro_katsuya@...> 2001/10/24

田代と申します.

[#32123] dRuby の DRbUndumped#_dump は? — FUJIMOTO Hisakuni <hisa@...>

こんにちは、藤本です。

21 messages 2001/10/30
[#32124] Re: dRuby の DRbUndumped#_dump は? — m_seki@... 2001/10/30

[#32126] Re: dRuby の DRbUndumped#_dump は? — shudo@... 2001/10/31

咳さん wrote:

[#32145] Test::Unit — MUTOH@...

むとうです。

20 messages 2001/10/31

[ruby-list:32148] Re: call by name

From: Tanaka Akira <akr@...17n.org>
Date: 2001-10-31 15:19:58 UTC
List: ruby-list #32148
In article <20011031120013.354811EE12@milestones.dm4lab.to>,
  kjana@dm4lab.to (YANAGAWA Kazuhisa) writes:

> 引数の lazy evaluation では任意の式を書けるんだから call by name とは
> イメージが違うんだけど私もよく知ってるわけじゃないからイメージだけかも
> しれない.
> 
> Haskell の解説文書で「遅延評価は call by name とにている」といってるの
> は何か読みましたけど.call by name って言う時式はかけるんですか?

すこし探したところ、それらしき code が見つかりました。
http://www.csse.monash.edu.au/~lloyd/tildeProgLang/Algol60/jensen.a60

begin integer i;

      real procedure sum(i, lo, hi, term);
           value lo, hi; integer i, lo, hi; real term;
           comment term is passed by-name;
      begin real temp; temp := 0;
            for i := lo step 1 until hi do
               temp := temp + term;
            sum := temp
      end;

      print( sum(i, 1, 100, 1/i), 6, 3 )
end

comment Jensen's device,  L. Allison, Computer Science, Monash University.

ここで、(内容をなんとなく推測すると) sum の第四引数が call-by-name と
いうやつで、実引数の 1/i というのが sum の本体で繰り返し評価されるのだ
と思います。

Ruby でいえば、iterator を使って

def sum(lo, hi)
  temp = 0
  (lo..hi).each {|i| temp += yield i}
  temp
end

print sum(1, 100) {|i| 1/i}, 6, 3

とでもなるんでしょうか。(print の 6, 3 はよくわからない。)

1/i の評価が sum の内部で必要になるまで遅らされる、というのが lazy
evaluation と似ている、と思います。

まぁ、本物の lazy evaluation なら引数だけじゃなくてありとあらゆる式の
評価が必要になるまで遅らされるわけですが。

ふむ。この例をみると i を引数に渡しているので、scope はあまり変じゃな
いのかも。
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)

In This Thread