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

