Liens connexes

Dépêche modérée par

Dépêche éditée par

: Sortie de TOM 2.3

Posté par paul brauner (). Modéré le 28 avril 2006.
0
Après un an de travail, la version 2.3 du langage TOM vient de sortir. TOM est un langage de programmation développé par l'INRIA et qui marie le meilleur des mondes des langages fonctionnels et impératifs en ajoutant des capacités de réécriture à Java, C ou OCaml (autres backends à venir).

L'utilisation de TOM est pertinente dès qu'il s'agit de manipuler des données arborescentes (termes, arbres syntaxiques, arbres XML...), ce qui est très courant en programmation.

En plus de proposer un mécanisme de pattern matching puissant (associatif) sur les types Java/C, TOM est fourni avec un langage permettant de définir des types inductifs (comme en Caml) reposant sur une bibliothèque garantissant le partage maximal de la mémoire. Enfin le langage fournit un système de définition de stratégies de parcours des arbres par combinaison de stratégies de base.

Le compilateur est une application stable, bien documentée et réellement utilisable (tâche Ant, plugin Vim...). De nombreux exemples sont fournis.

> Lire la suite (84 commentaires, moyenne: 3).   [dépêche : 1745 caractères]

Le premier exemple du tutoriel illustre bien l'intégration de TOM au langage Java :

import main.peano.types.*;

public class Main {
  %gom {
    module Peano
    abstract syntax
    Nat = zero()
      | suc(pred:Nat)
      | plus(x1:Nat, x2:Nat)
  }

  public final static void main(String[] args) {
    Nat z = `zero();
    Nat one = `suc(z);
    System.out.println(z);
    System.out.println(one);
  }
}


Les types inductifs définis dans le bloc %gom peuvent être directement utilisés dans le programme java, et peuvent ensuite être filtrés grâce à l'opérateur %match :


  public static Nat evaluate(Nat n) {
    %match(Nat n) {
      plus(x, zero()) -> { return `x; }
      plus(x, suc(y)) -> { return `suc(plus(x,y)); }
    }
    return n;
  }

Il est également possible de définir des mappings vers des types Java prédéfinis (arbre XML DOM par exemple) pour ensuite profiter du pattern matching et des stratégies de parcours sur ceux-ci.

TOM fournit un mécanisme de pattern matching associatif, i.e. permet de filtrer des listes avec des expressions du type : (X*, a, Y* , b, Z*) plutôt qu'avec des expressions du type tête::queue comme c'est le cas en Caml.

Le langage est actuellement utilisé dans plusieurs projets de recherche mais aussi dans l'industrie.

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

typo

Posté par paul brauner () le 28/04/2006 à 21:56. (lien). Évalué à 4.

il fallait lire "qui marie le meilleur des mondes des langages fonctionnels _et_ impératifs"

[+] Et beh...

Posté par Martyanoff Nicolas (Jabber id, page perso, ) le 28/04/2006 à 22:06. (lien). Évalué à -10.

Génial, après c'est immondice nommée Caml, les chercheurs de l'INRIA ont toujours pas compris la leçon ?
Enfin si ça les amuse de bouffer les budgets pour des langages à chier utilisés par eux et c'est tout...

OUI, c'est un troll, OUI c'est méchant, OUI je ne suis qu'un morveux qui connait rien et compagnie, mais OUI je me suis bouffé 1 an de Caml, et j'ai des envies de meurtre....

Inutile

Posté par imalip (page perso, ) le 29/04/2006 à 09:50. (lien). Évalué à 1.

Quelle drole idee de faire une extension a ces vieux langages ?! c'est completement inutile, de toute facon tout le monde va passer a Isaac.

--
"While a monkey can be a manager, it takes a human to be an engineer" Erik Zapletal

Hem

Posté par Pierre Tramonson () le 29/04/2006 à 12:28. (lien). Évalué à 5.

J'ai toujours pas compris à quoi ça servait, même en lisant le tuto.

Ca risque pas d'avoir un grand succès si personne ne sait à quoi ça sert et comment ça marche.

Revenir en haut de page