[erlang-questions] behavior of lists:append/1

Michał Muskała michal@REDACTED
Sun Sep 15 19:54:02 CEST 2019


My understanding is that for most functions in the Erlang standard library, if you don't uphold the contract the documentation specifies the function can crash, but it could also return whatever - in short "garbage in, garbage out" applies.

Michał.
On 15 Sep 2019, 18:45 +0100, Karlo Kuna <kuna.prime@REDACTED>, wrote:
> Hello,
>
> i have found surprising  behavior of function lists:append/1:
>
> spec and documentation  are in a agreement that this function should accept lists of lists ( [List] ) ,
> and return list of T ( [T] ), however when we use function like:
>
>      lists:append([a]) %wrong input parameter
> one gets:
>      a  % wrong type of a return
>
> implementation assumes correct type:
>
> append([E]) -> E; % E is not checked for type
> append([H|T]) -> H ++ append(T);
> append([]) -> [].
>
> simple solution could be:
>
> lists:append([E]) when is_list(E) -> E
>
> am i missing something?
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20190915/792efd23/attachment.htm>


More information about the erlang-questions mailing list