#!/usr/bin/ruby

#
## Using a generic curry function:
#

func curry(f, *args1) {
    func (*args2) {
        f(args1..., args2...);
    }
}

func add(a, b) {
    a + b
}

var adder = curry(add, 1);
say adder(3);                 #=>4


#
## Another way, using lazy methods:
#

var adder2 = 1.method(:add);
say adder2(3);                #=> 4