{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreielcht7op67adfyw7tw2ljocgp3vpsedx6nzbwa3wduh7xvvox46y",
"uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mot4kajq4pr2"
},
"path": "/t/error-ghc-91510-illegal-polymorphic-type/14304#post_6",
"publishedAt": "2026-06-21T17:53:29.000Z",
"site": "https://discourse.haskell.org",
"textContent": "I’m afraid I still can’t quite make it work:\n\n\n type Objects :: Type -> (k -> k -> Type) -> k -> Constraint\n class Objects bleh cat (x :: k) where\n type ObjectsC cat (x :: k) :: Constraint\n\n type Category :: (k -> k -> Type) -> Constraint\n class Category cat where\n id :: (Objects bleh cat x) => cat x x\n (.) ::\n (Objects bleh cat x, Objects bleh cat y, Objects bleh cat z) =>\n cat y z -> cat x y -> cat x z\n\n instance Objects bleh (Transform cat) f where\n type ObjectsC cat f = () -- GHC-25897\n\n\nThe new error text:\n\n\n • Expecting one more argument to ‘f’\n Expected kind ‘k’, but ‘f’ has kind ‘j -> k’\n ‘k’ is a rigid type variable bound by\n a family instance declaration\n\n\nHowever, `ObjectsC` is indeed expecting `f` to have kind `j -> k`.",
"title": "Error GHC-91510: illegal polymorphic type"
}