That's interesting, how do you achieve that?
let ones = 1 : ones in ones
Here ':' is the cons operator, prepending something to a list, so here you defines 'ones' to be '1' followed by 'ones', which in (GHC) Haskell, compiles down to a datatype that has a pointer to the list element ('1') and the tail ('ones', i.e. itself).EDIT: I realised I forgot to say what it actually does, in case that's not obvious. It's an infinite list of, well, ones...
repeat :: a -> [a]
repeat something = [something] ++ repeat something
print (head (repeat "hello"))
For performance reasons, you wouldn't implement it exactly like this, but the principle is the same. The list can contain an infinite number of elements, but not unless some function tries to consume all elements does it become a problem.