{-# 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