[erlang-questions] dialyzer error: apply_op_not_a_variable

Richard Carlsson <>
Thu Oct 13 18:33:34 CEST 2011


On 10/13/2011 03:52 PM, Joel Reymont wrote:
> This is the problem
>
> 	({?MODULE, State})(Event, Bot)

This depends on knowing that the current implementation of parameterized 
modules uses the representation {Mod, X1, ...Xn}. Don't create such 
tuples directly: call Mod:new(State) instead.

If your snippet above is literally what's in your code, then you're 
doing something even stranger: having a module create an instance of 
itself (the tuple) and then call a function on that instance. Don't 
abuse the current underlying mechanism - if you want to use 
parameterized modules, then declare them as such:

   -module(mymodule, [X]).

and use the automatic mymodule:new(X) function to instantiate them.

In any case, parameterizing modules on a "state" variable is a pretty 
fishy thing to do. You might want to rethink your approach.

     /Richard



More information about the erlang-questions mailing list