smart-math-0.1: Mathematical smart constructors
Safe HaskellNone
LanguageHaskell2010

Numeric.Data.NonZero.Internal

Description

Provides the NonZero type for enforcing a non-zero invariant.

Since: 0.1

Synopsis

Type

newtype NonZero a Source #

Smart-constructor for creating a "non-zero" a.

Since: 0.1

Constructors

UnsafeNonZero a 

Bundled Patterns

pattern MkNonZero :: a -> NonZero a

Unidirectional pattern synonym for NonZero. This allows us to pattern match on a nonzero term without exposing the unsafe internal details.

Since: 0.1

Instances

Instances details
HasField "unNonZero" (NonZero a) a Source #

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

Methods

getField :: NonZero a -> a #

(k ~ A_Getter, x ~ a, y ~ a) => LabelOptic "unNonZero" k (NonZero a) (NonZero a) x y Source #

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

Methods

labelOptic :: Optic k NoIx (NonZero a) (NonZero a) x y Source #

Lift a => Lift (NonZero a :: Type) Source #

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

Methods

lift :: Quote m => NonZero a -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => NonZero a -> Code m (NonZero a) #

(Division a, Integral a) => MEuclidean (NonZero a) Source #

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

Methods

mdivMod :: NonZero a -> NonZero a -> (NonZero a, NonZero a) Source #

(Division a, Num a) => MGroup (NonZero a) Source #

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

Methods

(.%.) :: NonZero a -> NonZero a -> NonZero a Source #

Num a => MMonoid (NonZero a) Source #

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

Methods

one :: NonZero a Source #

Num a => MSemigroup (NonZero a) Source #

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

Methods

(.*.) :: NonZero a -> NonZero a -> NonZero a Source #

(FromInteger a, Num a, Ord a) => FromInteger (NonZero a) Source #

WARNING: Partial

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

(FromRational a, Num a, Ord a) => FromRational (NonZero a) Source #

WARNING: Partial

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

Generic (NonZero a) Source # 
Instance details

Defined in Numeric.Data.NonZero.Internal

Associated Types

type Rep (NonZero a)

Since: smart-math-0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

type Rep (NonZero a) = D1 ('MetaData "NonZero" "Numeric.Data.NonZero.Internal" "smart-math-0.1-inplace" 'True) (C1 ('MetaCons "UnsafeNonZero" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

Methods

from :: NonZero a -> Rep (NonZero a) x #

to :: Rep (NonZero a) x -> NonZero a #

Show a => Show (NonZero a) Source #

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

Methods

showsPrec :: Int -> NonZero a -> ShowS #

show :: NonZero a -> String #

showList :: [NonZero a] -> ShowS #

NFData a => NFData (NonZero a) Source #

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

Methods

rnf :: NonZero a -> () #

Eq a => Eq (NonZero a) Source #

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

Methods

(==) :: NonZero a -> NonZero a -> Bool #

(/=) :: NonZero a -> NonZero a -> Bool #

Ord a => Ord (NonZero a) Source #

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

Methods

compare :: NonZero a -> NonZero a -> Ordering #

(<) :: NonZero a -> NonZero a -> Bool #

(<=) :: NonZero a -> NonZero a -> Bool #

(>) :: NonZero a -> NonZero a -> Bool #

(>=) :: NonZero a -> NonZero a -> Bool #

max :: NonZero a -> NonZero a -> NonZero a #

min :: NonZero a -> NonZero a -> NonZero a #

Show a => Display (NonZero a) Source #

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

type Rep (NonZero a) Source #

Since: 0.1

Instance details

Defined in Numeric.Data.NonZero.Internal

type Rep (NonZero a) = D1 ('MetaData "NonZero" "Numeric.Data.NonZero.Internal" "smart-math-0.1-inplace" 'True) (C1 ('MetaCons "UnsafeNonZero" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

Creation

unsafeNonZero :: (Eq a, HasCallStack, Num a) => a -> NonZero a Source #

Throws an error when given 0.

WARNING: Partial

Examples

Expand
>>> unsafeNonZero 7
UnsafeNonZero 7

Since: 0.1

Misc

errMsg :: String -> String Source #

Since: 0.1