[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Deriving Enum



> I find this a little surprising.  In general, any algebraic datatype
> satisfying the conditions in Appendix D of the report should be
> enumerable, using the same lexicographic ordering used in D.1 for Eq
> and Ord.

[..]

> Any problems with this?

I've seen one problem in my proposal.  It's fine for finite datatypes, 
but if at least one of the components is infinite, an enumeration will 
not include all the elements.  I'm not sure if this is a problem.

Consider

data MyPair = MyPair Integer Integer
  deriving Enum {- not Haskell 98 -}

Now [MyPair 0 0..] will give

[MyPair 0 0, MyPair 0 1, MyPair 0 2, MyPair 0 3, ...]

and will never reach MyPair 1 0.

(A related point is that (toEnum 0) is MyPair 0 0 here; what about 
negative integers?)

--KW 8-)
-- 
: Keith Wansbrough, MSc, BSc(Hons) (Auckland) ------------------------:
: PhD Student, Computer Laboratory, University of Cambridge, England. :
:  (and recently of the University of Glasgow, Scotland. [><] )       :
: Native of Antipodean Auckland, New Zealand: 174d47' E, 36d55' S.    :
: http://www.cl.cam.ac.uk/users/kw217/  mailto:kw217@cl.cam.ac.uk     :
:---------------------------------------------------------------------: