{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreia5hquc6fpq5fkzuyl4fybt2ggc5m2idshy2tmtrudab2h3ge7gtm",
    "uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mjq47z7lyj52"
  },
  "path": "/t/lawvere-theories/13944#post_5",
  "publishedAt": "2026-04-17T22:24:31.000Z",
  "site": "https://discourse.haskell.org",
  "textContent": "Yes, having a `Signature x -> x` as operations is definitely easier to work with, and extending signatures and laws in a tower of varieties evidently works, too.\n\nIn your `Variety` class, I can see why `Requirements var x` is a useful context for `lawful`. But I fail to see why _the same constraint_ should be needed for the `operations`. Why would a `Semigroup` need to have an `Eq` instance?\n\nThe `Variety` class has a less tight coupling between the signature and the laws; they could be entirely unrelated types. In contrast, Lawvere takes the signature as part of the skeleton of the category the laws are written in.",
  "title": "Lawvere theories"
}