我对能够在我的应用中使用F#脚本感兴趣。
像tryfsharp.org这样的东西会很棒,特别是Intellisense功能。 Github上的任何一个都可用吗?这是如何工作的?
答案 0 :(得分:19)
简短回答
用于第一次使用F#2剪切TryFSharp的代码(包括Intellisense支持)可用作code drop。举个例子,Rob Pickering为Undertone构建了一个在线编辑器。我怀疑使用F#3的当前TryFSharp站点上使用的代码将及时出现。
TryFSharp使用Silverlight在客户端浏览器中托管F#编译器(F#用F#编写)。也可以根据需要从浏览器调用服务器上运行的F#编译器实例,这是TryFs.Net和Pit采用的方法。
更长的答案
脚本有两个方面:
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