6

我对在我的应用程序中使用 F# 脚本的能力感兴趣。

拥有像tryfsharp.org这样的东西会很棒,特别是 Intellisense 功能。这些东西在 Github 上的某个地方可用吗?这是如何运作的?

4

1 回答 1

19

简短的回答

用于第一个带有 F# 2 的 TryFSharp 的代码(包括 Intellisense 支持)可作为code drop获得。例如,Rob Pickering 用它为Undertone构建了一个在线编辑器。我怀疑当前使用 F# 3 的 TryFSharp 网站上使用的代码会及时出现。

TryFSharp 使用 Silverlight 在客户端浏览器中托管 F# 编译器(F# 是用 F# 编写的)。也可以从浏览器按需调用在服务器上运行的 F# 编译器的实例,这是TryFs.NetPit采用的一种方法。

更长的答案

脚本有两个方面:

  1. 编辑
  2. 执行

F# 已经支持通过F# Interactive编辑和执行 (.fsx)脚本文件

编辑 F# 代码

F# 代码不乏外部编辑器:

Xamarin Studio、Emacs 和 Vim 的编辑器支持基于提供代码完成的开源F# Bindings项目。SharpDevelop 使用开源AvalonEdit并包括 F# 的语法高亮。您可以在自己的项目中使用 AvalonEdit,例如开源Refunctor项目使用它在 Reflector 中提供 F# 编辑。

还有几个新的 F# 编辑器即将推出:

AvalonEdit 是开始基于桌面的嵌入式编辑器的好地方。选择编辑器环境后,您需要在简单的语法突出显示或使用 F# 绑定的更高级集成之间进行选择。如果您怀疑人们会使用外部编辑器,那么语法高亮可能就足够了。

带上你自己的编辑器可能是最容易开始的地方,它只需要执行即可。

执行 F# 代码

执行 F# 代码的选项:

使用 F# CodeDOM 编译代码段:

open Microsoft.FSharp.Compiler.CodeDom
open System.CodeDom.Compiler

let compile snippet =
    use provider = new FSharpCodeProvider()
    let options = CompilerParameters(GenerateInMemory=true)
    provider.CompileAssemblyFromSource(options, [|snippet|])

let snippet = """
module Snippet
let x = 1
"""
let results = compile snippet
于 2013-03-10T12:10:36.803 回答