Редагувати: Я трохи перефразую питання. Мабуть, я викликав деяку плутанину, тому що я не розумів, що термін " деструктор" використовується в ООП для чогось зовсім іншого - це функція, яку викликають при знищенні об'єкта. У функціональному програмуванні ми (намагаємось) уникати змінного стану, щоб такого еквіваленту не було. (Я додав відповідний тег до питання.)
Натомість я бачив, що поле запису для розгортання значення (особливо для однозначних типів даних, таких як newtype
s) іноді називають деструктором або, можливо, деконструктором . Наприклад, давайте (у Haskell):
newtype Wrap = Wrap { unwrap :: Int }
Ось Wrap
конструктор і unwrap
що?
Питання:
- Як ми називаємо
unwrap
функціональне програмування? Деконструктор? Деструктор? Або яким-небудь іншим терміном? - І для уточнення, чи застосовується ця / інша термінологія для інших функціональних мов , чи вона використовується просто в Haskell?
- Можливо також, чи є термінологія для цього взагалі нефункціональними мовами ?
Я бачив обидва терміни, наприклад:
... Найчастіше для цього постачаються розумні конструктори та деструктори, щоб полегшити роботу з ними. ...
на Вікі Haskell , або
... Загальною темою тут є сплавлення пар конструктор - деконструктор, як ...
у вікі-книзі Haskell (тут це, мабуть, мається на увазі в більш загальному розумінні), або
newtype DList a = DL { unDL :: [a] -> [a] }
Функція unDL - це наш деконструктор , який видаляє конструктор DL. ...