[erlang-questions] Wrong advertised spec of lists:append/2

Masklinn masklinn@REDACTED
Thu Mar 28 15:06:46 CET 2013


On 2013-03-28, at 14:50 , Karolis Petrauskas wrote:

> Indeed, what does the 2'nd line mean?
> 
> 1: 16> [a, b] ++ c.
> 2: [a,b|c]
> 3: 17> c ++ [a, b].
> 4: ** exception error: bad argument
> 5:      in operator  ++/2
> 6:         called as c ++ [a,b]

That it's an "improper list" (also known as "dotted pairs" in lisps):
lists are sequences of (head, tail) pairs where "tail" is a pointer to
the next pair, and in a proper list the final tail is always a "null".
Here the "tail" is a pointer to a symbol, which creates an improper
list. Many functions will blow up when given this, because they won't
handle the terminal case of a non-list.



More information about the erlang-questions mailing list