--- title: "Techniques d'encodage" weight: 10 --- # Techniques d'encodage Il existe deux manières d'encoder des structures de données. ## Encodage algébrique On peut encoder des structures de données directement dans les rayons comme on le ferait en programmation fonctionnelle. Dans ce cas-là, les structures de données sont vues comme des objets statiques qu'on évalue. Cela nous donne principalement des structures d'arbres et d'ensembles. Par exemple : ``` 'unary integer +nat(s(s(s(0)))); 'pair +pair(a b); 'list +list(0 1 0); +list(0:1:0:e); +list(0(1(0(e)))); +cons(0, +cons(1, +cons(0, e))); 'tree -and(-or(X Y) -not(Y)); 'set +a +b +c +d +e; 'dependent +a; +b; +c; +d; +e; 'independent +list(0(1(e))) +nat(s(s(0))) +cons(0, +cons(1, e)); 'graph +e(1 2); +e(2 3); +e(1 4); ``` ## Encodage interactif On peut aussi encoder une structure en jouant sur la compatibilité entre les rayons. Ainsi, la géométrie de la structure est reflétée par les dépendances entre les rayons. Une liste prendrait la forme d'étoiles qui peuvent s'enchaîner durant l'exécution. Un arbre serait un ensemble d'étoiles dont les dépendances forment une arborescence. Dans ce cas, on encode les structures de données par des sortes d'hypergraphes interactifs.