2024-07-21 21:18:23 +00:00
|
|
|
final: prev:
|
2024-08-19 13:21:38 +00:00
|
|
|
let
|
2024-08-25 02:51:44 +00:00
|
|
|
inherit (prev) isFunction mkMerge mkIf;
|
2024-08-19 13:21:38 +00:00
|
|
|
in
|
2024-06-28 14:48:26 +00:00
|
|
|
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));
|
2024-08-25 02:51:44 +00:00
|
|
|
|
|
|
|
mkIfElse = predicate: yes: no: mkMerge [
|
|
|
|
(mkIf predicate yes)
|
|
|
|
(mkIf (!predicate) no)
|
|
|
|
];
|
2024-06-28 14:48:26 +00:00
|
|
|
}
|