[Haskell-cafe] data vs newtype (was: OOP'er with (hopefully) trivial questions)

Bayley, Alistair Alistair_Bayley at invescoperpetual.co.uk
Mon Dec 17 08:51:31 EST 2007

> From: haskell-cafe-bounces at haskell.org 
> [mailto:haskell-cafe-bounces at haskell.org] On Behalf Of Nicholls, Mark
> To recap...
> "type" introduces a synonym for another type, no new type is
> created....it's for readabilities sake.
> "Newtype" introduces an isomorphic copy of an existing type...but
> doesn't copy it's type class membership...the types are
> disjoint/distinct but isomorphic (thus only 1 constructor param).
> "data" introduces a new type, and defines a composition of existing
> types to create a new one based on "->" and "(".
> "class" introduces a constraint that any types declaring themselves to
> be a member of this class...that functions must exist to satisfy the
> constraint.

As an aside, I was wondering exactly what the differences are between
newtype and data i.e. between

> newtype A a = A a


> data A a = A a

According to:
newtype is, umm, stricter than data i.e. newtype A undefined =
undefined, but data A undefined = A undefined. Other than that, newtype
just seems to be an optimization hint. Is that a more-or-less correct

Confidentiality Note: The information contained in this message,
and any attachments, may contain confidential and/or privileged
material. It is intended solely for the person(s) or entity to
which it is addressed. Any review, retransmission, dissemination,
or taking of any action in reliance upon this information by
persons or entities other than the intended recipient(s) is
prohibited. If you received this in error, please contact the
sender and delete the material from any computer.

More information about the Haskell-Cafe mailing list