diff options
| author | Andrey Listopadov <andreyorst@gmail.com> | 2023-08-30 19:33:12 +0300 |
|---|---|---|
| committer | Andrey Listopadov <andreyorst@gmail.com> | 2023-08-30 19:33:12 +0300 |
| commit | 6971eedee776d0014c94cbee519655e37707a8f7 (patch) | |
| tree | 9df796882b9ebc15fda72973a782ca8ec085073e | |
| parent | b1202918b2a7cb91e9c7744b70cea7e241bce2f8 (diff) | |
| -rw-r--r-- | cljlib.fnl | 9 | ||||
| -rw-r--r-- | doc/cljlib.md | 13 | ||||
| -rw-r--r-- | src/cljlib.fnl | 9 | ||||
| -rw-r--r-- | tasks/build (renamed from utils/build) | 0 | ||||
| -rw-r--r-- | tasks/run-tests (renamed from utils/run-tests) | 0 |
5 files changed, 23 insertions, 8 deletions
@@ -3615,10 +3615,11 @@ Lua `#` operator on `rev` takes linar time. If `t` is empty returns [rev] (seq* (lazy.rseq rev))) -(defn lazy-seq +(defn lazy-seq* "Create lazy sequence from the result of calling a function `f`. Delays execution of `f` until sequence is consumed. `f` must return a -sequence or a vector." +sequence or a vector. There's a convenience macro `lazy-seq' +automates the process of function creation." [f] (seq* (lazy.lazy-seq f))) @@ -4535,7 +4536,7 @@ number-of-colls arguments" (if-some [s (seq coll)] (let [res (f nil (first s))] (cond (reduced? res) (f (deref res)) - (seq? res) (concat res (lazy-seq #(step (rest s)))) + (seq? res) (concat res (lazy-seq* #(step (rest s)))) :else (step (rest s)))) (f nil))) coll) @@ -4546,7 +4547,7 @@ number-of-colls arguments" (if (every? seq colls) (let [res (apply f nil (map first colls))] (cond (reduced? res) (f (deref res)) - (seq? res) (concat res (lazy-seq #(step (map rest colls)))) + (seq? res) (concat res (lazy-seq* #(step (map rest colls)))) :else (step (map rest colls)))) (f nil))) (cons coll colls)) diff --git a/doc/cljlib.md b/doc/cljlib.md index b1678f5..d118652 100644 --- a/doc/cljlib.md +++ b/doc/cljlib.md @@ -154,6 +154,7 @@ Another difference is that Lua 5.2 and LuaJIT don't have an inbuilt UTF-8 librar - [`iterate`](#iterate) - [`keep`](#keep) - [`keep-indexed`](#keep-indexed) +- [`lazy-seq*`](#lazy-seq-1) - [`line-seq`](#line-seq) - [`list`](#list) - [`list*`](#list-1) @@ -2052,6 +2053,18 @@ the `coll`. Note, this means false return values will be included. `f` must be free of side effects. Returns a transducer when no collection is provided. +## `lazy-seq*` +Function signature: + +``` +(lazy-seq* [f]) +``` + +Create lazy sequence from the result of calling a function `f`. +Delays execution of `f` until sequence is consumed. `f` must return a +sequence or a vector. There's a convenience macro [`lazy-seq`](#lazy-seq) +automates the process of function creation. + ## `line-seq` Function signature: diff --git a/src/cljlib.fnl b/src/cljlib.fnl index df63e4f..1629a6f 100644 --- a/src/cljlib.fnl +++ b/src/cljlib.fnl @@ -1778,10 +1778,11 @@ Lua `#` operator on `rev` takes linar time. If `t` is empty returns [rev] (seq* (lazy.rseq rev))) -(defn lazy-seq +(defn lazy-seq* "Create lazy sequence from the result of calling a function `f`. Delays execution of `f` until sequence is consumed. `f` must return a -sequence or a vector." +sequence or a vector. There's a convenience macro `lazy-seq' +automates the process of function creation." [f] (seq* (lazy.lazy-seq f))) @@ -2698,7 +2699,7 @@ number-of-colls arguments" (if-some [s (seq coll)] (let [res (f nil (first s))] (cond (reduced? res) (f (deref res)) - (seq? res) (concat res (lazy-seq #(step (rest s)))) + (seq? res) (concat res (lazy-seq* #(step (rest s)))) :else (step (rest s)))) (f nil))) coll) @@ -2709,7 +2710,7 @@ number-of-colls arguments" (if (every? seq colls) (let [res (apply f nil (map first colls))] (cond (reduced? res) (f (deref res)) - (seq? res) (concat res (lazy-seq #(step (map rest colls)))) + (seq? res) (concat res (lazy-seq* #(step (map rest colls)))) :else (step (map rest colls)))) (f nil))) (cons coll colls)) diff --git a/utils/build b/tasks/build index b1fa0eb..b1fa0eb 100644 --- a/utils/build +++ b/tasks/build diff --git a/utils/run-tests b/tasks/run-tests index 63a43d7..63a43d7 100644 --- a/utils/run-tests +++ b/tasks/run-tests |