On 17 Sep 2009, at 15:21, José Pedro Magalhães wrote:

> > E.g. here's a type Bar with three constructors:
> > > data Bar = X | Y | Z deriving (Show)
> > > instance Enumerated Bar where
> > >     constructors = [X, Y, Z]
> >
> > (This is certainly ugly.  Any suggestions?)
> >
> |constructors| is expressible in SYB:
Wow.

What about

data Bar = X | Y | Z deriving (Show, Eq, Ord, Enum, Bounded)

instance Enumerated Bar where
   constructors = [minBound .. maxBound]

?

Oh yes, that will certainly work for this very simple datatype. However, one cannot automatically derive instances of |Bounded| for datatypes with non-nullary constructors.

That would be OK in this instance, I think; I'm already dealing with some of those cases by hand, but there were enough purely nullary ones that this seemed worth doing.

I don't know if that will work any better with Foo/convert, though... :-)

Thanks though Daniel - it's good to meet Enum and Bounded.

-Andy

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to