You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用hint库执行runStmt时重定向无输出的技术问题

问题:hint库解释器内的print输出无法被重定向捕获

运行以下Haskell模块:

module Main where

import Language.Haskell.Interpreter

main :: IO ()
main = do
  _ <- runInterpreter
     $ setImports ["Prelude"]
    >> runStmt "x <- pure 42"
    >> runStmt "print x"
  return ()

执行命令 stack run > 42.txt 进行输出重定向时,42.txt文件中无任何内容。

经分析,这是因为hint库的解释器内部运行的print操作,其输出是通过管道传输的,并非直接使用主进程的标准输出,和常规主模块中调用print的情况不同。

以下是进程文件描述符的查看结果(ls -l /proc/<pid>/fd):

lrwx------ 1 user user 64 31 mei 20:50 0 -> /dev/pts/4
lrwx------ 1 user user 64 31 mei 20:50 1 -> /dev/pts/4
lrwx------ 1 user user 64 31 mei 20:50 2 -> /dev/pts/4
lrwx------ 1 user user 64 31 mei 20:50 3 -> 'anon_inode:[timerfd]'
lr-x------ 1 user user 64 31 mei 20:50 4 -> 'pipe:[2705380]'
lr-x------ 1 user user 64 31 mei 20:50 6 -> 'pipe:[2705381]'

内容的提问来源于stack exchange,提问作者sjb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:42:34