From 29c0e991917ac744b856919331ff039d04d5832b Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sun, 7 May 2017 19:51:36 -0400 Subject: - Added "while" and "do-while" loops for stateful computations. - Improved tests for lux/control/state. --- stdlib/source/lux/control/state.lux | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'stdlib/source') diff --git a/stdlib/source/lux/control/state.lux b/stdlib/source/lux/control/state.lux index 9ee12e93d..37135ac06 100644 --- a/stdlib/source/lux/control/state.lux +++ b/stdlib/source/lux/control/state.lux @@ -122,3 +122,19 @@ (do Monad [a ma] (wrap [state a])))) + +(def: #export (while condition body) + (All [s] (-> (State s Bool) (State s Unit) (State s Unit))) + (do Monad + [execute? condition] + (if execute? + (do @ + [_ body] + (while condition body)) + (wrap [])))) + +(def: #export (do-while condition body) + (All [s] (-> (State s Bool) (State s Unit) (State s Unit))) + (do Monad + [_ body] + (while condition body))) -- cgit v1.2.3