Có thể có một kiểu là một phần của typeclass không? Một cái gì đó như:Haskell: Các kiểu chữ có thể xác định các loại (các đặc điểm kiểu ala)
class KeyTraits v where
keyType :: *
key :: v -> keyType
data TableRow = { date :: Date, metaData :: String, value :: Int }
instance KeyTraits TableRow where
keyType = Date
key = date
Và các chức năng "cấp loại" này có thể được sử dụng ở nơi khác không? Ví dụ:
-- automatically deduce the type for the key, from the value type, using
-- the typeclass
data MyMap v = { getMap :: (KeyTraits v) => Map (keyType) v }
tôi có thể làm một cái gì đó hoàn toàn sai, nhưng tôi về cơ bản muốn khả năng xác định các mối quan hệ kiểu như trên (ví dụ một số giá trị có thể đã có dữ liệu có thể được sử dụng như một chìa khóa). Nếu điều đó là không thể, hoặc là khó khăn, bạn có thể đề xuất một thiết kế tốt hơn là thành ngữ hơn?
Cảm ơn bạn!
Cảm ơn rất nhiều vì sự thay thế! Mặc dù câu trả lời khác được gắn trực tiếp hơn với tiêu đề câu hỏi, giải pháp của bạn cũng có liên quan. –
Tôi đã được ấn tượng rằng MPTC + FD là biểu cảm hơn TF trong một số trường hợp cạnh với phụ thuộc phức tạp ... –