Code generation (was NOOB)
Jay Nelson
jay@REDACTED
Fri Sep 1 14:43:13 CEST 2006
Bjorn wrote:
> Later, just before code generation, variable life times are
> calculated. The code generator is guided by the life time information,
> and doesn't generate any code for assigning a variable that
> will never be used.
Can you describe what happens in the following two cases?
foo(X) ->
A = [do_something(E) || E <- X], % <1>
[do_other(E) || E <- X], % <2>
ok.
do_something(E) -> E * 4.
do_other(E) -> io:write("~w~n", [E]).
In 1, does the function 'do_something' every get called?
>From your description, A is thrown out and the fun has no
side effect.
In 2, does a list get created on the stack?
If 1 were changed to call 'do_other' would the code be
generated differently (because of the side effect)?
jay
More information about the erlang-questions
mailing list