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