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

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

[elpa] externals/dash 1fde888 407/426: Merge pull request #125 from wasa


From: Phillip Lord
Subject: [elpa] externals/dash 1fde888 407/426: Merge pull request #125 from wasamasa/feature-some
Date: Tue, 04 Aug 2015 19:39:15 +0000

branch: externals/dash
commit 1fde888498a9480dfe3da97fd67fc167a95a6337
Merge: db784f8 e574465
Author: Magnar Sveen <address@hidden>
Commit: Magnar Sveen <address@hidden>

    Merge pull request #125 from wasamasa/feature-some
    
    Add `-some`
---
 README.md       |   13 +++++++++++++
 dash.el         |   22 ++++++++++++++++++++++
 dev/examples.el |    5 +++++
 3 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/README.md b/README.md
index 91f0799..8cac2de 100644
--- a/README.md
+++ b/README.md
@@ -180,6 +180,7 @@ Other list functions not fit to be classified elsewhere.
 * [-table](#-table-fn-rest-lists) `(fn &rest lists)`
 * [-table-flat](#-table-flat-fn-rest-lists) `(fn &rest lists)`
 * [-first](#-first-pred-list) `(pred list)`
+* [-some](#-some-pred-list) `(pred list)`
 * [-last](#-last-pred-list) `(pred list)`
 * [-first-item](#-first-item-list) `(list)`
 * [-last-item](#-last-item-list) `(list)`
@@ -1409,6 +1410,18 @@ Alias: `-find`
 (--first (> it 2) '(1 2 3)) ;; => 3
 ```
 
+#### -some `(pred list)`
+
+Return (`pred` x) for the first `list` item where (`pred` x) is non-nil, else 
nil.
+
+Alias: `-any`
+
+```el
+(-some 'even? '(1 2 3)) ;; => t
+(--some (member 'foo it) '((foo bar) (baz))) ;; => '(foo bar)
+(--some (plist-get it :bar) '((:foo 1 :bar 2) (:baz 3))) ;; => 2
+```
+
 #### -last `(pred list)`
 
 Return the last x in `list` where (`pred` x) is non-nil, else nil.
diff --git a/dash.el b/dash.el
index 60596f4..d3721e3 100644
--- a/dash.el
+++ b/dash.el
@@ -391,6 +391,24 @@ Alias: `-find'"
 (defalias '-find '-first)
 (defalias '--find '--first)
 
+(defmacro --some (form list)
+  "Anaphoric form of `-some'."
+  (declare (debug (form form)))
+  (let ((n (make-symbol "needle")))
+    `(let (,n)
+       (--each-while ,list (not ,n)
+         (setq ,n ,form))
+       ,n)))
+
+(defun -some (pred list)
+  "Return (PRED x) for the first LIST item where (PRED x) is non-nil, else nil.
+
+Alias: `-any'"
+  (--some (funcall pred it) list))
+
+(defalias '-any '-some)
+(defalias '--any '--some)
+
 (defmacro --last (form list)
   "Anaphoric form of `-last'."
   (declare (debug (form form)))
@@ -1991,6 +2009,10 @@ structure such as plist or alist."
                              "--first"
                              "-find"
                              "--find"
+                             "-some"
+                             "--some"
+                             "-any"
+                             "--any"
                              "-last"
                              "--last"
                              "-first-item"
diff --git a/dev/examples.el b/dev/examples.el
index 79ac244..40e177c 100644
--- a/dev/examples.el
+++ b/dev/examples.el
@@ -546,6 +546,11 @@ new list."
     (-first 'even? '(1 3 5)) => nil
     (--first (> it 2) '(1 2 3)) => 3)
 
+  (defexamples -some
+    (-some 'even? '(1 2 3)) => t
+    (--some (member 'foo it) '((foo bar) (baz))) => '(foo bar)
+    (--some (plist-get it :bar) '((:foo 1 :bar 2) (:baz 3))) => 2)
+
   (defexamples -last
     (-last 'even? '(1 2 3 4 5 6 3 3 3)) => 6
     (-last 'even? '(1 3 7 5 9)) => nil



reply via email to

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