diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/common.milch | 7 | ||||
| -rw-r--r-- | core/result.milch | 7 |
2 files changed, 12 insertions, 2 deletions
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))) |
