Newest at the top
| 2026-04-14 08:58:36 +0000 | p3n | (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) p3n |
| 2026-04-14 08:57:12 +0000 | p3n | (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Quit: ZNC 1.10.1 - https://znc.in) |
| 2026-04-14 08:54:50 +0000 | arandombit | (~arandombi@user/arandombit) arandombit |
| 2026-04-14 08:54:09 +0000 | uli-fem | (~uli-fem@203.87.114.209) |
| 2026-04-14 08:49:31 +0000 | uli-fem | (~uli-fem@203.87.114.209) (Ping timeout: 264 seconds) |
| 2026-04-14 08:48:45 +0000 | alter2000 | (~alter2000@user/alter2000) (Ping timeout: 255 seconds) |
| 2026-04-14 08:42:33 +0000 | uli-fem | (~uli-fem@203.87.114.209) |
| 2026-04-14 08:38:07 +0000 | chewybread | (~chewybrea@user/chewybread) (Remote host closed the connection) |
| 2026-04-14 08:31:02 +0000 | DetourNe- | DetourNetworkUK |
| 2026-04-14 08:28:55 +0000 | DetourNetworkUK | (~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer) |
| 2026-04-14 08:28:48 +0000 | DetourNe- | (~DetourNet@user/DetourNetworkUK) DetourNetworkUK |
| 2026-04-14 08:27:55 +0000 | ft | (~ft@p508db287.dip0.t-ipconnect.de) (Quit: leaving) |
| 2026-04-14 08:22:33 +0000 | tromp | (~textual@2001:1c00:340e:2700:f5bd:97ff:8f76:c38c) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 2026-04-14 08:19:30 +0000 | s3 | (~s3@user/bn) (Ping timeout: 248 seconds) |
| 2026-04-14 08:18:43 +0000 | chewybread | (~chewybrea@user/chewybread) chewybread |
| 2026-04-14 08:18:43 +0000 | chewybread | (~chewybrea@240b:10:9502:4100:cc55:2129:18be:80a5) (Changing host) |
| 2026-04-14 08:18:43 +0000 | chewybread | (~chewybrea@240b:10:9502:4100:cc55:2129:18be:80a5) |
| 2026-04-14 08:14:54 +0000 | karenw | (~karenw@user/karenw) karenw |
| 2026-04-14 08:11:32 +0000 | jreicher | (~joelr@user/jreicher) jreicher |
| 2026-04-14 08:11:14 +0000 | emmanuelux | (~em@user/emmanuelux) (Quit: bye) |
| 2026-04-14 08:06:27 +0000 | uli-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 +0000 | uli-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 +0000 | Googulator | (~Googulato@94-21-172-213.pool.digikabel.hu) (Ping timeout: 245 seconds) |
| 2026-04-14 07:56:19 +0000 | Googulator55 | (~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 +0000 | merijn | (~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 +0000 | leppard | (~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) |