{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreideh25rrhfgexqxpunankav5so7f2xfcgokbzdjdlrtemqvs67pe4",
    "uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mk2snnj3f6w2"
  },
  "path": "/t/the-hazy-haskell-compiler/13497?page=2#post_25",
  "publishedAt": "2026-04-22T03:55:10.000Z",
  "site": "https://discourse.haskell.org",
  "textContent": "Today is my birthday and I’d figure I would celebrate by giving a progress report on Hazy.\n\nHere’s a quick list of what I’ve done over these past 3 months\n\n  * Syntax sugar\n    * Lambda expressions\n    * Case expressions\n    * Lambda case expressions\n    * Let pattern binding\n    * Integer literals\n    * Floating point literals\n    * Do notation\n    * Right sections\n    * Type annotation expressions\n  * Language features\n    * Default methods\n    * Monomorphic generalization\n    * Newtypes\n    * Strict fields\n  * Library / Tooling\n    * A significant part of the Prelude has been implemented\n    * A bare minimum package format for saving and loading sets of modules\n\n\n\nI also have another new extension: `LevityPolymorphicFields`. You can now parameterize a field by it’s strictness.\n\n\n    type List :: Levity -> Type -> Type\n    data List s a\n      = Nil\n      | Cons\n          { head :: ~!s a,\n            tail :: ~!s (List s a)\n          }\n\n\nHere `List Strict a` would be a fully strict list while `List Lazy a` would be a lazy one. I have more details in my readme.\n\nOf course all of this isn’t enough for Hazy to be usable yet as there’s still some missing parts, but I am getting a lot closer.",
  "title": "The Hazy Haskell Compiler"
}