• [^] # Re: Tart

    Posté par . En réponse à la dépêche LLVM 3.0. Évalué à 2.

    Ouais mais j'ai l'impression que Scala pousse à ça même hors des bibliothèques spécialisés.

    Voila un exemple avec et sans sugar syntax, la différence est visible en terme de lecture mais pas en terme de comprehension.

    /* with RegexParsers */
    def bin_nb = "0" | "1"
    def addition: Parser[String] = bin_nb ~ "+" ~ bin_nb ^^ {
     case "0" ~ "+" ~ "0" => "0"
     case "1" ~ "+" ~ "0" => "1"
     case "0" ~ "+" ~ "0" => "1"
     case "1" ~ "+" ~ "1" => "10"
    }
    
    

    peut s'écrire:
    def bin_nb = literal("0").|(literal("1"))
    def addition: Parser[String] = bin_nb.~(literal("+")).~(bin_nb).^^({
     case literal("0") ~ literal("+") ~ literal("0") => "0" 
     case literal("1") ~ literal("+") ~ literal("0") => "1"
     case literal("0") ~ literal("+") ~ literal("0") => "1"
     case literal("1") ~ literal("+") ~ literal("1") => "10" 
    })