Newest at the top
| 2026-01-15 20:33:03 +0100 | <monochrom> | We have a real type system, so we don't need artificial lines between relations, functions, numbers, values, constants. |
| 2026-01-15 20:32:11 +0100 | <monochrom> | A relation is a function. A function is an operator. So a relation is also an operator. >:) |
| 2026-01-15 20:29:33 +0100 | <__monty__> | Maybe the right type for (==) should be `Eq a => Maybe a -> Maybe a -> Maybe a`? Then we can get associativity. |
| 2026-01-15 20:26:52 +0100 | jreicher | (~joelr@user/jreicher) (Quit: In transit) |
| 2026-01-15 20:26:12 +0100 | <dolio> | Parity for the 0 bits instead of 1 bits. |
| 2026-01-15 20:25:33 +0100 | <dolio> | Or wait, (/=) is parity. (==) is like anti-parity or something. |
| 2026-01-15 20:25:20 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 2026-01-15 20:24:57 +0100 | Hardyhardhard | (~Hardyhard@user/hardyhardhard) hardyhardhard |
| 2026-01-15 20:24:05 +0100 | jle` | (~jle`@2603:8001:3b00:11::1156) (Ping timeout: 245 seconds) |
| 2026-01-15 20:23:26 +0100 | <tomsmeding> | __monty__: sure :p |
| 2026-01-15 20:22:37 +0100 | Hardyhardhard | (~Hardyhard@user/hardyhardhard) (Quit: Client closed) |
| 2026-01-15 20:20:42 +0100 | <dolio> | The induced operator on booleans calculates parity. |
| 2026-01-15 20:20:23 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-01-15 20:20:12 +0100 | <dolio> | This isn't a relation. It's a decision procedure for a relation. |
| 2026-01-15 20:19:53 +0100 | <ncf> | (also, logical equivalence is not actually associative constructively, is it?) |
| 2026-01-15 20:19:07 +0100 | <ncf> | equality is a relation, not an operator. asking whether a relation is associative is usually a type error, except in the case where the relation is on propositions (in this case decidable ones), but that doesn't mean it's a good idea to do it |
| 2026-01-15 20:18:44 +0100 | <__monty__> | Are there any languages where a successful equality check "returns" the value, while an unsuccessful check returns False or something? |
| 2026-01-15 20:17:36 +0100 | <dolio> | Also the binary operator on booleans is pretty niche. |
| 2026-01-15 20:17:32 +0100 | <__monty__> | tomsmeding: I'm not so sure, `False == False == True` doesn't seem very useful. |
| 2026-01-15 20:16:55 +0100 | <dolio> | And that's kind of a dumb thing to depend on. |
| 2026-01-15 20:16:19 +0100 | <dolio> | The problem is that in situations with other types, the way parentheses are inserted affects whether it's well typed. |
| 2026-01-15 20:13:02 +0100 | <dolio> | Yeah. |
| 2026-01-15 20:12:25 +0100 | <tomsmeding> | I feel like the nonassociativity of the (==) operator in haskell is mostly because it is polymorphic. Had it been monomorphic for Bool, I'm sure it would have been made associative (in some direction) |
| 2026-01-15 20:11:52 +0100 | Tuplanolla | (~Tuplanoll@88-114-88-95.elisa-laajakaista.fi) Tuplanolla |
| 2026-01-15 20:09:19 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2026-01-15 20:04:14 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-01-15 19:53:25 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-01-15 19:48:21 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-01-15 19:46:49 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2026-01-15 19:41:50 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-01-15 19:39:50 +0100 | Everything | (~Everythin@172-232-54-192.ip.linodeusercontent.com) Everything |
| 2026-01-15 19:36:41 +0100 | Googulator | (~Googulato@2a01-036d-0106-29ac-fd48-b0ea-63d3-602a.pool6.digikabel.hu) |
| 2026-01-15 19:36:28 +0100 | Googulator | (~Googulato@2a01-036d-0106-29ac-fd48-b0ea-63d3-602a.pool6.digikabel.hu) (Quit: Client closed) |
| 2026-01-15 19:30:31 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2026-01-15 19:30:23 +0100 | Hardyhardhard | (~Hardyhard@user/hardyhardhard) hardyhardhard |
| 2026-01-15 19:25:48 +0100 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
| 2026-01-15 19:24:12 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Quit: ljdarj) |
| 2026-01-15 19:23:48 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-01-15 19:20:52 +0100 | elarks | (~elarks@user/yerrii) (Quit: WeeChat 4.7.1) |
| 2026-01-15 19:13:16 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2026-01-15 19:08:01 +0100 | merijn | (~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn |
| 2026-01-15 19:04:15 +0100 | <geekosaur> | that seems pretty obvious to me, since as defined either associativity makes the "other" one a comparison on `Bool` |
| 2026-01-15 19:01:24 +0100 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
| 2026-01-15 19:00:24 +0100 | <dolio> | Even though (==) is associative as an operation on Bool, Haskell will refuse to accept `x == y == z`. |
| 2026-01-15 18:58:05 +0100 | <dolio> | Not about whether how they're inserted matters. |
| 2026-01-15 18:57:54 +0100 | <dolio> | I expect the "associativity" in the question is not about that associativity. It sounds like it's asking about the rules on how parentheses are automatically inserted. |
| 2026-01-15 18:48:06 +0100 | EvanR | (~EvanR@user/evanr) EvanR |
| 2026-01-15 18:47:10 +0100 | humasect | (~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...) |
| 2026-01-15 18:43:25 +0100 | kuribas | (~user@2a02-1810-2825-6000-b6e0-77f4-472f-1183.ip6.access.telenet.be) (Remote host closed the connection) |
| 2026-01-15 18:34:09 +0100 | fp | (~Thunderbi@89-27-10-140.bb.dnainternet.fi) fp |