Ви програмуєте в ньому! Погляньте на церковні кодування . Ви можете бачити, наскільки можна виконати всю арифметику, яка, мабуть, переконає вас, що вона надзвичайно потужна. Мені подобається дивитися на операції за списками. Ви можете визначити більшість будь-якої структури даних з точки зору функції, яка виконує найважливішу операцію над нею.
Наприклад, кодування списку - це функція складання, яка складається над ним. Зауважте, це не кодування Церкви, а одне з типів та мов програмування Percie. Парові кодування церкви не дають нам рекурсії, ми повинні додати її назад у себе за допомогою якогось комбінатора рекурсії.
тому список містить два аргументи: функцію робити складання та початкове значення, яке потрібно в якийсь момент підключити до складки.
cons x xs = lam f. lam a. f x (xs f a)
nil = lam f. lam a. a
тепер ми можемо визначити підсумовування, задане функцією додавання (див. кодування церкви зверху)
sum xs = xs add 0
ми можемо зробити більше і визначити функцію карти
consApply f x xs = cons (f x) xs
map f xs = xs (consApply f) nil
якщо ви все ще не впевнені, що тут проводяться обчислення, і хочете переконатися, що ви можете виконати будь-які обчислення, тоді перевірте комбінатор фіксованої точки . Мені болить голова трохи подумати про інколи, тому я не впевнений, що я б назвав це інтуїтивно зрозумілим, але якщо ви вручну оціните це за допомогою деяких аргументів, ви можете побачити, що відбувається.