Erlang 元组模块是该语言的一个官方文档功能吗?

Erlang 元组模块是该语言的一个官方文档功能吗?,erlang,Erlang,编辑:Steve Vinoski在评论中善意地提供了这些模块的官方名称:元组模块 我最初的问题仍然是:元组模块是否由OTP团队正式记录?他们是否会在未来继续得到支持 原始问题: 考虑以下erlang模块: -module(foo). -compile(export_all). new(Bar) -> {foo, Bar}. get({foo, Bar}) -> Bar. 我非常惊讶地看到它允许以下内容(使用Erlang19.1): 这与通常调用模块函数的方式有很大不同 据我

编辑:Steve Vinoski在评论中善意地提供了这些模块的官方名称:元组模块

我最初的问题仍然是:元组模块是否由OTP团队正式记录?他们是否会在未来继续得到支持


原始问题:

考虑以下erlang模块:

-module(foo).

-compile(export_all).

new(Bar) -> {foo, Bar}.

get({foo, Bar}) -> Bar.
我非常惊讶地看到它允许以下内容(使用Erlang19.1):

这与通常调用模块函数的方式有很大不同

据我所知,它似乎是参数化模块的残余,自R16以来就被弃用;我在官方文档中找不到任何东西表明这是该语言支持的、稳定的特性


我的问题是:这是语言的一个有记录的特征吗?如果是,在哪里?

据我所知,这是一个未记录的参数化模块的残余,它的存在是为了防止遗留代码被破坏。我想它主要是为了防止Mochiweb崩溃,因为我想不出还有任何其他严肃的库使用参数化模块

我找不到关于它的任何文档,而且它似乎不是当前考虑的主题。有一个声明我无法找到(但找到了引用,但没有链接),声称这将被记录,但那是很久以前的事了

删除参数化模块的地方提到:

OTP-10616

实验功能“参数化模块”(也是 名为“抽象模块”)的文件已被删除。适用于 根据参数化模块,有一个解析转换 可用于仍然使用参数化模块的

可以在以下位置找到解析转换:github.com/erlang/pmod_transform


该问题编号不再出现在OTP的问题跟踪器中,我甚至在OTP的Jira实例中的任何地方都找不到“参数化模块”或“元组模块”。因此,我假设这是一个未记录的遗留问题,仅此而已。

您的
new/1
函数返回一个“元组模块”。更多详情请参见。@SteveVinoski谢谢!现在我也发现我知道了正确的术语。@SteveVinoski我还不清楚这是否是该语言的官方文档功能?有什么看法吗?我不知道,也没有听到任何关于除掉它们的计划的讨论,所以我认为它们至少还会存在几年,但我可能还是错了,因为我不知道OTP团队的所有计划。元组模块是Erlang的官方部分,因为OTP团队有意保留它们,以便以前使用实验性参数化模块功能的系统可以切换到它们。谢谢。我想这是我们能得到的关于这个问题的最接近官方声明:)
2> Foo = foo:new(bar).
{foo,bar}
3> Foo:get(). 
bar