[erlang-questions] Nested for-loops, there has to be a better way to do this

Joe Armstrong <>
Wed Jul 29 08:35:31 CEST 2009


I don't understand what you want.

If the input to your program is: [5,5,10]
the output should be: X

What is X?

/Joe



On Wed, Jul 29, 2009 at 4:55 AM, Yves S.
Garret<> wrote:
> I was playing around with the idea of implementing a nested for-loop
> like construct (I will concede, they are evil, but at rare times,
> necessary.)  In non-functional programming languages, they are trivial
> to do.  However, this has proved to be one of those simple things that
> are a pain in the neck for me.  The idea was to be able to pass in a
> list [5, 5, 10] (for example) and go through it all like 3 dimensional
> array.  The below illustration is far from elegant (it's almost 23:00
> where I live and need to go to work tomorrow early, so no time to come
> up with something more sane :) ), but is there as an inquisitive
> exercise.  Now, in my opinion, this implementation sucks (first time
> I've ever gave such a problem a shot in Erlang.)
>
> Is there a better way to do this?  Anyone would like to demonstrate
> it?
>
> Note: I've tested this code with the lists [2, 4] and [2, 4, 5].
>
> Compiled with:
> Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 5.6.5
>
> My code:
> ======================================
> -module(loopWrapper).
>
> -export([runLoop/1]).
>
> runLoop(List) ->
>  [FirstVal | RestList] = List,
>  NextVal = FirstVal - 1,
>  if (length(RestList) > 0) and (FirstVal > 0) ->
>    io:format("~B~n~n", [FirstVal]),
>    runLoop(RestList),
>    io:format("~n~n"),
>    runLoop([NextVal | RestList]);
>  FirstVal > 0 ->
>    io:format("~B", [FirstVal]),
>    runLoop([NextVal]);
>  true ->
>    null
>  end.
>
> ________________________________________________________________
> erlang-questions mailing list. See http://www.erlang.org/faq.html
> erlang-questions (at) erlang.org
>
>


More information about the erlang-questions mailing list