From fa906445435f8a48c56bddfd036a6f93578c4983 Mon Sep 17 00:00:00 2001 From: Magnar Sveen Date: Sun, 4 Oct 2015 11:57:41 +0200 Subject: [PATCH] Release 2.12.0 --- README.md | 12 +- dash-template.texi | 6 +- dash.el | 2 +- dash.info | 466 ++++++++++++++++++++++++++------------------- dash.texi | 6 +- readme-template.md | 12 +- 6 files changed, 293 insertions(+), 211 deletions(-) diff --git a/README.md b/README.md index d66447b..15af636 100644 --- a/README.md +++ b/README.md @@ -19,11 +19,11 @@ If you want the function combinators, then also: Add this to the big comment block at the top: - ;; Package-Requires: ((dash "2.11.0")) + ;; Package-Requires: ((dash "2.12.0")) To get function combinators: - ;; Package-Requires: ((dash "2.11.0") (dash-functional "1.2.0") (emacs "24")) + ;; Package-Requires: ((dash "2.12.0") (dash-functional "1.2.0") (emacs "24")) ## Syntax highlighting of dash functions @@ -2377,6 +2377,14 @@ Change `readme-template.md` or `examples-to-docs.el` instead. ## Changelist +### From 2.11 to 2.12 + +- Add GNU ELPA support. (Phillip Lord) +- Add `-some->`, `-some->>`, and `-some-->` macros. (Cam Saul) +- `-is-suffix?` no longer destroys input list. +- Faster hashtable implementation for `-union`. +- Improvements to docstrings and examples + ### From 2.10 to 2.11 - Lots of clean up wrt byte compilation, debug macros and tests diff --git a/dash-template.texi b/dash-template.texi index 54071e2..b03d5a6 100644 --- a/dash-template.texi +++ b/dash-template.texi @@ -13,7 +13,7 @@ @copying -This manual is for @code{dash.el} version 2.11.0. +This manual is for @code{dash.el} version 2.12.0. Copyright © 2012-2015 Magnar Sveen @@ -109,13 +109,13 @@ Alternatively, you can just dump @verb{~dash.el~} or Add this to the big comment block at the top: @lisp -;; Package-Requires: ((dash "2.11.0")) +;; Package-Requires: ((dash "2.12.0")) @end lisp @noindent To get function combinators: @lisp -;; Package-Requires: ((dash "2.11.0") (dash-functional "1.2.0") (emacs "24")) +;; Package-Requires: ((dash "2.12.0") (dash-functional "1.2.0") (emacs "24")) @end lisp @node Syntax highlighting of dash functions diff --git a/dash.el b/dash.el index 7b50120..e0ba65d 100644 --- a/dash.el +++ b/dash.el @@ -3,7 +3,7 @@ ;; Copyright (C) 2012-2015 Free Software Foundation, Inc. ;; Author: Magnar Sveen -;; Version: 2.11.0 +;; Version: 2.12.0 ;; Keywords: lists ;; This program is free software; you can redistribute it and/or modify diff --git a/dash.info b/dash.info index 29d93ef..0030beb 100644 --- a/dash.info +++ b/dash.info @@ -5,9 +5,9 @@ START-INFO-DIR-ENTRY * Dash: (dash.info). A modern list library for GNU Emacs END-INFO-DIR-ENTRY - This manual is for `dash.el' version 2.11.0. + This manual is for `dash.el' version 2.12.0. - Copyright © 2012-2015 Magnar Sveen + Copyright © 2012-2015 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -29,9 +29,9 @@ File: dash.info, Node: Top, Next: Installation, Up: (dir) dash **** -This manual is for `dash.el' version 2.11.0. +This manual is for `dash.el' version 2.12.0. - Copyright © 2012-2015 Magnar Sveen + Copyright © 2012-2015 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -117,11 +117,11 @@ File: dash.info, Node: Using in a package, Next: Syntax highlighting of dash f Add this to the big comment block at the top: - ;; Package-Requires: ((dash "2.11.0")) + ;; Package-Requires: ((dash "2.12.0")) To get function combinators: - ;; Package-Requires: ((dash "2.11.0") (dash-functional "1.2.0") (emacs "24")) + ;; Package-Requires: ((dash "2.12.0") (dash-functional "1.2.0") (emacs "24"))  File: dash.info, Node: Syntax highlighting of dash functions, Prev: Using in a package, Up: Installation @@ -509,6 +509,15 @@ Bag of various functions which modify input list. Take a nested list L and return its contents as a single, flat list. + Note that because `nil' represents a list of zero elements (an + empty list), any mention of nil in L will disappear after + flattening. If you need to preserve nils, consider `-flatten-n' + (*note -flatten-n::) or map them to some unique symbol and then + map them back. + + Conses of two atoms are considered "terminals", that is, they + aren't flattened further. + See also: `-flatten-n' (*note -flatten-n::) (-flatten '((1))) @@ -653,6 +662,9 @@ Functions reducing lists into single value. In the anaphoric form `--reduce-from', the accumulated value is exposed as `acc`. + See also: `-reduce' (*note -reduce::), `-reduce-r' (*note + -reduce-r::) + (-reduce-from '- 10 '(1 2 3)) => 4 (-reduce-from (lambda (memo item) (concat "(" memo " - " (int-to-string item) ")")) "10" '(1 2 3)) @@ -669,6 +681,9 @@ Functions reducing lists into single value. -reduce-from::) but the operation associates from right instead of from left. + See also: `-reduce-r' (*note -reduce-r::), `-reduce' (*note + -reduce::) + (-reduce-r-from '- 10 '(1 2 3)) => -8 (-reduce-r-from (lambda (item memo) (concat "(" (int-to-string item) " - " memo ")")) "10" '(1 2 3)) @@ -686,6 +701,9 @@ Functions reducing lists into single value. In the anaphoric form `--reduce', the accumulated value is exposed as `acc`. + See also: `-reduce-from' (*note -reduce-from::), `-reduce-r' + (*note -reduce-r::) + (-reduce '- '(1 2 3 4)) => -8 (-reduce (lambda (memo item) (format "%s-%s" memo item)) '(1 2 3)) @@ -707,6 +725,9 @@ Functions reducing lists into single value. -reduce::) but the operation associates from right instead of from left. + See also: `-reduce-r-from' (*note -reduce-r-from::), `-reduce' + (*note -reduce::) + (-reduce-r '- '(1 2 3 4)) => -2 (-reduce-r (lambda (item memo) (format "%s-%s" memo item)) '(1 2 3)) @@ -1717,6 +1738,42 @@ File: dash.info, Node: Threading macros, Next: Binding, Prev: Tree operations (--> "def" (concat "abc" it "ghi") upcase) => "ABCDEFGHI" + -- Function: -some-> (x &optional form &rest more) + When expr is non-nil, thread it through the first form (via `->' + (*note ->::)), and when that result is non-nil, through the next + form, etc. + + (-some-> '(2 3 5)) + => '(2 3 5) + (-some-> 5 square) + => 25 + (-some-> 5 even? square) + => nil + + -- Function: -some->> (x &optional form &rest more) + When expr is non-nil, thread it through the first form (via + `->>' (*note ->>::)), and when that result is non-nil, through + the next form, etc. + + (-some->> '(1 2 3) (-map 'square)) + => '(1 4 9) + (-some->> '(1 3 5) (-last 'even?) (+ 100)) + => nil + (-some->> '(2 4 6) (-last 'even?) (+ 100)) + => 106 + + -- Function: -some-> (x &optional form &rest more) + When expr in non-nil, thread it through the first form (via + `-->' (*note -->::)), and when that result is non-nil, through + the next form, etc. + + (-some--> "def" (concat "abc" it "ghi")) + => "abcdefghi" + (-some--> nil (concat "abc" it "ghi")) + => nil + (-some--> '(1 3 5) (-filter 'even? it) (append it it) (-map 'square it)) + => nil +  File: dash.info, Node: Binding, Next: Side-effects, Prev: Threading macros, Up: Functions @@ -1745,6 +1802,8 @@ control. pairs. Note: binding is done according to `-let*' (*note -let*::). + VALS are evaluated sequentially, and evaluation stops after the + first nil VAL is encountered. (-when-let* ((x 5) (y 3) (z (+ y 4))) (+ x y z)) => 15 @@ -1768,6 +1827,8 @@ control. of (VAR VAL) pairs. Note: binding is done according to `-let*' (*note -let*::). + VALS are evaluated sequentially, and evaluation stops after the + first nil VAL is encountered. (-if-let* ((x 5) (y 3) (z 7)) (+ x y z) "foo") => 15 @@ -1839,11 +1900,10 @@ control. If the PATTERN is longer than SOURCE, an `error' is thrown. - [a1 a2 a3 ... &rest rest] ) - as above, but bind the rest of - the sequence to REST. This is - conceptually the same as improper - list matching (a1 a2 ... aN . - rest) + [a1 a2 a3 ... &rest rest] - as above, but bind the rest of + the sequence to REST. This is + conceptually the same as improper list + matching (a1 a2 ... aN . rest) Key/value stores: @@ -2515,7 +2575,7 @@ Index (line 94) * -contains?: Predicates. (line 58) * -copy: Maps. (line 134) -* -count: Reductions. (line 79) +* -count: Reductions. (line 91) * -cut: Function combinators. (line 107) * -cycle: Other list operations. @@ -2542,15 +2602,15 @@ Index * -fixfn: Function combinators. (line 178) * -flatten: List to list. (line 34) -* -flatten-n: List to list. (line 47) +* -flatten-n: List to list. (line 56) * -flip: Function combinators. (line 82) * -grade-down: Indexing. (line 78) * -grade-up: Indexing. (line 68) * -group-by: Partitioning. (line 146) -* -if-let: Binding. (line 35) -* -if-let*: Binding. (line 46) -* -insert-at: List to list. (line 101) +* -if-let: Binding. (line 37) +* -if-let*: Binding. (line 48) +* -insert-at: List to list. (line 110) * -interleave: Other list operations. (line 67) * -interpose: Other list operations. @@ -2565,13 +2625,13 @@ Index * -juxt: Function combinators. (line 32) * -keep: List to list. (line 9) -* -lambda: Binding. (line 221) +* -lambda: Binding. (line 224) * -last: Other list operations. (line 212) * -last-item: Other list operations. (line 230) -* -let: Binding. (line 60) -* -let*: Binding. (line 201) +* -let: Binding. (line 64) +* -let*: Binding. (line 204) * -list: Other list operations. (line 262) * -map: Maps. (line 11) @@ -2580,10 +2640,10 @@ Index * -map-last: Maps. (line 53) * -map-when: Maps. (line 22) * -mapcat: Maps. (line 123) -* -max: Reductions. (line 131) -* -max-by: Reductions. (line 141) -* -min: Reductions. (line 107) -* -min-by: Reductions. (line 117) +* -max: Reductions. (line 143) +* -max-by: Reductions. (line 153) +* -min: Reductions. (line 119) +* -min-by: Reductions. (line 129) * -non-nil: Sublist selection. (line 77) * -none?: Predicates. (line 31) * -not: Function combinators. @@ -2605,23 +2665,23 @@ Index * -partition-in-steps: Partitioning. (line 98) * -prodfn: Function combinators. (line 213) -* -product: Reductions. (line 97) -* -reduce: Reductions. (line 41) +* -product: Reductions. (line 109) +* -reduce: Reductions. (line 47) * -reduce-from: Reductions. (line 9) -* -reduce-r: Reductions. (line 58) -* -reduce-r-from: Reductions. (line 25) +* -reduce-r: Reductions. (line 67) +* -reduce-r-from: Reductions. (line 28) * -remove: Sublist selection. (line 22) -* -remove-at: List to list. (line 138) -* -remove-at-indices: List to list. (line 151) +* -remove-at: List to list. (line 147) +* -remove-at-indices: List to list. (line 160) * -remove-first: Sublist selection. (line 35) * -remove-item: Sublist selection. (line 65) * -remove-last: Sublist selection. (line 50) * -repeat: Other list operations. (line 18) -* -replace: List to list. (line 59) -* -replace-at: List to list. (line 112) -* -replace-first: List to list. (line 73) -* -replace-last: List to list. (line 87) +* -replace: List to list. (line 68) +* -replace-at: List to list. (line 121) +* -replace-first: List to list. (line 82) +* -replace-last: List to list. (line 96) * -rotate: Other list operations. (line 9) * -rpartial: Function combinators. @@ -2634,6 +2694,9 @@ Index (line 43) * -some: Other list operations. (line 199) +* -some-->: Threading macros. (line 70) +* -some->: Threading macros. (line 46) +* -some->>: Threading macros. (line 58) * -sort: Other list operations. (line 248) * -splice: Maps. (line 90) @@ -2642,7 +2705,7 @@ Index * -split-on: Partitioning. (line 29) * -split-when: Partitioning. (line 47) * -split-with: Partitioning. (line 18) -* -sum: Reductions. (line 87) +* -sum: Reductions. (line 99) * -table: Other list operations. (line 141) * -table-flat: Other list operations. @@ -2658,7 +2721,7 @@ Index * -tree-seq: Tree operations. (line 9) * -unfold: Unfolding. (line 26) * -union: Set operations. (line 9) -* -update-at: List to list. (line 125) +* -update-at: List to list. (line 134) * -when-let: Binding. (line 10) * -when-let*: Binding. (line 23) * -zip: Other list operations. @@ -2671,170 +2734,173 @@ Index  Tag Table: -Node: Top947 -Node: Installation2423 -Node: Using in a package2992 -Node: Syntax highlighting of dash functions3356 -Node: Functions3740 -Node: Maps4941 -Ref: -map5237 -Ref: -map-when5575 -Ref: -map-first6149 -Ref: -map-last6616 -Ref: -map-indexed7079 -Ref: -annotate7481 -Ref: -splice7968 -Ref: -splice-list8734 -Ref: -mapcat9185 -Ref: -copy9558 -Node: Sublist selection9744 -Ref: -filter9937 -Ref: -remove10304 -Ref: -remove-first10659 -Ref: -remove-last11171 -Ref: -remove-item11677 -Ref: -non-nil12064 -Ref: -slice12222 -Ref: -take12751 -Ref: -drop13003 -Ref: -take-while13202 -Ref: -drop-while13549 -Ref: -select-by-indices13902 -Node: List to list14409 -Ref: -keep14596 -Ref: -concat15092 -Ref: -flatten15386 -Ref: -flatten-n15738 -Ref: -replace16118 -Ref: -replace-first16570 -Ref: -replace-last17055 -Ref: -insert-at17533 -Ref: -replace-at17850 -Ref: -update-at18238 -Ref: -remove-at18718 -Ref: -remove-at-indices19195 -Node: Reductions19762 -Ref: -reduce-from19931 -Ref: -reduce-r-from20608 -Ref: -reduce21295 -Ref: -reduce-r21983 -Ref: -count22795 -Ref: -sum23017 -Ref: -product23203 -Ref: -min23409 -Ref: -min-by23632 -Ref: -max24148 -Ref: -max-by24370 -Node: Unfolding24891 -Ref: -iterate25130 -Ref: -unfold25572 -Node: Predicates26363 -Ref: -any?26487 -Ref: -all?26800 -Ref: -none?27115 -Ref: -only-some?27410 -Ref: -contains?27880 -Ref: -same-items?28252 -Ref: -is-prefix?28630 -Ref: -is-suffix?28946 -Ref: -is-infix?29262 -Node: Partitioning29609 -Ref: -split-at29797 -Ref: -split-with30080 -Ref: -split-on30480 -Ref: -split-when31144 -Ref: -separate31773 -Ref: -partition32212 -Ref: -partition-all32661 -Ref: -partition-in-steps33086 -Ref: -partition-all-in-steps33580 -Ref: -partition-by34062 -Ref: -partition-by-header34441 -Ref: -group-by35041 -Node: Indexing35471 -Ref: -elem-index35673 -Ref: -elem-indices36065 -Ref: -find-index36445 -Ref: -find-last-index36885 -Ref: -find-indices37342 -Ref: -grade-up37747 -Ref: -grade-down38148 -Node: Set operations38556 -Ref: -union38739 -Ref: -difference39170 -Ref: -intersection39574 -Ref: -distinct39998 -Node: Other list operations40306 -Ref: -rotate40531 -Ref: -repeat40824 -Ref: -cons*41084 -Ref: -snoc41468 -Ref: -interpose41874 -Ref: -interleave42169 -Ref: -zip-with42535 -Ref: -zip43223 -Ref: -zip-fill43870 -Ref: -cycle44191 -Ref: -pad44561 -Ref: -table44881 -Ref: -table-flat45664 -Ref: -first46653 -Ref: -some47016 -Ref: -last47379 -Ref: -first-item47710 -Ref: -last-item47907 -Ref: -butlast48100 -Ref: -sort48344 -Ref: -list48834 -Ref: -fix49162 -Node: Tree operations49696 -Ref: -tree-seq49892 -Ref: -tree-map50747 -Ref: -tree-map-nodes51187 -Ref: -tree-reduce52039 -Ref: -tree-reduce-from52914 -Ref: -tree-mapreduce53513 -Ref: -tree-mapreduce-from54357 -Ref: -clone55627 -Node: Threading macros55954 -Ref: ->56099 -Ref: ->>56589 -Ref: -->57093 -Node: Binding57608 -Ref: -when-let57812 -Ref: -when-let*58302 -Ref: -if-let58721 -Ref: -if-let*59112 -Ref: -let59619 -Ref: -let*64745 -Ref: -lambda65682 -Node: Side-effects66479 -Ref: -each66673 -Ref: -each-while67076 -Ref: -dotimes67434 -Node: Destructive operations67735 -Ref: !cons67908 -Ref: !cdr68115 -Node: Function combinators68311 -Ref: -partial68580 -Ref: -rpartial68973 -Ref: -juxt69373 -Ref: -compose69802 -Ref: -applify70356 -Ref: -on70800 -Ref: -flip71320 -Ref: -const71629 -Ref: -cut71970 -Ref: -not72423 -Ref: -orfn72734 -Ref: -andfn73167 -Ref: -iteratefn73660 -Ref: -fixfn74357 -Ref: -prodfn75912 -Node: Development76959 -Node: Contribute77308 -Node: Changes78029 -Node: Contributors80643 -Node: Index82165 +Node: Top965 +Node: Installation2459 +Node: Using in a package3028 +Node: Syntax highlighting of dash functions3392 +Node: Functions3776 +Node: Maps4977 +Ref: -map5273 +Ref: -map-when5611 +Ref: -map-first6185 +Ref: -map-last6652 +Ref: -map-indexed7115 +Ref: -annotate7517 +Ref: -splice8004 +Ref: -splice-list8770 +Ref: -mapcat9221 +Ref: -copy9594 +Node: Sublist selection9780 +Ref: -filter9973 +Ref: -remove10340 +Ref: -remove-first10695 +Ref: -remove-last11207 +Ref: -remove-item11713 +Ref: -non-nil12100 +Ref: -slice12258 +Ref: -take12787 +Ref: -drop13039 +Ref: -take-while13238 +Ref: -drop-while13585 +Ref: -select-by-indices13938 +Node: List to list14445 +Ref: -keep14632 +Ref: -concat15128 +Ref: -flatten15422 +Ref: -flatten-n16164 +Ref: -replace16544 +Ref: -replace-first16996 +Ref: -replace-last17481 +Ref: -insert-at17959 +Ref: -replace-at18276 +Ref: -update-at18664 +Ref: -remove-at19144 +Ref: -remove-at-indices19621 +Node: Reductions20188 +Ref: -reduce-from20357 +Ref: -reduce-r-from21116 +Ref: -reduce21885 +Ref: -reduce-r22665 +Ref: -count23569 +Ref: -sum23791 +Ref: -product23977 +Ref: -min24183 +Ref: -min-by24406 +Ref: -max24922 +Ref: -max-by25144 +Node: Unfolding25665 +Ref: -iterate25904 +Ref: -unfold26346 +Node: Predicates27137 +Ref: -any?27261 +Ref: -all?27574 +Ref: -none?27889 +Ref: -only-some?28184 +Ref: -contains?28654 +Ref: -same-items?29026 +Ref: -is-prefix?29404 +Ref: -is-suffix?29720 +Ref: -is-infix?30036 +Node: Partitioning30383 +Ref: -split-at30571 +Ref: -split-with30854 +Ref: -split-on31254 +Ref: -split-when31918 +Ref: -separate32547 +Ref: -partition32986 +Ref: -partition-all33435 +Ref: -partition-in-steps33860 +Ref: -partition-all-in-steps34354 +Ref: -partition-by34836 +Ref: -partition-by-header35215 +Ref: -group-by35815 +Node: Indexing36245 +Ref: -elem-index36447 +Ref: -elem-indices36839 +Ref: -find-index37219 +Ref: -find-last-index37659 +Ref: -find-indices38116 +Ref: -grade-up38521 +Ref: -grade-down38922 +Node: Set operations39330 +Ref: -union39513 +Ref: -difference39944 +Ref: -intersection40348 +Ref: -distinct40772 +Node: Other list operations41080 +Ref: -rotate41305 +Ref: -repeat41598 +Ref: -cons*41858 +Ref: -snoc42242 +Ref: -interpose42648 +Ref: -interleave42943 +Ref: -zip-with43309 +Ref: -zip43997 +Ref: -zip-fill44644 +Ref: -cycle44965 +Ref: -pad45335 +Ref: -table45655 +Ref: -table-flat46438 +Ref: -first47427 +Ref: -some47790 +Ref: -last48153 +Ref: -first-item48484 +Ref: -last-item48681 +Ref: -butlast48874 +Ref: -sort49118 +Ref: -list49608 +Ref: -fix49936 +Node: Tree operations50470 +Ref: -tree-seq50666 +Ref: -tree-map51521 +Ref: -tree-map-nodes51961 +Ref: -tree-reduce52813 +Ref: -tree-reduce-from53688 +Ref: -tree-mapreduce54287 +Ref: -tree-mapreduce-from55131 +Ref: -clone56401 +Node: Threading macros56728 +Ref: ->56873 +Ref: ->>57363 +Ref: -->57867 +Ref: -some->58382 +Ref: -some->>58752 +Ref: -some-->59184 +Node: Binding59650 +Ref: -when-let59854 +Ref: -when-let*60344 +Ref: -if-let60867 +Ref: -if-let*61258 +Ref: -let61869 +Ref: -let*66973 +Ref: -lambda67910 +Node: Side-effects68707 +Ref: -each68901 +Ref: -each-while69304 +Ref: -dotimes69662 +Node: Destructive operations69963 +Ref: !cons70136 +Ref: !cdr70343 +Node: Function combinators70539 +Ref: -partial70808 +Ref: -rpartial71201 +Ref: -juxt71601 +Ref: -compose72030 +Ref: -applify72584 +Ref: -on73028 +Ref: -flip73548 +Ref: -const73857 +Ref: -cut74198 +Ref: -not74651 +Ref: -orfn74962 +Ref: -andfn75395 +Ref: -iteratefn75888 +Ref: -fixfn76585 +Ref: -prodfn78140 +Node: Development79187 +Node: Contribute79536 +Node: Changes80257 +Node: Contributors82871 +Node: Index84393  End Tag Table diff --git a/dash.texi b/dash.texi index 8f151c2..f598563 100644 --- a/dash.texi +++ b/dash.texi @@ -13,7 +13,7 @@ @copying -This manual is for @code{dash.el} version 2.11.0. +This manual is for @code{dash.el} version 2.12.0. Copyright © 2012-2015 Free Software Foundation, Inc. @@ -124,13 +124,13 @@ Alternatively, you can just dump @verb{~dash.el~} or Add this to the big comment block at the top: @lisp -;; Package-Requires: ((dash "2.11.0")) +;; Package-Requires: ((dash "2.12.0")) @end lisp @noindent To get function combinators: @lisp -;; Package-Requires: ((dash "2.11.0") (dash-functional "1.2.0") (emacs "24")) +;; Package-Requires: ((dash "2.12.0") (dash-functional "1.2.0") (emacs "24")) @end lisp @node Syntax highlighting of dash functions diff --git a/readme-template.md b/readme-template.md index 02fde88..6d3dbd2 100644 --- a/readme-template.md +++ b/readme-template.md @@ -19,11 +19,11 @@ If you want the function combinators, then also: Add this to the big comment block at the top: - ;; Package-Requires: ((dash "2.11.0")) + ;; Package-Requires: ((dash "2.12.0")) To get function combinators: - ;; Package-Requires: ((dash "2.11.0") (dash-functional "1.2.0") (emacs "24")) + ;; Package-Requires: ((dash "2.12.0") (dash-functional "1.2.0") (emacs "24")) ## Syntax highlighting of dash functions @@ -91,6 +91,14 @@ Change `readme-template.md` or `examples-to-docs.el` instead. ## Changelist +### From 2.11 to 2.12 + +- Add GNU ELPA support. (Phillip Lord) +- Add `-some->`, `-some->>`, and `-some-->` macros. (Cam Saul) +- `-is-suffix?` no longer destroys input list. +- Faster hashtable implementation for `-union`. +- Improvements to docstrings and examples + ### From 2.10 to 2.11 - Lots of clean up wrt byte compilation, debug macros and tests