yap-examples-0.1: examples of the algebraic classes in the yap package
Copyright(c) Ross Paterson 2011
LicenseBSD-style (see the file LICENSE)
Maintainer[email protected]
Stabilityprovisional
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Data.YAP.Quantity

Description

An example instance of the algebraic classes: numeric quantities with unit types. You can only compare and add quantities that use the same units.

Synopsis

Documentation

newtype Quantity u a Source #

Quantities of a numeric type a, in units encoded by the phantom type parameter u. For example, types for counting apples and oranges can be defined as:

data Apple
data Orange
type Apples = Quantity Apple Int
type Oranges = Quantity Orange Int

You can't compare Apples with Oranges (or add them). You can add Apples to Apples, but not multiply them.

A full dimensional system keeping track of units while modelling multiplication and division will require type-level functions.

Constructors

Quantity a 

Instances

Instances details
Read a => Read (Quantity u a) Source # 
Instance details

Defined in Data.YAP.Quantity

Show a => Show (Quantity u a) Source # 
Instance details

Defined in Data.YAP.Quantity

Methods

showsPrec :: Int -> Quantity u a -> ShowS #

show :: Quantity u a -> String #

showList :: [Quantity u a] -> ShowS #

Eq a => Eq (Quantity u a) Source # 
Instance details

Defined in Data.YAP.Quantity

Methods

(==) :: Quantity u a -> Quantity u a -> Bool #

(/=) :: Quantity u a -> Quantity u a -> Bool #

Ord a => Ord (Quantity u a) Source # 
Instance details

Defined in Data.YAP.Quantity

Methods

compare :: Quantity u a -> Quantity u a -> Ordering #

(<) :: Quantity u a -> Quantity u a -> Bool #

(<=) :: Quantity u a -> Quantity u a -> Bool #

(>) :: Quantity u a -> Quantity u a -> Bool #

(>=) :: Quantity u a -> Quantity u a -> Bool #

max :: Quantity u a -> Quantity u a -> Quantity u a #

min :: Quantity u a -> Quantity u a -> Quantity u a #

AbelianGroup a => AbelianGroup (Quantity u a) Source # 
Instance details

Defined in Data.YAP.Quantity

Methods

(-) :: Quantity u a -> Quantity u a -> Quantity u a #

negate :: Quantity u a -> Quantity u a #

gtimes :: (AbelianGroup b, ToInteger b) => b -> Quantity u a -> Quantity u a #

AdditiveMonoid a => AdditiveMonoid (Quantity u a) Source # 
Instance details

Defined in Data.YAP.Quantity

Methods

(+) :: Quantity u a -> Quantity u a -> Quantity u a #

zero :: Quantity u a #

atimes :: ToInteger b => b -> Quantity u a -> Quantity u a #

scale :: Semiring a => a -> Quantity u a -> Quantity u a Source #

Multiply by a scalar