【发布时间】:2011-10-20 06:55:39
【问题描述】:
我在 F# 中有一些运行良好的代码,但现在任何函数都返回带有 @ + 行号的 let 绑定的名称?所以在我做这样的事情之前:
let sqlData = GetSummary 2011
我会得到数据。现在我得到 sqlData@160 作为返回类型,它破坏了其他期望特定类型的函数。任何关于为什么突然开始发生这种情况的帮助将不胜感激。
更新: 所以我把 GetSummary 代码改成这样,看看会发生什么:
let GetSummary fiscalYear =
let g = 22
g
什么都没有改变。我得到了完全相同的结果,即使我有一个断点,它也不会中断函数。它也不会进入 GetSummary。为什么它会忽略某些功能而不忽略其他功能?
【问题讨论】:
-
你能贴出GetSummary的代码吗?
-
我的猜测是,它开始推断出与您预期不同的类型,并且这些类型正在以令人惊讶的方式在您的程序中传播。
-
Get Summary 调用其他一些从 SQL Server 返回数据的函数以及自定义类型。甚至其他基本功能也没有正确返回,然后其他的会。我不确定为什么。 Gabe,不,它没有错误地推断类型,它正在将返回类型更改为不存在的 sqlData@160。奇怪的是它不会单步执行 GetSummary 函数。这就像它为代码放置一个书签。懒惰的执行坏了?
-
在Gist 上发布整个代码并链接到它。 某事已关闭。