From 6b9782ce4a36e93156426b5747efcc90401b6251 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Tue, 6 Dec 2022 21:18:18 +0200 Subject: Add core/result.milch --- core/result.milch | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 core/result.milch (limited to 'core/result.milch') 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))))) -- cgit v1.3