我已经尝试了一个星期让E#中的F#互动工作,我还没有能够。
问题在于,无论何时我运行" fsi"或" fsharpi" (使用fsharp模式或在shell缓冲区中),缓冲区变得无响应。我检查系统监视器并看到使用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模式使用的)。
答案 0 :(得分:3)
您使用的是什么版本的fsharp-mode
?最后一次更新(v0.3)就在VS2010(F#2.0)发布之后,release notes提到在该版本中修复了无限循环错误。
另一种可能性 - fsharp-mode
的最后一次更新早于Mono对F#的支持,所以我的猜测是Intellisense助手项目中的一些代码(在/src
的{{1}}文件夹中代码)依赖于Windows特定的行为,并在Mono上运行它时会中断。
我认为让这项工作最好的办法就是在fsharp-opensource邮件列表上重新发布您的问题,因为那里的许多人都在Mono上运行F#,并且可能知道如何解决问题。
编辑:mailing list post的答案是传递fsharp-mode
标志。尾随--readline-
关闭了readline并解决了问题。
答案 1 :(得分:1)
答案是使用“--readline - ”选项运行F#解释器。
应该在Github存储库https://github.com/fsharp/fsharp中解决(不需要此命令行参数)