編集:私は質問を少し言い換えています。デストラクタという用語がOOPでまったく異なる何かに使用されていることに気づかなかったため、どうやら混乱が生じたようです。これは、オブジェクトが破棄されるときに呼び出される関数です。関数型プログラミングでは、可変状態を回避しようとするため、それに相当するものはありません。(質問に適切なタグを追加しました。)
代わりに、値をアンラップするためのレコードフィールド(特にnewtype
s などの単一値のデータ型の場合)がdestructorまたはdeconstructorと呼ばれることもあります。たとえば、(Haskellで)次のようにします:
newtype Wrap = Wrap { unwrap :: Int }
ここWrap
にコンストラクタがあり、それunwrap
は何ですか?
質問は次のとおりです。
unwrap
関数型プログラミングをどのように呼び出すのですか?解体者?デストラクタ?それとも他の言葉で?- そして、明確にするために、この/他の用語は他の関数型言語に適用できますか、それともHaskellだけで使用されますか?
- おそらく、これには一般的に、非機能的な言語での用語はありますか?
私は両方の用語を見ました、例えば:
...ほとんどの場合、スマートコンストラクターとデストラクタを提供して、これらを簡単に操作できるようにします。...
で、Haskellのウィキ、または
...ここでの一般的なテーマは、コンストラクターとデコンストラクターのペアを融合することです...
で、Haskellのwikibook(ここではそれはおそらく、もう少し一般的な意味でのものです)、または
newtype DList a = DL { unDL :: [a] -> [a] }
unDL関数はdeconstructorで、DLコンストラクターを削除します。...
中実世界ハスケル。