Ce que vous avez
data Interval = Interval Float Float
Vous dites Interval
est un type avec un constructeur (également nommé Interval
) qui a deux champs sans nom de type Float
.
instance Interval Float Float where
Vous dites Interval
est une classe de type (PAS TYPE) qui prend deux paramètres de type que vous avez fournis comme Float
s. Cela implique qu'il y a une ligne quelque part qui indique class Interval a b where ...
.
(Interval a b) + (Interval c d) = Interval (a + c) (b + d)
(Interval a b) - (Interval c d) = Interval (a - c) (b - d)
Ici, en supposant que vous MENT indenter, vous définissez deux fonctions qui sont des méthodes de la classe de type Interval
(qui n'existe pas) et ces méthodes sont nommés +
et -
.
Qu'est-ce que vous pourriez avoir voulu
Je pense que vous vouliez définir un type, l'intervalle, et vous avez fait.
Je pense que vous vouliez définir addition et la soustraction qui sont des méthodes de la classe de type Num
:
instance Num Interval where
(Interval a b) + (Interval x y) = Interval (a + b) (x + y)
...
Pourquoi vous essayez d'instancier quelque chose qui est pas une classe de type? – sepp2k
Instanciez 'Num Interval' (peut-être pas une bonne idée) ou définissez vos fonctions en dehors d'une instance de classe de type. – chi
Que voulez-vous dire? Désolé pour les questions stupides à l'avance, parce que je suis assez nouveau pour la programmation fonctionnelle. –