{
  "$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"
}