I'd like to add that neither Haskell nor Standard ML, both of which I used long before I discovered Erlang, allow anonymous functions to have multiple clauses. Discovering that feature in Erlang was a nice treat.<br><br>
On the other hand, they do both allow nested named (and hence recursive) functions :)<br><br>dan<br><br><div class="gmail_quote">On Sun, May 15, 2011 at 11:58 PM, Richard O'Keefe <span dir="ltr"><<a href="mailto:ok@cs.otago.ac.nz">ok@cs.otago.ac.nz</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="im"><br>
On 14/05/2011, at 3:01 AM, Attila Rajmund Nohl wrote:<br>
<br>
> The (usual) problem is that this is not consistent. You have to write<br>
> the function name for different function clauses, but must not write<br>
> the 'fun' for different clauses in anonymous functions. I would prefer<br>
> the 'fun' anu anonymous functions too.<br>
<br>
</div>But that's because "fun" isn't the anonymous function's name.<br>
The name of the anonymous function *is* repeated in every clause.<br>
That name is the sequence of characters strictly between these<br>
brackets: [].<br>
<br>
fun  (........) -> .......<br>
    ^ name<br>
  ;  (........) -> .......<br>
    ^ exactly the same name again<br>
end.<br>
<br>
You may not *like* the name being invisible, especially because that<br>
makes it impossible to write recursive funs, but you can't really<br>
call it inconsistent (:-) (:-).<br>
<br>
An interesting alternative would be to allow<br>
<br>
    fun F(N) when is_integer(N), N > 1 -> F(N-1) + F(N-2)<br>
      ; F(1) -> 1<br>
      ; F(0) -> 1<br>
    end<br>
<br>
and if the variable here were optional (either appearing in all<br>
clauses or disappearing in all clauses) it would be clear that the<br>
traditional form has a consistently repeated but invisible name.<br>
<br>
The thing that makes funs look ugly is people putting the semicolons<br>
in the wrong place...<br>
<div><div></div><div class="h5"><br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</div></div></blockquote></div><br>