#!/usr/bin/ruby

#
## https://rosettacode.org/wiki/First-class_functions/Use_numbers_analogously
#

func multiplier(n1, n2) {
    func (n3) {
        n1 * n2 * n3;
    }
}

var x  = 2.0;
var xi = 0.5;
var y  = 4.0;
var yi = 0.25;
var z  = (x + y);
var zi = (1 / (x + y));

var numbers = [x, y, z];
var inverses = [xi, yi, zi];

[numbers, inverses].zip { |g,f|
    say multiplier(g, f)(0.5);
}