0

我在 Ubuntu 中使用mono并按照此处的说明安装了 F# 。我还为 emacs 安装了 fsharp 模式,因此能够测试和编译简单的 F# 程序(无论是在emacs F# 模式 REPL上还是生成我在单声道下运行的可执行文件)。

然而,声明:

open System.Xml.Linq

emacs F# 模式 REPL和从 bash shell调用fsharpc时都失败并出现相同的错误:

error FS0039: The namespace 'Linq' is not defined

我在 SO for C# 中找到了一个类似的帖子,尽管使用“-r:System.Xml.Linq”的建议确实适用于从 shell 编译:

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

...我仍然无法弄清楚如何使 Linq 命名空间可用于 emacs F# 模式 REPL,以便我可以将它与 Cc Ce 评估一起使用。

4

1 回答 1

3

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

#r "System.Xml.Linq.dll"

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

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

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

于 2012-08-20T01:49:14.560 回答