Подтвердить что ты не робот

Являются ли модули кортежей официально задокументированными признаками языка?

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; и я не могу найти ничего в официальной документации, заявив, что это поддерживаемая, стабильная функция языка.

Мой вопрос: является ли это документированной особенностью языка? И если да, то где?

4b9b3361

Ответ 1

Насколько я знаю, это недокументированный остаток параметризованных модулей и существует, чтобы предотвратить нарушение устаревшего кода. Я предполагаю, что это предназначено главным образом для того, чтобы не допустить, чтобы Mochiweb нарушился, поскольку я не могу думать о каких-либо других серьезных библиотеках, которые используют параметризованные модули.

Я не могу найти какую-либо документацию по нему, и это, похоже, не является предметом рассмотрения. Было объявление, которое я не могу найти (но нашел ссылки, но не ссылки), которые утверждали, что это будет задокументировано, но это было довольно давно.

выпустить readme для R16B, где удалены параметризованные модули, упоминается следующее:

ОТП-10616

Экспериментальная особенность "параметризованные модули" (также так называемые "абстрактные модули" ). Для приложений, которые зависит от параметризованных модулей, существует синтаксический анализ которые могут использоваться для использования параметризованных модулей.

Преобразование разбора можно найти по адресу: github.com/erlang/pmod_transform

Этот номер проблемы больше не отображается в OTP-проблеме, и я даже не могу найти появление "параметризованного модуля" или "модуля кортежа" в любом месте экземпляра OTP Jira. Поэтому я предполагаю, что это недокументированный устаревший костыль и не более того.