Considere, por exemplo, a função map, bastante usada em programação funcional. Essa função recebe uma função f de tipo a b e uma lista x de tipo [a] como argumentos e aplica f a todos os elementos da lista x, retornando uma lista de tipo [b]. A função map pode ser definida para qualquer construtor (estrutura de dados), não apenas listas. Tal função map, politípica, teria o seguinte tipo principal:
| map: (a &rarr b) &rarr d a &rarr d b |