These are specific Interface used for determining what types are allowed for a function

square Num => a -> a

Specifies that the Generic a is of Num type

Definining

data Colour = Red | Green | Blue

The specific Haskell Data Constructor are defined independently.