[Haskell-cafe] Associated types

Miguel Mitrofanov miguelimo38 at yandex.ru
Thu Jul 1 14:38:49 EDT 2010


GADTs?

data CompletePathEv p where CompletePathEv :: CompletePath p =>  
CompletePathEv p

class Path p => IncompletePath p where
     type CompletedPath p :: *
     completedPathEv :: CompletePathEv (CompletedPath p)

Later you can pattern-match on completedPathEv and get your  
CompletePath instance back.

On 1 Jul 2010, at 22:09, Andrew Coppin wrote:

> Consider the following:
>
> class Path p where ...
>
> class Path p => CompletePath p where ...
>
> class Path p => IncompletePath p where
>   type CompletedPath p :: *
>
> Obviously, the idea is that CompletedPath Foo (where Foo is an  
> IncompletePath) should yield some type which is a CompletePath.  
> However, the source code does not actually state this, so GHC  
> (rightly) complains that it was unable to deduce this constraint  
> from the actual code written.
>
> Is it possible to state this constraint? If so, how? (And if not,  
> the answer, presumably, is to fundamentally redesign the whole  
> thing...)
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe



More information about the Haskell-Cafe mailing list