我曾經見過你這樣定義的元組類型的例子:錯誤元組:在約束非類型變量參數:積分(A,A)
countRepetitions :: (Integral a, Integral (a,a)) => [a] -> a -> (a,a)
但是,當我執行出現的代碼消息: 約束中的非類型變量參數:Integral (a, a)
如何聲明元組類型?
我曾經見過你這樣定義的元組類型的例子:錯誤元組:在約束非類型變量參數:積分(A,A)
countRepetitions :: (Integral a, Integral (a,a)) => [a] -> a -> (a,a)
但是,當我執行出現的代碼消息: 約束中的非類型變量參數:Integral (a, a)
如何聲明元組類型?
您無需限制Integral (a, a)
。約束Integral a
強制類型a
的所有值爲Integral
。嘗試像這樣重寫它:
countRepetitions :: Integral a => [a] -> a -> (a,a)
你是什麼意思「聲明一個元組類型」?其實它是很奇怪的,因爲一個元組並不是真正的整數:它很難將其轉換爲一個不錯的「Integer」... –
這[不難](https://en.wikipedia.org/wiki/Integer #建設),但在這裏並不特別有用。 – chepner