Trong ít nhất một số ngôn ngữ gia đình ML, bạn có thể xác định các bản ghi mà bạn có thể thực hiện đối sánh mẫu, ví dụ: http://learnyouahaskell.com/making-our-own-types-and-typeclasses - ý tưởng cơ bản là bạn định nghĩa một loại bản ghi với các trường được đặt tên, một hàm tạo được tạo tự động với các trường đó làm tham số để bạn có thể tạo bản ghi loại đó và trình trích xuất được tạo tự động với các trường đó làm tham số để bạn có thể tạo mẫu khớp với các bản ghi loại đó.Ngôn ngữ chỉ sử dụng Scala với các bộ giải nén quá tải?
Scala tiến thêm một bước và cho phép các trường được lưu trữ trong bản ghi, tham số hàm tạo và tham số trình trích xuất được tách riêng với nhau, ví dụ: http://daily-scala.blogspot.com/2009/11/overloaded-unapply.html - trong đó nó đang sống với mục tiêu hỗ trợ cả lập trình hướng đối tượng và chức năng. (Các ngôn ngữ hướng đối tượng của khóa học thường cho phép các trường được lưu trữ và các tham số của hàm dựng được tách riêng, mặc dù chúng không có các trình khai thác.)
Có ngôn ngữ nào khớp và cho phép tách không?
Có bất kỳ điều gì được viết về ưu và nhược điểm của việc tách rời đó không?
Haskell là ngôn ngữ gia đình ML? – millimoose
Không bao giờ sử dụng chúng, nhưng quan điểm của Haskell tương tự – Owen
Và tất nhiên, các ngôn ngữ động như Scheme cho phép điều này mà không cần hỗ trợ ngôn ngữ, nhưng tôi không biết liệu có ai sử dụng nó không – Owen