func map_range(a, b, x) { var (a1, a2, b1, b2) = (a.bounds, b.bounds); x-a1 * b2-b1 / a2-a1 + b1; } var a = 0..10; var b = -1..0; for x in a { say "#{x} maps to #{map_range(a, b, x)}"; }