i am having fun atm with lineartypes, and that's about the only tolerable syntax I can find due to all these one-multiplicity constraint: \x1 x2 -> use (x1, x2) (\x1 x2 -> f (x1 + x2)) -- use will make a copy of vars, so that you can consume again later &+ \((x1, x2), y) -> use y (\y -> f y) &- \y -> g y -- (&-) will discard the result of "f y" linearly & ... You would need to disable the variable shadowing warning too...