2016-10-12 1 views
-3

Bonjour Je souhaite prendre des listes de tout type, par ex. [Int], [Char], etc. en tant que paramètres d'une fonction.Comment prendre les listes de tous les types comme paramètres de fonction Haskell

Fondamentalement, tout ce que je veux faire est quelque chose le long des lignes de:

xyz :: [a] -> [a] -> (Int, Int) 

Y avait-[a] pourrait être une liste de tout type.

+2

Quelle est votre question réelle? – epsilonhalbe

+0

Que voulez-vous que 'xyz' fasse réellement * do *? Qu'est-ce qui l'empêche de fonctionner maintenant? – MathematicalOrchid

Répondre

1

Eh bien, vous l'avez déjà eu. Il suffit d'écrire la signature comme ça et de définir votre fonction. Sauf dans une application réelle, vous (probablement, voir @ commentaire de amalloy) doivent exiger a d'appartenir à une classe de type, afin de faire quelque chose de significatif avec elle:

xyz :: Integral a => [a] -> [a] -> (Int, Int) 
xyz ls1 ls2 = (x, y) where 
    x = fromInteger $ toInteger $ sum ls1 
    y = fromInteger $ toInteger $ sum ls2 
+2

'xyz a b = (longueur a, longueur b)' – amalloy

+0

Assez juste, a édité ma réponse. – fjarri