added in GHC 7.8.
OverloadedLists, similar to OverloadedStrings, allows list literals to be desugared as follows:
 -- fromListN 0  [x] -- fromListN 1 (x : ) [x .. ] -- fromList (enumFrom x)
This comes handy when dealing with types such as
['0' .. '9'] :: Set Char [1 .. 10] :: Vector Int [("default",0), (k1,v1)] :: Map String Int ['a' .. 'z'] :: Text
IsList class in
GHC.Exts is intended to be used with this extension.
IsList is equipped with one type function,
Item, and three functions,
fromList :: [Item l] -> l,
toList :: l -> [Item l] and
fromListN :: Int -> [Item l] -> l where
fromListN is optional. Typical implementations are:
instance IsList [a] where type Item [a] = a fromList = id toList = id instance (Ord a) => IsList (Set a) where type Item (Set a) = a fromList = Set.fromList toList = Set.toList
Examples taken from OverloadedLists – GHC.