Structure begin end en Caml

Fermé
delfre56 Messages postés 340 Date d'inscription mardi 3 juillet 2012 Statut Membre Dernière intervention 23 février 2018 - 24 déc. 2014 à 16:53
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 25 déc. 2014 à 11:43
Bonjour,
Je dois rendre un projet en programmation il y a trois jours (je suis un peu à la bourre donc) et je bloque sur une fonction...
Je dois tracer une polyligne (ligne brisée à angles droits) dans la fenètre graphique de Caml Light. J'ai déjà défini un type polyligne comme ça :

type polyligne = Pvide | Poly of point list;;

let cons_poly(p,pl) = match pl with
|Pvide -> Poly [p]
|Poly l -> Poly (p::l);;

let premier_poly(pl) = match pl with
|Pvide -> failwith("la polyligne est vide")
|Poly ([]) -> failwith("la polyligne est vide")
|Poly (p::l) -> p;;

let reste_poly(pl) = match pl with
|Pvide -> failwith("la polyligne est vide")
|Poly ([]) -> failwith("la polyligne est vide")
|Poly (p::l) -> l;;

let est_poly_vide(pl) = match pl with
|Pvide -> true
|Poly ([]) -> true
|_ -> false;;

Déjà, si vous avez tout lu jusqu'ici et que vous voulez encore m'aider, c'est que vous êtes une personne en or. Je vous fait pleins de bisous. Bref, maintenant il me faut une fonction qui trace la polyligne. J'ai fait ça :

let rec polyligne(pl) = match pl with
|Pvide -> failwith "erreur : la liste est vide"
|Poly(r::[]) -> moveto(premier_poly(pl))
|_ -> begin
moveto(premier_poly(pl));
lineto(premier_poly(reste_poly(pl));
polyligne(reste_poly(pl))
end;;

Caml Light me renvoie une erreur de syntaxe sur le end;; et je ne comprend pas pourquoi. Je ne maîtrise pas bien le begin end alors si quelqu'un voyait une erreur ou, mieux, un autre moyen d'appeler plusieurs fonctions en même temps, je suis preneur :)

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
25 déc. 2014 à 11:43
Bonjour,

Je n'ai pas pu tester car tu n'as pas mis tout le code, mais j'essaierai de mettre un
;
avant le
end;;
de ton bloc.
0