[Haskell-cafe] OOP'er with (hopefully) trivial questions.....

Brent Yorgey byorgey at gmail.com
Mon Dec 17 10:37:48 EST 2007


On Dec 17, 2007 8:04 AM, Nicholls, Mark <Nicholls.Mark at mtvne.com> wrote:

> No that's fine....its all as clear as mud!......but that's not your
> fault.
>
> 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.
>
> I'm sure that's wrong, but it's a good as I've got at the moment.
>
> And to a degree it's all upside down....what Haskell thinks are
> types...I think are "singnatures" and what Haskell thinks is a type
> "class" I think of as a type.....it's not going to be easy.
>
>
I think you've got it pretty well!   The one quibble I would have with your
recap is that I'm not sure what you mean by saying that "data" creates a new
type 'based on "->" and "("'.  Other than that it seems pretty spot-on. =)

-Brent
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20071217/bb0cad52/attachment.htm


More information about the Haskell-Cafe mailing list