2011-02-15 33 views
7

我想添加一個F#REPL到我的應用程序進行實時調試。我正在查看fsi.exe(F#Interactive)的源代碼,並且有很多事情正在進行,看起來像是在與F#編譯器內部進行交流。因爲這個原因,我無法在應用程序的上下文中獲得相同的代碼。如何實現F#Read Eval打印循環(REPL)?

有沒有一個很好的簡單的例子來實現F#REPL的某個地方?我本來希望這很容易。

+3

重複:http://stackoverflow.com/questions/1563024/embedding-f-interactive http://stackoverflow.com/questions/4637181/fsi-exe-assembly-anyone-know-how-to-embed-它 – 2011-02-15 17:45:59

回答

5

簡短的回答是,F#(unfortunatelly)目前不提供任何API用於在您的應用程序中託管F#Interactive。有很多人要求這一點 - 例如見SO question

基本上有兩兩件事你可以做有關:

  • 可以修改open-source release和編譯fsi.exe一些DLL庫,將提供您所需的API。這不是一項簡單的任務 - F#Interactive與編譯器緊密相連(它編譯您即時輸入的代碼),但應該可以將實現REPL的類型封裝成您可以調用的某種類型(但是,您不能僅僅採用一些文件脫離它 - 你需要編譯整個F#來獲得這個工作)。

  • 您可以運行fsi.exe作爲Visual Studio獨立的進程,並使用標準輸入/輸出將命令發送給它。當fsi.exe開始時,您可以通過加載您的圖書館來獲得更大的靈活性。該庫可以使用.NET Remoting連接回您的應用程序並公開一些數據。

不幸的是,這兩個選項可能是目前唯一可以做的事情。

編輯我在想,我已經某處(也許包括電子郵件)中回答了這個問題,但無法
找到它!由於毛誰發現了exact duplicate(即使我重複回答...衛生署!)

1

我已經寫了一系列博客文章中有關使用開放源代碼F#互動裏面的可執行文件和WPF應用程序。

代碼庫可在github - https://github.com/oriches/Simple.Wpf.FSharp.Repl

的系列博客文章有:

http://awkwardcoder.blogspot.co.uk/2013/12/simple-f-repl-in-wpf-part-1.html

http://awkwardcoder.blogspot.co.uk/2013/12/simple-f-repl-in-wpf-part-2.html

http://awkwardcoder.blogspot.co.uk/2013/12/simple-f-repl-in-wpf-part-3.html

的最後一篇文章是很快跟進。