ad

您如何从Haskell中的子线程打印毛病?-英雄云拓展知识分享

匿名投稿 434 2024-01-22

给定以下代码:

module Main where

import Control.Concurrent

main :: IO ()

main = forkIO errorPrinter >> threadDelay 1000000 >> print "Finished"

您如何从Haskell中的子线程打印毛病?-英雄云拓展知识分享

errorPrinter = error "You can't see me!"

我希望,运行此代码后,我会看到这样的:

"You can't see me"

"Finished!"

印刷到控制台。但是,“你看不到我”从未打印过。

我意想到,使用毛病在生产代码中不是一个好主张,但是我在开发中使用了毛病,并且发现没有毛病将毛病打印到控制台上,即便是依赖关系突出的毛病。

我相信这个问题有一个简单的解决方案。我不能成为第一个遇到这个问题的人,但是我在任何地方都找不到答案。

任何帮助将非常感激!

看答案

我没法复制您的问题;对我来讲,它确切打印了“你看不到我!”:

% runhaskell test.hs

test.hs: You can't see me!

CallStack (from HasCallStack):

error, called at test.hs:8:16 in main:Main

"Finished"

我看到的行动与GHC 7.6(我周围最古老的GHC)类似。得知这类行动在过去210年左右的时间里产生了很大变化,我会感到非常惊讶。

不管如何,我建议切换到打印要打印的消息:

import System.IO

errorPrinter = hPutStrLn stderr "You can't see me!"

说出你的意思,和所有这些。


🚀🌟 点击注册 免费试用超级应用平台-英雄云企业级hpapaas 🌟🚀 😃👉🌐

免责声明:

本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。

标签:零基础Java 库存管理 财务函数
上一篇:使用日期时间进行单元测试-英雄云拓展知识分享
下一篇:红移全外连接未输出null-英雄云拓展知识分享
相关文章

 发表评论

暂时没有评论,来抢沙发吧~