nt/nib/types/fault.nix

18 lines
353 B
Nix
Raw Normal View History

2025-12-14 12:59:31 +10:00
{...}:
with builtins; rec {
2025-12-14 11:59:29 +10:00
# Fault Monad
# Wrapper around an error (ie builtins.abort)
Fault = error: {
2025-12-14 17:46:44 +10:00
_error_ = error;
2025-12-14 11:59:29 +10:00
};
# Pattern Matching
2025-12-14 17:46:44 +10:00
isFault = F: attrNames F == ["_error_"];
2025-12-14 11:59:29 +10:00
# Unwrap (Monadic Return Operation)
2025-12-14 17:46:44 +10:00
unwrapFault = F: F._error_;
2025-12-14 11:59:29 +10:00
# Map (Monadic Bind Operation)
mapFault = f: F: Fault (f (unwrapFault F));
2025-12-14 11:59:29 +10:00
}