<div dir="ltr">Hello,<br><br>I recently had a problem where GHC couldn&#39;t deduce some type classes from my constraints.&nbsp; I would get error messages like:<br>Could not deduce (Conflict (PatchInfoAnd p),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Patchy (PatchInfoAnd p))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; from the context (RepoPatch p)<br><br>But, I had some instances like this (minus the function definitions):<br>class (Patchy p, Effect p, FromPrims p, Conflict p) =&gt; RepoPatch p<br><br>instance Effect p =&gt; Effect (PatchInfoAnd p)<br>
<br>instance Conflict (p x y) =&gt; Conflict (PatchInfoAnd (p x y))<br><br>instance RepoPatch (p x y) =&gt; Patchy (PatchInfoAnd (p x y))<br><br>The x and y in the last two are just phantom types on p.&nbsp; When I noticed that the phantom types were missing from the instance definition of Effect (PatchInfoAnd p), I removed them from the last two definitions.&nbsp; This made the &quot;Could not deduce...&quot; error message disappear.<br>
<br>Why do the phantom types not belong in the instance definition?&nbsp; I&#39;d like to understand the problem more fully, but I&#39;m not sure what the problem is or how to get started researching it, so if someone could point me in the right direction I&#39;d be very happy!<br>
<br>Thanks!<br>Jason<br></div>