Keep in mind a newtype of Foo will have a different TypeRep, but will compare as equal under reallyUnsafePtrEquality#.-EdwardOn Sun, Feb 11, 2018 at 5:14 AM, David Feuer <david.feuer@gmail.com> wrote:Can I use reallyUnsafePtrEquality# reliably to identify whether a value is a nullary constructor of a particular type? For example, if I havedata Foo = FooCan I writeisFoo :: a -> BoolisFoo !a = isTrue# (reallyUnsafePtrEquality# a Foo)instead ofisFoo :: forall a. Typeable a => a -> BoolisFoo a| Just Refl <- eqTypeRep (typeRep @a) (typeRep @Foo), Foo <- a= True| otherwise = FalseThe reason I'm asking is because this would let me (potentially) raiseIO# a nullary constructor and then catch# it and see if it was what I was looking for rather than having to open a SomeException to get to an Exception dictionary, open that to get a TypeRep, and then peer inside that to check a Fingerprint. That is, I'd get lighter-weight exceptions that only carry the information I actually need.Thanks,David
_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-caf e
Only members subscribed via the mailman list are allowed to post.