2026/01/15

Newest at the top

2026-01-15 21:51:08 +0100 <jreicher> thenightmail: I'm fairly sure in mathematics the comparison "operators" are not operators at all. In algebra an operator on a set produces another element from the same set. Comparison, on the other hand, is a predicate.
2026-01-15 21:50:21 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-15 21:49:50 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 256 seconds)
2026-01-15 21:46:48 +0100Enrico63(~Enrico63@2001:b07:646b:5fed:9efc:e8ff:fe24:3213) (Client Quit)
2026-01-15 21:46:01 +0100 <[exa]> -XLexicalKinds
2026-01-15 21:43:37 +0100Enrico63(~Enrico63@2001:b07:646b:5fed:9efc:e8ff:fe24:3213) Enrico63
2026-01-15 21:43:37 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-01-15 21:43:35 +0100jreicher(~joelr@user/jreicher) jreicher
2026-01-15 21:42:59 +0100 <monochrom> TypeDirectedLexicalResolution? >:)
2026-01-15 21:42:52 +0100divlamir(~divlamir@user/divlamir) divlamir
2026-01-15 21:42:25 +0100 <humasect> yeah
2026-01-15 21:42:23 +0100 <dolio> That's innovation.
2026-01-15 21:42:11 +0100 <dolio> Anyhow, as I said, Haskell can take it to the next level by making lexing undecidable.
2026-01-15 21:41:03 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-01-15 21:40:35 +0100divlamir(~divlamir@user/divlamir) (Ping timeout: 240 seconds)
2026-01-15 21:38:47 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-15 21:37:42 +0100 <davean> dolio: https://blog.reverberate.org/2013/08/parsing-c-is-literally-undecidable.html "C++ grammar: the type name vs object name issue" and others
2026-01-15 21:36:21 +0100 <dolio> I guess perl has to actually evaluate code.
2026-01-15 21:36:01 +0100 <dolio> davean: Does C++ do that, too? I thought that was perl's distinction.
2026-01-15 21:31:43 +0100collide2954(~collide29@user/collide2954) collide2954
2026-01-15 21:30:56 +0100collide2954(~collide29@user/collide2954) (Quit: The Lounge - https://thelounge.chat)
2026-01-15 21:30:37 +0100target_i(~target_i@user/target-i/x-6023099) target_i
2026-01-15 21:29:41 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-01-15 21:28:09 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-01-15 21:26:08 +0100trickard_(~trickard@cpe-84-98-47-163.wireline.com.au)
2026-01-15 21:25:54 +0100trickard_(~trickard@cpe-84-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-01-15 21:23:15 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-15 21:21:20 +0100 <monochrom> (I had known of: choose one: EM, double-negation elim, Pierce.)
2026-01-15 21:21:17 +0100 <davean> dolio: and end up like C++? Lol
2026-01-15 21:18:18 +0100 <monochrom> Oh nice, one more way to restore classical logic. :)
2026-01-15 21:14:14 +0100 <ncf> cool
2026-01-15 21:14:07 +0100 <ncf> oh right, if you take A = ⊥ you get ¬¬B ↔ B
2026-01-15 21:13:38 +0100 <ncf> aha
2026-01-15 21:13:29 +0100 <ncf> which is a conversation i remember having but don't remember the conclusion
2026-01-15 21:13:24 +0100 <dolio> ncf: https://paste.tomsmeding.com/a6qxdKdh
2026-01-15 21:13:16 +0100 <ncf> dolio: by yoneda this reduces to ((A ↔ B) ↔ A) ↔ B and the nontrivial direction is →, which is almost curry's paradox except with A ↔ B instead of A → B
2026-01-15 21:12:13 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2026-01-15 21:11:47 +0100 <monochrom> Speaking of which, how is RecordDot done?
2026-01-15 21:11:40 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-01-15 21:10:31 +0100 <[exa]> dolio: <3
2026-01-15 21:10:20 +0100 <[exa]> btw Julia had a special case for that too: Meta.show_sexpr(:(a <= b < c)) == (:comparison, :a, :<=, :b, :<, :c)
2026-01-15 21:10:19 +0100 <dolio> Haskell should just extend its rules so that lexing depends not only on parsing, but type checking.
2026-01-15 21:08:27 +0100 <geekosaur> Icon lets you do this chaining, but it's not using a mechanism Haskell could make use of (it's solidly based in its "failure" semantic)
2026-01-15 21:06:48 +0100 <monochrom> The difference between yours and mine is that I say that a continuing operator is still an operator, just that it enjoys syntax sugar, whereas you say that it is not even an operator.
2026-01-15 21:06:46 +0100 <[exa]> anyway I saw this somewhere with matlabby dots, like (a <. b .< c), it even extended to (a <. b .<. c .< d)
2026-01-15 21:06:32 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2026-01-15 21:05:12 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-15 21:04:32 +0100 <[exa]> (binary relations are overrated)
2026-01-15 21:04:00 +0100 <ncf> you say continuing operator i say relation
2026-01-15 21:01:41 +0100 <monochrom> I have not heard of concepts with attitudes. But my thesis supervisor coined "continuing" for R in the 1990's. (E.g., https://www.cs.toronto.edu/~hehner/aPToP/aPToP.pdf last page.) We can do this by invoking "syntax sugar" on a per-operator basis. We don't need anything more profound or advanced.