1.4 KiB
1.4 KiB
Haskell 23
Exercice 1
- L'expression crée le type
Veritéqui n'a que deux constructeurs d'arité 0. - L'expression suivante crée un type
Arbredéfini inductivement comme étant soit une feuille, soit un nœud composé d'un flottant et de deux sous-arbres. - L'expression donnée crée une instance du type arbre construite par le constructeur
Noeudavec comme valeurs le flottant 5, une instance du type arbre consturite par le constructeurNoeudavec comme valeur le flottant 2 et deux fois l'arbre contstruit par le constructeurFeuille, ainsi que une instance du type arbre construite par le constructeurNoeudavec comme valeur le flottant 7 et deux fois l'arbre construit par le constructeurFeuille. - On peut définir le type
data Arbre t = Noeud t (Arbre t) (Arbre t)
arbreSomme :: Num t => Arbre t -> t
arbreSomme Feuille = 0
arbreSomme (Noeud v a b) = v + (arbreSomme a) + (arbreSomme b)
- Le type sur les arbres polymorphiques est donné ci-dessus. Pour les arbres Float, on aurait pour type
Arbre t -> t - Ce type correspond à une valeur de type
tqui peut ne pas avoir été renvoyée. C'est un espèce denulldu langagae fonctionnel. Il est ou bien présent (Just a) ou absent (Nothing). headsur une liste vide renvoie une exception.
headSafe :: [t] -> Maybe t
headSafe [] = Nothing
headSafe (e:s) = Just e
data Arbre t = Noeud t (Maybe (Arbre t)) (Maybe (Arbre t))