The precursor package
- No more String
- String is removed in favor of lazy Data.Text.Lazy.Text.
- No more Num
- The Num typeclass is now just for types which can be converted from integer literals.
- Semigroups are now in scope by default, as well as some useful wrappers.
- A Semiring has the operations + and *, and the members one and zero. Bool is a Semiring, as is Integer, etc. Num is not a superclass of Semiring.
- Sensibly strict
- Several functions, such as foldl, sum, product, etc. are strict as default.
- No unnecessary Monads
- Functions such as Control.Monad.sequence, Control.Monad.>>, and Control.Monad.replicateM are removed in favor of the equivalent sequenceA, *>, and replicateA on Applicatives.
- Fewer partial functions
- Functions like head, last, minimum, etc. now return Nothing when called on empty structures. tail and init return empty lists when called on empty lists.
- Data structures
- Map and Set (the strict variants) are now in scope by default, with a minimal, non-colliding aliased api.
- State is now in scope by default.
- Handy functions like trace, traceShow, and notImplemented are in scope by default. They give warnings when used so they can't be forgotten.
- Other handy functions
- An O(n*log n) nub, foldr2, converge, bool, and others.
|Dependencies||base (>=4.7 && <5), bifunctors (>=5.4), bytestring (>=0.10), containers (>=0.5), mtl (>=2.2), text (>=1.2), text-show (>=3.4) [details]|
|Copyright||2016 Donnacha Oisín Kidney|
|Author||Donnacha Oisín Kidney|
|Source repository||head: git clone https://github.com/oisdk/precursor|
|Uploaded||Wed Oct 26 19:03:47 UTC 2016 by oisdk|
|Downloads||37 total (5 in the last 30 days)|
|Status||Docs available [build log]
Last success reported on 2016-10-29 [all 1 reports]
For package maintainers and hackage trustees