==== Lists in Prolog ==== Lists are sequences of items of unlimited (in theory) length. A list in Prolog looks like: [1,2,3,4,5] [a,b,c,d,e] [1,a,f(b),[2,c,g(d,e)],5] A list can contain totally different elements: numbers, symbols, compound terms and sublists. Due to its internal structure, lists are in fact terms of the form ''list(head,tail)'', where ''head'' is a single element while ''tail'' is a list of the other remaining elements of the original list. Hence any list can be unified with: [H|T] where H will be unified with head and T with tail of the list. For example: [H|T]=[a,b,c,d,e] will lead to H=a and T=[b,c,d,e]. Remember that the tail of a list is always a list itself! An empty list is denoted as []. A list can be used to represent: * a set (no repeated elements), * a bag (a set with repeated elements, a multiset), * a sequence (a vector; with or without repeated elements). Depending on the current interpretation an appropriate processing algorithms are necessary. For more details see: {{:prolog:lists-in-prolog.pdf|Lists in Prolog}}. For some specific predicates see: [[http://www.swi-prolog.org/|SWI-Prolog]] and go to: 4.28 Built-in list operations and A.11 library( lists ): List Manipulation.