> > Actually I think you would be better off with a class like
> > this:
> > 
> >   class (Eq key, Ord key) => Dictionary dict key where
> >      delete :: key -> dict dat -> dict dat
> >      search :: key -> dict dat -> (key, SearchResult dat, dict dat)
> >      searchList :: [key] -> dict dat -> ([(key,SearchResult dat)],dict dat)
> 
> Ok, I did not reconize this solution, it seems to me the (nearly) proper one.
> But why not write:
> 
>    class => Dictionary dict where
>        delete :: (Eq key, Ord key) => key -> dict key dat -> dict key dat
>        ...
> 
> So one could avoid multiparamter classes at all. The two types key and dat
> should be inferred by the type of dict (which is expressed by 'dict key dat'). I
> can't think about a dictionary where key or dat are not associated with dict.

Yes, that's ok too.  You might find my paper "Bulk types with class"
somewhat relevant.

        http://www.dcs.gla.ac.uk/~simonpj/papers.html

Simon


Reply via email to