最小的工作示例:

  • 启动GHCi
  • import Graphics.EasyPlot
  • plot X11 sin

  • 在我的系统上,正如预期的那样,一个正弦函数图出现在一个窗口中,GHCi显示True(IO Bool返回的plot的值,表明绘制成功)并出现一个新的命令提示符。

    出乎意料的是,当我键入内容时,在我按Enter之前命令提示符下不会显示任何文本。然后,我键入的文本将变得可见,并且GHCi对输入的任何命令均会做出预期的 react 。当我在下一个命令提示符下键入时,会发生同样的事情。到目前为止,我已经找到了两种使GHCi恢复正常的方法:
  • 运行:l加载文件。
  • 退出并重新启动。

  • 为什么会发生这种情况,我该如何预防呢?

    不能阻止该行为的事情:
  • 从文件中的plot函数调用main,并使用GHCi中的:main命令运行它。
  • 使用PNG终端绘制到文件,而不是窗口。
  • 使用plot'代替plot

  • 无法使GHCi恢复正常的情况:
  • 运行:m卸载所有模块。
  • 最佳答案

    我可以复制您描述的内容(ghc-7.8.4,fedora 21,x86_64,xmonad)。

    这不是ghci功能,您在shell中会得到相同的行为。

    gnuplot -e "set terminal x11 persist ; plot sin(x)"
    

    (这(大致)是EasyPlot发送到Shell的命令,
    cf. https://hackage.haskell.org/package/easyplot-1.0/docs/src/Graphics-EasyPlot.html#exec)

    出现“绘图”窗口,出现shell提示,但shell无法(似乎)正常工作。

    您可以将鼠标指针移至绘图窗口,然后移回 shell -这似乎可以使它工作。

    关于haskell - 为什么EasyPlot使命令在GHCi中不可见?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29180730/

    10-13 06:04