2

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

文件程序.fs:

module mod1
type first =
    |zero = 0

文件 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.
4

1 回答 1

1

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

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

module mod1_mod2
    type first =
      | zero = 0

    and second =
      | zero2 = 0
于 2009-12-08T11:11:44.480 回答