Questions / réponses

Syntax error sans AUCUNE raison

Syntax error sans AUCUNE raison

von Vincent Ameeuw -
Anzahl Antworten: 3

Bonjour,

En codant la fonction print_tree vue en TD :

type treem =
  | Empty
  | Bin of int * int * treem * treem;;

let spacing depth = String.make depth ' ';;

let print_node value n depth =
  print_string ((spacing depth)^"->"^(string_of_int value)^"("^(string_of_int n)^")\n");;

let print_tree tree =
  let rec aux t depth = match t with
    | Empty -> print_string ((spacing (4*depth))^"->E\n");
    | Bin(val, cnt, left, right) ->
      aux right (depth+1);
      print_node val cnt (4*depth);
      aux left (depth+1);
  in aux tree 0;;


J'obtiens cette erreur :

Characters 129-132:
  | Bin(val, cnt, left, right) ->
^^^
Error: Syntax error: operator expected.


Si quelqu'un sait d'où peut provenir l'erreur, je suis preneur. Merci.

Als Antwort auf Vincent Ameeuw

Re: Syntax error sans AUCUNE raison

von Marc Zeitoun -

Bonjour,

C'est simplement le fait que val est un mot clé du langage. Le remplacer par v résoudra le problème de syntaxe (et le code m'a l'air correct, a priori).

--mz


Als Antwort auf Marc Zeitoun

Re: Syntax error sans AUCUNE raison

von Vincent Ameeuw -

Merci beaucoup ! Effectivement ça marche mieux comme ça.

Bonne soirée.

Als Antwort auf Vincent Ameeuw

Re: Syntax error sans AUCUNE raison

von Simon Archipoff -

Bonjour,

Il y a bien une raison mais elle est un peu traître, il est vrai.

"val" est un mot clé du langage, on ne peut pas s'en servir comme identifiant.

Votre éditeur de code devrait le mettre en gras ou d'une autre couleur, au même titre que let, in, while, if, then, else, fun, etc.