¿La lógica combinatoria simplemente escrita?
-
30-10-2019 - |
Pregunta
Como hay un cálculo de lambda sin tipo, y un cálculo lambda de tipo simplemente (como se describe, por ejemplo, en los tipos de libros y los lenguajes de programación de Benjamin Pierce), ¿hay una lógica combinatoria de tipo simplemente?
Por ejemplo, parece que los tipos naturales para los combinadores S, K y yo serían
S : (a -> b -> c) -> (a -> b) -> a -> c
K : a -> b -> a
I : a -> a
Donde A, B y C son variables de tipo que van sobre algún conjunto de tipos T. Ahora, tal vez podríamos comenzar con un solo tipo de base, Bool. Nuestro conjunto de tipos t es luego bool junto con cualquier tipo se puede formar utilizando los tres patrones
(a -> b -> c) -> (a -> b) -> a -> c
a -> b -> a
a -> a
Donde A, B, C en T.
Habría dos nuevas constantes en el idioma.
T : Bool
F : Bool
Entonces, este lenguaje consiste en los símbolos S, K, I, T y F, junto con los paréntesis. Tiene un tipo de base Bool y los "tipos de funciones" que se pueden hacer de los patrones de combinadores S, K e I.
¿Se puede hacer que este sistema funcione? Por ejemplo, ¿hay una construcción bien tipo if-then-else que se puede formar desde solo S, K, I, T, F?
No hay solución correcta