Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 为什么可以';是否使用hashUnique中的Int值?_Haskell_Monads - Fatal编程技术网

Haskell 为什么可以';是否使用hashUnique中的Int值?

Haskell 为什么可以';是否使用hashUnique中的Int值?,haskell,monads,Haskell,Monads,我想将从hashUnique返回的值存储到列表中,但我不能这样做: import Data.Unique import Data.List as L cnter = do u <- newUnique return (hashUnique u) main = cnter:[] 导入数据。唯一 导入数据。列表为L cnter=do ucnter是返回Int的IO操作。也就是说,cnter具有类型IO Int。您正试图将其用作Int。您真正想要的是执行操作,获得Int,然后使

我想将从hashUnique返回的值存储到列表中,但我不能这样做:

import Data.Unique
import Data.List as L

cnter = do
   u <- newUnique
   return (hashUnique u)

main = cnter:[]
导入数据。唯一
导入数据。列表为L
cnter=do

u
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]

我一周前才开始学习Haskell,还不太了解IO monad的内容,但这里的情况是生成唯一的ID,并将它们存储到列表中。我在这里所做的只是一些愚蠢的测试示例,就本例而言,我所要知道的就是如何将
(IO Int)
转换为
Int
,您已经向我展示了:)我实际上想将使用
hashUnique
得到的每个
Int
值存储到一个列表中。能够打印列表的原因仅用于调试目的。
main = do c <- cnter
          print [c]
main = cnter >>= print