<div dir="ltr">Wow, thanks!</div><br><div class="gmail_quote"><div dir="ltr">ср, 31 авг. 2016 г. в 10:52, David Feuer <<a href="mailto:david.feuer@gmail.com">david.feuer@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">There's a lot to see in this one. There are plenty of brand-new<br>
functions in Data.Map, Data.Set, and Data.Sequence, including a<br>
highly-optimized lens-inspired map alteration function and a brand-new<br>
API for merging maps efficiently. Several key map, set, and sequence<br>
functions have sped up considerably. The full change log is below. I<br>
have tried to give appropriate credit to all the non-maintainers who<br>
contributed to this release, some of whom made very major<br>
contributions indeed. If I missed anyone, please give a shout.<br>
<br>
<br>
General package changes:<br>
<br>
Remove all attempts to support nhc98 and any versions of GHC before 7.0.<br>
<br>
Integrate benchmarks with Cabal. (Thanks, Gabriel Gonzalez!)<br>
<br>
Make Cabal report required extensions properly, and stop using default<br>
extensions. Note that we do not report extensions conditionally<br>
enabled based on GHC version, as doing so would lead to a maintenance<br>
nightmare with no obvious benefits.<br>
<br>
Use BangPatterns throughout to reduce noise. This extension is now<br>
required to compile containers.<br>
<br>
Improve QuickCheck properties taking arbitrary functions by using<br>
Test.QuickCheck.Function.Fun instead of evil Show instances for<br>
functions.<br>
<br>
Expose several internal modules through Cabal (as requested by Edward<br>
Kmett). These remain completely unsupported.<br>
<br>
<br>
<br>
New exports and instances:<br>
<br>
Add alterF, restrictKeys, and withoutKeys to Data.Map and Data.IntMap.<br>
<br>
Add take, drop, splitAt, takeWhileAntitone, dropWhileAntitone, and<br>
spanAntitone for Data.Map and Data.Set. Thanks to Cale Gibbard for<br>
suggesting these.<br>
<br>
Add merge, mergeA, and associated merge tactics for Data.Map. Many<br>
thanks to Cale Gibbard, Ryan Trinkle, and Dan Doel for inspiring the<br>
merge idea and helping refine the interface.<br>
<br>
Add fromDescList, fromDescListWith, fromDescListWithKey, and<br>
fromDistinctDescList to Data.Map.<br>
<br>
Add fromDescList and fromDistinctDescList to Data.Set.<br>
<br>
Add Empty, :<|, and :|> pattern synonyms for Data.Sequence, as<br>
originally envisioned in the finger tree paper by Paterson and Hinze.<br>
<br>
Add adjust', (!?), lookup, chunksOf, cycleTaking, insertAt, deleteAt,<br>
intersperse, foldMapWithIndex, and traverseWithIndex for<br>
Data.Sequence.<br>
<br>
Derive Generic and Generic1 for Data.Tree.Tree, Data.Sequence.ViewL,<br>
and Data.Sequence.ViewR.<br>
<br>
Add foldTree for Data.Tree. (Thanks, Daniel Wagner!)<br>
<br>
<br>
<br>
Semantic changes:<br>
<br>
Make Data.Sequence.splitAt strict in its arguments. Previously, it<br>
returned a lazy pair.<br>
<br>
Fix completely erroneous definition of length for Data.Sequence.ViewR.<br>
<br>
Make Data.Map.Strict.traverseWithKey force result values before<br>
installing them in the new map.<br>
<br>
Make Data.Tree.drawTree handle newlines better. (Thanks, recursion-ninja!)<br>
<br>
<br>
<br>
Deprecations:<br>
<br>
All functions in Data.Map proper that have been documented as<br>
deprecated since version 0.5 or before now have DEPRECATED pragmas and<br>
will actually be removed after another cycle or two.<br>
<br>
Tree printing functions in Data.Map intended for library debugging are<br>
now deprecated. They will continue to be available for the foreseeable<br>
future in an internal module.<br>
<br>
<br>
<br>
Performance changes:<br>
<br>
Substantially speed up splitAt, zipWith, take, drop, fromList,<br>
partition, foldl', and foldr' for Data.Sequence. Special thanks to<br>
Lennart Spitzner for digging into the performance problems with<br>
previous versions of fromList and finding a way to make it really<br>
fast. Slightly optimize replicateA. Stop traverse from performing many<br>
unnecessary fmap operations.<br>
<br>
Most operations in Data.Sequence advertised as taking logarithmic time<br>
(including >< and adjust) now use their full allotted time to avoid<br>
potentially building up chains of thunks in the tree. In general, the<br>
only remaining operations that avoid doing more than they really need<br>
are the particular bulk creation and transformation functions that<br>
really benefit from the extra laziness. There are some situations<br>
where this change may slow programs down, but I think having more<br>
predictable and usually better performance more than makes up for<br>
that.<br>
<br>
Add rewrite rules to fuse fmap with reverse for Data.Sequence.<br>
<br>
Switch from hedge algorithms to divide-and-conquer algorithms for<br>
union, intersection, difference, and merge in both Data.Map and<br>
Data.Set. These algorithms are simpler, are known to be asymptotically<br>
optimal, and are faster according to our benchmarks.<br>
<br>
Speed up adjust for Data.Map. Allow map to inline, and define a custom<br>
(<$). This considerably improves mapping with a constant function.<br>
<br>
Remove non-essential laziness throughout the Data.Map.Lazy implementation.<br>
<br>
Slightly speed up deletion and alteration functions for Data.IntMap.<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div>