Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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中创建和终止线程列表?_Haskell - Fatal编程技术网

如何在Haskell中创建和终止线程列表?

如何在Haskell中创建和终止线程列表?,haskell,Haskell,我不知道如何将运行的threadid放入列表中,然后杀死所有创建的线程 我尝试过一些monad操作,但我不理解ghci中的类型erros 导入控制。并发 main=do ts我认为您需要使用Control.Monad.mapM::(Monad m)=>(a->mb)->[a]->m[b] 例如: main = do ts <- mapM forkIO [(write 'a'), (write 'b')] putStrLn "Stop printing as and bs!"

我不知道如何将运行的threadid放入列表中,然后杀死所有创建的线程

我尝试过一些monad操作,但我不理解ghci中的类型erros

导入控制。并发
main=do

ts我认为您需要使用
Control.Monad.mapM::(Monad m)=>(a->mb)->[a]->m[b]

例如:

main = do 
  ts <- mapM forkIO [(write 'a'), (write 'b')]
  putStrLn "Stop printing as and bs!"
  _ <- mapM killThread ts -- or use mapM_ for no returning result effect
  pure () -- return ()
  where
    write c = do 
      putChar c
      write c
main=do

ts请在您的问题中包含类型错误消息。您的解决方案很好。唯一的错误是,在main函数中,最后一行必须是表达式<代码>do块中的最后一条语句必须是表达式