diff --git a/lib/functional.rb b/lib/functional.rb
index 611891a..4d2142c 100644
--- a/lib/functional.rb
+++ b/lib/functional.rb
@@ -49,16 +49,23 @@ end
class Functional
include Enumerable
+ class DEFAULT
+ end
+
class Base
attr_reader :exe
attr_accessor :next
+ attr_reader :caller
+
def initialize &e
+ @caller = Kernel.caller.first
@exe = e
end
- def call *a
+ def base_fun *a
@next.call *a
end
+ alias call base_fun
def end
@next.end
@@ -74,34 +81,39 @@ class Functional
end
class Collect @buf.size
@next.call @buf
@buf.clear
end
end
+ alias call slice_fun
def end
@next.call @buf
@@ -231,7 +257,7 @@ class Functional
@buf, @n = [], n
end
- def call *a
+ def cons_fun *a
@buf.push a
unless @n > @buf.size
class < @buf.size
@@ -267,9 +294,10 @@ class Functional
@pager.puts a.inspect
end
- def call *a
+ def pager_fun *a
@pager.puts a
end
+ alias call pager_fun
def clean
@pager.close
@@ -300,8 +328,8 @@ class Functional
push Map.new( &exe)
end
- def reduce &exe
- push Reduce.new( &exe)
+ def reduce iv = ::Functional::DEFAULT, &exe
+ push Reduce.new( iv, &exe)
end
def select &exe