{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreicb4mvtaoixirbf5lv3s2ffxubl27ryxocpli7epaccmfdcrev644",
"uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mknoi7hfvjf2"
},
"path": "/t/why-dont-we-have-an-import-what-you-use-commandment-in-haskell/13969#post_5",
"publishedAt": "2026-04-29T17:19:05.000Z",
"site": "https://discourse.haskell.org",
"textContent": "I’m surprised to learn that in this scenario, Package B is automatically re-exporting the instances it has imported from Package A. That seems to be the real source of the problem—what it’s exporting has changed without any change to its source code, nor any syntactic indication it’s re-exporting anything to begin with. (Probably I’ve benefitted from the convenience of this without realizing it, but I’m still surprised.)\n\nIf this weren’t the case, then Package C would have always had to declare its actual dependency on Package A in order to use the instance, and the removal of the instance would correctly not affect Package B (which wasn’t/isn’t using it).",
"title": "Why don't we have an \"`import` what you use\" commandment in Haskell?"
}