来自F#编译器的Bogus“值的重复定义”错误

时间:2012-05-14 09:05:26

标签: f#

F#编译器有时会使用Duplicate definition of value foo形式的编译时错误拒绝我的代码,该错误指向这样的定义:

let foo = ref 0

即使这不是重复的定义,因为整个文件中没有foo的其他定义。为什么会这样?

1 个答案:

答案 0 :(得分:8)

当您还定义get_foo函数时会发生这种情况:

let get_foo() = !foo

因为foo的定义创建了一个实现自己的get_foo方法的属性,所以存在冲突。 F#编译器对此感到困惑,并生成伪造的“重复定义错误”。

此错误已报告给Microsoft,他们正在修复但它不会进入F#的下一个(VS11)版本。