开发者

F# signature file error

开发者 https://www.devze.com 2022-12-13 17:02 出处:网络
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.

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

精彩评论

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