septembre
2009
Si je voulais choisir une liste d’éléments du langage, de façon à pouvoir définir le reste du langage en ses termes, que devrais-je inclure dedans? Que serait un langage minimal pour dodo?
Comme dodo est un langage à prototypes, il nous faut l’opérateur new
qui crée une nouvelle instance d’un objet basée sur un prototype.
Puisque dodo est basé sur les continuations, il est évident que ce serait une première chose à inclure dans dodo minimal.
Pour rappel, une continuation est un point du programme que l’ordinateur peut exécuter, en lui passant les données appropriées. Une continuation n’a pas de notion de « retour » ce qui la différencie d’une fonction. Mais si l’une des données passées est elle-même une continuation qui représente le reste du programme, on peut l’utiliser comme une fonction. C’est le principe de base de dodo.
Puisqu’il suffit d’avoir la définition d’une continuation dans le langage pour ouvrir la porte aux fonctions le dodo minimal devrait la posséder. Comme je l’ai discuté par ailleurs, cela ne sera pas accessible dans le langage dodo normal.
Voici comment cela pourrait apparaître dans dodo minimal:
(-> x, return return(x))
Le code ci-dessus définit une continuation qui prend une valeur, x, et une continuation return. Elle est l’équivalent d’une fonction qui retourne simplement x (fonction identité).
L’utilisation d’une continuation est déjà décrite dans la documentation du langage et fait appel aux opérateurs ->
et |
.
Un autre élément indispensable est celui qui permet le branchement, c’est-à-dire le choix des instructions à exécuter en fonction d’une condition. C’est l’opérateur match
de dodo.
Pour permettre l’extension du langage, il faudra aussi <wrap>
et template
comme décrit dans un précédent article.
Cela ne serait pas suffisant pour définir le langage dodo complet; en particulier, il faudrait ajouter le chargement des classes, les constructeurs, les références (opérateur .
) pour la partie objet impérative, et d’autres opérateurs pour la partie programmation parallèle.
Mais ces simples éléments pourraient déjà servir de base à une large partie de dodo.