• [^] # Re: Haskell super expressif ?

    Posté par (site web personnel) . En réponse au journal Comprendre Go en 5 minutes, en Haskell. Évalué à 2.

    Je m'auto répound pour ajouter un truc. La déclaration de fonction en Haskell fait du "pattern matching" en même temps. La plupart du temps on ne pas pas utiliser des variables "simples", mais un "pattern".

    Exemple, pour faire une somme (il y a plus simple pour faire une somme, comme la fonction sum, c'est juste pour l'exemple).

    mySum :: [Int] -> Int
    mySum [] = 0
    mySum (x:xs) = x + mySum xs
    Ici on commence par le type [Int] -> Int. Puis vient l'implementation. Premier cas, la somme d'une liste vide [] qui vaut 0. Second cas, la somme d'une liste qui contient un élément x et une suite de liste xs.

    En utilisant la syntaxe "go", c'est à dire ou les variables ont leur type directement collé, cela donnerait un truc du genre:

    mySum ([] :: [Int]) = 0
    mySum (((x :: Int) : (xs :: [Int])) :: [Int]) = x + mySum xs
    Aucune de ces annotation de type n'est nécessaire ceci dit.