EDIT: Стив Виноски любезно предоставил в комментариях официальное название для этих модулей: кортежи.
Остается мой первоначальный вопрос: являются ли модули модулей, официально задокументированные командой OTP? И ожидается ли их поддержка в будущем?
Оригинальный вопрос:
Рассмотрим следующий модуль erlang:
-module(foo).
-compile(export_all).
new(Bar) -> {foo, Bar}.
get({foo, Bar}) -> Bar.
Я был очень удивлен, увидев, что он позволяет следующее (используя erlang 19.1):
2> Foo = foo:new(bar).
{foo,bar}
3> Foo:get().
bar
который сильно отличается от обычного способа вызова модульной функции.
Насколько я могу судить, это кажется остатком параметризованных модулей, которые устарели после R16; и я не могу найти ничего в официальной документации, заявив, что это поддерживаемая, стабильная функция языка.
Мой вопрос: является ли это документированной особенностью языка? И если да, то где?