Lists form an important class of data structures in Prolog.
They are essentially the same as the lists of Lisp: a list is either
the atom []
, representing the empty list, or else a compound
term with functor .
and two arguments, which are the head
and tail of the list respectively, where the tail of a list is another
list. Thus a list of the first three natural numbers is the structure
. / \ 1 . / \ 2 . / \ 3 []
which could be written using the standard syntax, as (A) but which is normally written in a special list notation, as (B). Two examples of this list notation, as used when the tail of a list is a variable, are (C), which represent the structure in (D).
.(1,.(2,.(3,[]))) (A)
[1,2,3] (B)
[X|L] [a,b|L] (C)
. . / \ / \ X L a . / \ b L (D)
Note that the notation [X|L] does not add any new power to the language; it simply improves readability. These examples could be written equally well as (E).
.(X,L) .(a,.(b,L)) (E)