2 Stimmen

F#-Signatur-Datei-Fehler

Ich habe versucht, eine fsi-Datei zu verwenden, um gegenseitig rekursive Klassen in separaten Dateien zu ermöglichen, aber meine fsi-Datei ließ sich nicht kompilieren. Nachfolgend finden Sie ein einfaches Beispiel, das das Problem veranschaulicht.

Datei program.fs:

module mod1
type first =
    |zero = 0

Datei File1.fs:

module mod2
type second =
    |zero2 = 0

Kompilieren mit --sig:signature.fsi produziert:

#light

module mod1
type first =
  |  zero  =  0

module mod2
type second =
  |  zero2  =  0

Mit einem Fehler in der Zeile

type second

Das ist

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

1voto

Tim Robinson Punkte 51702

Man könnte meinen, dass Signaturdateien dafür da sind (wie C++-Header-Dateien), aber das ist nicht der Fall. Zumindest dachte ich das anfangs.

Die einzige Möglichkeit, gegenseitig rekursive Typen in F# zu definieren, besteht darin, sie in dieselbe Quelldatei zu stellen und die and Stichwort:

module mod1_mod2
    type first =
      | zero = 0

    and second =
      | zero2 = 0

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X