From: E S Date: 2005-01-29T10:42:33+09:00 Subject: Re: Convert a Hash into an Array > L�hett�j�: gabriele renzi > Aihe: Re: Convert a Hash into an Array > > linus sellberg ha scritto: > > georgesawyer wrote: > > > >>> did I mention that I love #inject? :-) > >> > >> (Wistfully) Even though 'inject' is the name in Smalltalk, I feel it were > >> better named, 'consolidate'. > > > > > > I don't have anything against #inject, but I could see the case for an > > alias #accumulate, much like SICP's accumulate which afaik is the same > > thing. > > > > (I wouldn't mind #reduce as well, though that would be slightly incorrect) > > #fold would be better imho (even if slightly incorrect) Well, since #foldr and #foldl are not offered, it may be better to call it #accum. On the other hand... # ...if memory serves... module Enumerable def foldl(accum, sym) self.each do |item| accum = accum.send(sym, item) end end def foldr(accum, sym) self.reverse.each do |item| accum = item.send(sym, accum) end end end >> [1,2,3,4,5].foldl 0, :- => -15 # (((((0 - 1) - 2) - 3) - 4) - 5) >> [1,2,3,4,5].foldr 0, :- => 3 # (1 - (2 - (3 - (4 - (5 - 0))))) >> [true, true, false, true].foldl true, :& => false # ((((true & true) & true) & false) & true) E