precursor-0.1.0.0: src/Precursor.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-|
Module: Precursor
Description: A fun-ish Prelude replacement
License: MIT
Maintainer: mail@doisinkidney.com
Stability: experimental
Features
[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.
['Semigroup's]
'Semigroup's are now in scope by default, as well as some useful
wrappers.
['Semiring's]
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 'Monad's]
Functions such as 'Control.Monad.sequence', 'Control.Monad.>>', and
'Control.Monad.replicateM' are removed in favor of the equivalent
'sequenceA', '*>', and 'replicateA' on 'Applicative's.
[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.
[Transformers]
'State' is now in scope by default.
[Debugging]
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.
-}
module Precursor
( module Precursor.Algebra.Enum
, module Precursor.Algebra.Eq
, module Precursor.Algebra.Monoid
, module Precursor.Algebra.Ord
, module Precursor.Algebra.Ring
, module Precursor.Algebra.Semigroup
, module Precursor.Algebra.Semiring
, module Precursor.Coerce
, module Precursor.Control.Alternative
, module Precursor.Control.Applicative
, module Precursor.Control.Bifunctor
, module Precursor.Control.Category
, module Precursor.Control.Functor
, module Precursor.Control.Monad
, module Precursor.Control.State
, module Precursor.Data.Bool
, module Precursor.Data.Either
, module Precursor.Data.List
, module Precursor.Data.Map
, module Precursor.Data.Maybe
, module Precursor.Data.Set
, module Precursor.Data.Tuple
, module Precursor.Debug
, module Precursor.Function
, module Precursor.Numeric.Integral
, module Precursor.Numeric.Num
, module Precursor.Structure.Foldable
, module Precursor.Structure.Traversable
, module Precursor.System.IO
, module Precursor.Text.Show
, module Precursor.Text.Text
) where
import Precursor.Algebra.Enum
import Precursor.Algebra.Eq
import Precursor.Algebra.Monoid
import Precursor.Algebra.Ord
import Precursor.Algebra.Ring
import Precursor.Algebra.Semigroup
import Precursor.Algebra.Semiring
import Precursor.Coerce
import Precursor.Control.Alternative
import Precursor.Control.Applicative
import Precursor.Control.Bifunctor
import Precursor.Control.Category
import Precursor.Control.Functor
import Precursor.Control.Monad
import Precursor.Control.State
import Precursor.Data.Bool
import Precursor.Data.Either
import Precursor.Data.List
import Precursor.Data.Map
import Precursor.Data.Maybe
import Precursor.Data.Set
import Precursor.Data.Tuple
import Precursor.Debug
import Precursor.Function
import Precursor.Numeric.Integral
import Precursor.Numeric.Num
import Precursor.Structure.Foldable
import Precursor.Structure.Traversable
import Precursor.System.IO
import Precursor.Text.Show
import Precursor.Text.Text