emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/dash f780322 305/439: Add `-flatten-n`


From: Phillip Lord
Subject: [elpa] externals/dash f780322 305/439: Add `-flatten-n`
Date: Tue, 04 Aug 2015 20:29:28 +0000

branch: externals/dash
commit f780322bb6a546c2f13bcacb6ca21eb92b6e2fe5
Author: Matus Goljer <address@hidden>
Commit: Matus Goljer <address@hidden>

    Add `-flatten-n`
---
 README.md       |   11 +++++++++++
 dash.el         |    4 ++++
 dev/examples.el |    8 ++++++++
 3 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/README.md b/README.md
index 092aa55..4b55241 100644
--- a/README.md
+++ b/README.md
@@ -44,6 +44,7 @@ Include this in your emacs settings to get syntax 
highlighting:
 * [-map-when](#-map-when-pred-rep-list) `(pred rep list)`
 * [-map-indexed](#-map-indexed-fn-list) `(fn list)`
 * [-flatten](#-flatten-l) `(l)`
+* [-flatten-n](#-flatten-n-num-list) `(num list)`
 * [-concat](#-concat-rest-lists) `(&rest lists)`
 * [-mapcat](#-mapcat-fn-list) `(fn list)`
 * [-slice](#-slice-list-from-optional-to) `(list from &optional to)`
@@ -301,6 +302,16 @@ Takes a nested list `l` and returns its contents as a 
single, flat list.
 (-flatten '(1 2 (3 . 4))) ;; => '(1 2 (3 . 4))
 ```
 
+#### -flatten-n `(num list)`
+
+Flatten `num` levels of a nested `list`.
+
+```cl
+(-flatten-n 1 '((1 2) ((3 4) ((5 6))))) ;; => '(1 2 (3 4) ((5 6)))
+(-flatten-n 2 '((1 2) ((3 4) ((5 6))))) ;; => '(1 2 3 4 (5 6))
+(-flatten-n 3 '((1 2) ((3 4) ((5 6))))) ;; => '(1 2 3 4 5 6)
+```
+
 #### -concat `(&rest lists)`
 
 Returns a new list with the concatenation of the elements in the supplied 
`lists`.
diff --git a/dash.el b/dash.el
index 2e2eccf..a411e60 100644
--- a/dash.el
+++ b/dash.el
@@ -275,6 +275,10 @@ through the REP function."
       (-mapcat '-flatten l)
     (list l)))
 
+(defun -flatten-n (num list)
+  "Flatten NUM levels of a nested LIST."
+  (-last-item (--iterate (--mapcat (-list it) it) list (1+ num))))
+
 (defun -concat (&rest lists)
   "Returns a new list with the concatenation of the elements in the supplied 
LISTS."
   (apply 'append lists))
diff --git a/dev/examples.el b/dev/examples.el
index 9520f44..ef9c3b8 100644
--- a/dev/examples.el
+++ b/dev/examples.el
@@ -48,6 +48,14 @@
     (-flatten '((1 (2 3) (((4 (5))))))) => '(1 2 3 4 5)
     (-flatten '(1 2 (3 . 4))) => '(1 2 (3 . 4)))
 
+  (defexamples -flatten-n
+    (-flatten-n 1 '((1 2) ((3 4) ((5 6))))) => '(1 2 (3 4) ((5 6)))
+    (-flatten-n 2 '((1 2) ((3 4) ((5 6))))) => '(1 2 3 4 (5 6))
+    (-flatten-n 3 '((1 2) ((3 4) ((5 6))))) => '(1 2 3 4 5 6)
+    (-flatten-n 0 '(3 4)) => '(3 4)
+    (-flatten-n 0 '((1 2) (3 4))) => '((1 2) (3 4))
+    (-flatten-n 0 '(((1 2) (3 4)))) => '(((1 2) (3 4))))
+
   (defexamples -concat
     (-concat '(1)) => '(1)
     (-concat '(1) '(2)) => '(1 2)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]