Horje

LIST basics - Lists - Haskell
Learn
Haskell - Lists - List basics
List basics

The type constructor for lists in the Haskell Prelude is []. The type declaration for a list holding values of type Int is written as follows:

xs :: [Int]    -- or equivalently, but less conveniently,
xs :: [] Int

Lists in Haskell are homogeneous sequences (opens new window), which is to say that all elements must be of the same type. Unlike tuples, list type is not affected by length:

[1,2,3]   :: [Int]
[1,2,3,4] :: [Int]

Lists are constructed using two constructors (opens new window):

  • `[]` constructs an empty list.
  • `(:)`, pronounced "cons", prepends elements to a list. Consing `x` (a value of type `a`) onto `xs` (a list of values of the same type `a`) creates a new list, whose **head** (the first element) is `x`, and **tail** (the rest of the elements) is `xs`.
  • We can define simple lists as follows:

    ys :: [a]
    ys = []
    
    xs :: [Int]
    xs = 12 : (99 : (37 : []))   
    -- or  = 12 : 99 : 37 : []     -- ((:) is right-associative)
    -- or  = [12, 99, 37]          -- (syntactic sugar for lists)
    
    

    Note that (++), which can be used to build lists is defined recursively in terms of (:) and [].

    Read Article
    https://develop.horje.com/learn/1434/reference