
On Tue, Oct 26, 2010 at 8:12 PM, Bulat Ziganshin
I find the use of 'undefined' ugly
yu aren't groked lazy evaluation :)
I know that 'sizeOf (undefined :: Word8)' will never evaluate the 'undefined' due to laziness and is completely safe. However, my point is that using 'undefined': * is dangerous because the type checker won't warn you when you accidentally put 'undefined' in the wrong place, * is dangerous when you accidentally evaluate the argument in an instance of Storable, * is harder to optimize because of the unused argument, * is only used for type-checking and so why not help the type-checker by only using a type (Tagged a Int). Also note that the patches attached to the ticket simplify a lot of code. See that in most files there are more '-'s than '+'s: http://hackage.haskell.org/trac/ghc/attachment/ticket/4443/base_ticket_4443.... (To be fair, most of these functions could have been written without using helper functions by using 'forall a. ... sizeOf (undefined :: a)' directly.) Regards, Bas