Mono, f#库不能在Mac OSX下工作



我有一个简单的问题。我试着谷歌一下,但是没有用。

我在OSX中安装了Mono和f#与Macports。在f#交互中有一些bug,但如果你用f#模式从emacs调用它,它仍然是可用的。

现在的问题是,虽然f#在那里,工作,甚至最简单的库/函数是不可用的。例如,下面的代码不能运行,因为它找不到错误,既不能sum,也不能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

我错过了什么?

以下是我最近写的一些关于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

这是通过评论与@jbssm讨论的总结:

  • 原始配置是Mono 2.10.6和f# 1.9.4.19(旧的f#)版本可以追溯到2008年)通过MacPorts安装。他的尝试从磁盘映像中删除这些包并安装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没有Ctrl-C,我认为你总是可以使用#quit;;解决新问题,你可能会找到答案
  1. 我发现它有点奇怪,因为你的新f#配置应该工作。你是否安装了新的Mono和f#使用或不使用MacPorts,因为它是一个已知的f#在MacPorts上的错误?如果你不使用MacPorts,我的猜测是有一些数据从旧的Mono留下安装在MacPorts上,与新的Mono冲突安装。如果第一个建议不起作用,也许你应该试试遵循以下步骤:

    1. 删除旧的Mono安装
    2. 从磁盘映像安装最新的Mono版本:Mono 2.10以后已经包含了f#包,所以不需要单独安装f#包。
  2. 在终端上使用fsi测试脚本。
  3. 更新Emacs配置(如果需要)并尝试在Emacs上运行f#。

我有Mono 2.10与f#运行在我的Mac上(虽然我不使用所以我不认为安装Mono 2.10有任何问题从零开始。

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

最新更新