Usted programa en ello! Echa un vistazo a las codificaciones de la iglesia . Puedes ver cómo se puede realizar casi toda la aritmética, lo que probablemente debería convencerte de que es extremadamente potente. Sin embargo, me gusta mirar las operaciones en las listas. Puede definir casi cualquier estructura de datos en términos de una función que realiza la operación más importante sobre ella.
Por ejemplo, una codificación de una lista es la función de plegado que se pliega sobre ella. Tenga en cuenta que esta no es la codificación de Church, sino una que obtuve de los tipos y lenguajes de programación de Percie. Las codificaciones de pares de Church no nos dan recurrencia, tenemos que agregarlo nuevamente en nosotros mismos con algún tipo de combinador de recursión.
entonces una lista toma dos argumentos, una función para hacer el plegado y un valor inicial para enchufarlo en algún momento.
cons x xs = lam f. lam a. f x (xs f a)
nil = lam f. lam a. a
ahora podemos definir una suma dada una función de agregar (ver codificaciones de la iglesia de arriba)
sum xs = xs add 0
podemos hacer más y definir una función de mapa
consApply f x xs = cons (f x) xs
map f xs = xs (consApply f) nil
Si todavía no está convencido de que hay un cálculo aquí y desea asegurarse de que puede realizar cualquier cálculo, consulte el combinador de punto fijo . Sin embargo, a veces me duele un poco pensar en eso, así que no estoy seguro de que lo llame intuitivo, pero si lo evalúa manualmente con algunos argumentos, puede ver lo que está sucediendo.