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

在Haskell库中处理System.Process值的最佳方法是什么?,haskell,Haskell,我通过转换OCaml程序来学习Haskell,这些程序本身就是旧Pick Basic程序的转换。我使用ncurses(我正在尝试Haskell中的vtyUI)和一个自编库相结合,该库根据Tk的意愿维护一个开放会话,作为最终转换为完整GUI的开始,但主要用于报告、错误弹出窗口和其他用户反馈 我不希望调用程序必须在每次调用时传递I/O句柄和进程Id。我尝试了Data.Global,但不知道如何存储进程Id。在初始调用时 (hin, hout, herr, hproc) <- runIntera

我通过转换OCaml程序来学习Haskell,这些程序本身就是旧Pick Basic程序的转换。我使用ncurses(我正在尝试Haskell中的vtyUI)和一个自编库相结合,该库根据Tk的意愿维护一个开放会话,作为最终转换为完整GUI的开始,但主要用于报告、错误弹出窗口和其他用户反馈

我不希望调用程序必须在每次调用时传递I/O句柄和进程Id。我尝试了Data.Global,但不知道如何存储进程Id。在初始调用时

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

但是,也许有更好的方法来完成我需要的任务?

您的
数据问题。全局
看起来像是缺少一个
可键入的
实例。您可以按如下方式修复此问题:

{-# LANGUAGE StandaloneDeriving, DeriveDataTypeable #-}

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

谢谢我一直很好奇我自己该如何理解它。@Babu唉,缺少实例错误是GHC最令人困惑的错误消息之一,解释它们是一门艺术。很多时候,真正的原因是完全不同的,你根本不想要这个实例。。。
{-# LANGUAGE StandaloneDeriving, DeriveDataTypeable #-}

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