Không, tính năng này hiện không được hỗ trợ. Cách tiếp cận tiêu chuẩn là tiền tố mỗi trường với một cái gì đó duy nhất cho kiểu dữ liệu cụ thể, ví dụ: p2x
, p2y
, p3x
v.v.
Lý do không được hỗ trợ là mỗi tên trường bản ghi ngầm tạo ra một hàm "công cụ chọn", ví dụ: x :: Point2 -> Float
. Có hai trường có cùng tên trong cùng một phạm vi sẽ tạo ra xung đột.
Đây là một bugbear lâu đời cho nhiều người và sẽ được giải quyết bằng phần mở rộng ngôn ngữ sắp tới OverloadedRecordFields
, hy vọng sẽ là một phần của GHC 7.12 (đầu năm 2016).
Khi được bật, tiện ích mở rộng này sẽ cho phép cùng một tên trường được sử dụng trong nhiều bản ghi. Bộ chọn trường sẽ có loại quá tải thường sẽ được giải quyết theo kiểu suy luận.
Nguồn
2014-06-22 14:37:11
Pity chúng ta không có giải pháp cho trường hợp này. – jiyinyiyong
... nhưng sau đó mục đích của 'DisambiguateRecordFields' là gì? –