Шаг 66.
Основы языка Haskell.
Список как фундаментальный тип данных. Списочная и точечная нотация

    На этом шаге мы рассмотрим особенности использования этих нотаций.

    Списочной нотацией назовём способ записи списков, не содержащий символа ":" и наиболее приближённый к математической записи.

Определение (индуктивное).
Список в списочной нотации - это:
  • [] - пустой список;
  • заключённая в квадратные скобки последовательность однотипных элементов (атомов или списков), разделённых запятой.


    Примеры списочной нотации.
   1. []             3. [[1],[2,3],[9],[8,7,6,5]]

   2. [1,2,3,4,5]    4. [[[[3]]],[[[7,6,5,4]]]]

    Правила перевода списочной записи в точечную запись:

   (1) [] <=> [] (запись пустого списка [] остаётся без изменений);
   (2) [a1,a2,...,an] <=> (a1:(a2:...:(an:[]))).


    Пример перевода списочной нотации в точечную.
   [[1,2],[3]] → [1,2]:[[3]] → (1:[2]):([3]:[]) →
               → (1:2:[]):((3:[]):[]).

    Правило перевода точечной записи в списочную.

    Из списка выделяется пара

   Элемент : Список,
у которой второй элемент является списком. Выделенная пара преобразуется в список путём добавления элемента "Элемент" в "Список".

    Если "Список" не является пустым списком, то добавляемый элемент отделяется запятой от остальных элементов списочной структуры.


    Примеры перевода точечной нотации в списочную.
    1. ((1:[]):[]) → [[1]:[]] → [[1]].
    2. ((1:(2:[])):((3:[]):[])) → ((1:[2]):[3:[]]) →
                               → ([1,2]:[[3]]) → [[1,2],[3]].

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




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