[Haskell-cafe] Type synonyms vs standard types

Olex P hoknamahn at gmail.com
Wed Sep 30 05:07:01 EDT 2009

True. But anyway newtype creates a new type which is not what I'm looking
for. In this case instead of passing a string "myAttrName" user should pass
constructor as well. And the next step of such "simplification" will be a
smart constructor attrName? :) And that's all just to show user of that
function what kind of parameters function expects! :-D

On Wed, Sep 30, 2009 at 5:47 AM, wren ng thornton <wren at freegeek.org> wrote:

> Olex P wrote:
>> This idea with new level of abstraction is good but in some cases it can
>> make things overcomplicated / less efficient. Does that mean "leave simple
>> built-in types as is"?
> That's what newtypes are for. A newtype is like a type alias, except that
> it is type checked. All newtype wrappering/unwrappering is compiled away so
> the representations are the same. The only performance difference is (==
> should be) that there can be overhead for strange ways of providing
> typeclass instances.[1]
> [1] By "strange ways" of providing typeclass instances I mean things like
> using
>    class    Peano p where ...
>    data     Z   = Z
>    newtype  S n = S n
>    instance Peano Z                where ...
>    instance Peano n => Peano (S n) where ...
> instead of a straightforward
>    data     ZorS       = Z | S Peano
>    instance Peano ZorS where ...
> Because of the newtype, the representation of (S n) is the same as the
> representation of Z, thus all peano numbers are the same size. However, we
> still need to keep that info around somewhere, and consequently the size of
> the (Peano n) dictionary is linear in n (because it needs a pointer to the
> (Peano (n-1)) dictionary, and so on until (Peano Z)).
> On the other hand, with the straightforward version, the size of (n ::
> ZorS) is linear in n, but the size of the (Peano ZorS) dictionary is
> constant.
> --
> Live well,
> ~wren
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090930/ab70ffc3/attachment.html

More information about the Haskell-Cafe mailing list