从这个线程 http://groups.google.com/group/leksah/browse_thread/thread/7d3e3bf64e56f190/30278795c23b2168
这是一个已知的问题,我们还没有解决。我们将GCHi命令发送到它的标准输入,但是我们也没有好的方法来发送用户输入。
我不知道我们应该如何解决这个问题。我们无法将用户输入发送到正在使用我们的命令通道进行调试的进程(我们的代码在发送命令之前等待ghci的提示)。
如果我们设置某种方式将数据发送到标准输入不经等待,它可能会干扰我们发送的GHCi命令(因为它仍然在同一根管道中)。
我们需要了解是否有某种方式可以让GHCi本身和GHCi正在调试的程序分开stdin/stdout/stderr管道。
同时,您可能需要打开一个套接字或命名管道,然后将输入写入另一个终端。事情是这样的(未测试)...
main = do
sock <- listenOn (PortNumber 8000)
-- Start a new terminal window (this command needs to be changed for OS X or Windows)
forkIO $ system "gnome-terminal -e \"telnet localhost 8000\""
(handle, _, _) <- accept sock -- Wait for the new terminal to connect
-- You might want to add a call to hSetBuffering here
line <- hGetLine handle
print line
sClose sock
(您将需要添加工艺和网络软件包的依赖关系,然后按Ctrl + R应该添加import语句需要。)
这将使互动,但保持stdin明确leksah与ghci交谈。理想情况下,你应该保持stdout和stderr清晰,然后写入这个套接字,但Leksah应该可以很好地处理任意输出。
+1我可以复制此行为(或更确切地说,非行为),Windows 7 32位,GHC 7.0.3,Leksah 0.10.0.4。在等待getLine或类似的时候什么都不输出,然后当我改变文件时它会中断程序,导致它最终打印出“Prompt:”。 –