L'application d'une fonction avec plusieurs entrées à l'aide de la carte? (Haskell)
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.
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.