In SML, nil is the empty list, also written as [].

nil (or []) is often used as the base case of a recursive function that processes lists. Here is a small function that returns the sum of all elements in a list:

fun sum nil = 0
 |  sum (x::xs) = x + sum xs;

Together with the cons operator (::) nil can be used to create lists. For example, 1::2::3::nil results in the list [1,2,3]. This is mostly used to illustrate how lists are represented in SML. Usually you would just write [1,2,3] if you need that list in a program.

ariels says: Also in the Lisps (Common Lisp) and Scheme. Whether or not nil is an atom is a matter of much debate...

In Pascal (and Delphi), nil is the value of a null pointer, i.e. the special value that indicates that the pointer does not point to something.