如何在Emacs (*nix)中运行F#交互

3
我已经试了一个星期在Emacs中运行F# interactive,但一直没有成功。
问题是无论我使用fsharp模式还是在shell缓冲区中运行"fsi"或"fsharpi",缓冲区都会变得无响应。我检查系统监视器并看到一个mono进程使用100%的CPU,显然我输入的任何内容都不会被评估。
我在Emacs 24.1和23.2上尝试过这个方法;也在OS X、Linux Mint和Fedora上尝试过,所有情况都导致完全相同的问题。
我尝试了不同版本的mono(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模式使用的)。
2个回答

3
你使用的 fsharp-mode 版本是什么?最后一次更新(v0.3)是在 VS2010(F# 2.0)发布后,发行说明中提到该版本修复了一个无限循环 bug。
另一个可能性是,fsharp-mode 的最后一次更新早于 Mono 对 F# 的支持,因此我猜测 IntelliSense 辅助程序项目中的某些代码(位于 fsharp-mode 代码的 /src 文件夹中)依赖于特定于 Windows 的行为,并且在运行时在 Mono 上运行时会出现问题。
我认为你最好重新在 fsharp-opensource 邮件列表上发布你的问题,因为那里有许多在 Mono 上运行 F# 的人,他们可能知道如何解决这个问题。
编辑:来自邮件列表帖子的答案是传递 --readline- 标志。末尾的 - 关闭 readline 并解决了问题。

感谢您的回复!我刚将其发布到该邮件列表。澄清一下,我正在使用fsharp-mode 0.3(最新版本),而无限循环问题似乎是由于某些缩进引起的;这发生在启动fsi之后。 - dud5

1

解决方法是使用选项“--readline-”运行F#解释器。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接