[#13273] Ruby anywhere — "NAKAMURA, Hiroshi" <nakahiro@...>

なひです.rubyistモード.

262 messages 1999/04/01
[#13305] Re: Ruby anywhere — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/04/05

なひです.

[#13308] Re: Ruby anywhere — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/04/05

なひです.まったく何書いてんだか... > 自分 ^^;

[#13309] Re: Ruby anywhere — 中村暁史 <anakamur@...> 1999/04/05

[#13310] iterator for Dummies( was Re: Ruby anywhere ) — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/04/05

なひです.もちろん「Dummy」なのは私です.^^;

[#13313] Re: iterator for Dummies( was Re: Ruby anywhere ) — Shugo Maeda <shugo@...> 1999/04/05

前田です。

[#13314] Re: iterator for Dummies( was Re: Ruby anywhere ) — hisanori@... 1999/04/06

松尾です。

[#13317] Re: iterator for Dummies( was Re: Ruby anywhere ) — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/04/06

なひです.

[#13330] Re: iterator for Dummies( was Re: Ruby anywhere ) — Wakou Aoyama <wakou@...> 1999/04/06

青山です。

[#13363] Re: iterator for Dummies( was Re: Ruby anywhere ) — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/04/06

なひです.

[#13367] Re: iterator for Dummies( was Re: Ruby anywhere ) — Wakou Aoyama <wakou@...> 1999/04/06

青山です。

[#13312] Re: Ruby anywhere — Inaba Hiroto <inaba@...> 1999/04/05

稲葉です。

[#13474] Re: Ruby and LISP ( was Re: Ruby anywhere ) — takagi@... (TAKAGI, Hiromitsu) 1999/04/08

Shugo Maeda <shugo@netlab.co.jp> writes:

[#13490] Re: Ruby and LISP ( was Re: Ruby anywhere ) — Shugo Maeda <shugo@...> 1999/04/08

前田です。

[#13621] Integer[num] (Re: Ruby and LISP) — gotoken@... (GOTO Kentaro) 1999/04/12

ごとけんです

[#13622] Re: Integer[num] (Re: Ruby and LISP) — Shugo Maeda <shugo@...> 1999/04/12

前田です。

[#13624] Re: Integer[num] (Re: Ruby and LISP) — gotoken@... (GOTO Kentaro) 1999/04/12

ごとけんです

[#13630] Re: Integer[num] (Re: Ruby and LISP) — Shugo Maeda <shugo@...> 1999/04/12

前田です。

[#13675] Re: Integer[num] (Re: Ruby and LISP) — gotoken@... (GOTO Kentaro) 1999/04/13

ごとけんです

[#13677] Re: Integer[num] (Re: Ruby and LISP) — 中村暁史 <anakamur@...> 1999/04/13

[#13690] Flyweight (Re: Integer[num]) — gotoken@... (GOTO Kentaro) 1999/04/13

ごとけんです

[#23715] Re: Flyweight (Re: Integer[num]) — Masatoshi SEKI <m_seki@...> 2000/07/05

[#23718] context switch during finalizer(Re: Re: Flyweight) — matz@... (Yukihiro Matsumoto) 2000/07/06

まつもと ゆきひろです

[#23727] Re: context switch during finalizer(Re: Re: Flyweight) — Masatoshi SEKI <m_seki@...> 2000/07/06

[#13496] What is Object in Ruby? (Re: Ruby and LISP) — Shin-ichiro Hara <sinara@...> 1999/04/08

原です。

[#13800] Re: What is Object in Ruby? (Re: Ruby and LISP) — Shin-ichiro Hara <sinara@...> 1999/04/16

原です。

[#13805] Re: What is Object in Ruby? (Re: Ruby and LISP) — gotoken@... (GOTO Kentaro) 1999/04/16

ごとけんです

[#13808] Re: What is Object in Ruby? (Re: Ruby and LISP) — Shin-ichiro Hara <sinara@...> 1999/04/16

原です。

[#13816] Re: What is Object in Ruby? (Re: Ruby and LISP) — Wakou Aoyama <wakou@...> 1999/04/16

青山です。

[#13824] Re: What is Object in Ruby? (Re: Ruby and LISP) — Shin-ichiro Hara <sinara@...> 1999/04/16

原です。

[#13830] Re: What is Object in Ruby? (Re: Ruby and LISP) — Wakou Aoyama <wakou@...> 1999/04/16

青山です。

[#13839] Re: What is Object in Ruby? (Re: Ruby and LISP) — Wakou Aoyama <wakou@...> 1999/04/17

青山です。

[#13842] Re: What is Object in Ruby? (Re: Ruby and LISP) — Shin-ichiro Hara <sinara@...> 1999/04/17

原です。

[#13856] Re: What is Object in Ruby? (Re: Ruby and LISP) — gotoken@... (GOTO Kentaro) 1999/04/18

ごとけんです

[#13872] Re: What is Object in Ruby? (Re: Ruby and LISP) — Shin-ichiro Hara <sinara@...> 1999/04/19

原です。

[#13880] Re: What is Object in Ruby? (Re: Ruby and LISP) — gotoken@... (GOTO Kentaro) 1999/04/19

ごとけんです

[#13883] destructive methods (Re: Re: What is Object in Ruby?) — matz@... (Yukihiro Matsumoto) 1999/04/19

[#13371] Re: Ruby and LISP ( was Re: Ruby anywhere ) — takagi@... (TAKAGI, Hiromitsu) 1999/04/06

> > > 「call-by-referenceで」もちょっと言葉が違うような。

[#13377] Re: Ruby and LISP ( was Re: Ruby anywhere ) — Shin-ichiro Hara <sinara@...> 1999/04/07

原です。

[#13378] Re: Ruby and LISP ( was Re: Ruby anywhere ) — Shugo Maeda <shugo@...> 1999/04/07

前田です。

[#13380] Re: Ruby and LISP ( was Re: Ruby anywhere ) — Shin-ichiro Hara <sinara@...> 1999/04/07

原です。

[#13390] Re: Ruby and LISP ( was Re: Ruby anywhere ) — Wakou Aoyama <wakou@...> 1999/04/07

青山です。

[#13398] Re: Ruby and LISP ( was Re: Ruby anywhere ) — Shin-ichiro Hara <sinara@...> 1999/04/07

原です。

[#13399] constant/immutable(Re: Ruby and LISP) — Shugo Maeda <shugo@...> 1999/04/07

前田です。

[#13400] Re: constant/immutable(Re: Ruby and LISP) — 中村暁史 <anakamur@...> 1999/04/07

[#13516] Re: Ruby and LISP ( was Re: Ruby anywhere ) — takagi@... (TAKAGI, Hiromitsu) 1999/04/08

Shugo Maeda <shugo@netlab.co.jp> writes:

[#13526] Re: Ruby and LISP ( was Re: Ruby anywhere ) — Shugo Maeda <shugo@...> 1999/04/09

前田です。

[#13568] Re: Ruby and LISP ( was Re: Ruby anywhere ) — takagi@... (TAKAGI, Hiromitsu) 1999/04/09

Shugo Maeda <shugo@netlab.co.jp> writes:

[#13383] — Inaba Hiroto <inaba@...>

稲葉です.

18 messages 1999/04/07
[#13422] Re: — kjana@... (YANAGAWA Kazuhisa) 1999/04/07

In message <9904070229.AA11857@tux0017.sdd.tokyo-sc.toshiba.co.jp>

[#13435] What is `binding' (was Re: Ruby and LISP) — Inaba Hiroto <inaba@...> 1999/04/08

稲葉です。これも出しなおしです.

[#13502] Re: Ruby and LISP ( was Re: Ruby anywhere ) — "豊福" <toyofuku@...>

豊福@パパイヤです。

16 messages 1999/04/08

[#13644] bbs — kikutani@...

rubyで書かれたWebの掲示板てありましたっけ?

31 messages 1999/04/12
[#13656] Re: bbs — TADA Tadashi <sho@...> 1999/04/13

初めて投稿します。多田@S.P.C.です。

[#13657] Re: bbs — kikutani@... 1999/04/13

On Tue, 13 Apr 1999 11:16:47 +0900,

[#13663] Re: bbs — hisanori@... 1999/04/13

松尾です。

[#13867] Re: What is Object in Ruby? (Re: Ruby and LISP) — toyofuku@...

豊福@パパイヤです。

15 messages 1999/04/19
[#13876] Re: What is Object in Ruby? (Re: Ruby and LISP) — Wakou Aoyama <wakou@...> 1999/04/19

青山です。

[#13903] timer — hisanori@...

松尾です。

24 messages 1999/04/20
[#13905] Re: timer — matz@... (Yukihiro Matsumoto) 1999/04/20

まつもと ゆきひろです

[#13910] Re: timer — hisanori@... 1999/04/20

松尾です.

[#13911] Thread GC (Re: Re: timer) — matz@... (Yukihiro Matsumoto) 1999/04/20

まつもと ゆきひろです

[#13920] Re: Thread GC (Re: Re: timer) — hisanori@... 1999/04/20

松尾です.

[#13924] Re: Thread GC (Re: Re: timer) — matz@... (Yukihiro Matsumoto) 1999/04/20

まつもと ゆきひろです

[#14037] TMail について — 民斗 <tommy@...>

民斗です。

38 messages 1999/04/24
[#14082] Re: TMail について — Minero Aoki <aamine@...> 1999/04/27

あおきです。報告ありがとうございます。

[#14088] Re: TMail について — 民斗 <tommy@...> 1999/04/28

民斗です。

[#14090] Re: TMail について — WATANABE Hirofumi <watanabe@...> 1999/04/28

わたなべです.

[#14092] Re: TMail について — Minero Aoki <aamine@...> 1999/04/28

あおきです。

[#14095] Re: TMail について — WATANABE Hirofumi <eban@...> 1999/04/29

わたなべです.

[#14096] Re: TMail について — kikutani@... 1999/04/30

In ruby-list, you wrote:

[#14099] Re: TMail について — matz@... (Yukihiro Matsumoto) 1999/04/30

まつもと ゆきひろです

[ruby-list:13827] Re: iterator <-> cursor (Re: iterator for Dummies)

From: Masatoshi SEKI <m_seki@...>
Date: 1999-04-16 17:56:17 UTC
List: ruby-list #13827
咳です。

From: Shin-ichiro Hara <sinara@blade.nagaokaut.ac.jp>

> これの callcc 版を考えてみました。まず、Queue 相当のものなんですが、
> バッファがないのでかわいらしく Hole という名前にしました。

いまさら Thread 版を作ってみました。

以前に Thread 間 pipe が欲しくて作ったものに手を加えました。
Pipeクラスは原さんのHoleに相当します。

要素に nil を持てるように番兵 (PipeEOF) を導入しています。
また、複数の Thread が pipe に read/write できます。
## イテレータとは関係ないっすね。最初はLinda みたいの作りたかったんです。

Pipe は次のように使います。

pipe = Pipe.new
Thread.new do 
  for i in 1..5
    pipe.write(i)
  end
  pipe.close
end

while (v = pipe.read) != pipe.eof
  p v
end    

以下は、Pipe と 外部イテレータです。

-- pipe.rb --
#!/usr/local/bin/ruby

require 'thread'

class PipeEOF; end
class PipeBrokenError<RuntimeError; end

class Pipe
  def initialize(pipelen=1)
    @enq = Queue.new
    @buffer = Queue.new
    for i in 1..pipelen
      @enq.push nil
    end
    @eof = PipeEOF.new		# sentinel
    @done = false
  end
  attr :eof

  def eof?(e)
    @eof == e
  end

  def write(e)
    @enq.pop
    if @done
      @enq.push nil
      raise(PipeBrokenError, 'closed') 
    end
    @buffer.push(e)
  end

  def read
    begin
      v = @buffer.pop
    ensure
      @enq.push nil
      @buffer.push(@eof) if (v == @eof)
    end
  end

  def close
    @buffer.push(@eof)
    @done = true
  end
end

#=begin
#
# 外部イテレータにしてみた部分
#

if __FILE__ == $0
  class Pipe
    def externalIterator(src)
      src = src
      que = Pipe.new
      Thread.new do
	for i in src
	  que.write(i)
	end
	que.close
      end
      que
    end
    module_function :externalIterator
  end
  
  def match_items(a, b)
    begin
      ia = Pipe.externalIterator(a)
      ib = Pipe.externalIterator(b)
      i = 0
      loop do
	item_a = ia.read
	item_b = ib.read
	
	if ia.eof == item_a and ib.eof != item_b
	  printf "collections `a' shorter than `b'(size %d)\n", i
	  return
	elsif ia.eof != item_a and ib.eof == item_b
	  printf "collections `b' shorter than `a'(size %d)\n", i
	  return
	elsif ia.eof == item_a and ib.eof ==item_b
	  break
	elsif item_a != item_b
	  printf "collections differ on %dth item\n", i
	  return
	end
	i+=1
      end
      printf "collections `a' and `b' are same(size %d)\n", i
    ensure
      ia.close
      ib.close
    end
  end
  
  match_items([1,2,3,4,5],[1,2,8,9,0])
  match_items([1,2,3,4],[1,2])
  match_items([1,2],[1,2,8,9,0])
  match_items([1,2],[1,2,8,9,0])
  match_items([1,2,3,4,5],[1,2,3,4,5])
  match_items([1,2,3,4,5],[1,2,3,4,4])
  match_items({1,2,3,4},{1,2,3,4})
  match_items([1,2,3,nil,5],[1,2,3,nil,5])
end  
#=end
=begin
#
# Pipe のテストプログラム部分
#

if __FILE__ == $0
  pipe = Pipe.new(3)

  writer = []
  for i in 1..4 
    th = Thread.new {
      for e in 1..5 
	pipe.write(e)
      end
    }
    writer.push(th)
  end

  reader = []
  for i in 1..4
    th = Thread.new {
      begin
	while (v = pipe.read) != pipe.eof
	  p v
	end
      ensure
	print "died\n"
      end
    }
    reader.push(th)
  end

  begin
    writer.each do |th|
      Thread.join(th)
    end
    pipe.close
  end

  reader.each do |th|
    Thread.join(th)
  end
end
=end

In This Thread

Prev Next