From cff5a0dfa89ab3a7f95512382cedf88f8e1709d1 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Fri, 9 Dec 2022 18:16:41 +0200 Subject: Fix purity issue --- core/common.milch | 7 +++++-- core/result.milch | 7 +++++++ 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'core') diff --git a/core/common.milch b/core/common.milch index cddf02f..2dc6698 100644 --- a/core/common.milch +++ b/core/common.milch @@ -1,8 +1,11 @@ ;; Control flow ;;;;;;;;;;;;;;;;;;;;;;;;; -(let . (\[f g] - (\[x] (f (g x))))) +; function composition +(let . (\[f g x] (f (g x)))) + +; impure version of . +(let .! (\![f g x] (f (g x)))) (let flow (\[fs] (foldr . id (reverse fs)))) 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))) -- cgit v1.3