[Haskell-beginners] Re: how to define a user datatype consisting of
instances of String?
Benjamin L.Russell
DekuDekuplex at Yahoo.com
Thu Oct 23 05:48:58 EDT 2008
On Thu, 23 Oct 2008 18:39:52 +0900, Benjamin L. Russell
<DekuDekuplex at Yahoo.com> wrote:
>instance Show Wine where
> show (Red Merlot) = "Merlot"
> show (Red Syrah) = "Syrah"
> show (Red Port) = "Port"
> show (White SauvignonBlanc) = "Sauvignon Blanc"
> show (White Riesling) = "Riesling"
> show (White PinotNoir) = "Pinot Noir"
>
>instance Show Red where
> show Merlot = "Merlot"
> show Syrah = "Syrah"
> show Port = "Port"
>
>instance Show White where
> show SauvignonBlanc = "Sauvignon Blanc"
> show Riesling = "Riesling"
> show PinotNoir = "Pinot Noir"
The only remaining issue is whether there is a way to define the type
constructor for Wine without pre-defining parts that are later defined
in the type constructors for Red and White.
In the above code, for example,
>instance Show Wine where
> show (Red Merlot) = "Merlot"
essentially pre-defines the following definition later given in the
type constructor for Red:
>instance Show Red where
> show Merlot = "Merlot"
This seems redundant.
Since the type definition for Wine is
data Wine = Red Red | White White
the type constructors for Red and White both require an argument, so
show (Red Merlot) = ...
seems reasonable.
This would seem to imply that if I need to reduce redundancy, I should
probably rewrite the RHS of the above line.
Is there a way to refer to the type constructors for Red and White in
the type constructor for Wine?
-- Benjamin L. Russell
More information about the Beginners
mailing list