In Haskell type definitions, type names always begin with uppercase letters, while type variables always begin with lowercase letters. Usually they are called a
, b
and so on, but can also be caused by f
, m
, t
etc.
Often the letters at the beginning of the alphabet is used for variables such as unlimited, while you often see more specific variables such as marked f
, m
, t
etc.
In a specific example
foldl :: Foldable t => (b -> a -> b) -> b -> t a -> b
t
is definitely referred to as an instance of a type class Foldable
. t a
means any Foldable
"container" that contains type values a
.
app :: [t] -> t -> [t]
[a] -> a -> [a]
, app
"" . , , app
, t
.