Un arbre se conçoit facilement lorsqu'on le dessine (cf. FIGURE 1.1). On peut alors élaborer des programmes à partir de ce dessin, essayer de tracer une fonction. Mais que faire lorsque l'on veut tester cette fonction ? Essayer de créer un arbre à la main, c'est s'exposer à toute sorte d'oubli de crochet, parenthèse, point virgule et autre virgule. Autrement dit, tout exemple complexe est à exclure. Il serait alors avantageux de pouvoir dessiner l'arbre et qu'un utilitaire confectionne l'arbre comme CAML pourrait le comprendre. Et inversement, lorsqu'une fonction donne comme résultat un arbre, on pourrait alors le dessiner.
![]() noeud (5, [noeud(1,[feuille 3;noeud(15,[feuille 18;feuille 6])]); feuille 6;feuille 12]);; |
Quant aux automates (cf. FIGURE 1.2), ils s'élaborent souvent par un dessin, qui permet à l'explication d'être à la fois concise et compréhensible. D'ailleurs, l'automate reste souvent au stade du dessin, car de toute façon, sa programmation à partir d'un graphe est aisée et sa donnée n'est pas d'un grand secours. On pourrait soit définir un automate en le dessinant et inversement, dessiner un automate donné.
![]() {ordre = 3; initial = [1]; final = [3]; instantanée = [2, 1]; transition = [(3, `a`), 3; (2, `b`), 2; (3, `b`), 2; (2, `a`), 3; (1, `b`), 2; (1, `a`), 3]};; |