i seeing impredicativetypes , wanted see them. when ran feel strange behavior when comes interaction typeclasses.
:t mempty mempty :: forall a. monoid => :t right right :: forall b. b -> either b so figured combine them make impredicatively typed expression:
:t right mempty right mempty :: forall b. monoid b => either b looks extension not infer impredicative types, doesn't seem unreasonable, know type inference not possible in general case when start adding features this.
so decided make fact wanted impredicative type explicit:
:t right mempty :: forall a. either (forall b. monoid b => b) which me seemed reasonable, literally pasting on b in right type signature type of mempty, , not lifting forall.
but give me following error:
no instance (monoid (forall b. monoid b => b)) which seems rather absurd. since every monoid instance of monoid definition.
can explain me going on here? issue difficult or impossible decide on 1 instance when using type, , ghc means "no unambiguous / decidable instance for..." rather "no instance..."?
as side note when take typeclasses out of situation appears work ok:
:t right undefined :: forall a. either (forall b. b) type checks , gives me impredicative type specified.
so question isn't marked unanswered guess reiterate said in comments.
basically impredicativetypes totally unsupported, , no 1 knows how should work. trying meaningful in current state bad idea. answer just: "don't try that".
Comments
Post a Comment