[EMAIL PROTECTED] writes:
> G'day all.
>
> Quoting Robert Dockins <[EMAIL PROTECTED]>:
>
> > I've considered reformulating the Sequence class to be more similar
> > to the Collection classes (which use MPTCs, fundeps and mention the
> > element type),
>
> The redesign of the Collection hierarchy was from my tree. The main
> reason why I changed it was that ternary tries couldn't really be
> typed properly. (Chris' implementation of Patricia trees used a
> phantom key type along with a stern warning to only define the Int
> instance. That didn't work for ternary tries, since the key type is
> polymorphic.)
>
> I didn't get around to fixing Sequence because there wasn't a need for
> it yet, but yes, it should be done.
That's a tough call to make. Changing the kind of Sequence to * from *
-> * means losing the Functor, Monad, and MonadPlus superclasses and all
the various maps and zips.
I guess you could separate those into an auxiliary class,
class (Functor s, MonadPlus s) => SeqFunctor s where
mapWithIndex :: (Int -> a -> b) -> s a -> s b
zip :: s a -> s b -> s (a,b)
...
and require that any instance of SeqFunctor also be an instance of
Sequence.
A pity we can't do something like,
class (Functor s, MonadPlus s, forall a. Sequence (s a) a) =>
SeqFunctor s where
...
--
David Menendez <[EMAIL PROTECTED]> | "In this house, we obey the laws
<http://www.eyrie.org/~zednenem> | of thermodynamics!"
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe