sql-fragment-0.0.1.0: SQL query combinator

Safe HaskellNone
LanguageHaskell2010

Database.SQLFragment.Dimensional

Contents

Description

Add arithmetic operators to deal with Units. @todo add unit conversion

Synopsis

Arithmetic operators for SQLFragments holding dimensional units and quantities

class Addable a b c | a b -> c where

Addition Subtraction

Methods

(!+!) :: a -> b -> c

(!-!) :: a -> b -> c

Instances

Num n => Addable (SQLFragment ((:) * (Tagged * l (Dimensional v a n)) ([] *)) ([] *)) (SQLFragment ((:) * (Tagged * l' (Dimensional v a n)) ([] *)) ([] *)) (SQLFragment ((:) * (Tagged * l (Dimensional v a n)) ([] *)) ([] *)) 
Num n => Addable (SQLFragment ((:) * (Dimensional v a n) ([] *)) ([] *)) (SQLFragment ((:) * (Dimensional v a n) ([] *)) ([] *)) (SQLFragment ((:) * (Dimensional v a n) ([] *)) ([] *)) 
(Num n, (~) * v DQuantity) => Addable (Dimensional v a n) (Dimensional v a n) (Dimensional v a n) 

class Multipliable a b c | a b -> c where

Multiplication

Methods

(!*!) :: a -> b -> c

Instances

(Num n, Mul a b c) => Multipliable (SQLFragment ((:) * (Tagged * l (Dimensional v a n)) ([] *)) ([] *)) (SQLFragment ((:) * (Tagged * l' (Dimensional v b n)) ([] *)) ([] *)) (SQLFragment ((:) * (Tagged * l (Dimensional v c n)) ([] *)) ([] *)) 
(Num n, Mul a b c) => Multipliable (SQLFragment ((:) * (Dimensional v a n) ([] *)) ([] *)) (SQLFragment ((:) * (Dimensional v b n) ([] *)) ([] *)) (SQLFragment ((:) * (Dimensional v c n) ([] *)) ([] *)) 
(Num n, Mul a b c) => Multipliable (Dimensional v a n) (Dimensional v b n) (Dimensional v c n) 

class Divisible a b c | a b -> c where

Division

Methods

(!/!) :: a -> b -> c

Instances

(Num n, Mul a b c) => Divisible (SQLFragment ((:) * (Tagged * l (Dimensional v a n)) ([] *)) ([] *)) (SQLFragment ((:) * (Tagged * l' (Dimensional v b n)) ([] *)) ([] *)) (SQLFragment ((:) * (Tagged * l (Dimensional v c n)) ([] *)) ([] *)) 
(Num n, Div a b c) => Divisible (SQLFragment ((:) * (Dimensional v a n) ([] *)) ([] *)) (SQLFragment ((:) * (Dimensional v b n) ([] *)) ([] *)) (SQLFragment ((:) * (Dimensional v c n) ([] *)) ([] *)) 
(Fractional n, Div a b c, (~) * v DQuantity) => Divisible (Dimensional v a n) (Dimensional v b n) (Dimensional v c n) 

Export Dimensional operators

class Quantify a u q where

Methods

(!*) :: a -> u -> q

Instances

Num a => Quantify a (Unit d a) (Quantity d a) 
Num a => Quantify (SQLFragment ((:) * a ([] *)) p) (Unit d a) (SQLFragment ((:) * (Quantity d a) ([] *)) p) 
Num a => Quantify (SQLFragment ((:) * (Tagged * l a) ([] *)) p) (Unit d a) (SQLFragment ((:) * (Tagged * l (Quantity d a)) ([] *)) p) 

class Dequantify a u q | u q -> a where

Methods

(!/) :: q -> u -> a

Instances

Fractional a => Dequantify a (Unit d a) (Quantity d a) 
Fractional a => Dequantify (SQLFragment ((:) * a ([] *)) p) (Unit d a) (SQLFragment ((:) * (Quantity d a) ([] *)) p) 
Fractional a => Dequantify (SQLFragment ((:) * (Tagged * l a) ([] *)) p) (Unit d a) (SQLFragment ((:) * (Tagged * l (Quantity d a)) ([] *)) p) 

x :: SQLFragment ((:) * (Quantity DLength Double) ([] *)) ([] *)