Edit: Ich formuliere die Frage ein bisschen um. Anscheinend habe ich einige Verwirrung gestiftet, weil ich nicht begriffen habe, dass der Begriff Destruktor in OOP für etwas ganz anderes verwendet wird - eine Funktion, die aufgerufen wird, wenn ein Objekt zerstört wird. In der funktionalen Programmierung wird versucht, einen veränderlichen Zustand zu vermeiden, so dass es keinen entsprechenden gibt. (Ich habe der Frage das richtige Tag hinzugefügt.)
Stattdessen habe ich gesehen, dass das Datensatzfeld zum Auspacken eines Werts (insbesondere für einwertige Datentypen wie newtype
s) manchmal als Destruktor oder vielleicht als Dekonstruktor bezeichnet wird . Zum Beispiel haben wir (in Haskell):
newtype Wrap = Wrap { unwrap :: Int }
Hier Wrap
ist der Konstruktor und unwrap
was?
Die Fragen sind:
- Wie rufen wir die
unwrap
funktionale Programmierung auf? Dekonstruktor? Zerstörer? Oder nach einem anderen Begriff? - Und um zu verdeutlichen, ist diese / andere Terminologie auf andere funktionale Sprachen anwendbar oder wird sie nur in Haskell verwendet?
- Gibt es vielleicht auch eine Terminologie dafür im Allgemeinen in nicht funktionalen Sprachen ?
Ich habe beide Begriffe gesehen, zum Beispiel:
... Meist liefert man intelligente Konstruktoren und Destruktoren, damit diese einfacher damit arbeiten können. ...
im Haskell Wiki , oder
... Das allgemeine Thema hier ist, Konstruktor- Dekonstruktor- Paare wie ... zu verschmelzen
bei Haskell Wikibook (hier ist es wahrscheinlich etwas allgemeiner gemeint), oder
newtype DList a = DL { unDL :: [a] -> [a] }
Die unDL-Funktion ist unser Dekonstruktor , der den DL-Konstruktor entfernt. ...