тип списка списков a
действительно List (List a))
.Но мы не создаем значение с этим.
Если мы, например, хотим построить список с одноэлементным списком, который содержит 1
, мы можем записать это как:
oneList1 :: List (List Int)
oneList1 = Cons (Cons 1 Empty) Empty
Внешний Cons
является минусами внешнего списка, так как первый (и единственный) элемент имеет Cons 1 Empty
, это внутренний список.Cons h t
представляет список с h
(здесь 1
) головой (первый элемент) и Empty
хвостом (оставшиеся элементы).Таким образом, Cons 1 Empty
- это одноэлементный список с 1
в качестве единственного значения.
Мы заключаем это во внешние cons Cons (Cons 1 Empty) Empty
, что, таким образом, указывает, что внешний список также является одноэлементным списком.Таким образом, oneList1
эквивалентно [[1]]
.