Method: Tins::PartialApplication#partial

Defined in:
lib/tins/partial_application.rb

#partial(*args) ⇒ Object

Create a partial application of this Proc (or similar object) using args as the already applied arguments.



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/tins/partial_application.rb', line 17

def partial(*args)
  if args.empty?
    dup
  elsif args.size > arity
    raise ArgumentError, "wrong number of arguments (#{args.size} for #{arity})"
  else
    f = lambda { |*b| call(*(args + b)) }
    f.instance_variable_set :@__arity__, arity - args.size
    f
  end
end