<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div name="messageBodySection">
<div dir="auto">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.</div>
</div>
<div name="messageSignatureSection"><br />
<div dir="auto">MichaƂ.</div>
</div>
<div name="messageReplySection">On 15 Sep 2019, 18:45 +0100, Karlo Kuna <kuna.prime@gmail.com>, wrote:<br />
<blockquote type="cite" class="spark_quote" style="margin: 5px 5px; padding-left: 10px; border-left: thin solid #1abc9c;">
<div dir="ltr">
<div>Hello,<br /></div>
<div><br /></div>
<div>i have found surprising  behavior of function lists:append/1: </div>
<div><br /></div>
<div>spec and documentation  are in a agreement that this function should accept lists of lists ( [List] ) , </div>
<div>and return list of T ( [T] ), however when we use function like: </div>
<div> </div>
<div>     lists:append([a]) %wrong input parameter </div>
<div>one gets: </div>
<div>     a  % wrong type of a return </div>
<div><br /></div>
<div>implementation assumes correct type: </div>
<div><br /></div>
<div>append([E]) -> E; % E is not checked for type <br />
append([H|T]) -> H ++ append(T);<br />
append([]) -> [].<br /></div>
<div><br /></div>
<div>simple solution could be: <br />
<br />
lists:append([E]) when is_list(E) -> E <br />
<br /></div>
<div>am i missing something? </div>
<div><br /></div>
</div>
_______________________________________________<br />
erlang-questions mailing list<br />
erlang-questions@erlang.org<br />
http://erlang.org/mailman/listinfo/erlang-questions<br /></blockquote>
</div>
</body>
</html>