[Haskell-cafe] Re: Data polymophism
maeder at tzi.de
Fri Jun 8 11:43:17 EDT 2007
> I have this class which gives a common interface to (UniqueIndex a k)
> and (MultiIndex a k) :
I do not understand this
> class (Show a, Key_ k) => Index_ i a k | i -> k, k -> a where
> buildKey :: (a -> k)
this method "buildKey" is not sufficient to derive the type "i" in an
application ("i" determines "k" but not vice versa)
> Now i need to have these indexes in a list, so i declared that type :
> data DbIndex = forall a k i. (Show a, Key_ k, Index_ i a k) => DbIndex i
data DbIndex = forall a k i. (Index_ i a k) => DbIndex i
should do as well.
> for instance, this doesn't work:
> liftDbIndex (DbIndex index) fun = DbIndex (fun index)
you can apply only a method of Index_ to index.
> this doesn't work either :
> dbIndexBuildKey (DbIndex index) value = (buildKey index) value
buildKey's type is not sufficient (see above)
> How can i access the enclosed concrete index, via its Index_ class ?
Add corresponding methods to the class. (Alternatively or additionally
store an index as a dynamic value.)
More information about the Haskell-Cafe