为什么EasyPlot在GHCi中使命令不可见?

时间:2015-03-21 08:30:44

标签: haskell

最小的工作示例:

  1. 启动GHCi
  2. import Graphics.EasyPlot
  3. plot X11 sin
  4. 在我的系统上,正如预期的那样,正弦函数的图表出现在窗口中,GHCi显示TrueIO Bool返回plot的值,表示成功的情节)并出现一个新的命令提示符。

    出乎意料的是,当我输入时,在命令提示符下没有文字出现,直到我按下回车键。然后我输入的文本变得可见,GHCi按预期对我输入的任何命令作出反应。当我在下一个命令提示符下键入时,会发生同样的事情。到目前为止,我已经找到了两种让GHCi恢复正常的方法:

    • 正在运行:l以加载文件。
    • 退出并重新启动。

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


    不妨碍行为的事情:

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

    没有让GHCi恢复正常的事情:

    • 运行:m以卸载所有模块。

1 个答案:

答案 0 :(得分:3)

我可以重现你描述的内容(ghc-7.8.4,fedora 21,x86_64,xmonad)。

它不是一个ghci功能,你在shell中获得相同的行为。

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

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

出现Plot窗口,出现shell提示符,但shell(似乎)没有工作。

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