fun question...
Dave Smith
dave.smith.to@REDACTED
Tue Mar 30 19:23:55 CEST 2010
I have a scenario where I have a atom bound to a variable, and I want to
construct a fun using this variable as the module name. This is what I
have...
encode(CodecModule, CodePoints) when is_atom(CodecModule) ->
encode(*fun(C) -> CodecModule:endode(C) end*, CodePoints);
encode(EncodeFn, CodePoints) ->
{ok, list_to_binary(lists:map(EncodeFn, CodePoints))}.
This works fine, but I was expecting to be able to something like this...
encode(CodecModule, CodePoints) when is_atom(CodecModule) ->
encode(*fun CodecModule:endode/1*, CodePoints);
encode(EncodeFn, CodePoints) ->
{ok, list_to_binary(lists:map(EncodeFn, CodePoints))}.
I can call the function directly using the variable like this...
Bin = CodecModule:encode(CodePt).
So I was expecting this to work...
EncFn = fun CodecModule:encode/1.
Can someone clarify? Is this second form expanded at compiled time?
Is the first example above the best approach?
--DS
More information about the erlang-questions
mailing list