Trong mã này, tôi đang cố gắng để có tham số đầu tiên trong chức năng công nhân của tôi go
là kiểu 'gia đình kiểu'. Tôi thấy rằng trong các loại type families documentation một chức năng tương tự insert
thuộc về loại lớp, trong khi trong ví dụ của tôi dưới đây nó không.'Biến loại mơ hồ `a` trong ràng buộc' có nghĩa là gì?
Tôi mới làm quen với các gia đình nên có thể tôi đang sử dụng sai, nhưng lỗi này có nghĩa là gì?
{-# LANGUAGE TypeFamilies #-}
-- | key
class K a where
-- | iterator for key
type I a :: *
mkI :: a -> I a
--| A map
data (K a) => M a b = M a b
insert :: (K a) => a -> b -> M a b -> M a b
insert = go mkI -- <<< PROBLEM
where
go o a b m = m
mơ hồ kiểu biến 'một' trong chế:
`K a' arising from an expression type signature at Data/Map2.hs:167:10-33
sửa chữa dự kiến: thêm một chữ ký kiểu đó sửa chữa những kiểu biến (s)
Trước hết, lưu ý rằng bối cảnh datatype ('dữ liệu (K a) => M a b = M a b') đã bị xóa khỏi ngôn ngữ và không bao giờ hữu ích. Nhìn vào những thứ khác ngay bây giờ. –