[erlang-questions] behavior of lists:append/1
Sun Sep 15 20:02:25 CEST 2019
i really prefer crashing than garbage in, garbage out policy.
also it would be nice if someone from OTP team confirms if stdlib has
"garbage in garbage out" policy. i can certainly see benefits of it but in
this case fix is easy and small.
On Sun, Sep 15, 2019 at 7:54 PM Michał Muskała <michal@REDACTED> wrote:
> 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.
> On 15 Sep 2019, 18:45 +0100, Karlo Kuna <kuna.prime@REDACTED>, wrote:
> 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
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the erlang-questions