J'ai des devoirs où je dois mettre à jour une liste en utilisant une fonction qui prend deux éléments et retourne une valeur d'une partie du premier élément donné dans la fonction. Il est donc nécessaire de mettre à jour l'ensemble de la liste en parcourant chaque élément et en mettant à jour sa valeur en appliquant la fonction à tous les autres éléments de la liste (y compris lui-même). Jusqu'à présent, j'ai essayé de mapper d'abord la liste (de façon à ce que chaque élément soit identique), puis de mettre à jour la valeur de chaque élément en mappant à nouveau la valeur de l'élément spécifié. valeur spécifique à travers: la fonction, l'élément spécifique et la liste entière Je reçois constamment des plaintes que je déduis de la liste de valeurs faites à partir de la «liste de fonctions p @ de la fonction map» plutôt que de simplement donner la valeur à p @ list. Voici un échantillon de ce que j'ai essayé de mettre en œuvre:Mise à jour des éléments de la liste, Haskell
res :: X -> X -> Z -- function given
myf :: [X] -> [X] -- Here is my function
myf ps = map newf ps
where
newf [email protected](X oldz) = X newz
newz = map (res p) ps
Est-ce la bonne méthode pour essayer de mettre à jour une liste contre toute la liste elle-même?
EDIT: fautes d'orthographe et grammar- mes excuses à mettre pas aussi la balise devoirs sur elle
Pourriez-vous donner des exemples de code montrant l'approche que vous décrivez? Vous pouvez également ajouter un tag de devoirs. –
Votre exemple de code n'a pas beaucoup de sens - 'p' n'est pas dans la portée de' newz', 'newf' n'utilise pas ses arguments, vous n'avez pas défini' res' ou 'X' et' Z' types de données, et d'ailleurs que je ne peux même pas comprendre ce que vous essayez de faire. –