我在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评估。
答案 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模式下自动定义的,所以如果选择并运行这三行,它应该引用程序集(但编译时不会破坏你的代码)。