1) Voici la fonction en Haskell pour déterminer si tous les nombres sont égaux :
tousEgaux :: Eq a => a -> a -> a -> a -> Bool
tousEgaux a b c d = a == b && b == c && c == d
Cette fonction utilise la contrainte de classe Eq pour comparer les valeurs. Elle prend quatre arguments a, b, c, et d et renvoie un booléen qui indique si les quatre valeurs sont égales.
2) Voici la fonction en Haskell pour trouver le plus grand des quatre nombres :
plusGrand :: Ord a => a -> a -> a -> a -> a
plusGrand a b c d = maximum [a,b,c,d]
Cette fonction utilise la contrainte de classe Ord pour déterminer l'ordre des valeurs. Elle prend quatre arguments a, b, c, et d et renvoie la valeur maximale parmi les quatre.
3) Voici la fonction en Haskell pour trouver le nombre le plus éloigné :
plusEloigne :: (Ord a, Num a) => a -> a -> a -> a -> a
plusEloigne a b c d = maximum [(abs(a-b) + abs(c-d)), (abs(a-c) + abs(b-d)), (abs(a-d) + abs(b-c))]
Cette fonction utilise la contrainte de classe Ord pour déterminer l'ordre des valeurs et la fonction abs pour calculer la valeur absolue d'un nombre. Elle prend quatre arguments a, b, c, et d et renvoie la somme des distances entre a et b, c et d, a et c, b et d, a et d, b et c, puis renvoie la valeur maximale parmi les trois distances calculées.
4) Voici la fonction en Haskell pour calculer la longueur du segment entre deux points A et B :
distance :: Floating a => (a, a) -> (a, a) -> a
distance (x1,y1) (x2,y2) = sqrt ((x2-x1)^2 + (y2-y1)^2)
Cette fonction utilise la contrainte de classe Floating pour effectuer le calcul de la racine carrée. Elle prend deux arguments (x1,y1) et (x2,y2) qui représentent les coordonnées des deux points A et B et renvoie la distance entre ces deux points. La formule utilisée pour le calcul est la formule de la distance euclidienne entre deux points dans le plan.