diff options
Diffstat (limited to 'core/result.milch')
| -rw-r--r-- | core/result.milch | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/core/result.milch b/core/result.milch new file mode 100644 index 0000000..897a540 --- /dev/null +++ b/core/result.milch @@ -0,0 +1,25 @@ +(record Result/Ok value) +(record Result/Ex value) + +(let Result/ok Result/Ok/create) +(let Result/ex Result/Ex/create) + +(let Result/map (\[f m] + (match (kind m) + "Result/Ok" (Result/ok (f (Result/Ok/get-value m))) + "Result/Ex" m))) + +(let Result/map-ex (\[f m] + (match (kind m) + "Result/Ok" m + "Result/Ex" (Result/ex (f (Result/Ex/get-value m)))))) + +(let Result/and-then (\[f m] + (match (kind m) + "Result/Ok" (f (Result/Ok/get-value m)) + "Result/Ex" m))) + +(let Result/try (\[catch-f m] + (match (kind m) + "Result/Ok" (Result/Ok/get-value m) + "Result/Ex" (catch-f (Result/Ex/get-value m))))) |
