• [^] # Re: Pffff...

    Posté par (site web personnel, Mastodon) . En réponse au journal Un compte rendu de la conf sur isaac/lisaac. Évalué à 2.

    Oui c'est vrai mais bon ca reste qd même du ML avec en bonus l'impératif et l'objet.

    D'un point de vue syntaxe et sémantique on marie des choses par la force. Et au final on se retrouve avec un langage tres tres gros (ML + impératif + classe + module). Perso j'aurai préféré qu'ils gardent la simplicité du langague d'origine, bon ce n'était pas forcement possible

    C'est tout a fait l'opposé de la philosophie de lisaac. cf la grammaire http://isaacos.loria.fr/li_docs.html qui est très courte mais le langage reste quand même tres expressif.

    Par exemple voici la définition de la boucle for. En fait c'est très proche d'un itérateur sur les entier tel que l'on aurait pus le définir en Caml.

    to limit_up:SELF do blc:BLOCK <-
    (
    (self<=limit_up).if {
    blc.value self;
    (self+1).to limit_up do blc;
    };
    );

    en caml (pas objet) ca aurait fait un truc du style
    let rec for i limit_up blc=
    if i<limit_up
    then blc i;for (i+1) blc
    else blc i
    ;;
    du type int -> int -> (int -> ()) ->() (a vue de nez)
    (mon caml est rouillé donc ca doit être faux, mais j'ai pas envie d'installer le compilo)

    Je trouve que c'est un exemple très réussit d'intégration de concept plutot fonctionnel à l'intérieur d'un langage objet mais sans rajouter des construction plus ou moins étrangère dans la syntaxe de base. En fait ce qu'il ont eu besoin de rajouter c'est le type BLOCK correspondant a un suite d'instruction séquentielles. Comme ca on peut passer des blocs a itérer au la commande for (enfin to do : on peut définir plusieur mot clef).