emacs F#mode REPL ::使用Linq

时间:2012-08-19 18:40:57

标签: linq emacs f#

我在Ubuntu中使用mono精确,并按照找到here的说明安装了F#。 我还安装了fsharp mode for emacs,因此能够测试和编译简单的F#程序(两者都在 emacs F#mode REPL 上,并且还生成我在单声道下运行的可执行文件。)

然而,声明:

open System.Xml.Linq
emacs F#mode REPL 中的

失败,并且从bash shell调用 fsharpc 时出现同样的错误:

error FS0039: The namespace 'Linq' is not defined

我在C#中找到了similar post,虽然使用“-r:System.Xml.Linq”的建议适用于shell的编译:

fsharpc -r:System.Xml.Linq.dll parseemails.fs 

...我仍然无法弄清楚如何使Linq命名空间可用于emacs F#mode REPL,所以我可以将它用于C-c C-e评估。

1 个答案:

答案 0 :(得分:3)

正如John在评论中提到的,如果你想引用F#interactive中的一个程序集(在emacs模式下运行的REPL),你可以使用:

#r "System.Xml.Linq.dll"

编译代码时,此命令无效,您必须添加命令行参数-r:System.Xml.Linq.dll。如果要将两者结合起来(以交互方式运行并编译相同的代码),可以使用条件编译:

#if INTERACTIVE
#r "System.Xml.Linq.dll"
#endif

符号INTERACTIVE是在REPL模式下自动定义的,所以如果选择并运行这三行,它应该引用程序集(但编译时不会破坏你的代码)。