我已经尝试了一周让 F# 交互式在 Emacs 中工作,但我没能做到。
问题是,每当我运行“fsi”或“fsharpi”(使用 fsharp 模式或在 shell 缓冲区中)时,缓冲区都会变得无响应。我检查系统监视器并看到一个使用 100% CPU 的单声道进程,显然我输入的任何内容都没有得到评估。
我在 Emacs 24.1 和 23.2 上试过这个;也在 OS X、Linux Mint 和 Fedora 上,并且都会导致相同的问题。
我尝试过不同版本的单声道(OS X 上的 2.10.9、3.0 和 2.8;Linux Mint 上的 2.10.8.1,在 Fedora 上不记得了)。我也尝试过 F# 2.0 和 3.0;都具有相同的结果。
我也试过在启动解释器时传入“--no-gui”和“--readline”,但没有用。
这基本上是发生了什么
bash-3.2$ fsharpi
Microsoft (R) F# 3.0 Interactive version (Mono build)
Copyright (c) Microsoft Corporation. All Rights Reserved.
For help type #help;;
> - 1+2;;
# after waiting for a minute, I kill the mono process
Killed: 9
bash-3.2$ bash: syntax error near unexpected token `;;'
但是,解释器在“ansi-term”缓冲区上运行时确实可以工作:
bash-3.2$ fsharpi
Microsoft (R) F# 3.0 Interactive version (Mono build)
Copyright (c) Microsoft Corporation. All Rights Reserved.
For help type #help;;
> - 1+2;;
val it : int = 3
我想将它与 fsharp 模式一起使用,以便我可以轻松地将代码发送到解释器。
我还没有看到有人在网上遇到过这种问题,解决这个问题会让开发变得更加方便。
关于如何使它工作的任何想法?
编辑:正如预期的那样,在 comint 模式下运行它也会“挂起”(comint 是 fsharp 模式使用的)。