[Haskell-cafe] Efficient object identity (aka symbols as data)
Andrew Coppin
andrewcoppin at btinternet.com
Thu May 26 20:56:55 CEST 2011
On 26/05/2011 10:59 AM, Jacek Generowicz wrote:
> Any comments on the relative efficiency of the above as compared to
>
> A == B in the context of
>
> data Foo = A | B | C | D | ... lots more ...
>
> ?
>
> (I imagine that a Sufficiently Smart Compiler could reduce (==) ::
> Person Person to just integer comparison.)
My understanding is that if you have a constructor with no fields, it
gets allocated as a compile-time constant. In other words, "C" is just a
pointer to a static data structure somewhere in the program binary, and
(==) effectively becomes pointer equity.
OTOH, I am not a GHC developer...
More information about the Haskell-Cafe
mailing list