Повторюсь. Функциональное программирование оно может быть и православненько математичненко, но ебануто на голову ещё больше чем МЭК61131-3 и релейные диаграммы.
Для point-free достаточно для начала понимания «одинаковые параметры с двух сторон мы опускаем». То, что это у нас получается комбинирование комбинаторов и прочие извращения с приведением к point-free — это уже потом.
Лямбда же в том объеме, чтобы врубиться в «"\x -> x*x" это тоже самое, что "square x = x*x", только без "square"» — это всего-навсего концепция анонимной функции. Без всяких гвоздей вроде бета-редукции. :)
Бета-редукция -- это вообще основа основ, таблица умножения, так сказать. Те же Абельсон и Сассман её дают во второй же лекции вообще не называя её никак, под личиной "методов применения функций". ;)
no subject
Как говорит мой шеф, есть два типа компьютерщиков. Одни оперируют битами и байтами, вторые — всякими абстракциями.
Но во втором подноде нет ничего сложного. Вот как оно выглядит чуть в другом синтаксисе:
squareArray array = map (square) array
where square x = x*x
Ну или
squareArray array = map (\x -> x*x) array
А теперь бы делаем point-free, но это уже чуточку более сильное колдунство:
squareArray = map (\x -> x*x)
Ну и что тут сложного? ;)
Вообще-то то, что мы тут назвали array, это такой список. Или не список. А дерево. Или действительно массив. Но это в данном случае роли не играет.
no subject
no subject
Или ты хочешь холивор? Тогда я щаз сделаю поцт в другом месте, там и посмотрим. :)
no subject
no subject
no subject
no subject
no subject
Лямбда же в том объеме, чтобы врубиться в «"\x -> x*x" это тоже самое, что "square x = x*x", только без "square"» — это всего-навсего концепция анонимной функции. Без всяких гвоздей вроде бета-редукции. :)
no subject
no subject