{
"$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!"
}