classy-prelude
==============
A better Prelude. Haskell's Prelude needs to maintain backwards compatibility and has many aspects that no longer represents best practice. The goals of classy-prelude are:
* remove all partial functions
* modernize data structures
* generally use Text instead of String
* encourage the use of appropriate data structures such as Vectors or HashMaps instead of always using lists and associated lists
* reduce import lists and the need for qualified imports
classy-prelude [should only be used by application developers](http://www.yesodweb.com/blog/2013/10/prelude-replacements-libraries). Library authors should consider using [mono-traversable](https://github.com/snoyberg/mono-traversable/blob/master/README.md), which classy-prelude builds upon.
It is worth noting that classy-prelude [largely front-ran changes that the community made to the base Prelude in GHC 7.10](http://www.yesodweb.com/blog/2014/10/classy-base-prelude).
mono-traversable
================
Most of this functionality is provided by [mono-traversable](https://github.com/snoyberg/mono-traversable). Please read the README over there. classy-prelude gets rid of the `o` prefix from mono-traversable functions.
Text
====
Lots of things use `Text` instead of `String`.
Note that `show` returns a `String`.
To get back `Text`, use `tshow`.
other functionality
===================
* exceptions package
* system-filepath convenience functions
* whenM, unlessM
* hashNub and ordNub (efficient nub implementations).
Using classy-prelude
====================
* use the NoImplicitPrelude extension (you can place this in your cabal file) and `import ClassyPrelude`
* use [base-noprelude](https://github.com/hvr/base-noprelude) in your project and define a Prelude module that re-exports `ClassyPrelude`.
Appendix
========
* The [mono-traversable](https://github.com/snoyberg/mono-traversable) README.
* [The transition to the modern design of classy-prelude](http://www.yesodweb.com/blog/2013/09/classy-mono).
These blog posts contain some out-dated information but might be helpful
* [So many preludes!](http://www.yesodweb.com/blog/2013/01/so-many-preludes) (January 2013)
* [ClassyPrelude: The good, the bad, and the ugly](http://www.yesodweb.com/blog/2012/08/classy-prelude-good-bad-ugly) (August 2012)