summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-08-18 11:38:52 -0700
committerKaz Kylheku <kaz@kylheku.com>2019-08-18 11:38:52 -0700
commitf35b7f1f7df5b61ab54674f88c1eea1ffbe6b908 (patch)
tree7d12fc0d568c75252cc59ac9eca910889ce52872
parent8c49d58ab22245bf6bba5c824ec781a7f1b4eabc (diff)
downloadtxr-f35b7f1f7df5b61ab54674f88c1eea1ffbe6b908.tar.gz
txr-f35b7f1f7df5b61ab54674f88c1eea1ffbe6b908.tar.bz2
txr-f35b7f1f7df5b61ab54674f88c1eea1ffbe6b908.zip
doc: new buildn example.
* txr.1: Adding breadth-first traversal example showing queue capability of the list-builder.
-rw-r--r--txr.115
1 files changed, 15 insertions, 0 deletions
diff --git a/txr.1 b/txr.1
index 031d7d9e..06cb8305 100644
--- a/txr.1
+++ b/txr.1
@@ -32462,6 +32462,21 @@ macro for deleting a place.
;; add function:
(build [mapdo add (range 1 3)]) -> (1 2 3)
+
+ ;; breadth-first traversal of nested list;
+ (defun bf-map (tree visit-fn)
+ (buildn
+ (add tree)
+ (whilet ((item (del)))
+ (if (atom item)
+ [visit-fn item]
+ (each ((el item))
+ (add el))))))
+
+ (let (flat)
+ (bf-map '(1 (2 (3 4 (5))) ((6 7) 8)) (do push @1 flat))
+ (nreverse flat))
+ -> (1 2 8 3 4 6 7 5)
.brev
.SS* Permutations and Combinations