map&reduce: first step

master
Denis Knauf 2010-04-20 18:54:35 +02:00
parent 162dbb020c
commit bf67c1752f
1 changed files with 10 additions and 3 deletions

View File

@ -53,13 +53,16 @@ class Functional
pre = callstack
callstack = case m
when :collect then lambda {|val| pre.call e.call( val) }
when :map then lambda {|val| e.call( val).each &pre }
when :select then lambda {|val| pre.call val if e.call val }
when :delete_if then lambda {|val| pre.call val unless e.call val }
when :compact then lambda {|val| pre.call val if val }
when :map then lambda {|val| e.call( val).each &pre }
when :reduce
buf = {}
lambda {|val| buf[ val.first] = e.call( *val) }
when :together
buf = a[2]
lambda {|val| if e.call val then pre.call buf; buf = a[2]+val else buf += val end }
buf = a[2].dup
lambda {|val| if e.call val then pre.call buf; buf = a[2].dup+val else buf += val end }
else
$stderr.puts "Whats that? #{m.inspect}"
callstack
@ -67,4 +70,8 @@ class Functional
end
@obj.send @func||:each, *@args, &callstack
end
def p
each &Kernel.method( :p)
end
end