{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreifgicd77e2ihihjww4qcftvvzyjao5pg3ubimokre6v7xi2w2wl4a",
    "uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mnxa3yzixgt2"
  },
  "path": "/t/final-call-for-ghc-string-interpolation-proposal/14234#post_8",
  "publishedAt": "2026-06-10T15:31:50.000Z",
  "site": "https://discourse.haskell.org",
  "textContent": "BurningWitness:\n\n> Also I don’t see a naive find-replace solution (as in “replace every `${foo}` in string with value at `foo`”) in the “Motivation” section.\n\nThanks, added!\n\nBurningWitness:\n\n> `Data.ByteString.Builder` does manual interpolation better, the only reason it’s not a proper replacement is poor typing. If `Builder` could be `UTF8` on the type level, you’d get a perfect chain of\n>\n>\n>     \"string\" <> encoder value <> \"string\" <> encoder' value' <> \"string\" <> ..\n>\n>\n\nStill a bit verbose/unergonomic. Compare with the proposal (adding spaces for visibility):\n\n\n    \"string \" <> encoder value <> \" string \" <> encoder' value' <> \" string\"\n\n    B.s\"string ${encoder value} string ${encoder' value} string\"\n",
  "title": "Final call for GHC String Interpolation proposal!"
}