In Gofer ist es möglich polymorphe Funktionen zu definieren, also Funktionen, die nicht auf einen bestimmten Argument- und Ergebnistyp festgelegt sind. Ein Beispiel hierfür ist die Funktion map, die eine Funktion und eine Liste als Argumente erwartet und eine Liste liefert, die durch die Anwendung der Funktion auf die einzelnen Elemente der Liste entsteht. Map arbeitet auf Listen beliebigen Typs. Die Definition solcher polymorpher Funktionen erfolgt mit Typvariablen:
map :: (a -> b) -> [ a ] -> [ b ] erstes zweites Ergebnistyp Argument Argument ist Liste ist Funktion ist Liste