aboutsummaryrefslogtreecommitdiffstats
path: root/core/result.milch
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2022-12-09 18:16:41 +0200
committerJan Tuomi <jans.tuomi@gmail.com>2022-12-09 18:16:41 +0200
commitcff5a0dfa89ab3a7f95512382cedf88f8e1709d1 (patch)
treed6b49f3a49d623fdac1042b6de280886f587e5a1 /core/result.milch
parent0ec99f0ddba6084df7c78ff905849a9d3d0a3c5b (diff)
Fix purity issue
Diffstat (limited to 'core/result.milch')
-rw-r--r--core/result.milch7
1 files changed, 7 insertions, 0 deletions
diff --git a/core/result.milch b/core/result.milch
index f122ee6..903ca38 100644
--- a/core/result.milch
+++ b/core/result.milch
@@ -1,3 +1,5 @@
+(import "core/common")
+
(record Result/Ok value)
(record Result/Ex value)
@@ -23,3 +25,8 @@
(match (kind m)
:Result/Ok (Result/Ok/get-value m)
:Result/Ex (catch-f (Result/Ex/get-value m)))))
+
+; converts the given impure function that can throw a fatal error
+; to an impure function that returns a Result
+(let Result/safe! (\![fn! arg]
+ (try! Result/ex (.! Result/ok fn!) arg)))