Как установить и использовать F# Powerpack в Mono?

Мне нужно установить использовать 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 ответ

Решение

Ваша процедура установки кажется правильной (просто распакуйте и установите, используя 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()
Другие вопросы по тегам