最小的工作示例:
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/