Шаг 104.
Основы языка Haskell. Функционалы (функции высшего порядка). Функционалы из Prelude. Функционалы-распознаватели

    На этом шаге мы рассмотрим функционалы этого типа.

    Перечислим функционалы этой группы.

    1. Функционал, возвращающий True, если все элементы заданного списка удовлетворяют заданному предикату:

   all:: (a -> Bool) -> [a] -> Bool
   all p lst
Например:
   > all (1=) []   > all (0>) [1,-2,3,-4]   > all (0<=) [0,1,2,3,4]
   False           False                    True

    2. Функционал, возвращающий True, если  некоторые элементы заданного списка удовлетворяют заданному предикату:

   any:: (a -> Bool) -> [a] -> Bool
   any p lst
Например:
   > any (1=) []   > any (1=) [1,1,1,1]   > any (0<=) [0,1,2,3,4,5]
   False           True                   True


   Замечание (для знатоков языка Python). Приведём примеры работы с некоторыми функционалами в языке программирования Python (воспользуемся безымянными функциями):
   >>> apply(lambda x,y: x+y,[2,3])
   5

   >>> map(lambda x: x+1,[1,2,3])
   [2,3,4]

   >>> filter(lambda x: x>0,[1,-2,-3])
   [1]

    Репутация языка Python как языка, поддерживающего функциональное программирование, могла возникнуть в результате наличия в нём lambda, map, filter и reduce, но это всего лишь синтаксические украшения, а не основные конструктивные элементы, как в функциональных языках. Более фундаментальным свойством языка Python, общим с языком Lisp, является представление функций в качестве объектов первого класса, которые легко передавать, как и всякие другие объекты.


    На следующем шаге мы рассмотрим функционал для организации итерации.




Предыдущий шаг Содержание Следующий шаг