Prelude replacement.
Features
- No more
String
String
is removed in favor of lazyData.Text.Lazy.Text
.- No more
Num
The
Num
typeclass is now just for types which can be converted from integer literals.Semigroup
sSemigroup
s are now in scope by default, as well as some useful wrappers.Semiring
sA
Semiring
has the operations+
and*
, and the membersone
andzero
.Bool
is aSemiring
, as isInteger
, etc.Num
is not a superclass ofSemiring
.- Sensibly strict
Several functions, such as
foldl
,sum
,product
, etc. are strict as default.- No unnecessary
Monad
s Functions such as
Control.Monad.sequence
,Control.Monad.>>
, andControl.Monad.replicateM
are removed in favor of the equivalentsequenceA
,*>
, andreplicateA
onApplicative
s.- Fewer partial functions
Functions like
head
,last
,minimum
, etc. now returnNothing
when called on empty structures.tail
andinit
return empty lists when called on empty lists.- Data structures
Map
andSet
(the strict variants) are now in scope by default, with a minimal, non-colliding aliased api.- Transformers
State
is now in scope by default.- Debugging
Handy functions like
trace
,traceShow
, andnotImplemented
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.