我需要使用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)
安装
从这里下载powerpack zip文件。
将文件解压缩到目录
~/bin
。- 将
~/bin/FSharpPowerPack-1.9.9.9/bin
添加到PATH中。我还将它添加到MONO_PATH中以防万一。(我不确定这是否有必要) - 对于
~/bin/FSharpPowerPack-1.9.9.9/bin/gac
中的dll,请使用命令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()
问题
我的
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"
我需要用
gacutil -i
安装所有dll吗?或者,仅仅将dll路径附加到path/MONO_path环境变量就足够了?
您的安装过程似乎是正确的(只需使用gacutil -i
解压缩并安装即可)。我认为这个示例有一个小问题——ToLinqExpression
扩展方法在需要显式打开的模块中可用,所以你的文件应该是:
EDIT正确的模块名称实际上是Microsoft.FSharp.Linq.QuotationEvaluation
:
open Microsoft.FSharp.Linq.QuotationEvaluation
let adderExpr = <@ fun i -> i + 1 @>.ToLinqExpression()
let adder = <@ fun i -> i + 1 @>.Compile()