En Haskell tenemos una manera análoga de trabajar a como lo hacemos en el cálculo . Por ejemplo, si escribimos la abstracción , esto en Haskell se vería de la siguiente manera:
\x -> x + xUsamos una flecha -> en lugar de un punto para denotar el cuerpo de la función, y una diagonal invertida \ porque visualmente se asemeja a una .
Para la aplicación, el proceso se ve así:
ghci> (\x -> x + x) 6
12Su reducción análoga en el cálculo puro sería: Ahora, quizá me digan: ¡Estás haciendo trampa! Estás usando la suma y los números de Haskell. Y tienen razón, así que les mostraré los numerales de Church desde cero.
| Número | Cálculo |
|---|---|
| 0 | |
| 1 | |
| 2 | |
| 3 |
let cero = \f -> \x -> x
let uno = \f -> \x -> f x
let dos = \f -> \x -> f (f x)
let tres = \f -> \x -> f (f (f x))
let churchToInt = \c -> c (+1) 0
-- La suma en el cálculo lambda
let sumar = \m -> \n -> \f -> \x -> m f (n f x)
ghci> churchToInt (sumar dos tres)
5