⟨/⟩ AT Protocol Record Source
at://did:plc:pi6woz4d47bkuws673w2il2r/site.standard.document/3mnjfhjdbgx52
← Back to post
{
  "$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"
}