Шаг 84.
Основы языка Haskell.
Простая рекурсия на списках. Именованные образцы

    На этом шаге мы рассмотрим это понятие.

    В рекурсивных функциях в качестве аргумента иногда удобно использовать именованный образец.

Определение ([1, с.124]).
Именованный образец - это образeц, представляющий собой составной объект сложного типа, к которому имеется возможность обратиться как к целому, так и к его частям:
   <Имя_образца>@<Составные_части_образца>


    Пример. Функция, дублирующая первый элемент списка (x:xs), который обозначен буквой l, имеет следующий вид:
   headDupl l@(x:xs) = x:l


   Замечание (по использованию сложных типов рекурсии). В функциональном языке программирования LISP сложные типы рекурсии представляли собой удобное средство не только для перемещения по многоуровневому списку и конструированию нового списка, но и для "погружения" на определённые уровни списков, являющихся элементами исходного.

    Жёсткая типизация языка Haskell, следствием которой структура многоуровневых списков стала ограниченной (элементы многоуровневого списка - это списки одного уровня погружения), привела к отказу от использования сложных типов рекурсии на многоуровневых списках.


    Итак, данный вид рекурсии остаётся рассматривать только на числовых структурах, либо строить собственный тип данных "Многоуровневый список", подобный имеющемуся в языке LISP.


(1)Душкин Р.В. Функциональное программирование на языке Haskell. - М.: ДМК Пресс, 2007. - 608 с.

    На следующем шаге мы рассмотрим несколько демонстрационных примеров.




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