2011-08-30 45 views
0

我试图在多个文件中分离F#文件,尽管我当前被卡住了。我试过从我的原始Main.fs传递以下行到Ast.fs。在Ast.fs我已经把:将F#文件拆分为多个文件时出现的问题

... 
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没有不止是Position的“typedefs”。这里有什么问题?

回答

4

如果StartPosition只是Position的别名,那么您不应该收到此错误消息,因此必须有其他问题出错。这是很难说没有更多完整的示例,但这里有一些事情要检查:

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

  • Position类型是否仅在单个文件中定义? (如果另一个文件重新定义它,那么你会有两种不同的名字Position

+1

Spot on!忘了在我的AST.fs.中“打开FParsec”。 –