F#交互式应用程序是开源的吗?

时间:2013-12-09 17:53:05

标签: f# f#-interactive

如何在我的脚本编写应用程序中包含fsi REPL?

F# PowerPack似乎没有任何相关内容。

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:4)

一种方法是从问题的评论中提到的几个存储库中学习FSI的来源,然后通过修改源(更改可见性等)以某种方式将其功能暴露给您的应用程序。这种方式显然是陡峭而痛苦的。

幸运的是,这方面的一些工作已经按照FSharp.Compiler.Service的方式进行,所以另一种方法可能是将FSI作为标准化服务嵌入到您的应用程序中。有关将FSI作为服务嵌入的详细信息,请参阅Don Syme和Tomas Petricek在纽约2013 SkillMatters时期提供的以下presentation

该演示文稿提供了Microsoft.FSharp.Compiler.Interactive.Shell命名空间内FSI服务(实验性)实现的链接,因此嵌入可能与下面的代码段一样简单:

open Microsoft.FSharp.Compiler.Interactive.Shell
.....
let fsi = FsiEvaluationSession([| "fsi.exe"; "--noninteractive"|], inStream, outStream, errStream)
.....
match fsi.EvalExpression(codeLines) with
    | Some value -> value.ReflectionValue
    | None -> raise (System.ArgumentException("fsi cannot evaluate expression"))