#!/usr/bin/ruby func increment(n, a) { n + a } func decrement(n, a) { n - a } assert_eq([42, 100, 99, 49] |Z> ([increment, 3], :sqrt), [45, 10, 102, 7]) assert_eq([100, 41, 49, 200] |Z> (:sqrt, { _+1 }), [10, 42, 7, 201]) assert_eq([5,6,7] |Z> [:pow, 2], [25, 36, 49]) assert_eq([5,6,7] |Z> [:pow, 2], [5,6,7] |X> [:pow, 2]) assert_eq([1,2,3,4] |Z> ([increment, 2], [decrement, 2]) |Z> ([decrement, 2], [increment, 2]), [1, 2, 3, 4]) assert_eq([1,2,3] |X> ([increment, 2], [decrement, 2]) |Z> ([decrement, 2], [increment, 2]), [1, 1, 2, 2, 3, 3]) assert_eq( [100, 10000, 1000000] |X> (:sqrt, [increment, 2]) |Z> ([:pow, 2], [decrement, 2]), [100, 100, 10000, 10000, 1000000, 1000000] ); assert_eq([3,4] |Z> (:ipow2, :ipow10), [8, 10000]) say "** Test passed!"