将F#文件拆分为多个文件时出现问题

时间:2011-08-30 00:03:41

标签: .net f#

我正在尝试将多个文件中的F#文件分开,尽管我目前卡住了。我尝试将原始Main.fs中的以下行传递给Ast.fs。在Ast.fs中,我提出了:

...
type StartPosition = Position
type EndPosition = Position
type TokenPosition = TokenPosition of StartPosition * EndPosition
...

然后我添加了

open Ast

到我的Main.fs。在尝试构建时,我现在收到以下错误

This expression was expected to have type     StartPosition    but here has type     Position

超过spep

let parse_token token = pipe3 getPosition token getPosition (fun sp t ep -> (t, TokenPosition(sp, ep)))

我觉得这没有多大意义,因为StartPositionEndPosition只不过是位置的“typedef”。这有什么不对?

1 个答案:

答案 0 :(得分:4)

如果StartPosition只是Position的别名,则不应收到此错误消息,因此必定还有其他错误。如果没有更完整的样本,很难说清楚,但这里有几件事需要检查:

  • 您指的是正确的Position类型吗? (您可以通过查看将鼠标指针放在类型名称上时获得的工具提示来检查有关类型的完整信息)

  • Position类型只在一个文件中定义吗? (如果另一个文件重新定义它,那么你有两个不同类型的名为Position