[erlang-questions] The Beauty of Erlang Syntax

Kevin Scaldeferri kevin@REDACTED
Thu Feb 26 20:56:31 CET 2009


On Feb 26, 2009, at 10:48 AM, Zvi wrote:

> I want to concentrate on my problem domain and think in single  
> paradigm.
> Instead erlang forces you to think in MFAs, funs, messages and  
> gen_server
> primitives.

If you want to have only one way of doing anything, perhaps you should  
try Python.  I hear that's one of their design principles.


> Regaring simple things in other languages - hard in Erlang. This was
> discussed many times and I'll not repeat it: interop, strings,  
> collections,
> defining functions from shell, libraries with principle of maximum  
> surprise,
> etc. I'll just give simple example like loop:
>
> Ruby:
> 10.times { puts "hi" }

> ...

> or use LC, which is a little shorter, but build 2 unnecessary lists in
> memory:
>
> [ io:format("hi~n") || _<-lists:seq(1,10) ].

You can also use lists:foreach, which will only require the one  
additional list, but really, as someone else pointed out, this is  
horribly contrived.  How often do you really use Integer#times in  
Ruby, compared to other looping / iteration constructs?  At $WORK I  
just checked our codebase:

each: 1234
map/collect: 35
times: 24
select: 19
reject: 18
inject: 9

Almost ever instance of times() is for the same basic purpose:  
generating a random sequence of length N.  There's probably also a lot  
of uses of each() which should be one of the others, but I work mostly  
with folks with an imperative, not functional mindset.

Anyway, the point is, if times() is something you do a lot, just write  
it and get on with your life.  If it matters to you a lot, make an  
argument for why it's generally important and submit a patch to the  
standard libraries.


-kevin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20090226/47cc7df1/attachment.htm>


More information about the erlang-questions mailing list