在Haskell库中处理System.Process值的最佳方法是什么?

时间:2014-05-07 09:01:53

标签: haskell

我通过转换我自己转换旧的Pick Basic程序的OCaml程序来学习Haskell。我使用ncurses(我在Haskell中尝试vty-ui)与一个自编写的库相结合,该库保持一个开放会话,以Tk的愿望作为最终转换为完整GUI的开始,但主要用于报告,错误弹出窗口和其他用户反馈。

我不希望调用程序必须通过I / O句柄并在每次调用时处理Id。我已经尝试过Data.Global,但无法弄清楚如何存储进程ID。在初次通话时,

(hin, hout, herr, hproc) <- runInteractiveCommand "wish"
...
let gvProc = declareMVar "wish-proc" hproc

给出编译器错误&#34;没有使用&#34; declareMVar&#34;

引起的(Data.Typeable.Internal.Typeable ProcessHandle)实例

如果我试图将声明置于最高级别:

gvProc = declareMVar "wish-proc" ???What do I put here???

但也许有更好的方法来实现我的需要?

1 个答案:

答案 0 :(得分:3)

Data.Global的问题看起来像是一个丢失的Typeable实例。您可以按如下方式解决此问题:

{-# LANGUAGE StandaloneDeriving, DeriveDataTypeable #-}

import Data.Typeable
import System.Process
deriving instance Typeable (ProcessHandle)