Edycja: Trochę zmieniam pytanie. Najwyraźniej spowodowałem pewne zamieszanie, ponieważ nie zdawałem sobie sprawy, że termin destruktor jest używany w OOP do czegoś zupełnie innego - jest to funkcja wywoływana, gdy obiekt jest niszczony. W programowaniu funkcjonalnym (staramy się) unikać stanu zmiennego, więc nie ma takiego odpowiednika. (Dodałem odpowiedni tag do pytania).
Zamiast tego widziałem, że pole rekordu do rozpakowywania wartości (szczególnie dla typów danych o pojedynczej wartości, takich jak newtype
s) jest czasem nazywane destruktorem lub dekonstruktorem . Na przykład, mamy (w Haskell):
newtype Wrap = Wrap { unwrap :: Int }
Oto Wrap
konstruktor i unwrap
co?
Pytania są następujące:
- Jak nazywamy
unwrap
programowanie funkcjonalne? Deconstructor? Burzyciel? Lub jakimś innym terminem? - Dla wyjaśnienia, czy ta / inna terminologia ma zastosowanie do innych języków funkcjonalnych , czy też jest używana tylko w języku Haskell?
- Być może także, czy istnieje ogólna terminologia w tym zakresie w językach niefunkcjonalnych ?
Widziałem oba warunki, na przykład:
... Najczęściej dostarcza się inteligentnych konstruktorów i destruktorów, aby ułatwić sobie z nimi pracę. ...
na wiki Haskell lub
... Ogólnym tematem jest tutaj połączenie konstruktora z parami dekonstruktorów, takimi jak ...
w Haskell wikibook (tutaj prawdopodobnie ma to nieco bardziej ogólny sens), lub
newtype DList a = DL { unDL :: [a] -> [a] }
Funkcja unDL to nasz dekonstruktor , który usuwa konstruktor DL. ...