[erlang-questions] beginner question
Richard A. O'Keefe
ok@REDACTED
Mon Aug 18 02:50:24 CEST 2008
On 17 Aug 2008, at 3:07 pm, Ron Peterson wrote:
> for( Max, Max, F ) ->
> [F];
> for( I, Max, F ) ->
> [F|for( I+1, Max, F )].
There are two issues here.
First, for(1, 0, F) will crash instead of returning an empty list.
Why?
Second, you are making a list all of whose elements are the
*value* F. With a name like that, you almost certainly wanted
for(LB, UB, Fun) ->
[Fun() || I <- lists:seq(LB, UB)].
or even
for(LB, UB, Fun) ->
[Fun(I) || I <- lists:seq(LB, UB)].
Better still, ditch for/3 entirely, and write
the list comprehension in place.
>
>
> random_tuple( Max ) ->
> { random:uniform( Max ), random:uniform( Max ) }.
>
> random_tuples( Max, Num ) ->
> set_seed_to_now(),
> for( 1, Num, random_tuple( Max ) ).
This should be
random_tuples(Max, Count) ->
set_seed_to_now(),
[random_tuple(Max) || I <- lists:seq(1, Count)].
--
If stupidity were a crime, who'd 'scape hanging?
More information about the erlang-questions
mailing list