Newest at the top
2024-09-21 04:31:55 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds) |
2024-09-21 04:26:35 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-09-21 04:19:23 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
2024-09-21 04:17:03 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-09-21 04:15:27 +0200 | <geekosaur> | the example code may now be too simplistic to demonstrate the problem, but I'm sure it won't need much tweaking to reveal it again |
2024-09-21 04:13:35 +0200 | <geekosaur> | as the discussion says, if you have unsafePerformIO, you have unsafeCoerce and what happens if you use it as such will be up to the whim of the RTS |
2024-09-21 04:13:05 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection) |
2024-09-21 04:12:41 +0200 | <geekosaur> | the problem they're talking about can't be fixed as such (it might be made slightly less likely to happen in certain specific cases, but the general problem is not fixable) |
2024-09-21 04:11:59 +0200 | <Inst> | iirc it does crash in windows, but i sort of lost my windows drive :( |
2024-09-21 04:09:25 +0200 | <geekosaur> | keep in mind that I'm on Ubuntu 22.04, so my kernel is practically ancient |
2024-09-21 04:08:55 +0200 | <Inst> | still fails to crash, I suspect it's something to do with linux kernel updates |
2024-09-21 04:07:52 +0200 | <Inst> | i swapped to 8.x via ghcup |
2024-09-21 04:07:46 +0200 | <geekosaur> | (it didn't core here) |
2024-09-21 04:07:40 +0200 | <geekosaur> | but that's just a suspicion |
2024-09-21 04:07:25 +0200 | <geekosaur> | I think the example code was "broken" by ghc's runtime representations changing in 8.10.5+ to support Apple AArch64 |
2024-09-21 04:06:08 +0200 | <Inst> | undefined behavior depending on platform and kernel version |
2024-09-21 04:06:00 +0200 | <Inst> | I used to get it to crash, but I guess that's why it's unsafe |
2024-09-21 04:05:49 +0200 | <Inst> | thanks anyways |
2024-09-21 04:05:01 +0200 | <Inst> | it's weird, but probably why it's just unsafe, i.e, might be platform specific |
2024-09-21 04:04:38 +0200 | <geekosaur> | I saw you bring that up in #ghc but I haven't lookmed |
2024-09-21 04:04:15 +0200 | <Inst> | also, curious, can you still get unsafePerformIO to segfault with the example code? |
2024-09-21 04:03:42 +0200 | <geekosaur> | this kind of confusion is more or less why the monomorphism restriction exists and is the default; x there "looks like" a value, but without the MMR it's actually a function |
2024-09-21 04:02:33 +0200 | <Inst> | thanks geekosaur |
2024-09-21 03:59:58 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-09-21 03:59:57 +0200 | Guest19 | (~Guest57@syn-075-131-084-201.res.spectrum.com) (Client Quit) |
2024-09-21 03:58:03 +0200 | <geekosaur> | if you run it in "ghci -XMonomorphismRestriction", you should get the same behavior as ghc |
2024-09-21 03:57:14 +0200 | <geekosaur> | if you compile with -XNoMonomorphismRestriction, you should get the same behavior as ghci |
2024-09-21 03:56:30 +0200 | Guest19 | (~Guest57@syn-075-131-084-201.res.spectrum.com) |
2024-09-21 03:56:27 +0200 | <geekosaur> | ghci has NoMonomorphismRestriction, so it doesn't resolve things like (Num a => a) immediately. ghc doesn't, so it gets defaulted to Int and is no longer a function taking a Num dictionary |
2024-09-21 03:55:19 +0200 | <geekosaur> | in a sense that is defaulting |
2024-09-21 03:55:17 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
2024-09-21 03:55:01 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-09-21 03:54:33 +0200 | <Inst> | but if you do this on ghc, it works |
2024-09-21 03:54:20 +0200 | <Inst> | thanks probie |
2024-09-21 03:54:12 +0200 | Squared | (~Square@user/square) (Ping timeout: 252 seconds) |
2024-09-21 03:51:12 +0200 | <probie> | It's that `x` has type `Num a => a`, which is "pretty much" a function, and therefore already in WHNF since it's a lambda |
2024-09-21 03:49:30 +0200 | <yahb2> | Hello ; World |
2024-09-21 03:49:30 +0200 | <probie> | % do{let {x=trace "Hello" 42}; x `seq` putStrLn "World"} |
2024-09-21 03:49:20 +0200 | <yahb2> | Hello ; World |
2024-09-21 03:49:20 +0200 | <probie> | % do{let {x=trace "Hello" (42 :: Int)}; x `seq` putStrLn "World"} |
2024-09-21 03:49:00 +0200 | <probie> | That isn't type defaulting |
2024-09-21 03:48:59 +0200 | Fijxu | (~Fijxu@user/fijxu) |
2024-09-21 03:48:45 +0200 | <yahb2> | Hello ; World |
2024-09-21 03:48:45 +0200 | <probie> | % do{let {!x=trace "Hello" (42 :: Int)}; putStrLn "World"} |
2024-09-21 03:48:37 +0200 | <yahb2> | World |
2024-09-21 03:48:37 +0200 | <probie> | % do{let {!x=trace "Hello" 42}; putStrLn "World"} |
2024-09-21 03:44:57 +0200 | Fijxu_ | (~Fijxu@user/fijxu) (Ping timeout: 252 seconds) |
2024-09-21 03:44:19 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-09-21 03:39:15 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) |
2024-09-21 03:36:58 +0200 | gvg | (~dcd@user/gvg) (Ping timeout: 252 seconds) |