[Haskell-cafe] multi parameter type classes for NP problems

Joshua Ball sciolizer at gmail.com
Wed Dec 20 17:27:29 EST 2006


That works. Thanks. I didn't realize you could put types in the
expression itself.

On 12/20/06, Greg Buchholz <haskell at sleepingsquirrel.org> wrote:
> Joshua Ball wrote:
> > Here is how I am trying to solve the problem, using multi-parameter
> > type classes.
> >
> > class NPProblem inst cert where
> >    validates :: cert -> inst -> Bool
> >    certificates :: inst -> [cert]
> >    decide :: inst -> Bool
> >    decide i = any (\x -> x `validates` i) $ certificates i
> >
> > Unfortunately, ghc throws the following type error:
> >
> > NPProblem.hs:5:45
> >    Could not deduce (NPProblem inst a)
> >      from the context (NPProblem inst cert)
> >      arising from use of `certificates' at NPProblem.hs:5:45-58
> >    Possible fix:
> >      add (NPProblem inst a) to the class or instance method `decide'
> >    In the second argument of `($)', namely `certificates i'
> >    In the expression:
> >          (any (\ x -> x `validates` i)) $ (certificates i)
> >    In the definition of `decide':
> >        decide i = (any (\ x -> x `validates` i)) $ (certificates i)
>
> Maybe something like?...
>
> class NPProblem inst cert where
>    validates :: cert -> inst -> Bool
>    certificates :: inst -> [cert]
>    decide :: inst -> Bool
>    decide i = any (\x -> x `validates` i) $ (certificates i :: [cert])
>
> ...or a functional dependency of some sort...
>
> class NPProblem inst cert | inst -> cert where
>
> _______________________________________________
> 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