Sí, pero debes considerar los combinadores mecanografiados. Es decir, debe dar a y K
los siguientes esquemas de tipo:
K : A → B → A S : ( A → B → C ) → ( A → B ) → ( A → C )
donde A , B y C son meta-variables que pueden ser instanciadas a cualquier tipo concreto en cada uso.SK
KS::A → B → A( A → B → C) → ( A → B ) → ( A → C)
A , BC
Luego, desea agregar el tipo de números naturales al lenguaje de tipos y agregar los siguientes combinadores:
z : N s u c c : N → N i t e r : N → ( N → N ) → N → nortenorte
zs u c ci t e r:::norteN → NN →( N → N )→ N → N
Las reglas de igualdad para las adiciones son:
i t e ryoFzi t e ryoF( s u c ce )==yoF( i t e ryoFe )
i t e r:A → ( A → A ) → N → A
i t e r
i t e r
pred′pred==λk.iter(z,z)(λ(n,n′).(succn,n))kλk.snd(pred′k)
N≃N×N