I'm having difficulty in understanding the following behavior: In GHCi: Prelude> :type [] [] :: [a] but: Prelude> :type ([]) ([]) :: [a] I.e., the types of both the empty-list '[]' and the one-tuple containing the empty-list '[]' are '[a]' (a list of a generic type variable). According to "Chapter 2. Types and Functions" (see http://book.realworldhaskell.org/read/types-and-functions.html) of Real World Haskell (beta) (see http://book.realworldhaskell.org/beta/),
Haskell doesn't have a notion of a one-element tuple.
Why not? It seems that a tuple is similar to a list, except that the elements need not be all of the same type, and that a tuple, unlike a list, cannot be extended. Yet: Prelude> :type [] [] :: [a] and Prelude> :type [[]] [[]] :: [[a]] so the types of the empty-list '[]' and the one-element list containing the empty-list '[[]]' are different. Forgive me if I am missing something, but something about this asymmetry bothers me.... -- Benjamin L. Russell