开发者

F# signature file error

I was trying to use a fsi file to allow mutually recursive classes in separate files, but my fsi file did not compile. Below is a simple example which demonstrates开发者_开发技巧 the problem.

File program.fs:

module mod1
type first =
    |zero = 0

File File1.fs:

module mod2
type second =
    |zero2 = 0

Compiling with --sig:signature.fsi produces:

#light

module mod1
type first =
  |  zero  =  0

module mod2
type second =
  |  zero2  =  0

Which has an error on the line

type second

Which is

Error   1   Unexpected keyword 'type' in signature file. Expected ':', '=' or other token.


You'd think that this is what signature files are for (like C++ header files), but it's not. At least, that's what I thought at first.

The only way to define mutually recursive types in F# is to put them in the same source file and use the and keyword:

module mod1_mod2
    type first =
      | zero = 0

    and second =
      | zero2 = 0
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜