Как установить и использовать F # Powerpack в Mono? - PullRequest
6 голосов
/ 01 июня 2011

Мне нужно установить использовать F # powerpack . Я использую моно версию 2.10.2 на Mac.

mono --version
Mono JIT compiler version 2.10.2 (tarball Mon Apr 18 09:14:01 MDT 2011)
Copyright (C) 2002-2011 Novell, Inc and Contributors. www.mono-project.com
        TLS:           normal
        SIGSEGV:       normal
        Notification:  kqueue
        Architecture:  x86
        Disabled:      none
        Misc:          debugger softdebug 
        LLVM:          yes(2.9svn-mono)
        GC:            Included Boehm (with typed GC)

установка.

  1. Загрузите zip-файл powerpack с здесь .

  2. Распакуйте файл в каталог ~/bin.

  3. Добавьте ~/bin/FSharpPowerPack-1.9.9.9/bin к ПУТИ. Я также добавляю его в MONO_PATH на всякий случай. (Я не уверен, нужно ли это или нет)
  4. Для dll в ~/bin/FSharpPowerPack-1.9.9.9/bin/gac используйте команду sudo gacutil -i <ALL_THE_FILES_IN_DLL>.dll

Использование блока питания

Я тестировал с примером кода в на этой странице . Я называю это linq.fs

open Microsoft.FSharp.Linq
let adderExpr = <@ fun i -> i + 1 @>.ToLinqExpression()
let adder = <@ fun i -> i + 1 @>.Compile()

Вопросы

  1. Я получил ошибки с fsc linq.fs /r:FSharp.PowerPack.Linq.dll. Что может быть не так?

    / Users / smcho / Desktop / fs / powerpack / linq.fs (1,38): ошибка FS0039: поле, конструктор или член 'ToLinqExpression' не определены

    / Users / smcho / Desktop / fs / powerpack / linq.fs (2,34): ошибка FS0039: поле, конструктор или член 'Compile' не определены

  2. Нужно ли устанавливать все dll с gacutil -i? Или просто добавить путь к DLL в переменную окружения PATH / MONO_PATH достаточно?

1 Ответ

4 голосов
/ 01 июня 2011

Ваша процедура установки кажется правильной (просто разархивируйте и установите, используя gacutil -i). Я думаю, что с примером есть небольшая проблема - метод расширения ToLinqExpression доступен в модуле, который нужно явно открыть, поэтому ваш файл должен быть:

РЕДАКТИРОВАТЬ Правильное название модуля на самом деле Microsoft.FSharp.Linq.QuotationEvaluation:

open Microsoft.FSharp.Linq.QuotationEvaluation

let adderExpr = <@ fun i -> i + 1 @>.ToLinqExpression()
let adder = <@ fun i -> i + 1 @>.Compile()
...