我想添加一個F#REPL到我的應用程序進行實時調試。我正在查看fsi.exe
(F#Interactive)的源代碼,並且有很多事情正在進行,看起來像是在與F#編譯器內部進行交流。因爲這個原因,我無法在應用程序的上下文中獲得相同的代碼。如何實現F#Read Eval打印循環(REPL)?
有沒有一個很好的簡單的例子來實現F#REPL的某個地方?我本來希望這很容易。
我想添加一個F#REPL到我的應用程序進行實時調試。我正在查看fsi.exe
(F#Interactive)的源代碼,並且有很多事情正在進行,看起來像是在與F#編譯器內部進行交流。因爲這個原因,我無法在應用程序的上下文中獲得相同的代碼。如何實現F#Read Eval打印循環(REPL)?
有沒有一個很好的簡單的例子來實現F#REPL的某個地方?我本來希望這很容易。
簡短的回答是,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(即使我重複回答...衛生署!)
我已經寫了一系列博客文章中有關使用開放源代碼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
的最後一篇文章是很快跟進。
重複: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