{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreiggjvnc2t44uirgzib6btb2oy3num67ylwjooiibclgqqkfqjqnd4",
    "uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mh2fwstzoup2"
  },
  "path": "/t/yet-another-opinion-on-llms-hasufells-blog/13775?page=2#post_22",
  "publishedAt": "2026-03-14T21:12:43.000Z",
  "site": "https://discourse.haskell.org",
  "textContent": "exactly this: give an LLM a stub function with some very distinct types and a defined behavior, and it can fill that in without issues. add a few unit tests to that to actually verify it, and it is having a hard time to produce anything that’s fundamentally wrong. the coding style? from meh to horrible at times, but if prodded enough, it can clean that up too\n\ndoing a refactor and now you got a bunch of simple compile errors all throughout the project? a coding agent is perfectly capable of compiling, fixing those locally, repeat. even isn’t that bad at writing sed scripts that to a lot of that mechanically (haskell has quite a big advantage here since it is nearly impossible to get this wrong and the code to still compile)\n\nso there are quite a few scenarios where you can effectively use them. you don’t even have to touch your editor to actually write out most of your actual, just stub out a structure that makes sense, mark problematic sections that need rework, point out edge cases that still need to be tested/verified, and in such a limited scope, that works perfectly well. just don’t let it off the leash, or you’ll end up with a mess that nobody (human or ai) can fix or maintain past a certain size",
  "title": "Yet another opinion on LLMs · Hasufell's blog"
}