Edit: Estou reformulando a pergunta um pouco. Aparentemente, causei alguma confusão porque não percebi que o termo destruidor é usado no OOP para algo bem diferente - é uma função invocada quando um objeto está sendo destruído. Na programação funcional, (tentamos) evitar o estado mutável, para que não exista esse equivalente. (Adicionei a tag apropriada à pergunta.)
Em vez disso, vi que o campo de registro para desembrulhar um valor (especialmente para tipos de dados de valor único, como newtype
s) às vezes é chamado de destruidor ou talvez desconstrutor . Por exemplo, vamos ter (em Haskell):
newtype Wrap = Wrap { unwrap :: Int }
Aqui Wrap
está o construtor e unwrap
é o que?
As perguntas são:
- Como chamamos
unwrap
em programação funcional? Desconstrutor? Destruidor? Ou por algum outro termo? - E para esclarecer, essa / outra terminologia é aplicável a outras linguagens funcionais ou é usada apenas no Haskell?
- Talvez também exista alguma terminologia para isso em geral, em linguagens não funcionais ?
Eu vi os dois termos, por exemplo:
... Na maioria das vezes, fornece-se construtores e destruidores inteligentes para facilitar o trabalho com eles. ...
no wiki Haskell , ou
... O tema geral aqui é fundir pares construtor - desconstrutor como ...
no Haskell wikibook (aqui provavelmente significa um sentido um pouco mais geral), ou
newtype DList a = DL { unDL :: [a] -> [a] }
A função unDL é o nosso desconstrutor , que remove o construtor DL. ...
no mundo real Haskell .