L'application d'une fonction avec plusieurs entrées à l'aide de la carte? (Haskell)

StackOverflow https://stackoverflow.com/questions/2843150

  •  27-09-2019
  •  | 
  •  

Question

les gars G'day,

en train d'essayer de finir un peu de devoirs je travaille, et ayant un problème où je suis en train d'appliquer la carte à travers une fonction qui accepte des entrées multiples.

dans le cas J'utilise processlist f (x: xs) = carte accelerateList f xs xs x

processlist est donnée à une valeur flottante (f) et une liste qu'il trie dans une autre liste

Accélérer la liste prend une valeur flottante (f) une liste et une liste d'objets à travers laquelle il renvoie un autre objet de liste

Je sais que mon Accélérez le code liste est correcte, mais je ne peux pas pour la vie de me faire la syntaxe de ce code de travail:

processList :: Float -> [Object] -> [Object]
accelerate f [] = []
accelerate f [x] = [(accelerateForce f x x)]
accelerate f (x:xs) = map accelerateList f xs x xs

Toutes les idées? J'ai gratté ma tête pendant environ 3 heures maintenant. Je sais qu'il est quelque chose vraiment simple.

Était-ce utile?

La solution

D'abord, vous voudrez probablement utiliser une parenthèse ici:

map accelerateList f xs x xs

La map fonction prend exactement deux arguments (et non cinq), de sorte que vous devriez faire quelque chose comme ceci par exemple:

map (accelerateList f xs x) xs

Mais d'autre part, qui ne correspond pas à vos signatures de fonction. Le problème est probablement que vous ne l'avez pas structuré votre solution d'une manière assez bonne. Peut-être une question distincte, mais expliquer ce que vous essayez d'accomplir avec la fonction d'accélérer (ou qui jamais un est celui de « haut ») serait certainement utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top