Questions / réponses

Syntax error sans AUCUNE raison

Syntax error sans AUCUNE raison

by Vincent Ameeuw -
Number of replies: 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.

In reply to Vincent Ameeuw

Re: Syntax error sans AUCUNE raison

by 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


In reply to Marc Zeitoun

Re: Syntax error sans AUCUNE raison

by Vincent Ameeuw -

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

Bonne soirée.

In reply to Vincent Ameeuw

Re: Syntax error sans AUCUNE raison

by 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.