我通过转换我自己转换旧的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???
但也许有更好的方法来实现我的需要?
答案 0 :(得分:3)
Data.Global
的问题看起来像是一个丢失的Typeable
实例。您可以按如下方式解决此问题:
{-# LANGUAGE StandaloneDeriving, DeriveDataTypeable #-}
import Data.Typeable
import System.Process
deriving instance Typeable (ProcessHandle)