On Mon, Dec 29, 2008 at 6:24 PM, <ra...@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).
For "enum" style data, where all the constructors have no arguments, you can do deriving (Bounded, Enum), so: data Shape = Square | Circle | Triangle deriving (Bounded,Enum) Then: numbers = [minBound..maxBound] :: [Shape] Luke
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe