numhask-prelude-0.0.5.1: src/NumHask/Prelude.hs
{-# LANGUAGE CPP #-}
{-# OPTIONS_GHC -Wall #-}
-- | A prelude for NumHask
module NumHask.Prelude
( -- * Backend
-- $backend
module Protolude
#if !MIN_VERSION_base(4,11,0)
, (<>)
, Semigroup
#endif
-- RebindableSyntax takes fromString and fail away so we need to put it back in
, fromString
, fail
, Complex(..)
, Natural(..)
-- * Algebraic Heirarchy
-- $instances
, module NumHask.Algebra.Additive
, module NumHask.Algebra.Basis
, module NumHask.Algebra.Distribution
, module NumHask.Algebra.Field
, module NumHask.Algebra.Integral
, module NumHask.Algebra.Magma
, module NumHask.Algebra.Metric
, module NumHask.Algebra.Module
, module NumHask.Algebra.Multiplicative
, module NumHask.Algebra.Rational
, module NumHask.Algebra.Ring
, module NumHask.Algebra.Singleton
) where
#if MIN_VERSION_base(4,11,0)
import Protolude
hiding (Integral(..), Rep, Semiring(..), (*), (**),
(+), (-), (/), (^), (^^), abs, acos, acosh, asin, asinh, atan,
atan2, atanh, ceiling, cos, cosh, exp, floor, fromInteger,
fromIntegral, even, odd, infinity, log, logBase, negate, pi, product,
properFraction, recip, round, sin, sinh, sqrt, sum, tan, tanh, toInteger, trans,
zero, fromRational, Ratio(..), Rational, reduce, gcd, subtract)
#else
import Protolude
hiding (Integral(..), Rep, Semiring(..), (*), (**),
(+), (-), (/), (^), (^^), abs, acos, acosh, asin, asinh, atan,
atan2, atanh, ceiling, cos, cosh, exp, floor, fromInteger,
fromIntegral, even, odd, infinity, log, logBase, negate, pi, product,
properFraction, recip, round, sin, sinh, sqrt, sum, tan, tanh, toInteger, trans,
zero, fromRational, Ratio(..), Rational, reduce, gcd, subtract, (<>), Semigroup)
import Data.Semigroup ((<>), Semigroup)
#endif
import Control.Monad (fail)
import Data.String
import GHC.Natural(Natural(..))
import NumHask.Algebra.Additive
import NumHask.Algebra.Basis
import NumHask.Algebra.Distribution
import NumHask.Algebra.Field
import NumHask.Algebra.Integral
import NumHask.Algebra.Magma
import NumHask.Algebra.Metric
import NumHask.Algebra.Module
import NumHask.Algebra.Multiplicative
import NumHask.Algebra.Rational
import NumHask.Algebra.Ring
import NumHask.Algebra.Singleton
-- $backend
-- NumHask imports Protolude as the prelude and replaces much of the 'Num' heirarchy in base.
-- Usage of 'Semigroup' and 'Monoid' has been avoided to retain basic compatability.
-- $instances
-- Re-defines the numeric tower.
--
-- Instances for 'Int', 'Integer', 'Float', 'Double', 'Bool', 'Complex' and 'Natural'are supplied.
--