0
讀我聲明一個類和兩個實例:功能將無法從兩個類型類
class A a where
name :: a -> String
dMs :: a -> [(String,String,Double)]
instance A B where
name s = B s
dMs a = dM a
instance A C where
name s = C s
dMs a = dM a
dM :: (A a) => [a] -> [(String,String,Double)]
但是,當我編譯我的頭球攻門高出我得到一個錯誤:
Couldn't match expected type ‘[a0]’ with actual type ‘C’
In the first argument of ‘dM’, namely ‘a’
In the expression: dM a
我想要的dM
函數能夠獲取B
或C
類型的列表。
如果我改變頭只接受一種類型(或者只是B
或者只是C
)代碼編譯和工作沒有一個小故障。
你在哪裏定義了'B'和'C'? – Sibi
@Sibi前面的代碼。每個數據都是一個名稱和一些其他相關值的數據。他們各自單獨工作。 – Gurkmeja101
嘗試在您的類型類中直接定義dM作爲默認實現。目前,您正嘗試在實例本身的定義內部使用B/C的實例。 – thoferon