From 337158b78b5f42a6b9fc46ae367d3179a944d8bb Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sat, 22 Jul 2017 13:59:38 -0400 Subject: - Some utility functions. --- stdlib/source/lux/concurrency/task.lux | 4 ++++ stdlib/source/lux/data/result.lux | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'stdlib') diff --git a/stdlib/source/lux/concurrency/task.lux b/stdlib/source/lux/concurrency/task.lux index 6f880ef79..9fc35ee5f 100644 --- a/stdlib/source/lux/concurrency/task.lux +++ b/stdlib/source/lux/concurrency/task.lux @@ -73,3 +73,7 @@ (task Unit))} (wrap (list (` (: (;;Task (~ type)) (P;promise' #;None)))))) + +(def: #export (from-promise promise) + (All [a] (-> (P;Promise a) (Task a))) + (:: P;Functor map (|>. #R;Success) promise)) diff --git a/stdlib/source/lux/data/result.lux b/stdlib/source/lux/data/result.lux index 77fd144f9..99c52e664 100644 --- a/stdlib/source/lux/data/result.lux +++ b/stdlib/source/lux/data/result.lux @@ -1,5 +1,5 @@ (;module: - lux + [lux #- assume] (lux (control functor applicative ["M" monad #*]))) @@ -68,3 +68,12 @@ (def: #export (fail message) (All [a] (-> Text (Result a))) (#Error message)) + +(def: #export (assume result) + (All [a] (-> (Result a) a)) + (case result + (#Success value) + value + + (#Error message) + (error! message))) -- cgit v1.2.3