final: prev: let inherit (final) isFunction; in rec { # Ternary operator # Exaample: # tern false 1 2 => 2 # tern true 1 2 => 1 tern = pred: x: y: if pred then x else y; # Right-associate and chain following single-operand functions # Example: # right f g h 1 => f(g(h(1))) right = f: g: tern (isFunction g) (right (x: f (g (x)))) (f (g)); }