Questions / réponses

Syntax error sans AUCUNE raison

Syntax error sans AUCUNE raison

AmeeuwVincent -
回帖数: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.

回复AmeeuwVincent

Re: Syntax error sans AUCUNE raison

ZeitounMarc -

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


回复AmeeuwVincent

Re: Syntax error sans AUCUNE raison

ArchipoffSimon -

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.