Обновить
64K+

Функциональное программирование *

От Lisp до Haskell

36,09
Рейтинг
Сначала показывать
Порог рейтинга

​​?️️️️️️ Каррирование и частичное применение

Каррирование и частичное применение — две концепции из функционального программирования, которые очень часто путают из-за их схожести (а я пишу этот пост, чтобы наконец-то запомнить). 

И частичное применение, и каррирование, реализуются как функции, принимающие в качестве параметра другую функцию.

Частичное применение — функция partialApply, принимающая первым параметром функцию — fn, а остальные параметры — часть параметров функции fn. Функция partialApply возвращает функцию, которая в качестве параметров принимает недостающие аргументы функции fn.

Каррирование — функция curry, которая принимает единственный параметр — функцию fn, и возвращает каррированную функцию fn.  Можно сказать, что каррированная функция fn — функция аккумулятор, которая будет накапливать переданные аргументы до тех пор, пока не будет передано достаточно параметров для вызова исходной функции. Параметры можно передавать в любом количестве.

Подробнее

https://t.me/cherkashindev/132

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии4

3 июля 2023 г., спустя полтора года вышла новая версия языка функционального программирования Koka. Несмотря на минорность версии в новом компиляторе внедрено изобретённое его авторами Full In-Place Calculus. Если коротко, то суть FIP в следующем: у нас есть чистая функция, производящая деконструирование объекта данных, а затем вновь конструирующая объект данных. Например, это функция трансформации списка или дерева. Так вот при таких манипуляция в памяти происходит создание новых объектов данных, которые затем и используются, а старые остаются там до тех пор, пока их не удалит за ненадобностью сборщик мусора (кстати говоря, язык Koka не использует сборщик мусора). FIP же позволяет производить проверку безопасности переиспользования памяти. Что и было реализовано в новой версии Koka. Теперь вы можете помечать функцию ключевым словом fip или fbit (FBIP техника, предложенная другими авторами), использовать разрушающий match! и получать описанный выше эффект. Так же, по-видимому, в связи со внедрением FIP появился borrowing (владение), которое также участвует в анализе кода на безопасность. Из приводимого в статье результата benchmarks видно, что новый подход увеличивает производительность программ на Koka и приближает её к таковой на C или C++.

Почитать о Koka можно в этом посте.

Рейтинг0
Комментарии0
2