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:A→B→AS:(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 → norteN

z:Nsucc:N→Niter:N→(N→N)→N→N

Las reglas de igualdad para las adiciones son:

iterifz=iiterif(succe)=f(iterife)

iter:A→(A→A)→N→A
iter

iter

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

N≃N×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

0↦0(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.