В приложении скрипт хостинга. Как tryfsharp.org работа?

меня интересует возможность иметь сценарии F# в моем приложении.

имея что-то вроде tryfsharp.org было бы здорово, в частности, возможность Intellisense. Что-нибудь из этого доступно на Github где-нибудь? Как это работает?

1 ответов


короткий ответ:

код, используемый для первого разреза TryFSharp с F# 2, который включает поддержку Intellisense, доступен как падение код. В качестве примера Роб Пикеринг построил онлайн-редактор для вполголоса С ним. Я подозреваю, что код, используемый на текущем сайте TryFSharp, который использует F# 3, появится вовремя.

TryFSharp использует Silverlight для размещения компилятора F# в браузере клиента (F# написан на F#). Это также можно вызвать экземпляр компилятора F#, работающего на сервере, из браузера по требованию, что является подходом, принятымTryFs.Net и Пит.

более длинный ответ

существует две стороны сценариев:

  1. редактирование
  2. исполнение

F# уже поддерживает редактирование и выполнение (.в FSX) файлы скрипта via F# Интерактивный.

Редактирование Кода F#

нет недостатка во внешних редакторах для кода F#:

поддержка редактора для Xamarin Studio, Emacs и Vim основана на open source F# Для Привязки project, который обеспечивает завершение кода. SharpDevelop использует открытый исходный код AvalonEdit и включает подсветку синтаксиса для F#. Вы можете использовать AvalonEdit в своих проектах, например open source Refunctor проект использует его для обеспечения редактирования F# внутри рефлектора.

есть еще пара о новых редакторах F# on the horizon:

AvalonEdit-хорошее место для запуска встроенного редактора на настольном компьютере. После того, как вы выбрали среду редактора, вам нужно выбрать между простой подсветкой синтаксиса или более продвинутой интеграцией с помощью Привязок F#. Если вы подозреваете, что люди будут использовать внешнюю редактор с подсветкой синтаксиса может быть достаточно.

принесите свой собственный редактор, вероятно, самое простое место для начала, которое просто оставляет выполнение.

Выполнение Кода F#

параметры для выполнения кода F#:

компиляция a фрагмент с 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