Философия функционального программирования

Математика древних греков.

Платонизм. Анимизм.

Идеальная форма Платона.

Математику придумали египтяне

А греки повзаимствовали, превратив в религию

Метод Архимеда

Тёмные века

Тёмные века

Глобальное похолодание

Возрождение

Готфрид Вильгельм Лейбниц

1646 - 1716

Исаак Ньютон

1642 - 1727

Математика на начало XIX века

  • Инженерная прикладная дисциплина
  • С некими "оккультными" корнями, отражающими уклад традиционного общества

ДО ПРОМЫШЛЕННОЙ РЕВОЛЮЦИИ

Традиция, Модерн, Постмодерн

Традиция

Природа стоит над человеком

Модерн

Человек - Царь природы

Постмодерн

Отрицание любых конструкций

Модернизм

Попытка самостоятельно построить "правильный" мир

Давид Гильберт 1862-1943

Модернизм

Попытка самостоятельно построить "правильный" мир

  • Аксиоматика натуральных чисел Пеано
  • Наивная теория множеств(Кантор, Дедекинд)

Теоретико-множественный подход(конец XIX века)

  • Лямбда-исчисление(Чёрч, )
  • Теория категорий

Алгебраический подход(начало XX века)

Кризис модерна в математике

Диагональный аргумент Кантора

Кризис модерна в математике

Несчетность действительных чисел

Георг Кантор(1891)

Проблема останова

Алан Тьюринг(1936)

Неполнота арифметики

Курт Гёдель(1931)

Декларативное и императивное

Императивный подход

Процесс во времени

Декларативный подход

Состояние в момент времени

=

Как описать натуральные числа?

Аксиоматика Пеано

  1. Есть объект - начало отсчета
  2. У каждого объекта есть следующий за ним один и только один объект
  3. Индукция: любое отображение чисел на другое множество, удовлетворяющее первым двум аксиомам, отображает все множество целиком

Как описать натуральные числа?

Понятие функции в λ-исчислении

  1. Все функции "анонимные" с ровно одним аргументом. У нас вообще нет никаких переменных.
  2. Функцию можно составить только из других функций.
  3. К функции можно применить другие сборные конструкции заменой аргумента.
(x) => ((y) => x(x)(y))(x)

Как описать натуральные числа?

Натуральные числа

0 := (f) => (x) => x
1 := (f) => (x) => f(x)
2 := (f) => (x) => f(f(x))
3 := (f) => (x) => f(f(f(x)))

...


NEXT := (n) => (f) => x(f(n(f)(x)))
PLUS := (m) => (n) => (f) => (x => m(f))(n(f)(x))

Комбинаторная логика

Избавляемся от аргументов функций

I := (x) => x
K := (x) => (y) => x
S := (x) => (y) => (z) => x(z)(y(z))

Американская школа

Хаскель Карри (1900 - 1982)

Алонзо Черч

(1903 - 1995)

ывавыа

Моисей Шейнфинкель (1889 - 1942)

Современность

  1. На языке теории категорий можно описывать те же конструкции, которые описываются теоретико-множественным подходом
  2. И на языке типизированного лямбда-исчисления тоже! (изоморфизм Карри-Говарда)
  3. Поэтому доказательство математических теорем можно описывать компьютерными программами

Илья Лахин
2019

Философия функционального программирования

By Ilya Lakhin

Философия функционального программирования

  • 813