Chơi xung quanh với kiểu lớp tôi đã đưa ra dường như vô tộiTypeclass dụ với phụ thuộc chức năng không hoạt động
class Pair p a | p -> a where
one :: p -> a
two :: p -> a
Điều này dường như làm việc tốt, ví dụ
instance Pair [a] a where
one [x,_] = x
two [_,y] = y
Tuy nhiên, tôi gặp sự cố với bộ dữ liệu. Mặc dù định nghĩa sau biên dịch ...
instance Pair (a,a) a where
one p = fst p
two p = snd p
... Tôi không thể sử dụng nó như tôi mong đợi:
main = print $ two (3, 4)
No instance for (Pair (t, t1) a)
arising from a use of `two' at src\Main.hs:593:15-23
Possible fix: add an instance declaration for (Pair (t, t1) a)
In the second argument of `($)', namely `two (3, 4)'
In the expression: print $ two (3, 4)
In the definition of `main': main = print $ two (3, 4)
Có cách nào để xác định các trường hợp chính xác? Hay tôi phải sử dụng trình bao bọc newtype
?
Cảm ơn, rất thú vị! – Landei