元组模块是该语言的正式记录功能吗?

时间:2016-11-10 23:59:51

标签: erlang

编辑:Steve Vinoski在评论中提供了正式名称:元组模块。

我原来的问题仍然存在: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以来已被弃用;我在官方文档中找不到任何内容,说明这是该语言支持的稳定功能。

我的问题是:这是该语言的文档功能吗?如果是的话,在哪里?

1 个答案:

答案 0 :(得分:1)

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

我无法在其上找到任何文档,它似乎不是当前考虑的主题。有一个声明我无法找到(但发现了参考文献,但没有链接)声称这将被记录,但那已经是很久以前了。

删除参数化模块的defined an index提及:

  

OTP-10616

     

实验性功能“参数化模块”(也是   被称为“抽象模块”)已被删除。对于应用程序   取决于参数化模块,有一个解析变换   可用于仍然使用参数化模块。

     

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

该问题编​​号不再出现在OTP的问题跟踪器中,我甚至无法在OTP的Jira实例中的任何地方找到“参数化模块”或“元组模块”。所以我假设这是一个无证件的传统拐杖,仅此而已。