Редактировать: я перефразирую вопрос немного. По-видимому, я вызвал некоторую путаницу, потому что я не понимал, что термин « деструктор» используется в ООП для чего-то совершенно иного - это функция, вызываемая при разрушении объекта. В функциональном программировании мы (стараемся) избегать изменяемого состояния, поэтому такого эквивалента нет. (Я добавил правильный тег к вопросу.)
Вместо этого я видел, что поле записи для разворачивания значения (особенно для однозначных типов данных, таких как newtype
s) иногда называют деструктором или, возможно, деконструктором . Например, давайте иметь (в Haskell):
newtype Wrap = Wrap { unwrap :: Int }
Вот Wrap
этот конструктор и unwrap
что?
Вопросы:
- Как мы называем
unwrap
в функциональном программировании? Разрушитель? Деструктор? Или каким-то другим термином? - И чтобы уточнить, применима ли эта / другая терминология к другим функциональным языкам или она используется только в Haskell?
- Возможно также, есть ли вообще терминология для этого в нефункциональных языках ?
Я видел оба термина, например:
... Чаще всего мы предоставляем умных конструкторов и деструкторов, которые облегчают работу с ними. ...
на Haskell вики или
... Общая тема здесь - объединить пары конструктор - деконструктор, как ...
в Haskell wikibook (здесь это, вероятно, подразумевается в более общем смысле), или
newtype DList a = DL { unDL :: [a] -> [a] }
Функция unDL является нашим деконструктором , который удаляет конструктор DL. ...