Theory

Haskell has a static, Hindley-Milner, parametric polymorphic type system.

Annotation

haskellIsAwesome :: Bool

Type Inference

Compilers infer principal type, annotations are optional but recommended.

Arrow Types

(Int -> Bool) -> [Int] -> [Bool]

Polymorphism

id :: a -> a

Type Classes: Num, Eq, Show give adโ€‘hoc polymorphism (overloading).

Implementation

Check types in GHCi:

:t map
-- map :: (a -> b) -> [a] -> [b]