lib/lambda_driver/currying.rb in lambda_driver-1.2.0 vs lib/lambda_driver/currying.rb in lambda_driver-1.2.1

- old
+ new

@@ -1,12 +1,20 @@ +# -*- encoding : utf-8 -*- module LambdaDriver::Currying - def curry(arity = nil) - f = self.to_proc - arity ||= __arity(f) - return f if arity == 0 - lambda{|arg| __curry(f, arity, arg, []) } + if RUBY_VERSION < '1.9.0' + def curry(arity = nil) + f = self.to_proc + arity ||= __arity(f) + return f if arity == 0 + + lambda{|arg| __curry(f, arity, arg, []) } + end + else + def curry(arity = nil) + self.to_proc.curry(arity) + end end private def __arity(f) (f.arity >= 0) ? f.arity : -(f.arity + 1) @@ -15,6 +23,11 @@ def __curry(f, arity, arg, passed) args = passed + [arg] return f.call(*args) if arity == 1 lambda{|arg| __curry(f, arity - 1, arg, args) } end + + + def self.included(klass) + klass.send(:alias_method, :%, :curry) + end end