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