Editar: estoy reformulando un poco la pregunta. Aparentemente, causé cierta confusión porque no me di cuenta de que el término destructor se usa en OOP para algo bastante diferente: es una función invocada cuando se destruye un objeto. En la programación funcional (intentamos) evitar el estado mutable, por lo que no existe tal equivalente. (Agregué la etiqueta adecuada a la pregunta).
En cambio, he visto que el campo de registro para desenvolver un valor (especialmente para tipos de datos de valor único como newtype
s) a veces se denomina destructor o quizás deconstructor . Por ejemplo, tengamos (en Haskell):
newtype Wrap = Wrap { unwrap :: Int }
Aquí Wrap
está el constructor y unwrap
¿qué es?
Las preguntas son:
- ¿Cómo llamamos
unwrap
a la programación funcional? Deconstructor? ¿Incinerador de basuras? ¿O por algún otro término? - Y para aclarar, ¿esta / otra terminología es aplicable a otros lenguajes funcionales , o se usa solo en Haskell?
- Quizás también, ¿hay alguna terminología para esto en general, en lenguajes no funcionales ?
He visto ambos términos, por ejemplo:
... En la mayoría de los casos, uno suministra constructores y destructores inteligentes para facilitar el trabajo con ellos. ...
en la wiki de Haskell , o
... El tema general aquí es fusionar pares constructor - deconstructor como ...
en el wikibook de Haskell (aquí probablemente se entiende en un sentido un poco más general), o
newtype DList a = DL { unDL :: [a] -> [a] }
La función unDL es nuestro deconstructor , que elimina el constructor DL. ...