2

fsi ファイルを使用して、個別のファイルで相互に再帰的なクラスを許可しようとしましたが、fsi ファイルがコンパイルされませんでした。以下は、問題を示す簡単な例です。

ファイル program.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 に答える