Algebraic Data Types
Last updated
Was this helpful?
Last updated
Was this helpful?
0 β Void 1 β () 2 β Bool 3 β Ordering (+) sum-type (Γ) product a type-var L type-ctor C data-ctor
product: a Γ b
β
Pair a b
β
(a,b)
β
And a b
β
a β§ b
sumtype: a + b
β
Either a b
β
(a|b)
β
Or a b
β
a β¨ b
a -> b -> c β‘ a -> (b -> c)
a -> b β bα΅
Pairs
(a, b) -> c
β
a -> b -> c
CURRY/UNCURRY
a -> (b * c)
β
(a -> b * a -> c)
a -> (b, c) β
(a -> b, a -> c)
a -> (b + c) β (a -> b + a -> c)
Arithmetics
(a b)Λ’ = aΛ’ bΛ’ (a b) ^ n = a ^ n b ^ n
m1 a b n = (a ^ n) * (b ^ n) m1 :: (Integral b, Num a) => a -> a -> b -> a
m2 a b n = (a * b) ^ n m2 :: (Integral b, Num a) => a -> a -> b -> a