@@ -3774,7 +3774,7 @@ or do nothing.
37743774
37753775### Values
37763776
3777- #### <a href="#collect-value"><code>(COLLECT INTO-ITR FA->M)</code></a> <sup><sub>[FUNCTION] · <a href="https://github.com/coalton-lang/coalton/tree/main/library/experimental/do-control-loops.lisp#L85-L95 ">src</a></sub></sup><a name="collect-value"></a>
3777+ #### <a href="#collect-value"><code>(COLLECT INTO-ITR FA->M)</code></a> <sup><sub>[FUNCTION] · <a href="https://github.com/coalton-lang/coalton/tree/main/library/experimental/do-control-loops.lisp#L99-L109 ">src</a></sub></sup><a name="collect-value"></a>
37783778<code>∀ :A :B :C :D. (<a href="#monad-class">Monad</a> :C) (<a href="#intoiterator-class">IntoIterator</a> :A :B) ⇒ (:A → (:B → (:C :D)) → (:C (<a href="#list-type">List</a> :D)))</code>
37793779
37803780Apply FA->M to each element produced by INTO-ITR and run the resulting monadic action.
@@ -3784,7 +3784,7 @@ Collect the results.
37843784
37853785***
37863786
3787- #### <a href="#collect-val-value"><code>(COLLECT-VAL M-OPERATION)</code></a> <sup><sub>[FUNCTION] · <a href="https://github.com/coalton-lang/coalton/tree/main/library/experimental/do-control-loops.lisp#L72-L82 ">src</a></sub></sup><a name="collect-val-value"></a>
3787+ #### <a href="#collect-val-value"><code>(COLLECT-VAL M-OPERATION)</code></a> <sup><sub>[FUNCTION] · <a href="https://github.com/coalton-lang/coalton/tree/main/library/experimental/do-control-loops.lisp#L86-L96 ">src</a></sub></sup><a name="collect-val-value"></a>
37883788<code>∀ :A :B :C. (<a href="#monad-class">Monad</a> :A) (<a href="#yielder-class">Yielder</a> :B) ⇒ ((:A (:B :C)) → (:A (<a href="#list-type">List</a> :C)))</code>
37893789
37903790Repeatedly run M-OPERATION, collecting each yielded value into a list until
@@ -3794,7 +3794,7 @@ no value is yielded.
37943794
37953795***
37963796
3797- #### <a href="#foreach-value"><code>(FOREACH INTO-ITR FA->M)</code></a> <sup><sub>[FUNCTION] · <a href="https://github.com/coalton-lang/coalton/tree/main/library/experimental/do-control-loops.lisp#L98-L107 ">src</a></sub></sup><a name="foreach-value"></a>
3797+ #### <a href="#foreach-value"><code>(FOREACH INTO-ITR FA->M)</code></a> <sup><sub>[FUNCTION] · <a href="https://github.com/coalton-lang/coalton/tree/main/library/experimental/do-control-loops.lisp#L112-L121 ">src</a></sub></sup><a name="foreach-value"></a>
37983798<code>∀ :A :B :C :D. (<a href="#monad-class">Monad</a> :C) (<a href="#intoiterator-class">IntoIterator</a> :A :B) ⇒ (:A → (:B → (:C :D)) → (:C <a href="#unit-type">Unit</a>))</code>
37993799
38003800Apply FA->M to each element produced by INTO-ITR and run the resulting monadic action.
@@ -3804,7 +3804,17 @@ Discards the return values and returns Unit.
38043804
38053805***
38063806
3807- #### <a href="#loop-times-value"><code>(LOOP-TIMES N M-OPERATION)</code></a> <sup><sub>[FUNCTION] · <a href="https://github.com/coalton-lang/coalton/tree/main/library/experimental/do-control-loops.lisp#L60-L68">src</a></sub></sup><a name="loop-times-value"></a>
3807+ #### <a href="#loop-do-while-value"><code>(LOOP-DO-WHILE M-TERM? BODY)</code></a> <sup><sub>[FUNCTION] · <a href="https://github.com/coalton-lang/coalton/tree/main/library/experimental/do-control-loops.lisp#L62-L71">src</a></sub></sup><a name="loop-do-while-value"></a>
3808+ <code>∀ :A :B :C. (<a href="#monad-class">Monad</a> :A) (<a href="#terminator-class">Terminator</a> :B) ⇒ ((:A :B) → (:A :C) → (:A <a href="#unit-type">Unit</a>))</code>
3809+
3810+ Before each iteration, evaluate M-TERM?. If it indicates completion, stop; otherwise run BODY.
3811+ Returns Unit.
3812+
3813+
3814+
3815+ ***
3816+
3817+ #### <a href="#loop-times-value"><code>(LOOP-TIMES N M-OPERATION)</code></a> <sup><sub>[FUNCTION] · <a href="https://github.com/coalton-lang/coalton/tree/main/library/experimental/do-control-loops.lisp#L74-L82">src</a></sub></sup><a name="loop-times-value"></a>
38083818<code>∀ :A :B. <a href="#monad-class">Monad</a> :A ⇒ (<a href="#ufix-type">UFix</a> → (<a href="#ufix-type">UFix</a> → (:A :B)) → (:A <a href="#unit-type">Unit</a>))</code>
38093819
38103820Repeat M-OPERATION N times. Passes the current index (starting at 0) to
@@ -3814,7 +3824,7 @@ M-OPERATION. Returns Unit.
38143824
38153825***
38163826
3817- #### <a href="#loop-while-value"><code>(LOOP-WHILE M-OPERATION)</code></a> <sup><sub>[FUNCTION] · <a href="https://github.com/coalton-lang/coalton/tree/main/library/experimental/do-control-loops.lisp#L37-L43 ">src</a></sub></sup><a name="loop-while-value"></a>
3827+ #### <a href="#loop-while-value"><code>(LOOP-WHILE M-OPERATION)</code></a> <sup><sub>[FUNCTION] · <a href="https://github.com/coalton-lang/coalton/tree/main/library/experimental/do-control-loops.lisp#L39-L45 ">src</a></sub></sup><a name="loop-while-value"></a>
38183828<code>∀ :A :B. (<a href="#monad-class">Monad</a> :A) (<a href="#terminator-class">Terminator</a> :B) ⇒ ((:A :B) → (:A <a href="#unit-type">Unit</a>))</code>
38193829
38203830Repeat M-OPERATION until it returns a terminated value. Returns Unit.
@@ -3823,7 +3833,7 @@ Repeat M-OPERATION until it returns a terminated value. Returns Unit.
38233833
38243834***
38253835
3826- #### <a href="#loop-while-valm-value"><code>(LOOP-WHILE-VALM M-OPERATION F)</code></a> <sup><sub>[FUNCTION] · <a href="https://github.com/coalton-lang/coalton/tree/main/library/experimental/do-control-loops.lisp#L46-L57 ">src</a></sub></sup><a name="loop-while-valm-value"></a>
3836+ #### <a href="#loop-while-valm-value"><code>(LOOP-WHILE-VALM M-OPERATION F)</code></a> <sup><sub>[FUNCTION] · <a href="https://github.com/coalton-lang/coalton/tree/main/library/experimental/do-control-loops.lisp#L48-L59 ">src</a></sub></sup><a name="loop-while-valm-value"></a>
38273837<code>∀ :A :B :C :D. (<a href="#monad-class">Monad</a> :A) (<a href="#yielder-class">Yielder</a> :B) ⇒ ((:A (:B :C)) → (:C → (:A :D)) → (:A <a href="#unit-type">Unit</a>))</code>
38283838
38293839Repeat M-OPERATION while it yields a value, running the yielded value applied to F.
@@ -3842,6 +3852,15 @@ Collect the results.
38423852
38433853
38443854
3855+ ***
3856+
3857+ #### <a href="#coalton-library-experimental-do-control-loops-do-loop-do-while-macro"><code>DO-LOOP-DO-WHILE (M-TERM? &BODY BODY)</code></a> <sup><sub>[MACRO]</sub></sup><a name="coalton-library-experimental-do-control-loops-do-loop-do-while-macro"></a>
3858+
3859+ Before each iteration, evaluate M-TERM?. If it indicates completion, stop; otherwise run BODY.
3860+ Wraps BODY in a 'do' block. Returns Unit.
3861+
3862+
3863+
38453864***
38463865
38473866# Package `COALTON-LIBRARY/EXPERIMENTAL/DO-CONTROL-LOOPS-ADV`<a name="coalton-library/experimental/do-control-loops-adv-package"></a>
0 commit comments