2025/12/15

Newest at the top

2025-12-15 21:53:41 +0100 <c_wraith> Also, doing it via STRef chasing is *hard*. So many fiddly details. I wanted to practice with them.
2025-12-15 21:53:13 +0100califax_califax
2025-12-15 21:53:13 +0100califax(~califax@user/califx) (Ping timeout: 252 seconds)
2025-12-15 21:52:53 +0100eron(~eron@187.56.156.228) lidenbrock
2025-12-15 21:52:51 +0100 <c_wraith> I could probably make it a lot faster if I went with an array representation instead of STRef chasing. But I'd still lose on laziness unless I changed a lot of the API.
2025-12-15 21:52:01 +0100 <milan2> [exa]: ty
2025-12-15 21:51:32 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-12-15 21:50:48 +0100 <[exa]> c_wraith: nice way to show that tbh
2025-12-15 21:50:07 +0100califax_(~califax@user/califx) califx
2025-12-15 21:49:02 +0100 <[exa]> milan2: in longer, make a stupid serial prototype first and then you can switch the backend for whichever concurrent webserver matches your expected workload
2025-12-15 21:48:51 +0100 <c_wraith> (It also only sped up to matching performance when I introduced that problem. Not a win!)
2025-12-15 21:47:13 +0100 <c_wraith> The moral of the story: immutability is pretty cool.
2025-12-15 21:47:03 +0100 <c_wraith> Thus I introduced an order dependence in a "pure" expression.
2025-12-15 21:46:27 +0100 <c_wraith> I threw in an unsafeInterleaveST to recover laziness, but I was already using unsafeInterleaveST to run Kruskal's algorithm on demand.
2025-12-15 21:45:30 +0100 <c_wraith> I decided to go back and rewrite Day 8 of the AoC using ST to make all the updates O(1) instead of just throwing all the indirection into a Map. It turned out slower, and I realized this was due to a loss of laziness from generating a summary of the disjoint set strictly at every iteration even though it was only used once.
2025-12-15 21:44:48 +0100 <[exa]> milan2: in short yes
2025-12-15 21:42:28 +0100 <milan2> ?
2025-12-15 21:42:25 +0100 <milan2> Guyz I am thinking about prorotyping web app. Async is a big thing in IO heavy apps. Can I expect that I will be able to create fully async web api from fully async db client, http client and
2025-12-15 21:42:14 +0100 <c_wraith> woo, I got a practical example of unsafeInterleaveST breaking "pure" code!
2025-12-15 21:40:31 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2025-12-15 21:38:47 +0100bggd(~bgg@user/bggd) (Read error: Connection reset by peer)
2025-12-15 21:36:41 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2025-12-15 21:35:43 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-12-15 21:35:40 +0100Googulator37Googulator
2025-12-15 21:35:16 +0100bggd__(~bgg@2a01:e0a:fd5:f510:6bc5:c845:f799:c476)
2025-12-15 21:32:20 +0100Googulator37(~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu)
2025-12-15 21:31:56 +0100Googulator37(~Googulato@2a01-036d-0106-01cb-3c18-a4bd-1bda-7c8b.pool6.digikabel.hu) (Quit: Client closed)
2025-12-15 21:26:39 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2025-12-15 21:25:05 +0100l0ckna(~obr@089144192027.atnat0001.highway.a1.net) (Remote host closed the connection)
2025-12-15 21:25:05 +0100lockna(~obr@089144192027.atnat0001.highway.a1.net) (Client Quit)
2025-12-15 21:24:50 +0100l0ckna(~obr@089144192027.atnat0001.highway.a1.net)
2025-12-15 21:24:48 +0100lockna(~obr@089144192027.atnat0001.highway.a1.net)
2025-12-15 21:24:34 +0100lockna(~obr@089144192027.atnat0001.highway.a1.net) (Remote host closed the connection)
2025-12-15 21:24:33 +0100l0ckna(~obr@089144192027.atnat0001.highway.a1.net) (Remote host closed the connection)
2025-12-15 21:24:10 +0100l0ckna(~obr@089144192027.atnat0001.highway.a1.net)
2025-12-15 21:24:08 +0100lockna(~obr@089144192027.atnat0001.highway.a1.net)
2025-12-15 21:23:54 +0100lockna(~obr@089144192027.atnat0001.highway.a1.net) (Client Quit)
2025-12-15 21:23:52 +0100 <Rembane> Both sound distantly familiar, so at least one of those.
2025-12-15 21:22:03 +0100 <int-e> Which you might do for a Turing machine. Another way is to split transitions into transitions and epsilon-transitions, but not have rejecting states... so a typical NFA.
2025-12-15 21:21:27 +0100lockna(~obr@089144192027.atnat0001.highway.a1.net)
2025-12-15 21:21:11 +0100lockna(~obr@089144192027.atnat0001.highway.a1.net) (Quit: Leaving)
2025-12-15 21:20:58 +0100 <int-e> one way to get a quintuple is to have symbols, states, accepting states, rejecting states, transitions
2025-12-15 21:18:18 +0100 <Rembane> There was something in the regular automata course that was a quintuple of "basically trivial things" I can't remember what though, maybe a turing machine or regular expression or something.
2025-12-15 21:17:54 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection)
2025-12-15 21:17:42 +0100 <monochrom> Alpha and Meta :)
2025-12-15 21:17:05 +0100 <int-e> (FWIW I call the underlying failed product Facebook 3D out of spite.)
2025-12-15 21:17:04 +0100 <Rembane> int-e: Indeed, it doesn't mean anything. :)
2025-12-15 21:16:52 +0100gf3(~gf3@user/gf3) (Ping timeout: 246 seconds)
2025-12-15 21:16:47 +0100 <monochrom> Hey wouldn't it be nice! class Tuploid f where pure :: a -> f a; (<*>) :: f a -> f b -> f (a,b); class Tuploid f => Triploid f where (>>=) :: ...
2025-12-15 21:15:59 +0100 <int-e> Rembane: It's like calling a company Meta because it's about something. ;-)