Como existe um cálculo lambda sem tipo e um cálculo lambda com tipo simples (como descrito, por exemplo, no livro Tipos e linguagens de programação de Benjamin Pierce), existe uma lógica combinatória de tipo simples?
Por exemplo, parece que os tipos naturais para os combinadores S, K e eu seriam
S : (a -> b -> c) -> (a -> b) -> a -> c
K : a -> b -> a
I : a -> a
onde a, bec são variáveis de tipo que variam sobre um conjunto de tipos T. Agora, talvez possamos começar com um único tipo base, Bool. Nosso conjunto de tipos T é então Bool, juntamente com quaisquer tipos que possam ser formados usando os três padrões
(a -> b -> c) -> (a -> b) -> a -> c
a -> b -> a
a -> a
onde a, b, c em T.
Haveria duas novas constantes no idioma.
T : Bool
F : Bool
Portanto, esse idioma consiste nos símbolos S, K, I, T e F, além de parênteses. Ele tem um tipo base Bool e os "tipos de funções" que podem ser criados a partir dos padrões combinadores S, K e I.
Este sistema pode ser feito para funcionar? Por exemplo, existe uma construção bem-digitada se-então-outro que pode ser formada apenas a partir de S, K, I, T, F?