Funs behaving differently after native compilation

Joel Reymont <>
Thu Jan 12 17:03:12 CET 2006


I could certainly change things to

     Closer = fun(Sock) -> gen_udp:close(Sock) end,
     monitor(self(), Sock, Closer),

for this particular case but I'm also passing the name of the module  
from the command like to invoke the script function in it.

I don't see how I can construct a real fun from an atom that is the  
module name.

On Jan 12, 2006, at 4:00 PM, Joel Reymont wrote:

> Folks,
>
> My funs seem to behave differently when the beams are compiled to  
> native code.
>
> Is there an explanation to this? I am passing indeed passing funs  
> as {M, F} and then calling them as per the code below.
>
> Why does it work when the code is byte-compiled and how do I work  
> around these errors?
>
> monitor(self(), Sock, {gen_udp, close})
>
> monitor(Sock, Closer) ->
>     receive
> 	{'DOWN', _, process, _, _} ->
> 	    Closer(Sock);
> 	Any ->
> 	    io:format("Monitor: Unknown:~n~p~n", [Any]),
> 	    monitor(sock, Closer)
>     end.

--
http://wagerlabs.com/








More information about the erlang-questions mailing list