let rec do_dessine i j k a = match a with | Feuille Noir -> Graphics.fill_rect i j k k | Feuille Blanc -> () | Noeud (c1,c2,c3,c4) -> let k2 = k/2 in do_dessine i (j+k2) k2 c1 ; do_dessine (i+k2) (j+k2) k2 c2 ; do_dessine i j k2 c3 ; do_dessine (i+k2) j k2 c4 let dessine_arbre k a = do_dessine 0 0 k a |
On remarquera quand même la nécessité d'expliciter (par ()
, dit
void, unique valeur du type unit)
que le dessin d'un carré blanc s'obtient en ne faisant rien.
De fait en Caml, il n'y a pas de procédure, que des fonctions.
Si une procédure est, de façon générale, une fonction qui ne renvoie rien,
en Caml on a recours à une fonction qui renvoie rien (et rien c'est
void).