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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.