如何在Mono中安装和使用F#Powerpack?

pro*_*eek 6 mono f# gac powerpack

我需要安装使用F#powerpack.我在Mac上使用单声道版本2.10.2.

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)
Run Code Online (Sandbox Code Playgroud)

安装.

  1. 这里下载powerpack zip文件.

  2. 将文件解压缩到目录~/bin.

  3. 添加~/bin/FSharpPowerPack-1.9.9.9/bin到PATH.我还将它添加到MONO_PATH以防万一.(我不确定这是否有必要)
  4. 对于dll中的dll ~/bin/FSharpPowerPack-1.9.9.9/bin/gac,请使用该命令sudo gacutil -i <ALL_THE_FILES_IN_DLL>.dll

使用powerpack

我使用此页面中的示例代码进行了测试.我把它命名为linq.fs

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

问题

  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环境变量就足够了?

Tom*_*cek 4

您的安装过程似乎是正确的(只需解压并使用 进行安装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()
Run Code Online (Sandbox Code Playgroud)