簡體   English   中英

為什么我在Haskell代碼中遇到此錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM