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