Salutations, je suis nouveau à Haskell et je me suis retrouvé coincé dans la définition d'un type de données pour une affectation.Définition d'un type de données dans Haskell
J'ai besoin de créer le type "Stratégie", il s'agit essentiellement d'une chaîne de 1 à 6 caractères représentant chacune une valeur numérique, et je dois représenter des valeurs supérieures à 9 sous forme de lettre (jusqu'à 35 valeurs différentes). J'ai essayé de définir un type auxiliaire représentant chaque valeur possible et de l'utiliser pour créer mon type, mais mon code ne fonctionne pas et j'ai manqué d'idées. Telle est la définition que j'ai essayé:
data Value = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'A' | 'B' |
'C' | 'D' | 'E' | 'F' | 'G' | 'I' |'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' |
'Q' |'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'Y' | 'X' | 'Z'
data Strategy = Value | Value:Value | Value:Value:Value |
Value:Value:Value:Value | Value:Value:Value:Value:Value |
Value:Value:Value:Value:Value:Value
Le type de valeur n'accepte pas les chiffres, et le type de stratégie « sorte de » fonctionne jusqu'au deuxième constructeur après quoi il fait faillite. Merci de votre aide!
C'est parce que vous avez manqué quelque chose de fondamental types de données. Même si vous aurez bientôt une réponse avec le code correct, vous devez le comprendre! Les types de données ne sont pas des énumérations de valeurs possibles (eh bien, elles peuvent l'être et elles le sont d'un point de vue plus abstrait, mais cela ne fonctionne certainement pas comme ça). – delnan
merci pour votre imput, j'ai besoin de le comprendre, et en fait j'ai eu l'impression que je pouvais utiliser un type de données pour créer un type énuméré comme je le ferais en java (tant qu'aucun des constructeurs n'avait de paramètres.Je voulais aussi pouvoir utiliser "dérivant (Eq, Ord, Enum)" pour pouvoir opérer sur les valeurs, puisque j'ai plusieurs fonctions à définir qui opèrent sur le type Stratégie. – user526861
Le type de données peut (et est en fait) utilisé pour les énumérations - certains constructeurs sans paramètres, comme vous l'avez dit. Exemple réel du fichier stdlib: 'data IOMode = ReadMode | WriteMode | AppendMode | ReadWriteMode'. On dirait que vous connaissez un peu les types de données? – delnan