From 65b39c7d66244d275ad75c734bc42b0588379bfb Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sat, 1 Apr 2017 21:18:02 -0400 Subject: - Some refactorings, new types & functions, and moved the lux/effect module to lux/control/effect. --- stdlib/test/test/lux/control/effect.lux | 72 +++++++++++++++++++++++++++++++++ stdlib/test/test/lux/effect.lux | 72 --------------------------------- stdlib/test/tests.lux | 16 ++++---- 3 files changed, 80 insertions(+), 80 deletions(-) create mode 100644 stdlib/test/test/lux/control/effect.lux delete mode 100644 stdlib/test/test/lux/effect.lux (limited to 'stdlib/test') diff --git a/stdlib/test/test/lux/control/effect.lux b/stdlib/test/test/lux/control/effect.lux new file mode 100644 index 000000000..59fc116dc --- /dev/null +++ b/stdlib/test/test/lux/control/effect.lux @@ -0,0 +1,72 @@ +(;module: + lux + (lux [io "IO/" Monad] + (control monad + functor + effect) + (data [text] + text/format) + [macro] + ["R" math/random] + pipe) + lux/test) + +(do-template [ ] + [(effect: + ( [Nat Text] Bool) + ( Nat))] + + [EffA opA fieldA] + [EffB opB fieldB] + [EffC opC fieldC] + ) + +(do-template [ ] + [(handler: _ + (=> [io;IO io;Monad]) + (def: ( size sample) + (IO/wrap ( size (text;size sample)))) + + (def: (IO/wrap )))] + + [EffA opA n.< fieldA +10] + [EffB opB n.= fieldB +20] + [EffC opC n.> fieldC +30] + ) + +(type: EffABC (|E EffA EffB EffC)) + +(def: Functor + (Functor EffABC) + (|F Functor Functor Functor)) + +(def: Handler + (Handler EffABC io;IO) + (|H io;Monad + Handler Handler Handler)) + +## [Tests] +(test: "Algebraic effects" + (let% [ (do-template [ ] + [(io;run (with-handler Handler + (doE Functor + [] + (lift ( "YOLO"))))) + (n.= (io;run (with-handler Handler + (doE Functor + [] + (lift )))))] + + [opA +10 fieldA +10] + [opB +4 fieldB +20] + [opC +2 fieldC +30])] + (assert "Can handle effects using handlers." + (and + + (n.= +60 (io;run (with-handler Handler + (doE Functor + [a (lift fieldA) + b (lift fieldB) + c (lift fieldC)] + (wrap ($_ n.+ a b c)))))) + )))) diff --git a/stdlib/test/test/lux/effect.lux b/stdlib/test/test/lux/effect.lux deleted file mode 100644 index 38ca21ce1..000000000 --- a/stdlib/test/test/lux/effect.lux +++ /dev/null @@ -1,72 +0,0 @@ -(;module: - lux - (lux [io "IO/" Monad] - (control monad - functor) - (data [text] - text/format) - [macro] - ["R" math/random] - pipe - effect) - lux/test) - -(do-template [ ] - [(effect: - ( [Nat Text] Bool) - ( Nat))] - - [EffA opA fieldA] - [EffB opB fieldB] - [EffC opC fieldC] - ) - -(do-template [ ] - [(handler: _ - (=> [io;IO io;Monad]) - (def: ( size sample) - (IO/wrap ( size (text;size sample)))) - - (def: (IO/wrap )))] - - [EffA opA n.< fieldA +10] - [EffB opB n.= fieldB +20] - [EffC opC n.> fieldC +30] - ) - -(type: EffABC (|E EffA EffB EffC)) - -(def: Functor - (Functor EffABC) - (|F Functor Functor Functor)) - -(def: Handler - (Handler EffABC io;IO) - (|H io;Monad - Handler Handler Handler)) - -## [Tests] -(test: "Algebraic effects" - (let% [ (do-template [ ] - [(io;run (with-handler Handler - (doE Functor - [] - (lift ( "YOLO"))))) - (n.= (io;run (with-handler Handler - (doE Functor - [] - (lift )))))] - - [opA +10 fieldA +10] - [opB +4 fieldB +20] - [opC +2 fieldC +30])] - (assert "Can handle effects using handlers." - (and - - (n.= +60 (io;run (with-handler Handler - (doE Functor - [a (lift fieldA) - b (lift fieldB) - c (lift fieldC)] - (wrap ($_ n.+ a b c)))))) - )))) diff --git a/stdlib/test/tests.lux b/stdlib/test/tests.lux index ffe0628bf..2a7615dac 100644 --- a/stdlib/test/tests.lux +++ b/stdlib/test/tests.lux @@ -22,8 +22,8 @@ ["_;" frp] ["_;" promise] ["_;" stm]) - (control ["_;" interval]) - ["_;" effect] + (control ["_;" effect] + ["_;" interval]) (data [bit] [bool] [char] @@ -47,7 +47,7 @@ [set] [ordered] [stack] - ## [vector] + [vector] (tree [rose] [zipper]) ["_;" seq] @@ -55,10 +55,11 @@ (text [format]) ) ["_;" math] - (math ## ["_;" random] - ["_;" simple] + (math ["_;" simple] (logic ["_;" continuous] - ["_;" fuzzy])) + ["_;" fuzzy]) + ## ["_;" random] + ) ## ["_;" macro] (macro ["_;" ast] ["_;" syntax] @@ -68,8 +69,7 @@ ["_;" type] (type ["_;" check] ["_;" auto]) - ) - )) + ))) ## [Program] (program: args -- cgit v1.2.3