What is a tuple module in Erlang?

2019-01-25 11:02发布

问题:

http://www.erlang.org/news/35 mentioned that this will be documented, but I can't find it in the documentation.

回答1:

A "tuple module" is a tuple with two elements, the name of a module and a list of extra arguments. For example:

{my_module, [foo, bar]}

Such a tuple can be used instead of a module name in function calls. In this case, the function being called will get the tuple in question as an additional argument at the end of the argument list:

3> Module = {lists, [[foo]]}.
{lists,[[foo]]}
4> Module:append([bar]).
[bar|{lists,[[foo]]}]

This call is equivalent to:

7> lists:append([bar], {lists, [[foo]]}).
[bar|{lists,[[foo]]}]

Tuple modules are kept for backwards compatibility, as they were the implementation mechanism for parameterised modules, which were removed from the language in R16.