IORef无法匹敌

时间:2017-01-22 16:48:55

标签: haskell

在使用IORef编写双向链表代码时,我遇到了以下问题。 首先,我创建了一个可变的队列数据类型,其中包含前队列和后端的链接

data Tree a = T { prev::IORef (Tree a), next::IORef (Tree a), val::a } | Empty
data Queue a = Q { front::IORef (Tree a), back::IORef (Tree a) }
e <- newIORef Empty
q = Q e e

然后我尝试推送Int值,但我不能。

t = T e e (1::Int)

返回

λ: :t T e e (1::Int)

<interactive>:1:3: error:
    • Couldn't match type ‘GHC.Prim.Any’ with ‘Int’
      Expected type: IORef (Tree Int)
        Actual type: IORef (Tree GHC.Prim.Any)
    • In the first argument of ‘T’, namely ‘e’
      In the expression: T e e (1 :: Int)
λ: 

看起来Empty有一个类型&#34; GHC.Prim.Any ...它与其他传统类型不匹配。有没有办法创建匹配其他任何东西的Empty类型?

0 个答案:

没有答案