• [^] # Re: Sather

    Posté par (site web personnel) . En réponse à la dépêche Lisaac 0.12 en GPL v3. Évalué à 2.

    J'ai scotché quelques minutes en tête à tête avec ta doc, et soudain fiat lux !

    En fait c'est quoi les iterator à la Sather ?

    C'est l'idée que je définis une boucle, et qu'un message sur une classe integer va me permettre de définir le sous ensemble parcouru dans cette boucle.
    C'est potentiellement très puissant, car ça évite de faire joujou avec un index à l'intérieur, et ça aide à la lecture du code parce qu'on comprend tout de suite ce qu'on fait.


    Figure toi que j'ai implémenté ça en Lisaac (avec l'aide de Ben sur la fin) en Lisaac il y a quelques jours... Mais en plus puissant !

    j'ai pensé à ça, après avoir lu et relu cette doc qui est géniale :
    http://morpheus.cs.ucdavis.edu/papers/sweeny.pdf

    Le pb des parcours d'ensemble y est pas mal abordé.

    Sather te permet de le faire, mais le problème est que tu es limité par les messages sur int (ceux avec le !), alors que le système qu'on a codé permet d'aller plus loin :

    La méthode se trouve dans numeric :

    - to upper:NUMERIC do action:BLOCK items func:BLOCK <-

    ça s'utilise comment ?

    1.to 7 do { i : NUMERIC;
    //code
    sum := sum + i;
    } items { j:NUMERIC;
    j.factorial
    }
    Dans cet exemple tu va sommer les factoriel (le i du premier bloc, prend le resultat de l'itérateur (j, qui va de 1 à 7) appliqué au deuxième), et ce qu'il y a de mieux par rapport à Sather, c'est que tu n'a pas besoin d'utiliser un message existant dans NUMERIC... Il te suffit de définir un BLOCK qui prend un int et t'en renvoi un. Et tu définis ce que tu veux

    D'après ce que j'ai vu, ça apas été rajouté dans la dernière release (c'est un oubli), tu te le rajoute et tu pourras jouer avec :)

    « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker