我正在尝试将多个文件中的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
超过sp
和ep
:
let parse_token token = pipe3 getPosition token getPosition (fun sp t ep -> (t, TokenPosition(sp, ep)))
我觉得这没有多大意义,因为StartPosition
和EndPosition
只不过是位置的“typedef”。这有什么不对?
答案 0 :(得分:4)
如果StartPosition
只是Position
的别名,则不应收到此错误消息,因此必定还有其他错误。如果没有更完整的样本,很难说清楚,但这里有几件事需要检查:
您指的是正确的Position
类型吗? (您可以通过查看将鼠标指针放在类型名称上时获得的工具提示来检查有关类型的完整信息)
Position
类型只在一个文件中定义吗? (如果另一个文件重新定义它,那么你有两个不同类型的名为Position
)