<div class="ObUWHc qNeRme ckChnd"></div><div id=":2iz" class="ArwC7c ckChnd">Why not tailor your own function<br><br>times(F, N) when is_function(F,0), is_integer(N), N>=0 -> _times(F, N).<br><br>_times(_, 0) -> ok;<br>
_times(F, N) -> F(), _times(F, N-1).<br><br>and than you can easily do times(fun()->io:format("hi~n"), 10).<br>
<br>But anyway, how often you need do something N times without take
care for result for *practical* purpose? I think you choose wrong
example ;-)</div><br><br><div class="gmail_quote">On Thu, Feb 26, 2009 at 7:48 PM, Zvi <span dir="ltr"><<a href="mailto:exta7@walla.com">exta7@walla.com</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"><br>
<br>
<br>
Tony Arcieri wrote:<br>
><br>
> Reia also has ! (send) and receive which operate identically to Erlang,<br>
> but<br>
> in addition to that supports the obj.method syntax as syntactic sugar for<br>
> RPCs.  At the very least it's less ugly than Scala's !? operator for RPCs.<br>
><br>
<br>
</div>Tony,<br>
I disappointed, that you support regular Erlang processes in Reia.<br>
Functionality-wide you don't need it, since every Reia object is already<br>
process (off-course it's heavyweight gen_server process). Whoever want to<br>
write efficient code (may use assembler - i.e. Erlang :)<br>
<br>
All I say, that in high-level language you need gen_server like<br>
functionality on the language layer. In Erlang you end up writing<br>
boilerplate code for gen_servers. The current Erlang provide you with FS<br>
(Flexibility Syndrom). Even such a basic thing like a string: you can use<br>
list, you can use binary and some library functions even accept atoms<br>
instead of strings.<br>
Look for example at Ulf Wiger's plainfsm vs. gen_fsm . There is overlapping<br>
between plain Erlang and OTP. The good thing, that there is only one OTP<br>
(i.e. no competing high-level frameworks for Erlang).<br>
<br>
I want to concentrate on my problem domain and think in single paradigm.<br>
Instead erlang forces you to think in MFAs, funs, messages and gen_server<br>
primitives.<br>
<br>
Having both regular functions and funs is also FS (I understand that<br>
historically funs were introduced later, but still). I see regular function<br>
as constant fun.<br>
<br>
Regaring simple things in other languages - hard in Erlang. This was<br>
discussed many times and I'll not repeat it: interop, strings, collections,<br>
defining functions from shell, libraries with principle of maximum surprise,<br>
etc. I'll just give simple example like loop:<br>
<br>
Ruby:<br>
10.times { puts "hi" }<br>
<br>
Basic:<br>
for i=1 to 10<br>
  print "hi"<br>
next<br>
<br>
Erlang:<br>
print_hi(10).<br>
<br>
print_hi(0) -> ok;<br>
print_hi(N) -><br>
         io:format("hi~n"),<br>
         print_hi(N-1).<br>
<br>
or use LC, which is a little shorter, but build 2 unnecessary lists in<br>
memory:<br>
<br>
[ io:format("hi~n") || _<-lists:seq(1,10) ].<br>
<br>
or try to define factorial fun from shell:<br>
<br>
Fact = fun(0,_) -> 1;<br>
              (N,F) -> (N-1)*F(N,F)<br>
          end.<br>
Fact2 = fun(N) -> Fact(N, Fact) end.<br>
<br>
Uggggggly!<br>
<br>
Zvi<br>
<font color="#888888"><br>
--<br>
View this message in context: <a href="http://www.nabble.com/The-Beauty-of-Erlang-Syntax-tp22179816p22230905.html" target="_blank">http://www.nabble.com/The-Beauty-of-Erlang-Syntax-tp22179816p22230905.html</a><br>
</font><div><div></div><div class="Wj3C7c">Sent from the Erlang Questions mailing list archive at Nabble.com.<br>
<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>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>--Hynek (Pichi) Vychodil<br><br>Analyze your data in minutes. Share your insights instantly. Thrill your boss.  Be a data hero!<br>Try Good Data now for free: <a href="http://www.gooddata.com">www.gooddata.com</a><br>