[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/dash 1677338 428/439: Merge pull request #138 from phil
From: |
Phillip Lord |
Subject: |
[elpa] externals/dash 1677338 428/439: Merge pull request #138 from phillord/fix/group-by-write-out |
Date: |
Tue, 04 Aug 2015 20:31:42 +0000 |
branch: externals/dash
commit 16773380cac81de04046053efc2753c74a7ef082
Merge: 19fbc24 45bd985
Author: Magnar Sveen <address@hidden>
Commit: Magnar Sveen <address@hidden>
Merge pull request #138 from phillord/fix/group-by-write-out
Reimplementation of --group-by.
---
dash.el | 44 +++++++++++++++++++-------------------------
1 files changed, 19 insertions(+), 25 deletions(-)
diff --git a/dash.el b/dash.el
index fa4057c..9788de6 100644
--- a/dash.el
+++ b/dash.el
@@ -915,31 +915,25 @@ other value (the body)."
(defmacro --group-by (form list)
"Anaphoric form of `-group-by'."
- (declare (debug (form form)))
- (let ((l (make-symbol "list"))
- (v (make-symbol "value"))
- (k (make-symbol "key"))
- (r (make-symbol "result")))
- `(let ((,l ,list)
- ,r)
- ;; Convert `list' to an alist and store it in `r'.
- (while ,l
- (let* ((,v (car ,l))
- (it ,v)
- (,k ,form)
- (kv (assoc ,k ,r)))
- (if kv
- (setcdr kv (cons ,v (cdr kv)))
- (push (list ,k ,v) ,r))
- (setq ,l (cdr ,l))))
- ;; Reverse lists in each group.
- (let ((rest ,r))
- (while rest
- (let ((kv (car rest)))
- (setcdr kv (nreverse (cdr kv))))
- (setq rest (cdr rest))))
- ;; Reverse order of keys.
- (nreverse ,r))))
+ (declare (debug t))
+ (let ((n (make-symbol "n"))
+ (k (make-symbol "k"))
+ (grp (make-symbol "grp")))
+ `(nreverse
+ (-map
+ (lambda (,n)
+ (cons (car ,n)
+ (nreverse (cdr ,n))))
+ (--reduce-from
+ (let* ((,k (,@form))
+ (,grp (assoc ,k acc)))
+ (if ,grp
+ (setcdr ,grp (cons it (cdr ,grp)))
+ (push
+ (list ,k it)
+ acc))
+ acc)
+ nil ,list)))))
(defun -group-by (fn list)
"Separate LIST into an alist whose keys are FN applied to the
- [elpa] externals/dash 7d62b1a 393/439: Make test suite independent of dash, (continued)
- [elpa] externals/dash 7d62b1a 393/439: Make test suite independent of dash, Phillip Lord, 2015/08/04
- [elpa] externals/dash 26c1bbe 390/439: Merge pull request #113 from fbergroth/fix-byte-compile-test, Phillip Lord, 2015/08/04
- [elpa] externals/dash c34e4ab 394/439: Update invalid tests, Phillip Lord, 2015/08/04
- [elpa] externals/dash 07f0358 392/439: Add test case operator !!> for expected errors, Phillip Lord, 2015/08/04
- [elpa] externals/dash 92ed7ff 391/439: Use vendored ert only on emacs23, Phillip Lord, 2015/08/04
- [elpa] externals/dash 7aec562 430/439: Merge pull request #140 from mijoharas/master, Phillip Lord, 2015/08/04
- [elpa] externals/dash 63d2db9 431/439: make ->>'s second arg optional, Phillip Lord, 2015/08/04
- [elpa] externals/dash 45bd985 427/439: Reimplementation of --group-by., Phillip Lord, 2015/08/04
- [elpa] externals/dash aa13c07 429/439: fixed typo in docs (first where it should be last, Phillip Lord, 2015/08/04
- [elpa] externals/dash 70caa37 432/439: Merge pull request #144 from cammsaul/thread_last_make_second_arg_optional, Phillip Lord, 2015/08/04
- [elpa] externals/dash 1677338 428/439: Merge pull request #138 from phillord/fix/group-by-write-out,
Phillip Lord <=
- [elpa] externals/dash e468937 435/439: Formatting, Phillip Lord, 2015/08/04
- [elpa] externals/dash 89abffe 437/439: Make it explicit that not all VALS are evalled in -if-let*, Phillip Lord, 2015/08/04
- [elpa] externals/dash b88cfb7 436/439: Add dash prefix to epsilon variable., Phillip Lord, 2015/08/04
- [elpa] externals/dash eadb265 439/439: Swap examples to better show how -some-> works, Phillip Lord, 2015/08/04
- [elpa] externals/dash 2aeeacb 433/439: Release 2.11.0, Phillip Lord, 2015/08/04
- [elpa] externals/dash c3cf98d 438/439: Add `-some->`, `-some->>`, and `-some-->` macros., Phillip Lord, 2015/08/04
- [elpa] externals/dash 1c2f43d 434/439: Add "See also" for the reduce family, Phillip Lord, 2015/08/04
- [elpa] externals/dash 2b69c14 411/439: Add dash.info and dash.texi to repo, Phillip Lord, 2015/08/04
- [elpa] externals/dash e574465 404/439: Add `-some`, Phillip Lord, 2015/08/04
- [elpa] externals/dash 4640a2a 405/439: Allow for approx comparison of floats in tests, Phillip Lord, 2015/08/04