2010-08-30 7 views
2

J'apprends le haskell. Actuellement à travers 99 questions, un peu coincé sur # 7:haskell: 99 questions # 7: liste hétérogène

Problème 7 (**) Aplatir une structure de liste imbriquée.

Transformez une liste en conservant éventuellement les listes en tant qu'éléments dans une liste «plate» en remplaçant chaque liste par ses éléments (récursivement).

Exemple en Haskell:

*Main> flatten (Elem 5) 
[5] 
*Main> flatten (List [Elem 1, List [Elem 2, List [Elem 3, Elem 4], Elem 5]]) 
[1,2,3,4,5] 
*Main> flatten (List []) 
[] 

Où est-ce Elem et List viennent? Que dois-je faire pour pouvoir les utiliser dans mon programme? (Ou est-ce que la question suppose que je dois définir un nouveau type pour ceux-ci - si c'est la réponse je vais aller et relire cette section du tutoriel ...)

Répondre

8

Ce sont juste des constructeurs de certains types, par exemple

data ListType a = Elem a | List [ListType a] 
+0

Notez que ListType est vraiment un mauvais nom. C'est en fait un arbre. – Martijn