我想将hashUnique返回的值存储到列表中,但我不能这样做:
import Data.Unique
import Data.List as L
cnter = do
u <- newUnique
return (hashUnique u)
main = cnter:[]
它会显示错误消息:No instance for (Show (IO Int)), arising from a use of 'print' at <interative>
答案 0 :(得分:1)
cnter
是一个返回Int的IO操作。也就是说,cnter
的类型为IO Int
。您正尝试将其用作Int
。你真正想要的是执行动作,获得Int
,然后使用该结果:
import Data.Unique
import Data.List as L
cnter = do
u <- newUnique
return (hashUnique u)
main = cnter >>= \c -> print [c]
或者用符号表示:
main = do c <- cnter
print [c]
但是我不确定你为什么要构建一个列表来打印它,我只是print c
,个人:
main = cnter >>= print