wcy*_*wcy 7 erlang tuples module function call
一个类似的问题被问到Erlang中的参数化模块,它是关于"什么".我的问题是"为什么"?
OTP技术委员会 - 影响R16的决定包含董事会对此问题的决定,但我不知道该决定背后的原因.
编程中的状态模块Erlang 2ndEdition由Joe Armstrong详细介绍了这个特性,但我没有看到作者的态度.
如果我们阅读官方文档函数调用,我们会看到此功能是故意浏览的.事实上,官方文档强烈反对使用此功能,请参阅效率函数调用.如果是这样,为什么乔·阿姆斯特朗在他的书中提到了这样的特征呢?
我认为这个功能非常棒.如上所述,我的客户端代码如下所示
Obj:find(Key),
Obj:is_key(Key),
Run Code Online (Sandbox Code Playgroud)
然后,我们不关心是否Obj由dict:new(),或者gb_tree:new()不幸地创建,dict并且gb_tree不共享一致的 界面,例如我们gb_tree:lookup而不是gb_tree:find.
我不能告诉你在控制一切的Great Cabal中的讨论是什么,但我可以告诉你为什么我从未考虑过使用这个功能:
它引入了句法复杂性和语义歧义,但没有给我新的超级大国.
复杂:
X的Foo10个或20个相等的权利吗?"dict:is_key(Value, Thingy)在这里写,然后Thingy:is_key(Value)在那边写?dict:is_key(Key, Foo:get_value(Key2))吗?"歧义:
这引入了不透明状态(坏)而不是ADT(好的,我们已经拥有的东西).
Foo:is_key(Key)不是dict:is_key(Key, Foo).除了我确信在第一次阅读时,即使在完全没有上下文的情况下,在第二版中操作的数据对象肯定是一个字典.Erlang的符号赋值(又名"单一赋值")很棒,为什么要破坏它?
| 归档时间: |
|
| 查看次数: |
677 次 |
| 最近记录: |