From a23aa4bf2807067d20e6922c3cd4aad843657d22 Mon Sep 17 00:00:00 2001 From: Takafumi Arakaki Date: Wed, 5 Dec 2012 21:28:38 +0100 Subject: [PATCH] Add examples for -group-by --- README.md | 12 ++++++++++++ examples.el | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/README.md b/README.md index b69d9ba..3ef011b 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ Or you can just dump `dash.el` in your load path somewhere. * [-partition](#-partition-n-list) `(n list)` * [-partition-all](#-partition-all-n-list) `(n list)` * [-partition-by](#-partition-by-fn-list) `(fn list)` +* [-group-by](#-group-by-fn-list) `(fn list)` * [-interpose](#-interpose-sep-list) `(sep list)` * [-interleave](#-interleave-rest-lists) `(&rest lists)` * [-first](#-first-pred-list) `(pred list)` @@ -375,6 +376,17 @@ Applies `fn` to each value in `list`, splitting it each time `fn` returns a new (--partition-by (< it 3) '(1 2 3 4 3 2 1)) ;; => '((1 2) (3 4 3) (2 1)) ``` +### -group-by `(fn list)` + +Separate `list` into an alist whose keys are `fn` applied to the +elements of `list`. Keys are compared by `equal`. + +```cl +(-group-by 'even? '()) ;; => '() +(-group-by 'even? '(1 1 2 2 2 3 4 6 8)) ;; => '((nil 1 1 3) (t 2 2 2 4 6 8)) +(--group-by (car (split-string it "/")) '("a/b" "c/d" "a/e")) ;; => '(("a" "a/b" "a/e") ("c" "c/d")) +``` + ### -interpose `(sep list)` Returns a new list of all elements in `list` separated by `sep`. diff --git a/examples.el b/examples.el index 8bc0a37..14b38e1 100644 --- a/examples.el +++ b/examples.el @@ -150,6 +150,11 @@ (-partition-by 'even? '(1 1 2 2 2 3 4 6 8)) => '((1 1) (2 2 2) (3) (4 6 8)) (--partition-by (< it 3) '(1 2 3 4 3 2 1)) => '((1 2) (3 4 3) (2 1))) +(defexamples -group-by + (-group-by 'even? '()) => '() + (-group-by 'even? '(1 1 2 2 2 3 4 6 8)) => '((nil . (1 1 3)) (t . (2 2 2 4 6 8))) + (--group-by (car (split-string it "/")) '("a/b" "c/d" "a/e")) => '(("a" . ("a/b" "a/e")) ("c" . ("c/d")))) + (defexamples -interpose (-interpose "-" '()) => '() (-interpose "-" '("a")) => '("a")