<div dir="ltr">Question - trying to understand the spec, if I did the following:<br><br>Eshell V5.6.4  (abort with ^G)<br>1> string:tokens([], "abc").<br>[]<br><br>Does that violate the type specification, or does it allow for the return of an empty list?<br>
<br><div class="gmail_quote">On Fri, Oct 10, 2008 at 7:33 AM, Kostis Sagonas <span dir="ltr"><<a href="mailto:kostis@cs.ntua.gr">kostis@cs.ntua.gr</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Richard O'Keefe wrote:<br>
><br>
> Can anyone explain to me why<br>
><br>
> -spec(tokens/2 :: (string(), string()) -> [[char(),...]]).<br>
><br>
> doesn't mention "string()" on the right hand side of the arrow?<br>
<br>
There is no native string() type in Erlang, as we all well know.<br>
<br>
So, in the language ot types, string() is just an alias for the type<br>
list(char()), which, for convenience, is typically written as [char()].<br>
  This can include both the empty string "" == [] and a non-empty list<br>
of characters, which is denoted [char(),...].  That's what the above<br>
spec signifies: the resulting list consists of non-empty strings, which<br>
is consistent with what string:tokens/2 actually returns.  Hope this<br>
explains things.<br>
<br>
On the other hand, I can see how this may look a bit strange to some and<br>
have for a long time now pondered whether a non_empty_string() type<br>
alias might be added to the list of built-in types.<br>
<br>
Kostis<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br>
<br>
</blockquote></div><br></div>