繼http://en.wikibooks.org/wiki/Haskell/Beginning「無實例」 錯誤
Prelude> let abs x = if x < 0 then -x else x
Prelude> abs 5
5
Prelude> abs -3
<interactive>:1:6:
No instance for (Num (a0 -> a0))
arising from the literal `3'
Possible fix: add an instance declaration for (Num (a0 -> a0))
In the second argument of `(-)', namely `3'
In the expression: abs - 3
In an equation for `it': it = abs - 3
什麼是錯的例子嗎?
錯誤信息的解釋,僅供將來參考:'a0 - > a0'是'abs'的類型。 (在你的ghci中鍵入':t abs'來查看它。)錯誤信息是說這個類型'a0 - > a0'不是'Num'類的一個實例,因爲只有'Num'可以被減去而且在任何情況下'3'都表示第一個參數必須是'Num'中的某種類型。 (在ghci類型':t( - )'和':t 3'中查看發生了什麼。)\'( - )'的第二個參數,即\'3'「中的行最具啓發性:表明'-'被視爲帶* 2 *參數的中綴運算符,而不是一元減號。 – ShreevatsaR 2011-06-03 07:52:33