[Haskell] Re: Parameterized Show
Keean Schupke
k.schupke at imperial.ac.uk
Mon Nov 15 06:21:47 EST 2004
Do you need a language extension at all? You can certainly
do it with the existing extensions!
data ShowDict a
instance Show (ShowDict a) where
showsPrec _ (ShowDict a) = ...
Keean
George Russell wrote:
> Graham Klyne wrote (snipped):
> > I like the principle of parameterizing Show to allow for different
> encoding
> > environments (indeed, I had wondered as I was writing my earlier
> message if
> > the two cases were really sufficient). Indeed, in the application area
> > that interests me (Semantic Web) it could be beneficial to have
> different
> > encoding options corresponding to different serializations of RDF (e.g.
> > RDF/XML and Notation3).
>
> I like the idea too, not just for Show but for any instances. It
> seems to
> me that in general you should be able to combine the convenience of the
> Haskell type system with the power of Standard ML's structures and
> functors.
> Something along these lines was done by Kahl & Scheffczyk ("Named
> Instances for
> Haskell Type Classes", Haskell Workshop 2001).
>
> In general I suspect you can do this without even having to extend the
> existing
> Haskell typesystem very far. The following language extensions seem
> sufficient.
> (1) for a class declaration, a way of declaring that a certain type
> represents
> a dictionary of functions for that class, for example
>
> class Show a (ShowDict,appFn) where
> ...
>
> would define the new class "Show" but also the new type (ShowDict a)
> representing
> dictionaries for that class. It also declares a value appFn which I
> shall explain
> in a moment.
>
> (2) for an instance declaration, a way of "naming" the corresponding
> dictionary.
>
> instance Show Int (intShowDict) where
>
> would create a value "intShowDict :: ShowDict Int"
>
> (3) a way of using the dictionary. For this we need (appFn),
> declaraed by the type
> declaration. appFn has the unorthodox type
>
> appFn :: ShowDict a -> (forall a . Show a => b) -> b
>
>
> _______________________________________________
> Haskell mailing list
> Haskell at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell
More information about the Haskell
mailing list