[英]Why i get this error in my haskell code
為什么我的代碼中出現此錯誤:代碼:
module Task5 where
import Prelude
data Stream a = a :& Stream a
infixl 4 :&
add :: Num a => a -> a -> a
add a b = a + b
instance Num (Stream a ) where
(+) (ia:&a) (ib :& b) = (ia + ib) :& ((+) a b)
錯誤:
Task5.hs:14:33:
No instance for (Num a) arising from a use of `+'
Possible fix:
add (Num a) to the context of the instance declaration
In the first argument of `(:&)', namely `(ia + ib)'
In the expression: (ia + ib) :& ((+) a b)
In an equation for `+':
+ (ia :& a) (ib :& b) = (ia + ib) :& ((+) a b)
我不知道如何解決此問題,我已經整周嘗試了一次,但沒有找到任何解決方案。 所以,你能說我應該糾正的嗎?
如錯誤所示,您需要將Num a
添加到實例聲明的“上下文”中:
instance Num a => Num (Stream a) where
否則, ia + ib
操作沒有任何可用的(+)
操作,因為該操作作用於各個流成員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.