{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreigaaxrbzpcqcezscbs4ka2xsepnrzzfa7rllmznushdfigugzcy5i",
    "uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mn7lgv5ufjk2"
  },
  "path": "/t/homomorphic-static-analysis/14146#post_14",
  "publishedAt": "2026-06-01T06:44:54.000Z",
  "site": "https://discourse.haskell.org",
  "textContent": "marcosh:\n\n> and every time you have a `Compose (First ...) (Second ...)` you optimize it to a parallel computation\n\nYes, that’s exactly what I tried and which I couldn’t figure out. I need to somehow detect that `Compose (First ...) (Second ...)` is the same as `Compose (First ...) (Fun id (Second ...))` unless I want to hurt Arrow/Profunctor laws and I have no idea how to do that, because I can’t do an equality check on `a -> a`.",
  "title": "Homomorphic static analysis"
}