From a547a9bcaf872ba2bc4dbf3fbbcfd8c04f199081 Mon Sep 17 00:00:00 2001 From: Emile Clark-Boman Date: Sun, 14 Dec 2025 11:33:40 +1000 Subject: [PATCH] make std.result compatible with builtins.tryEval --- nib/std/result.nix | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/nib/std/result.nix b/nib/std/result.nix index 064d3a6..740bf41 100644 --- a/nib/std/result.nix +++ b/nib/std/result.nix @@ -1,29 +1,26 @@ {lists, ...}: rec { # Result Monad Ok = value: { - ok = true; + success = true; value = value; }; Err = err: { - ok = false; - error = err; + success = false; + value = err; }; # Pattern Matching - isResult = r: - (builtins.length (builtins.attrNames r) == 2) - && builtins.hasAttr "ok" r - && (builtins.hasAttr "value" r || builtins.hasAttr "error" r); - isOk = r: isResult r && r.ok; - isErr = r: isResult r && !r.ok; + isResult = r: builtins.attrNames r == ["success" "value"]; + isOk = r: isResult r && r.success; + isErr = r: isResult r && !r.success; # Unwrap (Monadic Return Operation) unwrap = f: r: if isOk r then r.value - else f r.error; + else f r.value; - unwrapDefault = default: unwrap (x: default); + unwrapDefault = default: unwrap (_: default); # Map (Monadic Bind Operation) identity = r: r;