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