Combinadores para las funciones recursivas primitivas

Respuestas:

17

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

K:ABAS:(ABC)(AB)(AC)
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 : NN i t e r : N( NN ) NnorteN

z:Nsucc:NNiter:N(NN)NN

Las reglas de igualdad para las adiciones son:

iterifz=iiterif(succe)=f(iterife)

iter:A(AA)NA
iter

iter

pred=λk.iter(z,z)(λ(n,n).(succn,n))kpred=λk.snd(predk)

NN×N

Neel Krishnaswami
fuente
Entonces, ¿esto es menos que Turing completo en virtud de la restricción a los combinadores mecanografiados? ¿Pueden las variables de tipo (recursivamente) denotar funciones sobre las variables de tipo (por ejemplo, A = D -> E para algunos tipos D y E)?
NietzscheanAI
2
SK
Neel, gracias. ¿Estaría en lo cierto al pensar que es posible representar z, succ e iter en términos de S y K a través de la codificación numérica de la Iglesia?
NietzscheanAI
00(succx)x
@Xoff: la función predecesora tiene una definición de tiempo lineal bien conocida en términos de iter. Este podría ser el objeto de una pregunta en cs.stackexchange.com ...
cody