• [^] # Re: Exemples concrets?

    Posté par (site web personnel, Mastodon) . En réponse à la dépêche Pijul, contrôle de version et théorie des patchs, version 0.12. Évalué à 2.

    Merci Kantien, ça me semble plus clairement posé que mon résumé :)

    Quand tu écris ceci:

    type patch
    type state
    val commit : patch -> state -> state
    val merge : state -> state -> state
    

    J'ai juste un doute sur les deux dernières lignes: commit et merge sont bien des fonctions prenant les 2 premiers éléments en paramètre et faisant un résultat du type du dernier élément ?

    Pour essayer d'exprimer avec les conventions mathématiques dont j'ai un peu plus l'habitude (style f(x,y) = z avec les préfixes des arguments leur type):

    commit(patch: x, state: A) = state: B
    merge(state: A, state: B) = state: C
    

    L'idée d'illustrer avec des opérations simples (multiplication et ppcm) sur les nombres est très bonne aussi.

    Pour la phrase suivante:

    La solution est de prendre un type plus riche que les liste pour les sommets du graphe : à savoir des graphes de lignes (dont les listes sont un cas particuliers).

    Je trouve qu'elle explique mieux l'astuce de l'utilisation des graphes et elle n'utilise même pas le terme de graggle, bravo :) (quand je parlais de simplification de la représentation du fichier, c'est exactement ça, mais plus clairement exprimé en partant de la richesse du graphe au lieu de la "simplification/relaxation" de la liste).