F#签名文件错误

时间:2009-12-08 11:01:10

标签: f# signature-files

我试图使用fsi文件在单独的文件中允许相互递归的类,但我的fsi文件没有编译。下面是一个演示此问题的简单示例。

文件program.fs:

module mod1
type first =
    |zero = 0

File File1.fs:

module mod2
type second =
    |zero2 = 0

使用--sig:signature.fsi进行编译会产生:

#light

module mod1
type first =
  |  zero  =  0

module mod2
type second =
  |  zero2  =  0

哪一行有错误

type second

哪个是

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

1 个答案:

答案 0 :(得分:1)

您认为这是签名文件的用途(如C ++头文件),但事实并非如此。至少,这就是我一开始的想法。

在F#中定义相互递归类型的唯一方法是将它们放在同一个源文件中并使用and关键字:

module mod1_mod2
    type first =
      | zero = 0

    and second =
      | zero2 = 0