首页 > 解决方案 > 如何使用 RIO 库将内容打印到标准输出

问题描述

人们在使用 RIO 库时如何将内容打印到标准输出?

我已经阅读了 RIO github 上的讨论:

https://github.com/commercialhaskell/rio/issues/5#issuecomment-355061756

但找不到解决办法。

标签: haskell

解决方案


标准方法是使用日志功能

#!/usr/bin/env stack
-- stack --resolver lts-13.19 script
{-# LANGUAGE OverloadedStrings #-}

import RIO

main :: IO ()
main = runSimpleApp $ do logInfo "Hello World"

在执行它们时:

$ stack rio.hs
Hello World

您还可以使用logOptionsHandle将任何类型的传递Handle给它(stdout如果您希望在文件上进行日志记录,则包括文件句柄)并进行相应的配置。如果需要,您甚至可以使用 Prelude print,但与上面的日志记录方法不同,它效率不高且不是线程安全的,这意味着它可能导致并发设置中的交错输出:

import Prelude (print)
import RIO

main :: IO ()
main = runSimpleApp $ do liftIO $ print "hello"

这里有关于 rio的更详细的文档。


推荐阅读