Im folgenden Beispiel wird die Funktion square
ohne Angabe ines explizieten Typs definiert.
Der verwendete Operator *
muss daher für alle möglichen Parametertypen definiert sein.
Oft werden generische Funktionen für Klassen definiert.
Klassen bilden eine Gruppe von Typen, für die gewissen Operationen definiert sind.
Syntax:
name :: t1 -> t2 -> ... -> tk -> t
name x1 x2 ... xk = Ausdruck
Beispiel:
square :: a -> a
square n = n * n