Tôi đang cố gắng tìm hiểu xem có thể (và cách) để xác định các phiên bản lớp cho các từ đồng nghĩa loại nhiều tham số.Trường hợp đồng nghĩa loại nhiều tham số
Ví dụ:
{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
type F a b = a -> b
data DF a b = DF (a -> b)
class C c a b where
doc :: c a b -> a -> b
Nó hoạt động cho một loại đa param dụ:
instance C DF a b where
doc (DF f) x = f x
Nhưng nó không hoạt động cho loại từ đồng nghĩa:
-- ERROR:
--
-- Type synonym `F' should have 2 arguments, but has been given none
-- In the instance declaration for `C F a b'
--
instance C F a b where
doc f x = f x
Có có thể xác định thể hiện loại lớp cho F
?