在应用程序脚本托管。 tryfsharp.org如何运作?

时间:2013-03-09 16:59:00

标签: f#

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

tryfsharp.org这样的东西会很棒,特别是Intellisense功能。 Github上的任何一个都可用吗?这是如何工作的?

1 个答案:

答案 0 :(得分:19)

简短回答

用于第一次使用F#2剪切TryFSharp的代码(包括Intellisense支持)可用作code drop。举个例子,Rob Pickering为Undertone构建了一个在线编辑器。我怀疑使用F#3的当前TryFSharp站点上使用的代码将及时出现。

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

更长的答案

脚本有两个方面:

  1. 编辑
  2. 执行
  3. F#已经支持通过script files编辑和执行(.fsx)F# Interactive

    编辑F#代码

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

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

    F#还有一些新的编辑器即将出现:

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

    带上你自己的编辑器可能是最简单的开始,只是离开执行。

    执行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