
dataToTag# is documented as getting the tag number of an enumeration, which is perfectly reasonable because it's designed to support deriving Enum. But it *appears* to work also for non-enumeration datatypes: dataToTag# Nothing = 0# dataToTag# (Just 3) = 1# Does this actually always work? If so, should that be documented, or is there a realistic possibility that its behavior will change in the future? Additionally: the documentation for dataToTag# urges readers to use GHC.Base.getTag instead. But dataToTag# is exported from the "public" GHC.Exts, whereas getTag is not. Should we add getTag to GHC.Exts, or change the documentation for dataToTag#? David

Based on memory rather that investigation: - yes it works on any data type - The reason that the primop dataToTag# is dangerous is that it does not evaluate its argument; it relies on the wrapper getTag to do so. Caveat emptor! It would be good to document this. Simon | -----Original Message----- | From: ghc-devs [mailto:ghc-devs-bounces@haskell.org] On Behalf Of | David Feuer | Sent: 02 August 2017 03:04 | To: ghc-devs@haskell.org | Subject: dataToTag# documentation | | dataToTag# is documented as getting the tag number of an enumeration, | which is perfectly reasonable because it's designed to support | deriving Enum. | But it *appears* to work also for non-enumeration datatypes: | | dataToTag# Nothing = 0# | dataToTag# (Just 3) = 1# | | Does this actually always work? If so, should that be documented, or | is there a realistic possibility that its behavior will change in the | future? | | Additionally: the documentation for dataToTag# urges readers to use | GHC.Base.getTag instead. But dataToTag# is exported from the "public" | GHC.Exts, whereas getTag is not. Should we add getTag to GHC.Exts, or | change the documentation for dataToTag#? | | David | _______________________________________________ | ghc-devs mailing list | ghc-devs@haskell.org | https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.h | askell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fghc- | devs&data=04%7C01%7Csimonpj%40microsoft.com%7C769c2a45735642edd36508d4 | d94a767e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6363723612191322 | 18%7CUnknown%7CVW5rbm93bnx7IlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjo | iT3RoZXIifQ%3D%3D%7C- | 1&sdata=585d0E3YyeKBk3DYqpvWR8ePnMR6bJ6%2Bu6dAGYk%2BNxo%3D&reserved=0
participants (2)
-
David Feuer
-
Simon Peyton Jones