Salut,
Je cherche à créer une fonction qui traite un argument différemment selon son type. Pour me faire comprendre, voici un exemple en C de ce que je veux faire:
1 2 3 4 5 6 7 | int arrondir(float n) { return (int)a; } int arrondir(int n) { return n; } |
C'est un exemple un peu moisi (je n'ai pas encore appris le C) mais ça traduis ce que je veux faire en Haskell. Comme on ne peut pas déclarer plusieurs signatures d'une même fonction, j'ai tenté un sorte de filtrage par motif avec case ... of
:
1 2 3 4 | -- Le traitement n'est pas important, c'est surtout le filtrage par motif qui me pose problème maze ! position = case position of Position -> ((cells maze) !! (y position)) !! (x position) (Int, Int) -> ((cells maze) !! (snd position)) !! (fst position) |
Peut être que je ne devrais autoriser qu'un type pour obtenir un élément de ma matrice ? De toute façon j'aimerais savoir comment on fait, même si ce n'est pas approprié dans cette situation, ça pourrait m'aider dans un autre cas.
Merci d'avance,
AZ.
+0
-0