[#48779] Ruby jobs — Phlip <phlip_cpp@...>

Rubies:

31 messages 2002/09/01

[#48886] cgi redirect — Tom Robinson <tom@...>

in perl, this is easy:

15 messages 2002/09/03

[#48917] New list: ruby-modules - for module developers... — Sean Chittenden <sean@...>

Howdy folks. I've put together a new list for ruby developers at

18 messages 2002/09/03

[#48978] option remember

Hi,

16 messages 2002/09/04

[#49042] Options for optimizing a large Ruby system — sera@... (Francis Hwang)

Hi everybody:

16 messages 2002/09/04

[#49107] RE: suggestions to the Ruby community — "Berger, Daniel" <djberge@...>

I've been following the documentation discussion with some interest. Some

35 messages 2002/09/05
[#49136] RE: suggestions to the Ruby community — " JamesBritt" <james@...> 2002/09/05

[#49294] OS-independent build of ruby — "reckless" <reckless2k@...>

Hi,

42 messages 2002/09/06
[#49318] Re: OS-independent build of ruby — ptkwt@...1.aracnet.com (Phil Tomson) 2002/09/06

In article <alali7$cth$01$1@news.t-online.com>,

[#49450] JRuby (was Re: OS-independent build of ruby) — Austin Ziegler <austin@...> 2002/09/08

JRuby exists ...

[#49297] Larry Wall's comments on Ruby — ptkwt@...1.aracnet.com (Phil Tomson)

http://interviews.slashdot.org/article.pl?sid=02/09/06/1343222&mode=thread&tid=145

29 messages 2002/09/06

[#49301] Re: Larry Wall's comments on Ruby — Andrew Hunt <andy@...>

61 messages 2002/09/06
[#49372] Re: Larry Wall's comments on Ruby — Reimer Behrends <behrends@...> 2002/09/07

Patrick May (patrick-may@monmouth.com) wrote:

[#49446] Re: Larry Wall's comments on Ruby — Austin Ziegler <austin@...> 2002/09/08

On Sat, 7 Sep 2002 14:21:22 +0900, Reimer Behrends wrote:

[#49333] Re: Larry Wall's comments on Ruby — Andrew Hunt <andy@...>

>yeah and as I said, depending on your background , Ruby is just as full

20 messages 2002/09/06

[#49627] Re: Larry Wall's comments on Ruby — "Marcin 'Qrczak' Kowalczyk" <qrczak@...>

Mon, 9 Sep 2002 14:26:37 +0900, Wirianto Djunaidi <ryo_saeba_009@yahoo.com> pisze:

83 messages 2002/09/09
[#49658] Re: Larry Wall's comments on Ruby — "Christoph" <chr_news@...> 2002/09/10

"Yukihiro Matsumoto" wrote

[#49707] Re: Larry Wall's comments on Ruby — David.Stagner@...

I think Gavin is right... we don't "add" strings, we concatenate them.

16 messages 2002/09/10

[#49766] RubyInline 1.0.4 Released! (fwd) — Pat Eyler <pate@...>

Woohoo! another cool new toy to play with!

34 messages 2002/09/10
[#49965] Re: Windows XP : RubyInline 1.0.4 Released! (fwd) — "Park Heesob" <phasis@...> 2002/09/12

Hi,

[#49787] call for commentary: review of Ruby for a magazine (long, sorry!) — Rick Wayne <fewayne@...>

hello again folks,

30 messages 2002/09/10

[#49849] private variables — ts <decoux@...>

81 messages 2002/09/11
[#50348] Re: private variables — William Djaja Tjokroaminata <billtj@...> 2002/09/16

Well, will these localized/private variables make it into the next Ruby

[#49988] not grasping the method overloading/multi-dispatch thing — dblack@...

Hello --

58 messages 2002/09/12
[#49990] Re: not grasping the method overloading/multi-dispatch thing — Friedrich Dominicus <frido@...> 2002/09/12

dblack@candle.superlink.net writes:

[#49992] Re: not grasping the method overloading/multi-dispatch thing — dblack@... 2002/09/12

Hi --

[#50040] Re: not grasping the method overloading/multi-dispatch thing — ptkwt@...1.aracnet.com (Phil Tomson) 2002/09/12

In article <3D80AD8D.27388.FBF0F18@localhost>,

[#50027] interesting Perl Journal move — Pat Eyler <pate@...>

The Perl Journal is being reborn yet again. This time, it will be an

21 messages 2002/09/12
[#50041] Re: interesting Perl Journal move — Jim Freeze <jim@...> 2002/09/12

On Fri, Sep 13, 2002 at 01:44:18AM +0900, Pat Eyler wrote:

[#50172] DbTalk 0.7 — Dalibor Sramek <dali@...>

I would like to announce a new release of my Ruby project DbTalk.

17 messages 2002/09/13

[#50224] MVC and OO Design? — jcb@... (MetalOne)

The Model View Controller Architecture has always had me a bit

18 messages 2002/09/14

[#50298] camelCaseTo_ruby_case.rb ?? — Thomas Sdergaard <tsondergaard@...>

Hi,

21 messages 2002/09/15
[#50304] Re: camelCaseTo_ruby_case.rb ?? — dblack@... 2002/09/16

Hello --

[#50312] Re: camelCaseTo_ruby_case.rb ?? — Joel VanderWerf <vjoel@...> 2002/09/16

[#50369] Why are parser tools rarely used in ruby? — "MikkelFJ" <mikkelfj-anti-spam@...>

Why is it that all the ruby source I find in the Ruby (windows) distribution

25 messages 2002/09/16

[#50374] Dependency "trees" - suggestions? — Massimiliano Mirra <list@...>

I'm struggling with building dependency "trees" for rpkg. What

15 messages 2002/09/16

[#50403] comments and continuing strings on the next line — Paul Brannan <pbrannan@...>

I have a tendency to write:

14 messages 2002/09/16

[#50466] Qt vs. FOX vs. ? (was Help on installing ruby-qt on windowsXP) — "Volkmann, Mark" <Mark.Volkmann@...>

> -----Original Message-----

16 messages 2002/09/17

[#50525] Matz, if you're reading, please scan this email — ser@... (Sean Russell)

I've found a problem with the Ruby interpreter, wherein the

23 messages 2002/09/18
[#51226] Re: Matz, if you're reading, please scan this email — Sean Chittenden <sean@...> 2002/09/24

> I've found a problem with the Ruby interpreter, wherein the

[#51281] Re: Matz, if you're reading, please scan this email — ts <decoux@...> 2002/09/25

>>>>> "S" == Sean Chittenden <sean@chittenden.org> writes:

[#51454] Re: Matz, if you're reading, please scan this email — Sean Chittenden <sean@...> 2002/09/26

> S> In the unit tests for libxml, I think I've pushed things to SEGV land

[#51592] Re: Matz, if you're reading, please scan this email — ts <decoux@...> 2002/09/27

>>>>> "S" == Sean Chittenden <sean@chittenden.org> writes:

[#51742] Re: Matz, if you're reading, please scan this email — Sean Chittenden <sean@...> 2002/09/28

> >>>>> "S" == Sean Chittenden <sean@chittenden.org> writes:

[#51748] Re: Matz, if you're reading, please scan this email — ts <decoux@...> 2002/09/28

>>>>> "S" == Sean Chittenden <sean@chittenden.org> writes:

[#51796] ruby bug in tight loops? (was: Re: Matz, if you're reading, please scan this email) — Sean Chittenden <sean@...> 2002/09/28

> S> :-/ You could be right, but, the IO context is created when reading

[#51825] Re: ruby bug in tight loops? (was: Re: Matz, if you're reading, please scan this email) — ts <decoux@...> 2002/09/29

>>>>> "S" == Sean Chittenden <sean@chittenden.org> writes:

[#51826] Re: ruby bug in tight loops? (was: Re: Matz, if you're reading, please scan this email) — Sean Chittenden <sean@...> 2002/09/29

> S> Good catch, I fixed this in the CVS version, however this is a

[#51831] Re: ruby bug in tight loops? (was: Re: Matz, if you're reading, please scan this email) — ts <decoux@...> 2002/09/29

>>>>> "S" == Sean Chittenden <sean@chittenden.org> writes:

[#50579] How to Efficiently Calculate the Pattern of Zeros and Ones? — William Djaja Tjokroaminata <billtj@...>

Hi,

11 messages 2002/09/18

[#50606] Python the new Lisp, what about Ruby then? — web2ed@... (Edward Wilson)

I've been reading that Python is the new lisp.

19 messages 2002/09/18
[#50614] Re: Python the new Lisp, what about Ruby then? — Tom Sawyer <transami@...> 2002/09/19

come on! python the new lisp? what's that suppose to mean? nothing

[#50629] RE: Python the new Lisp, what about Ruby then? — "Mike Campbell" <michael_s_campbell@...> 2002/09/19

> ruby though just may gain as great a heritage as lisp due to its highly

[#50652] Is better to subclass or to add methods to an existing class? — Vincent Foley <vinfoley@...>

I was discussing with a (Python) friend last night. I told him that one

31 messages 2002/09/19

[#50667] select and select — dblack@...

Hello --

99 messages 2002/09/19
[#50906] class documentation — "Mark Volkmann" <volkmann2@...> 2002/09/21

Is there a general concensus as to the best tool/format for documenting Ruby

[#50787] Re: select and select — Joel VanderWerf <vjoel@...> 2002/09/20

Yukihiro Matsumoto wrote:

[#50911] Re: select and select — matz@... (Yukihiro Matsumoto) 2002/09/21

Hi,

[#50912] Re: select and select — dblack@... 2002/09/21

Hi --

[#51168] Re: select and select — "Gavin Sinclair" <gsinclair@...> 2002/09/24

[#51184] Re: select and select — dblack@... 2002/09/24

Hi --

[#51196] Re: select and select — "Gavin Sinclair" <gsinclair@...> 2002/09/24

[#51199] Re: select and select — dblack@... 2002/09/24

Hi --

[#50732] don't understand cause of `sysread': Bad file descriptor (Errno::EBADF) — Robert McGovern <tarasis@...>

Was writting a script to poll an audiotron (www.audiotron.net) and

13 messages 2002/09/19

[#50762] Thoughts on improving usage of Regexp#match — "Hal E. Fulton" <hal9000@...>

Please feel free to point out obvious things

15 messages 2002/09/20

[#50850] Checking hash key's and values, with case insensitivity — khabibiuf@... (Khurram)

Hey all,

26 messages 2002/09/20

[#50867] Speed up suggestions — Tomas Brixi <tomas_brixi@...>

Hello,

18 messages 2002/09/20

[#50878] String interpolation at will? — "Hal E. Fulton" <hal9000@...>

Maybe I'm overlooking something obvious,

14 messages 2002/09/20
[#50880] RE: String interpolation at will? — Steve Tuckner <STUCKNER@...> 2002/09/20

Maybe this is too dangerous but

[#50958] are functions/methods "first class objects"? — David Garamond <davegaramond@...>

sorry this is a bit philosophical, but i just wonder whether ruby can be

17 messages 2002/09/22

[#50972] Re: Speed up suggestions — Tomas Brixi <tomas_brixi@...>

Thanks all for speedup tips.

22 messages 2002/09/23
[#50975] Re: Speed up suggestions — Ryan Davis <ryand@...> 2002/09/23

[#50983] Re: Speed up suggestions — Tomas Brixi <tomas_brixi@...> 2002/09/23

[#51156] adding overload to ruby — "Bulat Ziganshin" <bulatz@...>

Hello all and especially Matz,

285 messages 2002/09/24
[#51371] Re: adding overload to ruby — "Justin Johnson" <justinj@...> 2002/09/26

[#51372] Re: adding overload to ruby — "Bulat Ziganshin" <bulatz@...> 2002/09/26

Hello Justin,

[#51375] Re: adding overload to ruby — ts <decoux@...> 2002/09/26

>>>>> "B" == Bulat Ziganshin <bulatz@integ.ru> writes:

[#51376] Re: adding overload to ruby — "Bulat Ziganshin" <bulatz@...> 2002/09/26

Hello ts,

[#51378] Re: adding overload to ruby — ts <decoux@...> 2002/09/26

>>>>> "B" == Bulat Ziganshin <bulatz@integ.ru> writes:

[#51382] Re: adding overload to ruby — "Bulat Ziganshin" <bulatz@...> 2002/09/26

Hello ts,

[#51384] Re: adding overload to ruby — dblack@... 2002/09/26

Hi --

[#51388] Re: adding overload to ruby — "Bulat Ziganshin" <bulatz@...> 2002/09/26

Hello dblack,

[#51391] Re: adding overload to ruby — dblack@... 2002/09/26

Hi --

[#51413] Re: adding overload to ruby — "Justin Johnson" <justinj@...> 2002/09/26

[#51542] Re: adding overload to ruby — "Bulat Ziganshin" <bulatz@...> 2002/09/27

Hello Justin,

[#51574] R (was: adding overload to ruby) — Nikodemus Siivola <tsiivola@...> 2002/09/27

[#51576] Re: R (was: adding overload to ruby) — "Bulat Ziganshin" <bulatz@...> 2002/09/27

Hello Nikodemus,

[#51591] Re: R (was: adding overload to ruby) — Nikodemus Siivola <tsiivola@...> 2002/09/27

[#51621] Re: R — William Djaja Tjokroaminata <billtj@...> 2002/09/27

Hi,

[#51741] Re: R — Nikodemus Siivola <tsiivola@...> 2002/09/28

[#51747] Re: R — William Djaja Tjokroaminata <billtj@...> 2002/09/28

Hi,

[#51752] Re: R — dblack@... 2002/09/28

Hi --

[#51755] Re: R — William Djaja Tjokroaminata <billtj@...> 2002/09/28

Oh yes, in fact, this is one of our selling points, right? We show the

[#51918] Re: R — "Bulat Ziganshin" <bulatz@...> 2002/09/30

Hello William,

[#51923] Re: R — matz@... (Yukihiro Matsumoto) 2002/09/30

Hi,

[#51938] Re: R — "Bulat Ziganshin" <bulatz@...> 2002/09/30

Hello Yukihiro,

[#51949] Re: R — matz@... (Yukihiro Matsumoto) 2002/09/30

Hi,

[#51953] Re: R — "Bulat Ziganshin" <bulatz@...> 2002/09/30

Hello Yukihiro,

[#51593] RE: R (was: adding overload to ruby) — "Christian Boos" <cboos@...> 2002/09/27

Did you have a look at http://merd.net :

[#51462] Re: adding overload to ruby — William Djaja Tjokroaminata <billtj@...> 2002/09/26

Why not designing a new language with a mix of typed variable and untyped

[#51467] Re: adding overload to ruby — <bbense+comp.lang.ruby.Sep.26.02@...> 2002/09/26

-----BEGIN PGP SIGNED MESSAGE-----

[#51185] Object-Oriented struct Model in C — William Djaja Tjokroaminata <billtj@...>

Hi,

20 messages 2002/09/24

[#51389] Is Ruby's grammar LL(k)? — Mauricio =?unknown-8bit?Q?Fern=E1ndez?= <batsman.geo@...>

16 messages 2002/09/26

[#51444] Ruby/Tk or mod_ruby or what ?? — GBanschbach@...

Dear All,

16 messages 2002/09/26

[#51486] Ruby - common pitfalls? — Rudolf Polzer <AntiATField_adsgohere@...>

Is there a list of common pitfalls beginners in this language should

32 messages 2002/09/26

[#51530] Where Is Method Call Precedence? — William Djaja Tjokroaminata <billtj@...>

Hi,

40 messages 2002/09/27

[#51639] RE: REXML namespace support — "Volkmann, Mark" <Mark.Volkmann@...>

In my case I'm given a string which is a namespace prefix and I want to

14 messages 2002/09/27

[#51809] thoughts on typelessness — dblack@...

Hi --

136 messages 2002/09/29
[#51810] Re: thoughts on typelessness — William Djaja Tjokroaminata <billtj@...> 2002/09/29

Hi David,

[#51877] Re: thoughts on typelessness — Chris Gehlker <canyonrat@...> 2002/09/29

[#52055] Re: thoughts on typelessness — Bryan Murphy <bryan@...> 2002/10/01

Gavin Sinclair wrote:

[#52059] Re: thoughts on typelessness — Chris Gehlker <canyonrat@...> 2002/10/01

[#52062] Re: thoughts on typelessness — Bryan Murphy <bryan@...> 2002/10/01

Chris Gehlker wrote:

[#52081] Re: thoughts on typelessness — Chris Gehlker <canyonrat@...> 2002/10/01

[#52147] Re: thoughts on typelessness — William Djaja Tjokroaminata <billtj@...> 2002/10/01

Hi Dave,

[#52150] Re: thoughts on typelessness — Dave Thomas <Dave@...> 2002/10/01

William Djaja Tjokroaminata <billtj@y.glue.umd.edu> writes:

[#52151] Re: thoughts on typelessness — GOTO Kentaro <gotoken@...> 2002/10/01

At Wed, 2 Oct 2002 01:37:46 +0900,

[#52154] Re: thoughts on typelessness — Paul Brannan <pbrannan@...> 2002/10/01

On Wed, Oct 02, 2002 at 02:11:24AM +0900, GOTO Kentaro wrote:

[#51818] announce@ == less email (FAQ item?) — Ryan Davis <ryand-ruby@...>

ZenTest and ZenWeb were just released. I announced these to several

40 messages 2002/09/29

[#51974] Things That Newcomers to Ruby Should Know — William Djaja Tjokroaminata <billtj@...>

Things That Newcomers to Ruby Should Know

37 messages 2002/09/30
[#52128] Re: Things That Newcomers to Ruby Should Know — William Djaja Tjokroaminata <billtj@...> 2002/10/01

Thanks, Gabriele. I will try to incorporate your input. The "0 is

[#52965] Re: Things That Newcomers to Ruby Should Know — "Kontra, Gergely" <kgergely@...> 2002/10/11

>> - the ||= operator exists :-)

[#52970] Re: Things That Newcomers to Ruby Should Know — William Djaja Tjokroaminata <billtj@...> 2002/10/11

Hi,

[#52971] Re: Things That Newcomers to Ruby Should Know — dblack@... 2002/10/11

Hi --

Re: Teach me about yield

From: Christian Szegedy <szegedy@...>
Date: 2002-09-23 12:15:41 UTC
List: ruby-talk #51000
Joseph Benik wrote:

> when do you use yield?  has it solved problems for you when you
> couldn't find another solution?  how did you first start using yield?

No, but it makes life sometimes much simpler. (After all
you could solve everything in machine code also...)

Assume that you have some data structure (e.g. a list,a tree,
a database,a string, a chessboard, whatever)
and you want to allow clients to iterate over its elements
(list entries, tree entries, database entries,
characters of the string, lines of the string, pieces on the
chess board,...).

In C, C++ or Java you would use either

1) Function pointer
2) Iterator Object
3) Cursor Object.

Example:

You want to iterate over a list (For simplicity, I took list,
but you typically have some much more complicated container class.)

*****************************************************************
Solution 1) With function pointer:

You could write in C:

void List_Iter(List_t list,
                void (*apply)(void *obj,va_list args),
                ...)
{
    va_list args;
    /** blah blah */
    va_start(apply,args);
    for ( /** blah blah */ )
    {
       apply(obj,args);
    }
    va_end(args);
}

Usage:
   a) For each iteration,
      you have to define a new iterator function
      you are passing List_Iter.

Drawback:
   a) You have to write **A LOT OF** code.
   b) The va_list is nasty (no type checking!)
      (You can use a void * context instead, but it has
       the same problem.)


*****************************************************************
Solution 2) Apply class;

You write

class List_Applier
{
    public:
    virtual void call(void *obj)=0;
};

class List
{
    public:
    // Lot of blah blah...
    void iter(List_applier &apply)
    {
       // Blah Blah
       for( /* blah blah */ )
       {
          apply.call(obj);
       }
    }
};

Usage: For each iteration you have to introduce a
        new class, override the call method.

Advatage: (to solution 1)): Type safe: no nasty va_list, (or
            void * context).

Drawback: Even **MORE** lines of code than solution 1).
           You have to write about 20 lines for a very
           simple iteration!

*****************************************************************

Solution 3) Cursor. (In C++:)

class List
{
    public:
       class Cursor
       {
           List::Entry *entry;
           public:

           Cursor(List &list)
           {
              // Blah blah
           }
  	
           void next()
           {
              /** Blah blah */
           }

           bool valid()
           {
              return (entry!=(List::Entry*)0);
           }
       };
};

Usage :
You write
    for( Cursor cur(list); cur.valid() ; cur.next()
    {
        // DO something...
    }

Advantage (to 1) 2)) **Much** less work to use. (Only 1 line instead of 
about 20).

Drawbacks: (Still, it is too much for a simple iteration.)
            a) **A LOT_OF code** to write the iterator. (A new
               class and 3 new methods)
            b) There is **no** standard way in the language: you have
               to remember the way how to iterate over your particular
               data structure.
            c) It is not always simple to iterate over a data structure
                by using cursor and next (e.g. you would implement
                an iterator over a tree by a recursive function.)


*****************************************************************

Solution 4):
The Ruby way  (via yield, simply linked list):
(A complete implemenatation for a change):

Example A):

class List
   def add(obj)
     @first = [@first,obj]
   end

   def each
     e = @first
     while e
       yield e[1]
       e = e[0]
     end
   end
end

l = List.new

l.add("hello")
l.add("world")

l.each do |s|
   puts s
end

The yield in the "each" function calls the block for each object of
the list. The example above prints:
hello
world

Drawbacks: none.

-------------------------------------------------------------
Example B): Traversing a data structure recursively:

class Array
   def traverse_rec
     for e in self do
       if e.kind_of? Array
         e.traverse_rec
       else
         yield e
       end
     end
   end
end

[ [1,2] [1,3,[4,[5] ],2,[3,4] ] ].traverse_rec do |el|
    puts el;
end

outputs all elementes of the tree recursively.
(The tree is implemented as an array of (possible arrays of
  (possible ....))... )

------------------------------------------------------------
Example C)

Do something with each element of the a data structure
(minor variation of example 1):

class List
   def add(obj)
     @first = [@first,obj]
   end

   def map
     e = @first
     while e
       e[1] = yield e[1]
     end
   end
end

l = List.new

l.add("hello")
l.add("world")

l.map do |s|
   s.length
end

Each element of the list is replaced by its length.


-------------------------------------------------------------
Example D)

Do something according to a dynamic criterion

(Sum up all elements of a list conditionally)

class List
   def add(*objs)
     objs.each do |obj|
        @first = [@first,obj]
     end
   end

   def sum_if
     e = @first
     sum = 0;
     while e
       sum += e[1] if yield e[1]
     end
   end
end

l = List.new
l.add(1,3,4,5,6,2,1,6);

l.add_if do |i|
   (i%3)==0
end

The last function sums all elements of the list which
are divisible by 3.


I hope it gives you some insides about the power
of yield.

Regards, Christian






















In This Thread