On Sunday 06 May 2007, Mike Hamburg wrote:
> data MetaMap k v where
>     Map  :: Ord k => Map.Map k v -> MetaMap k v
>     Cat  :: MetaMap k1 (MetaMap k2  v) -> MetaMap (k1,k2) v
>     {- other, similar constructors -}
>
> lookup :: Monad m => k -> MetaMap k v -> m v
> lookup k (Map  m) = Map.lookup k m
> lookup k (Cat  m) = case k of (k1,k2) -> lookup k1 m >>= lookup k2


What version of ghc are you using?

The snippet works here, but I believe that GADTs only store the Ord dictionary 
as is needed here in HEAD. It won't work if you're trying to do this with 
6.6.

-- Dan Doel
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to