[erlang-questions] Wrong advertised spec of lists:append/2
Sat Mar 30 10:55:00 CET 2013
> As per the doc, the spec of lists:append/2 is ([term()], [term()]) ->
> However, a = lists:append(, a).
> Shouldn't it return [a]?
Since you violated the precondition (the second argument is not
a list of terms) you have no right to expect the postcondition
(that the result is a list) to be true.
Besides, why *should* the result be [a] rather than  or
[[[[a]]]] or  or anything else?
Given that the definition that applies to _all_ cases
is (an accelerated version of)
append([X|Xs], Ys) -> [X|append(Xs, Ys)];
append(, Ys) -> Ys.
how *could* the result be [a]?
More information about the erlang-questions