
10 Oct
2008
10 Oct
'08
1:18 a.m.
On Fri, 10 Oct 2008 00:24:08 -0400, John Dorsey
dmehrtash:
What is the difference between empty list [] and list with one unit element [()]?
Prelude> length [] 0 Prelude> length [()] 1
Also, they differ in type.
[()] is a list of unit elements, and happens to contain exactly one of them.
[] is a (polymorphic) list of any kind of element, and happens not to contain any of them.
Prelude> :type [] [] :: [a] Prelude> :type [()] [()] :: [()] In fact, [()] contains an empty tuple, called a "unit" (see "4 Notes and tips" of "Constructor - HaskellWiki" at http://www.haskell.org/haskellwiki/Constructor), whereas [] is just an empty list. -- Benjamin L. Russell