Короче говоря : код создает альтернативную версию списка, а (:.)
является одним из двух конструкторов данных .
Ну, это конструктор данных типа данных List t
.Например, стандартный список [a]
имеет два конструктора данных []
и (:)
, здесь код вводит новый конструктор данных (:.)
, но он действует точно так же, как «минусы» стандартного списка (:)
.
Таким образом, код определяет его как:
data List t = Nil | (:.) t (List t) deriving (Eq, Ord)
и, как и любой конструктор данных, мы можем выполнить сопоставление с образцом, создать новые списки и т. Д.