[Haskell-cafe] Need an example of new type constructor with zero data constructors

Michael Burge michaelburge at pobox.com
Fri Aug 12 15:28:27 UTC 2016


One use is when you want an open sum type rather than a closed one. For
example, you might want users of your library to add their own
'constructors'. Then, they serve a purpose similar to a constructor that
takes no arguments:

{-# LANGUAGE EmptyDataDecls #-}

class Color a where
  rgb :: a -> (Int, Int, Int)

data Red
data Green
data Blue

instance Color Red where
  rgb _ = (255, 0, 0)

instance Color Green where
  rgb _ = (0, 255, 0)

instance Color Blue where
  rgb _ = (0, 0, 255)

data ColorADT = Color_Red | Color_Green | Color_Blue
rgb_adt Color_Red   = (255, 0, 0)
rgb_adt Color_Green = (0, 255, 0)
rgb_adt Color_Blue  = (0, 0, 255)


On Fri, Aug 12, 2016 at 8:16 AM, James Brown <james.brown5374 at gmail.com>
wrote:

> What's the purpose to allow data declarations with no constructors?
>
> On Fri, Aug 12, 2016 at 11:08 AM, Sergey N. Yashin <
> yashin.sergey at gmail.com> wrote:
>
>> For zero data constructors you need to use only EmptyDataDecls
>> <https://prime.haskell.org/wiki/EmptyDataDecls> extension.
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> To (un)subscribe, modify options or view archives go to:
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>> Only members subscribed via the mailman list are allowed to post.
>>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160812/0d8ccb52/attachment.html>


More information about the Haskell-Cafe mailing list