nt/nib/std/fault.nix
Emile Clark-Boman b9f2acf7e7 add Fault monad
2025-12-14 11:59:29 +10:00

16 lines
326 B
Nix

{...}: rec {
# Fault Monad
# Wrapper around an error (ie builtins.abort)
Fault = error: {
error = error;
};
# Pattern Matching
isFault = F: builtins.attrNames F == ["error"];
# Unwrap (Monadic Return Operation)
unwrap = F: F.error;
# Map (Monadic Bind Operation)
map = f: F: Fault (f (unwrap F));
}