[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/dash a3b40f8 058/316: Make --> bind IT for use anywhere
From: |
ELPA Syncer |
Subject: |
[elpa] externals/dash a3b40f8 058/316: Make --> bind IT for use anywhere in FORMS, and add -as->. |
Date: |
Mon, 15 Feb 2021 15:57:25 -0500 (EST) |
branch: externals/dash
commit a3b40f8f01d12c118037c9045e30ceaac7068cd9
Author: Zachary Kanfer <zkanfer@gmail.com>
Commit: Zachary Kanfer <zkanfer@gmail.com>
Make --> bind IT for use anywhere in FORMS, and add -as->.
---
dash.el | 34 +++++++++++++++++++++++-----------
dev/examples.el | 12 +++++++++++-
2 files changed, 34 insertions(+), 12 deletions(-)
diff --git a/dash.el b/dash.el
index 10b1f05..4a33706 100644
--- a/dash.el
+++ b/dash.el
@@ -1354,17 +1354,29 @@ last item in second form, etc."
(list form x)))
(:else `(->> (->> ,x ,form) ,@more))))
-(defmacro --> (x form &rest more)
- "Thread the expr through the forms. Insert X at the position
-signified by the token `it' in the first form. If there are more
-forms, insert the first form at the position signified by `it' in
-in second form, etc."
- (declare (debug (form &rest [&or symbolp (sexp &rest [&or "it" form])])))
- (if (null more)
- (if (listp form)
- (--map-when (eq it 'it) x form)
- (list form x))
- `(--> (--> ,x ,form) ,@more)))
+(defmacro --> (x &rest forms)
+ "Starting with the value of X, thread each expression through FORMS.
+
+Insert X at the position signified by the token `it' in the first
+form. If there are more forms, insert the first form at the position
+signified by `it' in in second form, etc."
+ (declare (debug (form body)))
+ `(-as-> ,x it ,@forms))
+
+(defmacro -as-> (value variable &rest forms)
+ "Starting with VALUE, thread VARIABLE through FORMS.
+
+In the first form, bind VARIABLE to VALUE. In the second form, bind
+VARIABLE to the result of the first form, and so forth."
+ (declare (debug (form symbolp body)))
+ (if (null forms)
+ `,value
+ `(let ((,variable ,value))
+ (-as-> ,(if (symbolp (car forms))
+ (list (car forms) variable)
+ (car forms))
+ ,variable
+ ,@(cdr forms)))))
(defmacro -some-> (x &optional form &rest more)
"When expr is non-nil, thread it through the first form (via `->'),
diff --git a/dev/examples.el b/dev/examples.el
index 7487292..6e3a2ad 100644
--- a/dev/examples.el
+++ b/dev/examples.el
@@ -801,7 +801,17 @@ new list."
(defexamples -->
(--> "def" (concat "abc" it "ghi")) => "abcdefghi"
(--> "def" (concat "abc" it "ghi") (upcase it)) => "ABCDEFGHI"
- (--> "def" (concat "abc" it "ghi") upcase) => "ABCDEFGHI")
+ (--> "def" (concat "abc" it "ghi") upcase) => "ABCDEFGHI"
+ (--> "def" upcase) => "DEF"
+ (--> 3 (car (list it))) => 3)
+
+ (defexamples -as->
+ (-as-> 3 my-var (1+ my-var) (list my-var) (mapcar (lambda (ele) (* 2 ele))
my-var)) => '(8)
+ (-as-> 3 my-var 1+) => 4
+ (-as-> 3 my-var) => 3
+ (-as-> "def" string (concat "abc" string "ghi")) => "abcdefghi"
+ (-as-> "def" string (concat "abc" string "ghi") upcase) => "ABCDEFGHI"
+ (-as-> "def" string (concat "abc" string "ghi") (upcase string)) =>
"ABCDEFGHI")
(defexamples -some->
(-some-> '(2 3 5)) => '(2 3 5)
- [elpa] externals/dash fe9bbc2 170/316: Merge pull request #334 from tarsiiformes/typo, (continued)
- [elpa] externals/dash fe9bbc2 170/316: Merge pull request #334 from tarsiiformes/typo, ELPA Syncer, 2021/02/15
- [elpa] externals/dash e4e5269 180/316: Finish last change to package keywords, ELPA Syncer, 2021/02/15
- [elpa] externals/dash b329938 182/316: Update CI configuration, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 7629dae 183/316: Add dir-locals-file with useful settings, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 84721fc 206/316: Optimize -repeat a bit, ELPA Syncer, 2021/02/15
- [elpa] externals/dash d983d4f 217/316: Fix -doto, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 66e3e94 079/316: Define -second-item through to -fifth-item, ELPA Syncer, 2021/02/15
- [elpa] externals/dash dd30a1f 047/316: [Feature #196] Add -powerset and -permutations (#203), ELPA Syncer, 2021/02/15
- [elpa] externals/dash 5f7f2d6 056/316: Add example for an iota error condition, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 524e6fe 057/316: Fix -map-last docs (#220), ELPA Syncer, 2021/02/15
- [elpa] externals/dash a3b40f8 058/316: Make --> bind IT for use anywhere in FORMS, and add -as->.,
ELPA Syncer <=
- [elpa] externals/dash 13f9ece 060/316: add tests for nesting anaphoric macros., ELPA Syncer, 2021/02/15
- [elpa] externals/dash d7b769b 065/316: Use standard Emacs quoting for bound symbols, ELPA Syncer, 2021/02/15
- [elpa] externals/dash b4faa93 066/316: Merge pull request #224 from Wilfred/when-let-docstring, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 0df0ff1 067/316: Merge pull request #222 from zck/partition-before-after, ELPA Syncer, 2021/02/15
- [elpa] externals/dash dcb0ec1 069/316: Merge pull request #232 from Wilfred/improve_docs_wording, ELPA Syncer, 2021/02/15
- [elpa] externals/dash c026c46 073/316: Merge pull request #240 from basil-conto/239, ELPA Syncer, 2021/02/15
- [elpa] externals/dash bdcaf68 074/316: Merge pull request #236 from Wilfred/robust-docs-generation, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 3493fc9 076/316: Merge pull request #242 from magnars/fix-infinite-loop-zip-interleave, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 057e55c 081/316: Update examples.el, remove duplicate -third-item, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 4b46527 080/316: Merge pull request #238 from Wilfred/more-item-accesses, ELPA Syncer, 2021/02/15