Bonjour,
Cet après-midi, j'ai commencé à coder un carnet d'adresse.
J'ai créé un type identité qui peut contenir un nom, un prénom, un age, un numéro de téléphone, une adresse; tous sont de type string .
J'ai implémenté le constructeur, des accesseurs, et une fonction pour afficher l'identité.
Bon, tout ça est dans un module à part: identite, et je l'ai testé et je crois qu'il marche.
Ensuite, là ou ça me pose problème:
J'ai créé un module carnetAdresse qui contiendra toutes les fonctions du carnet d'adresse. Il n'y a qu'une seule fonction pour l'instant. Voici le code du module:
Et le code de son interface:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 open Identite let (ajouterAdresse : identite -> string -> unit) = fun mon_adresse nom_carnet -> output nom_carnet ((nom mon_adresse) ^ "\n") 0 (String.length ((nom mon_adresse) ^ "\n")) output nom_carnet ((prenom mon_adresse) ^ "\n") 0 (String.length ((prenom mon_adresse) ^ "\n")) output nom_carnet ((age mon_adresse) ^ "\n") 0 (String.length ((age mon_adresse) ^ "\n")) output nom_carnet ((nbTel mon_adresse) ^ "\n") 0 (String.length ((nbTel mon_adresse) ^ "\n")) output nom_carnet ((adresse mon_adresse) ^ "\n") 0 (String.length ((nbTel mon_adresse) ^ "\n"))
J'ai compilé ces trois modules, bien qu'ils ne fassent rien:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 type identite val ajouterAdresse : identite -> string -> unit
Je ne comprends pas du tout cette erreur, pouvez vous m'aider s'il vous plaît ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ocamlc -o carnet.exe identite.mli identite.ml carnetAdresse.mli carnetAdresse.ml File "carnetAdresse.ml", line 4 characters 4-10: Error: This function is applied to too many arguments, maybe you forgot a ';'
Merci d'avance !
Cordialement,
Lucky-84
EDIT: cette erreur est corrigée, j'avais oubliés les points virgules
Nouvelle erreur :
Je ne sais pas exactement ce que je dois faire: un open_in ou un open_out, sachant que je veux juste rajouter quelque chose dans le fichier...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 File "carnetAdresse.ml", line 4, characters 11-21: Error: this expression has type string but is here used with type out_chaner
EDIT2: erreur corrigée, voici le nouveau code (j'ai bien sure modifié l'interface ):
Et voici la nouvelle erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 open Identite let (ajouterAdresse : identite -> out_channel -> unit) = fun mon_adresse nom_carnet -> output nom_carnet ((nom mon_adresse) ^ "\n") 0 (String.length ((nom mon_adresse) ^ "\n")); output nom_carnet ((prenom mon_adresse) ^ "\n") 0 (String.length ((prenom mon_adresse) ^ "\n")); output nom_carnet ((age mon_adresse) ^ "\n") 0 (String.length ((age mon_adresse) ^ "\n")); output nom_carnet ((nbTel mon_adresse) ^ "\n") 0 (String.length ((nbTel mon_adresse) ^ "\n")); output nom_carnet ((adresse mon_adresse) ^ "\n") 0 (String.length ((nbTel mon_adresse) ^ "\n"));
Là par contre je ne comprends pas du tout... je demande alors votre aide !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 File "carnetAdresse.ml", line 1, characters 0-1: Error: The implementation carnetAdresse.ml does not match the interface carnetAdresse.cmi The field 'identite' is required but not provided
Partager