Chỉnh sửa: Tôi đang đọc lại câu hỏi một chút. Rõ ràng tôi đã gây ra một số nhầm lẫn vì tôi đã không nhận ra rằng thuật ngữ hủy diệt được sử dụng trong OOP cho một thứ khá khác biệt - đó là một chức năng được gọi khi một đối tượng đang bị phá hủy. Trong lập trình chức năng, chúng tôi (cố gắng) tránh trạng thái có thể thay đổi để không có trạng thái tương đương với nó. (Tôi đã thêm thẻ thích hợp vào câu hỏi.)
Thay vào đó, tôi đã thấy rằng trường bản ghi để hủy ghép một giá trị (đặc biệt đối với các loại dữ liệu có giá trị đơn lẻ như newtype
s) đôi khi được gọi là hàm hủy hoặc có thể là bộ giải mã . Ví dụ: hãy có (trong Haskell):
newtype Wrap = Wrap { unwrap :: Int }
Đây Wrap
là constructor và unwrap
là gì?
Các câu hỏi là:
- Làm thế nào để chúng ta gọi
unwrap
trong lập trình chức năng? Giải cấu trúc? Kẻ hủy diệt? Hoặc bởi một số thuật ngữ khác? - Và để làm rõ, thuật ngữ này / thuật ngữ khác có thể áp dụng cho các ngôn ngữ chức năng khác hay chỉ được sử dụng trong Haskell?
- Có lẽ cũng vậy, có thuật ngữ nào cho việc này nói chung, trong các ngôn ngữ phi chức năng không?
Tôi đã thấy cả hai thuật ngữ, ví dụ:
... Thông thường, một người cung cấp các nhà xây dựng và phá hủy thông minh cho những người này để dễ dàng làm việc với họ. ...
tại wiki Haskell , hoặc
... Chủ đề chung ở đây là hợp nhất các hàm tạo - cặp giải mã như ...
tại Haskell wikibook (ở đây có lẽ có nghĩa chung hơn một chút), hoặc
newtype DList a = DL { unDL :: [a] -> [a] }
Hàm unDL là bộ giải mã của chúng ta , loại bỏ hàm tạo DL. ...
trong thế giới thực Haskell .