编辑:我改一下这个问题。显然,我引起了一些混乱,因为我没有意识到在OOP中使用析构函数一词是因为它们完全不同-它是在销毁对象时调用的函数。在函数式编程中,我们(尽量)避免发生可变状态,因此没有这种等效状态。(我在问题中添加了适当的标签。)
相反,我已经看到用于解开值的记录字段(尤其是用于newtype
s的单值数据类型)有时称为destructor或deconstructor。例如,让我们(在Haskell中):
newtype Wrap = Wrap { unwrap :: Int }
这Wrap
是构造函数,unwrap
是什么?
问题是:
- 我们如何
unwrap
在函数式编程中调用?解构器?破坏者?或其他术语? - 并澄清一下,这个/其他术语是否适用于其他功能语言,还是仅在Haskell中使用?
- 或许,在非功能性语言中,对此是否有通用的术语?
我看过两个词,例如:
...通常,一个人为这些提供聪明的构造函数和析构函数以简化与它们的合作。...
...这里的一般主题是融合构造函数- 像...这样的解构函数对
在Haskell Wikibook上(这里的含义可能更笼统),或者
newtype DList a = DL { unDL :: [a] -> [a] }
该unDL功能是我们的解构,从而消除了DL构造。...