aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/math/random.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/library/lux/math/random.lux34
1 files changed, 16 insertions, 18 deletions
diff --git a/stdlib/source/library/lux/math/random.lux b/stdlib/source/library/lux/math/random.lux
index 13bac71cf..469a17226 100644
--- a/stdlib/source/library/lux/math/random.lux
+++ b/stdlib/source/library/lux/math/random.lux
@@ -195,30 +195,28 @@
(def: .public (and left right)
(All (_ a b) (-> (Random a) (Random b) (Random [a b])))
- (do ..monad
- [=left left
- =right right]
- (in [=left =right])))
+ (function (_ prng)
+ (let [[prng left] (left prng)
+ [prng right] (right prng)]
+ [prng [left right]])))
(def: .public (or left right)
(All (_ a b) (-> (Random a) (Random b) (Random (Or a b))))
- (do [! ..monad]
- [? bit]
- (if ?
- (do !
- [=left left]
- (in {0 #0 =left}))
- (do !
- [=right right]
- (in {0 #1 =right})))))
+ (function (_ prng)
+ (let [[prng ?] (..bit prng)]
+ (if ?
+ (let [[prng left] (left prng)]
+ [prng {0 #0 left}])
+ (let [[prng right] (right prng)]
+ [prng {0 #1 right}])))))
(def: .public (either left right)
(All (_ a) (-> (Random a) (Random a) (Random a)))
- (do ..monad
- [? bit]
- (if ?
- left
- right)))
+ (function (_ prng)
+ (let [[prng ?] (..bit prng)]
+ (if ?
+ (left prng)
+ (right prng)))))
(def: .public (rec gen)
(All (_ a) (-> (-> (Random a) (Random a)) (Random a)))