fun do-op a b op { match op with '+: a + b with '-: a - b with '*: a * b with '/: a / b with _: error } flow gen a b ops -> res { (do-op a>> b>> ops>>) -> >>res } do main { commit (reduce print (gen [1 2 3] [3 2 1] ['+ '- '*])) }