fehlt eine begleitende Bindung - Was bedeutet das?Wie es funktioniert?
-
12-12-2019 - |
Frage
Ich übe von LYAH aus.
Telefonbuch.hs-Datei enthält folgenden Code:
Telefonbuch ::[(Zeichenfolge, Zeichenfolge)]
Beim Versuch, den oben genannten Code zu kompilieren, erhalte ich folgende Fehlermeldung:
* Haupt> : laden "/ home / optimight / Telefonbuch.hs" [1 von 1] Kompilieren von Main ( / home / optimight / Telefonbuch.hs, gedolmetscht )
/ zuhause / optimight / Telefonbuch.hs: 1:1:Der Typensignatur für 'Telefonbuch' fehlt eine begleitende Bindung Fehlgeschlagen, Module geladen:kein.
Frage nach Branos Antwort und anschließendem Kommentar zu dieser Antwort hinzugefügt:Wie stellen wir die Implementierung für die oben genannte Typensignatur bereit?
Wenn ich das hinzufüge :
typ Telefonbuch = [(Zeichenfolge, Zeichenfolge)]
Ich erhalte folgenden Fehler:
Vorspiel>: laden "/ home / optimight / Telefonbuch.hs" [1 von 1] Kompilieren von Main ( / home / optimight / Telefonbuch.hs, gedolmetscht )
/ zuhause / optimight / Telefonbuch.hs: 2:6 Uhr:Fehlerhafter Kopf der Typ- oder Klassendeklaration:Telefonbuch Fehlgeschlagen, Module geladen:kein
Lösung
Sie müssen eine Implementierung für das Telefonbuch angeben.
phoneBook :: [(String, String)]
ist nur die Signatur.
Andere Tipps
Wenn Sie einen Typ deklarieren möchten, muss er anfangs Großbuchstaben haben, dh. type PhoneBook = [(String, String)]
.
Wenn Sie eine Funktion deklarieren möchten, müssen Sie entweder nur ihre Definition (die Bindung) oder sowohl ihre Definition als auch ihre Typensignatur angeben.Der minimale Aufwand zum Kompilieren Ihres Codes beträgt:
phoneBook :: [(String, String)]
phoneBook = undefined
Dann können Sie ersetzen undefined
mit einem beliebigen Wert vom Typ [(String, String)]
beispielsweise. [("Person","Number")]
.