Nested for-loops, there has to be a better way to do this

Yves S. Garret <>
Fri Jul 31 03:59:38 CEST 2009


Takes first int, processes it (in this case, prints it out),
decrements it, takes the second int, processes it (prints it out),
decrements it and on.  When it gets to the very last item, it
processes it until there are none left.  Then goes to the one above
it, processes it, decrements it... wash, rinse, repeat :) .

In retrospect, I could have made this clearer.


On Jul 29, 2:35 am, Joe Armstrong <> wrote:
> 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. Seehttp://www.erlang.org/faq.html
> > erlang-questions (at) erlang.org
>
> ________________________________________________________________
> erlang-questions mailing list. Seehttp://www.erlang.org/faq.html
> erlang-questions (at) erlang.org


More information about the erlang-questions mailing list