Em ciência da computação, um tipo recursivo é um tipo de dado para valores que podem conter outros valores do mesmo tipo.

Um exemplo é uma lista em Haskell:

data List a = Nil | Cons a (List a)

Isso indica que uma lista de a ou é uma lista vazia ou um elemento a (a cabeça da lista) seguido de uma lista de a (a cauda da lista).

Teoria editar

Em teoria dos tipos, um tipo recursivo possui a forma geral   em que a variável tipo   pode aparecer no tipo   e corresponder a todo o tipo. Por exemplo, o número natural (ver axiomas de Peano) pode ser definido pelo tipo Haskell:

 data Nat = Zero | Succ Nat

Em teoria dos tipos, diz-se:  em que representa-se os construtores Zero e Succ. O primeiro não leva argumentos (então, representado pelo tipo unidade), e o segundo leva como argumento outro número natural (então, outro elemento  ).

Ver também editar