diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2022-12-06 21:18:18 +0200 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2022-12-06 21:36:54 +0200 |
| commit | 6b9782ce4a36e93156426b5747efcc90401b6251 (patch) | |
| tree | 3a7c68ee5eb3a03ec00a0dd850bb8512eec5b84a /core/result.milch | |
| parent | 35bf45fe54788c6fca6b105b65fc1622a4bb7d34 (diff) | |
Add core/result.milch
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))))) |
