2025/07/29

2025-07-29 00:00:42 +0200trickard_(~trickard@cpe-51-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-07-29 00:00:43 +0200 <dolio> If you write something like `case <exp> of <pattern> -> ... case <exp> of ...`, then I think it will do that CSE.
2025-07-29 00:00:52 +0200 <dolio> Of <exp> that is.
2025-07-29 00:00:56 +0200trickard_(~trickard@cpe-51-98-47-163.wireline.com.au)
2025-07-29 00:05:52 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-07-29 00:10:42 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-07-29 00:11:16 +0200 <dolio> In the cabal case the mechanism is more like hash consing, I guess. Every time you build something you remember what options it and all its dependencies were built with, and store the result indexed by all that information. Then if that ever shows up again in a build plan, you use what you already built.
2025-07-29 00:15:00 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-07-29 00:15:30 +0200trickard_trickard
2025-07-29 00:19:56 +0200Sgeo(~Sgeo@user/sgeo) Sgeo
2025-07-29 00:21:15 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-07-29 00:24:35 +0200 <dolio> I guess the answer to your implied question is that it's easier than graph isomorphism, because it's graph equality. It's only successful if the node names (package names + build flags) are exactly the same.
2025-07-29 00:25:20 +0200biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2025-07-29 00:25:34 +0200caubert(~caubert@user/caubert) (Ping timeout: 260 seconds)
2025-07-29 00:25:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-07-29 00:29:10 +0200dtman34(~dtman34@2601:447:d182:6512:c2f9:c3a:b83d:6490) (Ping timeout: 272 seconds)
2025-07-29 00:36:39 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-07-29 00:38:37 +0200araujo(~araujo@216.73.163.169) araujo
2025-07-29 00:38:43 +0200caubert(~caubert@user/caubert) caubert
2025-07-29 00:41:02 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-07-29 00:42:45 +0200dtman34(~dtman34@c-73-242-68-179.hsd1.mn.comcast.net) dtman34
2025-07-29 00:43:14 +0200caubert(~caubert@user/caubert) (Ping timeout: 252 seconds)
2025-07-29 00:48:06 +0200pie_(~pie_bnc@user/pie/x-2818909) ()
2025-07-29 00:52:02 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-07-29 00:53:27 +0200amadaluzia(~amadaluzi@user/amadaluzia) (Quit: ZNC 1.10.1 - https://znc.in)
2025-07-29 00:54:08 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 245 seconds)
2025-07-29 00:58:38 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-07-29 00:59:28 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-07-29 01:10:05 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-07-29 01:14:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-07-29 01:21:03 +0200sprotte24(~sprotte24@p200300d16f257c0005fe6f8bca8e5e30.dip0.t-ipconnect.de) (Quit: Leaving)
2025-07-29 01:22:14 +0200wickedjargon(~user@S0106f89e28d5699a.vc.shawcable.net) wickedjargon
2025-07-29 01:25:27 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-07-29 01:29:54 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-07-29 01:36:36 +0200ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2025-07-29 01:36:49 +0200athan(~athan@syn-047-132-161-157.res.spectrum.com) athan
2025-07-29 01:36:53 +0200jespada(~jespada@2800:a4:22e6:7f00:4c54:9542:8c12:7391) (Ping timeout: 248 seconds)
2025-07-29 01:38:25 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds)
2025-07-29 01:38:25 +0200ljdarj1ljdarj
2025-07-29 01:38:37 +0200 <monochrom> You can always use conservative heuristics to decide "maybe don't share this one".
2025-07-29 01:40:10 +0200jespada(~jespada@2800:a4:22e3:2500:9c17:f25b:c82f:98c4) jespada
2025-07-29 01:40:51 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-07-29 01:45:23 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-07-29 01:47:10 +0200machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) machinedgod
2025-07-29 01:49:34 +0200caubert(~caubert@user/caubert) caubert
2025-07-29 01:54:44 +0200caubert(~caubert@user/caubert) (Ping timeout: 252 seconds)
2025-07-29 01:56:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-07-29 02:00:50 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-07-29 02:05:52 +0200Square2(~Square@user/square) (Remote host closed the connection)
2025-07-29 02:06:23 +0200Square(~Square@user/square) Square
2025-07-29 02:07:38 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-07-29 02:11:38 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-07-29 02:16:39 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-07-29 02:17:36 +0200 <dolio> Yeah, my understanding is that the GHC heuristic is, "only eliminate common subexpressions that are within a scope where the expression has already been evaluated." That basically guarantees that you don't start leaking references.