2026/04/14

Newest at the top

2026-04-14 08:58:36 +0000p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) p3n
2026-04-14 08:57:12 +0000p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Quit: ZNC 1.10.1 - https://znc.in)
2026-04-14 08:54:50 +0000arandombit(~arandombi@user/arandombit) arandombit
2026-04-14 08:54:09 +0000uli-fem(~uli-fem@203.87.114.209)
2026-04-14 08:49:31 +0000uli-fem(~uli-fem@203.87.114.209) (Ping timeout: 264 seconds)
2026-04-14 08:48:45 +0000alter2000(~alter2000@user/alter2000) (Ping timeout: 255 seconds)
2026-04-14 08:42:33 +0000uli-fem(~uli-fem@203.87.114.209)
2026-04-14 08:38:07 +0000chewybread(~chewybrea@user/chewybread) (Remote host closed the connection)
2026-04-14 08:31:02 +0000DetourNe-DetourNetworkUK
2026-04-14 08:28:55 +0000DetourNetworkUK(~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer)
2026-04-14 08:28:48 +0000DetourNe-(~DetourNet@user/DetourNetworkUK) DetourNetworkUK
2026-04-14 08:27:55 +0000ft(~ft@p508db287.dip0.t-ipconnect.de) (Quit: leaving)
2026-04-14 08:22:33 +0000tromp(~textual@2001:1c00:340e:2700:f5bd:97ff:8f76:c38c) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-04-14 08:19:30 +0000s3(~s3@user/bn) (Ping timeout: 248 seconds)
2026-04-14 08:18:43 +0000chewybread(~chewybrea@user/chewybread) chewybread
2026-04-14 08:18:43 +0000chewybread(~chewybrea@240b:10:9502:4100:cc55:2129:18be:80a5) (Changing host)
2026-04-14 08:18:43 +0000chewybread(~chewybrea@240b:10:9502:4100:cc55:2129:18be:80a5)
2026-04-14 08:14:54 +0000karenw(~karenw@user/karenw) karenw
2026-04-14 08:11:32 +0000jreicher(~joelr@user/jreicher) jreicher
2026-04-14 08:11:14 +0000emmanuelux(~em@user/emmanuelux) (Quit: bye)
2026-04-14 08:06:27 +0000uli-fem(~uli-fem@203.87.114.209) (Ping timeout: 272 seconds)
2026-04-14 08:03:17 +0000 <monochrom> I am much less surprised because I've seen GCC done similar weird things before. I had "int x=1; int i=0; while (x>=0) {x*=2; ++i;} print i". gcc -O turned it into "for (i=0; i<31; i++)". gcc -O2 recognized "strictly speaking UB" so turned it into "L2: jmp L2"
2026-04-14 08:01:41 +0000uli-fem(~uli-fem@203.87.114.209)
2026-04-14 08:00:59 +0000 <Milan_Vanca> ty guyz :)
2026-04-14 08:00:50 +0000 <Milan_Vanca> Anyway I think I know why.. a and b never pointed to same thunk in the first place
2026-04-14 08:00:17 +0000 <Milan_Vanca> I did let a = 1 + 1 :: Int let b = 1 + 1 :: Int; seq b (); :sprint a; and it showed still as thunk and that confused me
2026-04-14 08:00:12 +0000Googulator(~Googulato@94-21-172-213.pool.digikabel.hu) (Ping timeout: 245 seconds)
2026-04-14 07:56:19 +0000Googulator55(~Googulato@94-21-172-213.pool.digikabel.hu)
2026-04-14 07:56:05 +0000 <Milan_Vanca> probie: Either one might end up with 2x times the memory.. or retain something in memory longer.
2026-04-14 07:55:12 +0000merijn(~merijn@77.242.116.146) merijn
2026-04-14 07:55:05 +0000 <Milan_Vanca> probie: that makes sense and that is why I want to know how something works.
2026-04-14 07:54:45 +0000leppard(~noOne@ipservice-092-208-182-236.092.208.pools.vodafone-ip.de) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/)
2026-04-14 07:53:44 +0000 <Milan_Vanca> monochrom: sounds scary :D
2026-04-14 07:53:28 +0000 <probie> If in the end, the way you use `a1` is simply something like `head a1`; you've just been carrying around a big list for absolutely no reason
2026-04-14 07:53:26 +0000 <gentauro> I have setup emacs (I run in a terminal) with LSP to give minimalistic messages (example: Found hole: _ :: [Int] -> Int) to avoid too much "bloated" LSP stuff. However, sometimes, I would like to get the full message. Anybody know a key-combination for that?
2026-04-14 07:52:53 +0000 <probie> You might end up with a big list in a case where if they weren't shared, no big list ever needed to exist in memory e.g. if you've got a reference to `a1` and have evaluated `last a2` to WHNF, if they're the same list, that reference to a1 means you can't garbage collect the list spine you evaluated as part of `last a2`
2026-04-14 07:50:49 +0000 <monochrom> or "take a code optimization course to learn that beyond the obvious you must start using heuristics that are full of false positives and false negatives and by the time you have 100 heuristics it begins to behave like randomized LLMs".
2026-04-14 07:50:35 +0000 <probie> Milan_Vanca: In your example there are two distinct thunks. There aren't any big lists until someone starts doing something with them. Sharing those would be a bad idea if you didn't know how they were going to be used
2026-04-14 07:49:28 +0000 <Milan_Vanca> got it :)
2026-04-14 07:49:25 +0000 <Milan_Vanca> So I can use aliasing and naming to explicitly say what I want to share
2026-04-14 07:49:06 +0000 <Milan_Vanca> yeah ty
2026-04-14 07:49:02 +0000 <Milan_Vanca> hmmm
2026-04-14 07:48:55 +0000 <Milan_Vanca> :D
2026-04-14 07:48:49 +0000 <monochrom> I don't know of any answer other than "read GHC source code".
2026-04-14 07:48:47 +0000 <Milan_Vanca> ah no
2026-04-14 07:48:41 +0000 <Milan_Vanca> no it must evaluate
2026-04-14 07:48:36 +0000 <lambdabot> error, called at <interactive>:3:2 in interactive:Ghci1
2026-04-14 07:48:36 +0000 <lambdabot> CallStack (from HasCallStack):
2026-04-14 07:48:36 +0000 <lambdabot> *Exception: a
2026-04-14 07:48:35 +0000 <Milan_Vanca> > (error "a" :: Int) == (error "a" :: Int)