我原来的问题仍然存在: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以来已被弃用;我在官方文档中找不到任何内容,说明这是该语言支持的稳定功能。
我的问题是:这是该语言的文档功能吗?如果是的话,在哪里?
答案 0 :(得分:1)
据我所知,这是一个未记录的参数化模块的残余,存在是为了防止遗留代码破坏。我想这主要是为了防止Mochiweb破坏,因为我想不出任何其他使用参数化模块的严肃库。
我无法在其上找到任何文档,它似乎不是当前考虑的主题。有一个声明我无法找到(但发现了参考文献,但没有链接)声称这将被记录,但那已经是很久以前了。
删除参数化模块的defined an index提及:
OTP-10616
实验性功能“参数化模块”(也是 被称为“抽象模块”)已被删除。对于应用程序 取决于参数化模块,有一个解析变换 可用于仍然使用参数化模块。
可以在以下位置找到解析转换:github.com/erlang/pmod_transform
该问题编号不再出现在OTP的问题跟踪器中,我甚至无法在OTP的Jira实例中的任何地方找到“参数化模块”或“元组模块”。所以我假设这是一个无证件的传统拐杖,仅此而已。