我有一个简单的问题。我试着谷歌一下,但是没有用。
我在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,我认为你总是可以使用
我发现它有点奇怪,因为你的新f#配置应该工作。你是否安装了新的Mono和f#使用或不使用MacPorts,因为它是一个已知的f#在MacPorts上的错误?如果你不使用MacPorts,我的猜测是有一些数据从旧的Mono留下安装在MacPorts上,与新的Mono冲突安装。如果第一个建议不起作用,也许你应该试试遵循以下步骤:
- 删除旧的Mono安装
- 从磁盘映像安装最新的Mono版本:Mono 2.10以后已经包含了f#包,所以不需要单独安装f#包。
在终端上使用- 更新Emacs配置(如果需要)并尝试在Emacs上运行f#。
#quit;;
。解决新问题,你可能会找到答案fsi
测试脚本。我有Mono 2.10与f#运行在我的Mac上(虽然我不使用所以我不认为安装Mono 2.10有任何问题从零开始。
请提供后续信息,如果其中任何一个适合你。