Введение в язык Питон


Функции высшего порядка: частичное вычисление функций - карринг (currying)


Три наиболее общих функций высшего порядка встроены в Python: map(), reduce()

и filter(). Эти функции используют в качестве (некоторых) своих параметров другие функции - вот почему мы называем их функциями высшего порядка. Другие функции высшего порядка (но не эти три) возвращают объекты-функции (function objects).

Python всегда предоставлял программистам возможность создавать свои собственные функции высшего порядка благодаря полноправному статусу функций как объектов. Ниже в качестве иллюстрации приведен простой пример:

          #----------- Trivial Python function factory ------------#

          >>> def foo_factory():

          ...     def foo():

          ...         print "Foo function from factory"

          ...     return foo

         ...

          >>> f = foo_factory()

          >>> f()

          Foo function from factory

Программа Xoltar Toolkit, о которой я упоминал в предыдущих статьях, содержит замечательный набор функций высшего порядка. Большинство этих функций, предоставляемых модулем functional, имеются во множестве традиционных функциональных языках программирования, и их полезность проверена многолетним использованием. Пожалуй, наиболее известная и важная функция высшего порядка традиционно называется curry(). Она названа в честь логика Хаскелла Карри (Haskell Curry), чьим именем назван уже упоминавшийся язык программирования. В основе карринга лежит допущение о том, что (почти) любую функцию можно рассматривать как частично вычисляемую функцию одного аргумента. Для того, чтобы эта идея работала, необходимо чтобы значение, возвращаемое  функцией, само могло быть функцией, но возвращаемые функции должны быть уже или ближе к завершению .


Начало  Назад  Вперед



Книжный магазин