Order Evaluation in List Comprehension

Ben Hyde <>
Sat Dec 19 02:12:52 CET 1998


tuning in later...

box_top(X)->[E||E<-X,begin io:format("~p\n", [E]), true end].
black_box(X)->[begin io:format("~p\n", [E]), E end||E<-X].
black_n_blue(X) -> 
    [begin io:format("assemble: ~p\n", [E]), E end
     || E<-X,
	begin io:format("filter: ~p\n", [E]), true end].

...>hack:box_top([1,2,3]).
1
2
3
[1,2,3]
...>hack:black_box([1,2,3]).
3
2
1
[1,2,3]
...>hack:black_n_blue([1,2,3]).
filter: 1
filter: 2
filter: 3
assemble: 3
assemble: 2
assemble: 1
[1,2,3]
...>

Does the spec preclude interleaving the accumulation with
the iteration?  

Looping, nothing but trouble.

Claes Wikstrom writes:
> ... we
>have decided that in the next major release we shall have fixed
>and decided evaluation order.

Functional and deterministic!  Imagine!  - ben




More information about the erlang-questions mailing list