gpt4 book ai didi

haskell - 如何将文本发送到 GHCi 进程?

转载 作者:行者123 更新时间:2023-12-04 19:02:02 27 4
gpt4 key购买 nike

我正在处理 Haskell presentation engine Howerpoint .它在 GHCi 中运行。我想创建一个函数,该函数将向当前正在运行的 GHCi session 输出一条语句。它必须在 Linux 和 Mac 上运行,Windows 不是必需的。函数可能会有类型

executeStatement :: String -> IO ()

我已经尝试过的:
  • getProcessIDgetParentProcessID然后发送类似的东西
    echo 'xxx' > /proc/92856/fd/1
    -bash: /proc/92856/fd/1: No such file or directory
  • 我也试过 runCommand但它在 Bash 中而不是在 GHCi 中执行命令,所以我得到了找不到命令的错误
  • xdotool无法在 mac 上运行
  • 最佳答案

    您可以使用 ghcid来自 hackage 的项目来评估表达式。它们不会在与您当前正在运行的同一 session 中进行评估,但您仍然可以在 session 中发送表达式并读取它们的输出。
    下面是一个例子:

    import Language.Haskell.Ghcid

    main :: IO ()
    main = do
    (g, _) <- startGhci "ghci" (Just ".") True
    let executeStatement = exec g
    executeStatement "let x = 33"
    executeStatement "x + 8" >>= print . head
    executeStatement "print x" >>= print . head
    stopGhci g

    输出是“41”“33”,g 代表一个 ghci session 。

    如果你真的需要在已经运行的 ghci 实例中执行表达式,你可以看看这个函数 - startGhci而不是创建一个新进程,您必须利用现有进程,然后设置 std_in、std_out 和 std_err。

    关于haskell - 如何将文本发送到 GHCi 进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35331801/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com