il n'y a pas de reliure d'accompagnement - Qu'est-ce que cela signifie ?Comment ça fonctionne?
-
12-12-2019 - |
Question
Je pratique depuis LYAH.
Le fichier phoneBook.hs contient le code suivant :
annuaire ::[(Chaîne, Chaîne)]
En essayant de compiler le code mentionné ci-dessus, j'obtiens l'erreur suivante :
* Main>: charger "/home/optimight/phonebook.hs" [1 sur 1] Compilant Main (/home/optimight/phonebook.hs, interprété)
/home/optimight/phoneBook.hs:1:1 :La signature de type pour «répertoire» n'a pas de liaison qui accompagne, les modules chargés:aucun.
Question ajoutée après la réponse de brano et le commentaire ultérieur à cette réponse :Comment pouvons-nous implémenter la signature de type mentionnée ci-dessus ?
Si j'ajoute ceci :
tapez phoneBook = [(Chaîne, Chaîne)]
J'obtiens l'erreur suivante :
Prelude>: charger "/home/optimight/phonebook.hs" [1 sur 1] Compilant Main (/home/optimight/phonebook.hs, interprété)
/home/optimight/phoneBook.hs:2:6 :Tête de déclaration de type ou de classe mal formée :Le répertoire a échoué, modules chargés:aucun
La solution
Vous devez fournir une implémentation pour phoneBook.
phoneBook :: [(String, String)]
c'est juste la signature.
Autres conseils
Si vous souhaitez déclarer un type, il doit avoir une majuscule initiale, c'est-à-dire type PhoneBook = [(String, String)]
.
Si vous souhaitez déclarer une fonction, vous devez fournir soit uniquement sa définition (la liaison), soit à la fois sa définition et sa signature de type.L'effort minimal pour compiler votre code est :
phoneBook :: [(String, String)]
phoneBook = undefined
Ensuite, vous pouvez remplacer undefined
avec n'importe quelle valeur de type [(String, String)]
par exemple. [("Person","Number")]
.