{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreid72jnvuchm5j57i2px5o5nj5l2n7qp3q6nvjzlnjqmybnqeplwm4",
    "uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mhlcx6lvj6q2"
  },
  "path": "/t/sneak-peek-bolt-math/13766?page=2#post_27",
  "publishedAt": "2026-03-21T04:06:38.000Z",
  "site": "https://discourse.haskell.org",
  "textContent": "Got it, I misunderstood.\nBy the way, is arity a necessary type parameter for Function? I don’t see where it gets used, and wouldn’t a `Length` type family on args work if it was ever needed?\n\n\n    type Function :: k -> [Type] -> Contraint\n    class Function r args | r -> args where\n        type Return r args :: Type\n        call :: Call args (Return r args)\n\n\nWon’t this also compile and be simpler, with the same amount of type inference? I don’t see arity doing any work in the code.",
  "title": "Sneak Peek: Bolt Math"
}