Почему в Haskell можно сделать такой список:
slist = [ [], [[]], [[],[[]]] ]
Насколько я понимаю, каждый элемент имеет различные типы (например, в математике: Ø, {Ø} и т.д.). И ghci говорит:
> :t []
[] :: [t]
> :t [[]]
[[]] :: [[t]]
Формально я вижу разные заметки.
Другими словами, первый элемент представляет собой простой пустой список, а второй - список списка (!) И т.д.
Что случилось? Почему Haskell считает их одинаковыми?