Version 2.20.0 of package Dash has just been released in GNU ELPA. You can now find it in M-x list-packages RET.
Dash describes itself as: =============================== A modern list library for Emacs =============================== More at https://elpa.gnu.org/packages/dash.html ## Summary: A modern list API for Emacs. See its overview at https://github.com/magnars/dash.el#functions. ## Recent NEWS: # Dash NEWS -- history of user-visible changes Copyright (C) 2012-2025 Free Software Foundation, Inc. See the end of the file for license conditions. ## Change log ### From 2.19.1 to 2.20.0 #### Deprecations - Calling `-zip` with two arguments now emits a warning. This long-discouraged calling convention remains supported, but the caller is now referred to the equivalent `-zip-pair` instead (Stefan Monnier, #400). - Calling `-zip-pair` with less than or more than two arguments is now deprecated, and can be replaced with the equivalent call to `-zip-lists` instead. #### Fixes - Fixed a regression from `2.18` in `-take` that caused it to prematurely signal an error on improper lists (#393). - The function `-pad` can now be called with zero lists as arguments. - The functions `-union`, `-intersection`, and `-difference` now return proper sets, without duplicate elements (#397). - The functions `-same-items?` and `-permutations` now work on multisets (lists with duplicate elements) (#390, #397, #399). For example: ```el (-same-items? '(1 1 2 3) '(3 1 2)) ; => t (-permutations '(1 1 2)) ; => '((1 1 2) (1 2 1) (2 1 1)) ``` - Several functions which are documented as returning a fresh, mutable object (such as a copy of one of their arguments) are no longer marked as `pure`. Pure functions called with constant arguments are evaluated during byte-compilation; the resulting value is an immutable constant, and thus unsafe to modify destructively. The functions in question are: `-clone`, `-cons*`, `-drop-last`, `-interleave`, `-interpose`, `-iota`, `-non-nil`, `-repeat`, `-slice`, `-snoc`, `-split-at`, `-take`, `-take-last`. #### New features - The function `-contains?` now returns the matching tail of the list instead of just `t`, similarly to `member` (#397). - New function `-frequencies` that takes a list and counts how many times each distinct element occurs in it (suggested by @ebpa, #209, #214, #399). - New functions `-zip-lists-fill` and `-unzip-lists` which are better-behaved versions of `-zip-fill` and `-unzip`, respectively (#400). ### From 2.19.0 to 2.19.1 #### Fixes - Fixed a regression from `2.18` in `-is-suffix-p` which led to false negatives when parts of the suffix appeared multiple times in the list being searched (Bennett Rennier, #384). ### From 2.18.1 to 2.19.0 #### Fixes - Reverted a breaking change introduced in `2.18.0` that caused the threading macro `-->` to be indented differently from `->` and `->>` (#375). - Added and fixed Edebug specifications for many Dash macros (Philipp Stephani, #380, #381). #### New features - The combinators `-on`, `-flip`, `-not`, `-andfn`, and `-orfn` now return variadic functions that take any number of arguments (#308). - New combinator `-rotate-args` similar to `-flip`, but for arbitrary arglist rotations (suggested by @vapniks, #72). - New function `-every` and its anaphoric macro counterpart `--every`. They are like the existing `-every-p` and `--every-p`, respectively, but return the last non-`nil` result instead of just `t`. - New macro `--partition-after-pred` which affords `-partition-after-pred` better performance (Per Weijnitz, #362). ### From 2.18.0 to 2.18.1 - Fixed a regression from `2.17` as well as a long-standing bug in `--iterate`, which evaluated its arguments one too many times. This in turn could lead to errors in `-flatten-n` when it tried flattening certain structures too far (#373). ### From 2.17 to 2.18 This release absorbs the now obsolete `dash-functional` version `1.3.0` into `dash`, and brings the very old version of `dash` on GNU ELPA up to date. Package maintainers should replace all uses of `dash-functional`, which will eventually be deleted, with `dash` version `2.18.0`. For more information on this, see: https://github.com/magnars/dash.el/wiki/Obsoletion-of-dash-functional.el - New function `-iota` for generating arithmetic sequences (@holomorph, #215). ... ...