3

我已经尝试了一周让 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 模式使用的)。

4

2 回答 2

3

你用的是什么版本的fsharp-mode?最后一次更新 (v0.3) 是在 VS2010 (F# 2.0) 发布之后,并且发布说明提到在该版本中修复了一个无限循环错误。

fsharp-mode另一种可能性——在Mono 对 F# 的支持之前的最后一次更新,所以我的猜测是 Intellisense 帮助程序项目中的一些代码(在代码/src文件夹中fsharp-mode)依赖于 Windows 特定的行为并且在你运行它时会中断单核细胞增多症。

我认为你最好的办法是在fsharp-opensource邮件列表上重新发布你的问题,因为那里有很多人在 Mono 上运行 F#,并且可能知道如何解决这个问题。

编辑:邮件列表帖子的答案是传递--readline-标志。尾随-关闭 readline 并解决问题。

于 2012-10-26T18:01:29.053 回答
1

答案是使用“--readline-”选项运行 F# 解释器。

应该在 Github 存储库https://github.com/fsharp/fsharp中解决(不需要这个命令行参数)

于 2012-10-30T13:58:34.707 回答