[Haskell-cafe] Associated types

David Menendez dave at zednenem.com
Thu Jul 1 14:22:12 EDT 2010


On Thu, Jul 1, 2010 at 2:09 PM, Andrew Coppin
<andrewcoppin at btinternet.com> 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...)

Something like this should work:

class (Path p, CompletePath (CompletedPath p)) => IncompletePath p where
    type CompletedPath p :: *

-- 
Dave Menendez <dave at zednenem.com>
<http://www.eyrie.org/~zednenem/>


More information about the Haskell-Cafe mailing list