2012-08-19 46 views
0

我在Ubuntu中精確使用mono,並按照說明找到的here安裝了F#。 我也安裝了fsharp mode for emacs,所以我能夠測試和編譯簡單的F#程序(都在emacs F#模式REPL,並且還生成我在單聲道下運行的可執行文件)。emacs F#模式REPL ::使用Linq

然而,聲明:

error FS0039: The namespace 'Linq' is not defined 

我發現:

open System.Xml.Linq 

在兩個emacs的F#模式REPL和bash shell中使用相同的錯誤調用fsharpc時失敗一個similar post在SO中用於C#,雖然使用「-r:System.Xml.Linq」的建議不適用於從shell編譯:

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

......我仍然不知道如何使Linq名稱空間可用於Emacs F#模式REPL,因此可以將它用於C-C C-e評估。

+2

是否使用'#r「System.Xml.Linq.dll」'工作? – 2012-08-19 21:59:31

回答

3

正如在評論中提到約翰,如果你想在F#交互引用一個組件(在REPL在Emacs模式下運行),你能做到這一點使用:

#r "System.Xml.Linq.dll" 

當編譯代碼,這命令無效,您必須添加命令行參數-r:System.Xml.Linq.dll。如果你想兩者結合(交互式運行和編譯相同的代碼),您可以使用條件編譯:

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

INTERACTIVE在REPL模式自動定義的符號,因此,如果您選擇並運行這些三線,它應該引用程序集(但是它在編譯時不會破壞你的代碼)。

+0

像一個魅力工作。 – 2012-08-20 19:26:23