• [^] # Re: typage statique automatique ?

    Posté par (site web personnel) . En réponse au journal Typage statique pour Python. Évalué à 2.

    C'est vraiment des interfaces, en haskell cela se nomme des typeclass. Sauf qu'elles sont définie de façon découplée du type associé, mais l'association est explicite.

    Par example, si je définis :

    class Shape t where
     area :: t -> Float

    Et que j'ai le type :

    data Square = Square {side :: Float}

    Alors je peux associer la typeclass au type avec :

    instance Shape Square where
     area square = let
     c = side square
     in c * c

    D'autre part, et c'est là que je me suis fourvoyé, je pensais que tu n'avais pas besoin de définir d'interface Num (que ta méthode pourrait prendre Num ou Bar), mais pour ça je présume qu'il faut explicitement dire qu'elle prend l'un ou l'autre.

    Tu n'as pas besoin de définir que la fonction prend un Num ou un Bar, c'est l'inférence de type qui le fait tout seul (mais tu peux lui forcer la main en faisant quelque chose de plus restrictif). Donc en effet c'est en quelque sort du duck-typing statiquement typé. Example :

    foo s = area s * 2

    aura comme type foo :: Shape t => t -> Float

    Ici n'importe quelle type qui implémente l'interface Shape fonctionne avec foo`.