On 06 October 2004 00:53, John Meacham wrote: > On Tue, Oct 05, 2004 at 01:48:30PM +0100, Simon Marlow wrote: >> It would probably be better to return 0#/1# instead of a Bool from >> the comparison primops, because this would expose slightly more >> detail to the simplifier and might result in slightly better code in >> some cases (but no dramatic improvements). It would also let us >> remove a bit of complexity from the code generator. > > This seems like it could be nicely generalized such that all > enumeration types unbox to the unboxed integer of their offset. so > > data Perhaps = Yes | Maybe | No > > can unbox to an Int# with 0# == Yes 1# == Maybe and 2# == No.
Yes, a strict enumeration should be implemented as an Int#, both in the strictness analyser and also when you {-# UNPACK #-} a constructor field. This is something we'd like to try, but haven't got around to it yet. Maybe a good bite-sized project for a budding GHC hacker? :-) > Then we get the Bool optimization for free. The original question was about the primitive comparisons, so I think we'd still have to change the types of these primitives. Furthermore we'd probably have to teach the compiler that the result of the comparison primops is compatible with a strict Bool. It wouldn't be entirely free. Cheers, Simon _______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users