- Карринг
-
В компьютерных науках, каррирование или карринг (англ. currying), введенное М. Шейнфинкелем и Г. Фреге, является преобразованием функции от пары аргументов в функцию, берущую свои аргументы по одному. Это преобразование получило свое название в честь Х. Карри.
Содержание
Определение
Для функции h типа h : (A × B) → C оператор каррирования Λ выполняет преобразование Λ(h) : A → (B → C). Таким образом, Λ(h) берет аргумент типа A и возвращает функцию типа B → C. С интуитивной точки зрения, каррирование функции позволяет фиксировать ее некоторый аргумент, возвращая функцию от остальных аргументов. Таким образом, Λ представляет собой функцию типа Λ : (A × B → C) → (A → (B → C)).
Декаррирование вводится как обратное преобразование.
В другом смысле, преобразование ε, противоположное каррированию, восстанавливает каррированный аргумент. Для функции k типа k : A → (B → C) оператор ε типа ε: (U → V) × U → V для произвольных a: A, U = A, V = B → C выполняет преобразование ε[k,a]: B → C. Остается положить k = Λ(h), и для ε: (A →( B → C)) × A → (B → C) записываем ε[Λ(h),a]: B → C и ε[k,a] = ε[Λ(h),a], что устанавливает связь между каррированой и некаррированной записью функции[1].
На практике каррирование позволяет рассматривать функцию, которая получила один из аргументов, но не все. Оператор каррирования встроен в некоторые языки программирования, что позволяет многоместные функции приводить к каррированному представлению. Примером служат языки Haskell. Все языки, поддерживающие замыкание, позволяют записывать каррированные функции.
Примечания
- ↑ Wolfengagen, V.E. Combinatory logic in programming. Computations with objects through examples and exercises. -- 2-nd ed. -- M.: "Center JurInfoR" Ltd., 2003. -- x+337 с. ISBN 5-89158-101-9.
См. также
- Переопределение функции
Ссылки
Wikimedia Foundation. 2010.