Mono,F#库不能在Mac OSX下运行

时间:2011-11-18 23:16:49

标签: macos f# mono f#-interactive

我有一个非常简单的问题。我试图谷歌,但无济于事。

我在OSX中使用Macports安装了Mono和F#。 F#interactive中存在一些错误,但如果您使用F#模式从emacs中调用它,它仍然可用。

现在,问题在于尽管F#存在并且有效,但即使是最简单的库/函数也不可用。 例如,以下代码无法运行,无法找到错误,总和 out

let sumMultiples n =
    [1..n]
    |> List.filter (fun i -> (i%3 = 0 || i%5 = 0))
    |> List.sum

let out = sumMultiples 999

printfn "%d" out

给出的错误是:

test.fs(6,12): error FS0039: The value, constructor, namespace or type 'sum' is not defined.


test.fs(10,17): error FS0039: The value or constructor 'out' is not defined.
stopped due to error

我在这里错过了什么?

2 个答案:

答案 0 :(得分:2)

以下是我最近编写的一些说明,用于让F#在Mono下工作(在Mac上) https://github.com/Phrogz/laink/wiki/F%23s-on-Mac

您可以按照以下步骤操作代码:

~/code/fs harold$ cat test.fs
let sumMultiples n =
    [1..n]
    |> List.filter (fun i -> (i%3 = 0 || i%5 = 0))
    |> List.sum

let out = sumMultiples 999

printfn "%d" out

~/code/fs harold$ fsc test.fs
Microsoft (R) F# 2.0 Compiler build 2.0.0.0
Copyright (c) Microsoft Corporation. All Rights Reserved.

~/code/fs harold$ mono test.exe
233168

答案 1 :(得分:2)

这是与@jbssm通过评论进行讨论的摘要:

  • 原始配置是Mono 2.10.6和F#1.9.4.19(旧的F# 通过MacPorts安装的版本可追溯到2008年。他的尝试 删除这些包并从磁盘映像安装Mono获取 测试代码工作,但每当导致奇怪的错误Failed to install ctrl-c handler - Ctrl-C handling will not be available. Error was: Exception has been thrown by the target of an invocation. 开始fsi。

让我们从这里开始回答:

  1. 为了在没有Ctrl-C的情况下退出fsi,我想你总是可以使用 #quit;;要解决新问题,您可能会发现the following question的答案很有帮助。
  2. 我发现它有点奇怪,因为你的新F#配置 应该管用。 您是否使用或不使用MacPorts安装了新的Mono和F#,因为它是MacPorts上的known bug F#?如果您不使用MacPorts,我猜是有一些数据来自老单声道 在MacPorts上安装与新Mono冲突 安装。如果第一个建议不起作用,也许你应该这样做 请按照以下程序:

    1. Remove old Mono installation
    2. Install latest Mono version from disk image:Mono 2.10以后已包含F#包,因此无需单独安装 F#包。
    3. 在终端上使用fsi试用您的测试脚本。
    4. 更新Emacs配置(如果需要)并尝试在Emacs上运行F#。
    5. 我的Mac上有运行F#的Mono 2.10(虽然我不使用 Emacs),所以我认为安装Mono 2.10没有任何问题 从头开始。

      如果其中任何一项适合您,请提供后续信息。