<br><br><div class="gmail_quote">On Wed, Oct 22, 2008 at 4:31 PM, 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;">
<div class="Ih2E3d">Johnny Billquist wrote:<br>
> Kostis Sagonas wrote:<br>
>> Zoltan Peter Toth wrote:<br>
>>> Hi,<br>
>>><br>
>>> We have a function like this:<br>
>>><br>
>>> deliver(Port, Data) -><br>
>>>     Port ! {data, Data}.<br>
>>><br>
>>> This function returns Data.<br>
>><br>
>> Nope.  This function returns {data, Data}.<br>
>><br>
>> I personally think that !/2 returning a value instead of being void as<br>
>> it should, is a design flow in the definition of the language. (*)<br>
><br>
> ???<br>
> Erlang is a functional language. Everything returns something.<br>
<br>
</div>Well, not quite.<br>
For example the following function does not return anything at all:<br>
<br>
   foo() -> exit("hello world").<br>
<br>
Here is another one:<br>
<br>
   bar() -> throw(42).<br>
<br>
One more:<br>
<br>
   loop(State) -><br>
       NewState = do_something_with(State),<br>
       loop(NewState).</blockquote><div><br>Yes, those function doesn't return at all, it is not same as return nothing. Well to clarify it, each function return some value or crash (raise exception). There is not any function returning nothing so claim "Everything returns something" is true with little add-on, "if returns".<br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<div class="Ih2E3d"><br>
> There is no "void".<br>
> Maybe it should always return "ok" instead,<br>
<br>
</div>Of course that's what pretty much what I meant.  In today's state of<br>
Erlang, it should return 'ok' (the atom, not the string).  In an ideal<br>
world, it should return an opaque value (unit?) which, in some sense, is<br>
the equivalent of the function being void.</blockquote><div><br>Why? Why there should be this extra unit?<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<div class="Ih2E3d"><br>
> but I think it's better it<br>
> returns the expression sent, in case you do want to play around with it<br>
> somehow.<br>
<br>
</div>You are of course entitled to this opinion.<br>
<font color="#888888"><br>
Kostis<br>
</font><div><div></div><div class="Wj3C7c">_______________________________________________<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>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>--Hynek (Pichi) Vychodil<br>