[Haskell-cafe] Re: [] vs [()]

Benjamin L.Russell DekuDekuplex at Yahoo.com
Fri Oct 10 01:18:23 EDT 2008


On Fri, 10 Oct 2008 00:24:08 -0400, John Dorsey <haskell at colquitt.org>
wrote:

>> 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



More information about the Haskell-Cafe mailing list