J'ai un devoir et je suis actuellement pris dans une section de ce que j'essaie de faire. Sans entrer dans détail spécifique est ici la mise en page de base: on me donne un élément de données, f, qui détient quatre différents types à l'intérieur (chacun avec leur propre but):Utilisation d'un élément sur une liste entière dans Haskell
data F = F Float Int, Int
fonction:
func :: F -> F-> Q
Qui prend deux éléments de données et (par des calculs simples) renvoie un type qui est maintenant une version mise à jour de l'un des types dans le premier f.
J'ai maintenant une liste complète de ces éléments et j'ai besoin d'exécuter la fonction donnée en utilisant un élément de données et de renvoyer la valeur du type (pas l'élément de données). Ma première analyse a été d'utiliser une fonction foldl:
myfunc :: F -> [F] -> Q
myfunc y [] = func y y -- func deals with the same data element calls
myfunc y (x:xs) = foldl func y (x:xs)
mais je continue à obtenir la même erreur:
"Couldn't match expected type 'F' against inferred type 'Q'.
In the first argument of 'foldl', namely 'myfunc'
In the expression: foldl func y (x:xs)
Je présente mes excuses pour une telle analyse abstraite sur mon problème, mais quelqu'un pourrait-il me donner une idée à ce que je devrais faire? Devrais-je même utiliser une fonction de pli ou y a-t-il une récursivité à laquelle je ne pense pas?
Il semble y avoir quelque chose qui cloche avec votre définition de F. La virgule est-elle juste une faute de frappe ou avez-vous l'intention d'écrire quelque chose de différent? – svenningsson