<div dir="ltr"><div><div style="font-size:small;text-decoration-style:initial;text-decoration-color:initial"><span style="font-family:monospace,monospace">λ. :set -XFlexibleContexts -XFlexibleInstances -XMultiParamTypeClasses -XUndecidableInstances</span><br></div><font face="monospace, monospace">λ. import RIO</font></div><div><font face="monospace, monospace">λ. import Data.Has</font></div><div><font face="monospace, monospace">λ. class HasBool a where boolL :: Lens' a Bool</font></div><div><font face="monospace, monospace">λ. instance {-#OVERLAPPABLE#-} HasBool a => Has Bool a where hasLens = boolL<br></font></div><div><font face="monospace, monospace">λ. instance {-#OVERLAPPABLE#-} Has Bool a => HasBool a where boolL = hasLens</font></div><div><font face="monospace, monospace">λ. runRIO () $ view boolL</font></div><div><font face="monospace, monospace">^CInterrupted.<br></font></div><div><br></div><div>The RIO environment <font face="monospace, monospace">()</font> doesn't contain a Bool. I can see how the typechecker might get lost in this, but I can compile an equivalent program; it loops on execution.</div></div>