Deprecations
- Calling
-zipwith two arguments now emits a warning. This long-discouraged calling convention remains supported, but the caller is now referred to the equivalent-zip-pairinstead (Stefan Monnier, #400). - Calling
-zip-pairwith less than or more than two arguments is now deprecated, and can be replaced with the equivalent call to-zip-listsinstead.
Fixes
-
Fixed a regression from
2.18in-takethat caused it to prematurely signal an error on improper lists (#393). -
The function
-padcan now be called with zero lists as arguments. -
The functions
-union,-intersection, and-differencenow return proper sets, without duplicate elements (#397). -
The functions
-same-items?and-permutationsnow work on multisets (lists with duplicate elements) (#390, #397, #399).For example:
(-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 justt, similarly tomember(#397). - New function
-frequenciesthat takes a list and counts how many times each distinct element occurs in it (suggested by @ebpa, #209, #214, #399). - New functions
-zip-lists-filland-unzip-listswhich are better-behaved versions of-zip-filland-unzip, respectively (#400).