【问题标题】:How do I implement an F# Read Eval Print Loop (REPL)?如何实现 F# 读取评估打印循环 (REPL)?
【发布时间】:2011-02-15 16:58:43
【问题描述】:

我想将 F# REPL 添加到我的应用程序以进行实时调试。我正在查看fsi.exe(F# Interactive)的源代码,其中有很多东西看起来像是在使用 F# 编译器内部结构。因此,我无法在我们的应用程序上下文中编译相同的代码。

是否有一个很好的简单示例在某处实现 F# REPL?我希望这很容易。

【问题讨论】:

标签: f# read-eval-print-loop


【解决方案1】:

简短的回答是,F#(很遗憾)目前不提供任何 API 来在您的应用程序中托管 F# Interactive。很多人都在问这个问题 - 例如,请参阅 SO question

您基本上可以做两件事:

  • 您可以修改open-source release 并将fsi.exe 编译为可以提供所需API 的DLL 库。这不是一个简单的任务 - F# Interactive 与编译器紧密绑定(它编译您即时输入的代码),但是将实现 REPL 的类型封装成您可以调用的某种类型应该是可行的(但您不能只取一些从中提取文件 - 您需要编译整个 F# 才能使其正常工作)。

  • 您可以像 Visual Studio 那样将 fsi.exe 作为单独的进程运行,并使用标准输入/输出向其发送命令。您可以通过在fsi.exe 启动时加载库来获得更多的灵活性。该库可以使用 .NET Remoting 连接回您的应用程序并公开一些数据。

不幸的是,这两个选项可能是您目前唯一可以做的事情。

编辑 我以为我已经在某个地方(可能在电子邮件中)回答了这个问题,但不能
找到它!感谢 Mauricio,他找到了 exact duplicate(即使我的答案重复了……Doh!)

【讨论】:

    【解决方案2】:

    我写了一系列关于在内部使用开源 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

    最后一篇文章即将发布。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多