2 votes

Prendre un tableau comme entrée d'une fonction en Haskell

J'essaie d'apprendre Haskell et je suis tombé sur un problème dans mon code Haskell. J'ai une fonction,

main = print (qSort [distance (3,4), distance (1,2), distance (2,2)])

distance :: (Floating a ) => (a,a) -> (a,a,a)
distance (x2 , y2) = (x2*x2 + y2*y2, x2, y2) 

qui calcule la distance entre (0,0) et un point donné. Comment le changer en quelque chose comme :

    main = print (qSort (distance [(3,4),(1,2),(2,2)]))

de sorte que distance peut prendre un tableau entier en entrée ? De plus, quelle serait la meilleure façon d'essayer d'obtenir les points en entrée de l'utilisateur ? En regardant les exemples, je ne vois pas vraiment comment obtenir des points. J'ai essayé de jouer avec les crochets, mais je continue à obtenir des erreurs. Toute aide serait la bienvenue !

4voto

Essayez de mettre map distance au lieu de distance dans le second code.

Mais vous devez chercher et comprendre ce que map fait !

Dans ce cas, map dit distance Hé, mec, tu es promu ! Ouais, tu ne travailles pas que sur des paires de loosers, (a,a) ; vous travaillez sur des listes d'entre eux, [(a,a)] tout à la fois !

(Le terme technique pour promu es soulevé d'ailleurs).

Si vous n'en êtes qu'au début, je vous suggère de suivre un tutoriel ou de lire un livre. LYAH est un très bon point de départ.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X