geometric memory growth

Thomas Lindgren <>
Fri Nov 25 13:17:31 CET 2005

--- Ulf Wiger <> wrote:

> The obvious fix:
>     Channel =,
>     SendF = fun(To, Msg) ->
> 	          msg(Channel,
> 	          ChNo, To, Msg)
> 	      end,
> Now, wouldn't it be great if the compiler could
> figure out how to do this
> at compile-time?

Hoisting the expression out of the fun is only safe if
State is known to be a #state record at this point.
Otherwise, you can get an exception in the wrong

Applying this optimization (hoisting expressions out
of closures) is often a good thing, since we evaluate
the expression once, then can use the closure many
times. There are some counterexamples, though, so a
bit of care is needed to tell when it is useful.


Yahoo! Music Unlimited 
Access over 1 million songs. Try it free.

More information about the erlang-questions mailing list