Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- data Lovelace
- data LovelaceError
- maxLovelaceVal ∷ Word64
- mkLovelace ∷ Word64 → Either LovelaceError Lovelace
- mkKnownLovelace ∷ ∀ n. (KnownNat n, n <= 45000000000000000) ⇒ Lovelace
- lovelaceF ∷ Format r (Lovelace → r)
- unsafeGetLovelace ∷ Lovelace → Word64
- lovelaceToInteger ∷ Lovelace → Integer
- integerToLovelace ∷ Integer → Either LovelaceError Lovelace
- sumLovelace ∷ (Foldable t, Functor t) ⇒ t Lovelace → Either LovelaceError Lovelace
- addLovelace ∷ Lovelace → Lovelace → Either LovelaceError Lovelace
- subLovelace ∷ Lovelace → Lovelace → Either LovelaceError Lovelace
- scaleLovelace ∷ Integral b ⇒ Lovelace → b → Either LovelaceError Lovelace
- scaleLovelaceRational ∷ Lovelace → Rational → Lovelace
- scaleLovelaceRationalUp ∷ Lovelace → Rational → Lovelace
- divLovelace ∷ Integral b ⇒ Lovelace → b → Either LovelaceError Lovelace
- modLovelace ∷ Integral b ⇒ Lovelace → b → Either LovelaceError Lovelace
Lovelace
Lovelace is the least possible unit of currency
Instances
data LovelaceError Source #
LovelaceOverflow Word64 | |
LovelaceTooLarge Integer | |
LovelaceTooSmall Integer | |
LovelaceUnderflow Word64 Word64 |
Instances
maxLovelaceVal ∷ Word64 Source #
Maximal possible value of Lovelace
Constructors
mkLovelace ∷ Word64 → Either LovelaceError Lovelace Source #
Constructor for Lovelace
returning LovelaceError
when c
exceeds
maxLovelaceVal
mkKnownLovelace ∷ ∀ n. (KnownNat n, n <= 45000000000000000) ⇒ Lovelace Source #
Construct a Lovelace
from a KnownNat
, known to be less than
maxLovelaceVal
Formatting
Conversions
unsafeGetLovelace ∷ Lovelace → Word64 Source #
Unwraps Lovelace
. It's called “unsafe” so that people wouldn't use it
willy-nilly if they want to sum lovelace or something. It's actually safe.
Arithmetic operations
sumLovelace ∷ (Foldable t, Functor t) ⇒ t Lovelace → Either LovelaceError Lovelace Source #
Compute sum of all lovelace in container. Result is Integer
as a
protection against possible overflow.
addLovelace ∷ Lovelace → Lovelace → Either LovelaceError Lovelace Source #
Addition of lovelace, returning LovelaceError
in case of overflow
subLovelace ∷ Lovelace → Lovelace → Either LovelaceError Lovelace Source #
Subtraction of lovelace, returning LovelaceError
on underflow
scaleLovelace ∷ Integral b ⇒ Lovelace → b → Either LovelaceError Lovelace Source #
Scale a Lovelace
by an Integral
factor, returning LovelaceError
when
the result is too large
scaleLovelaceRational ∷ Lovelace → Rational → Lovelace Source #
Scale a Lovelace
by a rational factor, rounding down.
scaleLovelaceRationalUp ∷ Lovelace → Rational → Lovelace Source #
Scale a Lovelace
by a rational factor, rounding up.
divLovelace ∷ Integral b ⇒ Lovelace → b → Either LovelaceError Lovelace Source #
modLovelace ∷ Integral b ⇒ Lovelace → b → Either LovelaceError Lovelace Source #