В книге Уллмана по SML:
Обратите внимание, что способ, которым мы express "список длины 1" как шаблон, заключаем в квадратные скобки вокруг одного идентификатора, например [a]. Такой шаблон может соответствовать списку только с одним элементом, и переменная a получает этот элемент в качестве значения. Другой способ express «список длины 1» - с шаблоном a :: nil. Снова, a получает одиночный элемент как его значение.
Обратите внимание, что способ, которым мы express "список длины 1" как шаблон, заключаем в квадратные скобки вокруг одного идентификатора, например [a]. Такой шаблон может соответствовать списку только с одним элементом, и переменная a получает этот элемент в качестве значения.
[a]
Другой способ express «список длины 1» - с шаблоном a :: nil. Снова, a получает одиночный элемент как его значение.
a :: nil
a
В a :: nil, представляет ли a элемент заголовка списка? Почему он представляет список длиной 1?
Спасибо.
a - начало списка, а nil - хвост. nil - это список нулевой длины, поэтому a :: nil имеет длину 1.
nil