{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreiexrio43ot43zi5udg3vt6elwpm4my2axadad6lxolg5rjvohyliy",
"uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mnjfhjdbg352"
},
"path": "/t/serokell-s-work-on-ghc-dependent-types-part-5/14184#post_9",
"publishedAt": "2026-06-05T05:00:27.000Z",
"site": "https://discourse.haskell.org",
"textContent": " * The `flip` situation is indeed rather disappointing. For reference, Agda’s type for `flip` looks like this:\n\n flip : ∀ {A : Set a} {B : Set b} {C : A → B → Set c} →\n ((x : A) (y : B) → C x y) → ((y : B) (x : A) → C x y)\n flip f = λ y x → f x y\n\n\nAnd it relies on higher-order unification to instantiate `C` at use sites. It’s not clear to me what the Haskell solution to this problem could be.\n\n * The `ExplicitNamespaces` problem is easier to address. Making one extension imply another is a one-line change, from the implementation standpoint.\n\n\n",
"title": "Serokell’s Work on GHC: Dependent Types, Part 5"
}