{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreigcr5yv2lt6nxld22yrmmnrokhbanq3hltkmh7qahalwnp6xenpgm",
    "uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mn7lgozid7g2"
  },
  "path": "/t/pattern-synonyms-and-type-families/14180#post_3",
  "publishedAt": "2026-06-01T07:11:55.000Z",
  "site": "https://discourse.haskell.org",
  "textContent": "I don’t think there is a fundamental difficulty here, it just hasn’t been implemented (yet). Pattern synonyms would need to be internally tagged as to whether they are promotable, and promotable pattern synonyms could be treated as type synonyms. It’s true that type families may occur in the pattern synonym’s type, but that’s also true for data constructors.\n\nIn fact, the example works if you manually add a type synonym definition\n\n\n    type ZeroAB = Ab 0 0\n\n\nbeside the pattern synonym. This could be annoying if it leads to needing to disambiguate between the type and pattern synonym (when they conceptually represent the same thing), but in most contexts GHC’s existing support for punned namespaces should be enough.",
  "title": "Pattern Synonyms and type families"
}