
You actually have two different questions. The first about iteration can be done by the function map in the following way: Instead of [func Square, func Circle, func Triangle] you use: map func [Square, Circle, Triangle]. The list comprehensions should also work: [func x | x <- [Square, Circle, Triangle]] Now as for obtaining/generating all values of Shape, the easiest way is to make Shape an instance of Enum, like this: data Shape = Square | Circle | Triangle deriving Enum You can then generate a list of all the values by: enumFrom Square You use Square here because it is the first constructor of Shape, and you want to enumerate them all. I hope this helps, Paul raeck@msn.com wrote:
Are there anyway to express the "iterating" of a user-defined data type in Haskell?
For example, in
data Shape = Square | Circle | Triangle
how can I 'iterate' them and apply them all to the same function without indicating them explicitly? such as [func Square, func Circle, func Triangle]. Can I use a form similar to the following case in a list instead:
Numbers = [1,2,3,4,5]
[func x | x <- Numbers ]
Actually what I want is to obtain all the possible values of a data type (Shape).
Thank you very much!
Best wishes,
Raeck _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners