Singleton list confusion

From HaskellWiki
Revision as of 07:16, 11 April 2008 by Lemming (talk | contribs) (example)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Why do Haskell newcomers frequently believe, that list variables must be enclosed in brackets? People sometimes write argument patterns like [x], hoping that x will assume all values of a list successively. Example:

case xs of
   [x] -> [f x]

although they meant

[f x | x <- xs]

or just map f xs. It seems like they expect some kind of list comprehension. However, if there wouldn't be a special list notation and if there wouldn't be the special syntax for the list type constructor (thus we must write [a] instead of List a), then there would be certainly less confusion.

See for example Haskell-Cafe about testing for same characters in lists of strings, Pattern match failure