Not sure this is useful here, but fact could be made tail-recursive:<br>
fact(N) -><br>
    fact(N, []).<br>
fact(1, Factors) -><br>
    Factors;<br>
fact(N,  Factors) -><br>
    M = next_factor(N, 2), % using definition of Matthias<br>
    fact(N div M, [M|Factors]).<br>(haven't tested this code ...)<br><br><div><span class="gmail_quote">On 5/4/07, <b class="gmail_sendername">Matthias Lang</b> <<a href="mailto:matthias@corelatus.se">matthias@corelatus.se
</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>The programming style is fine. I only see trivial things which are
<br>hardly worth mentioning:<br><br>  - You don't need to quote atoms like 'factor' (in your compile comment)<br>  - The program currently hangs for negative numbers<br><br>It can be simplified a bit, though it's already pretty good. You can
<br>rewrite next_factor in two clauses like this:<br><br>  first_factor(N, M) when N rem M == 0 -><br>    M;<br>  first_factor(N, M) -><br>    first_factor(N, M+1).<br><br>Matthias<br><br><br>Martin Ankerl writes:<br>
 > Hello everybody, I have just started learning Erlang and wrote one of<br> > my first programs. It is a very simple prime factoring program, but it<br> > works. I would appreciate comments about the programming style, is
<br> > this how Erlang code should be written? Any way to make it simpler?<br> ><br> > Here is the code:<br> ><br> > -module(factor).<br> > -export([fact/1]).<br> ><br> > % c('factor').<br>
 > % factor:fact(123456723456789).<br> > fact(1) -><br> >         [];<br> > fact(N) -><br> >         % io:format("~w\n", [N]),<br> >         M = next_factor(N, 2, N rem 2),<br> >         [ M | fact(N div M) ].
<br> ><br> > % find the next factor<br> > next_factor(_, M, 0) -><br> >         M;<br> > next_factor(N, N, _) -><br> >         N;<br> > next_factor(N, M, _) -><br> >         next_factor(N, M+1, N rem (M+1)).
<br> ><br> > --<br> > Martin Ankerl | <a href="http://martin.ankerl.com">http://martin.ankerl.com</a><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">http://www.erlang.org/mailman/listinfo/erlang-questions</a><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">http://www.erlang.org/mailman/listinfo/erlang-questions
</a><br></blockquote></div><br>