Home freenode/#haskell: Logs Calendar

Logs: freenode/#haskell

←Prev  Next→ 502,152 events total
2021-03-12 14:30:20 <geekosaur> nope
2021-03-12 14:30:30 <Gurkenglas_> what is an example of such an exotic nonthunk part?
2021-03-12 14:30:34 Kaiepi joins (~Kaiepi@47.54.252.148)
2021-03-12 14:30:40 <geekosaur> the nonthunk parts are actual values, pinned arrays, etc.
2021-03-12 14:30:45 <geekosaur> not so exotic
2021-03-12 14:30:58 <geekosaur> (pinned arrays are most commonly bytestrings)
2021-03-12 14:31:43 <Gurkenglas_> what makes dumping the thunks technically hard?
2021-03-12 14:31:59 ADG1089__ joins (~aditya@223.226.229.230)
2021-03-12 14:32:25 joseph joins (~joseph@cpe-24-208-140-96.insight.res.rr.com)
2021-03-12 14:32:27 <Gurkenglas_> couldnt one "just" pause the process, look over its ram, and dump every thunks?
2021-03-12 14:32:38 <geekosaur> I doubt it
2021-03-12 14:32:50 joseph is now known as Guest61892
2021-03-12 14:33:14 <Gurkenglas_> (so i can figure out the path by which that linked string gets onto my screen)
2021-03-12 14:33:25 <geekosaur> you still have this assumption that you can reliably identify a thunk just by looking at it
2021-03-12 14:33:32 Guest61892 is now known as swarmcollective
2021-03-12 14:33:47 <Gurkenglas_> hmm. can i compile everything such that the thunks stay recognizable?
2021-03-12 14:33:51 <geekosaur> sorry, just by looking at a random memory address, whether it's a thunk or not
2021-03-12 14:35:18 × Guest76930 quits (~joseph@cpe-24-208-140-96.insight.res.rr.com) (Ping timeout: 246 seconds)
2021-03-12 14:35:39 × Kaiepi quits (~Kaiepi@47.54.252.148) (Ping timeout: 246 seconds)
2021-03-12 14:35:53 <geekosaur> do remember that the "shape" of a value is not described anywhere but in code related to that value, so you can't "just" scan through memory and take the things that "look like" thunks — they may well be values
2021-03-12 14:36:32 Kaiepi joins (~Kaiepi@47.54.252.148)
2021-03-12 14:36:47 × Natch quits (~natch@c-b471e255.014-297-73746f25.bbcust.telenor.se) (Remote host closed the connection)
2021-03-12 14:37:09 <Gurkenglas_> what thunk might be not part of the "current pattern stack"?
2021-03-12 14:37:20 hiroaki joins (~hiroaki@2a02:8108:8c40:2bb8:4b06:962b:f728:a206)
2021-03-12 14:37:27 <geekosaur> any thunk not currently being evaluated
2021-03-12 14:38:43 <geekosaur> or for that matter any evaluated value not currently in use somewhere
2021-03-12 14:40:11 <geekosaur> when your program starts, the pattern stack has "main" on it. if you want to trace through evaluation of thunks, there might be some way to instrument STG but I'd expect it to be fairly slow.
2021-03-12 14:40:30 <geekosaur> but that won't let you scan, it'd just track evaluation of thunks
2021-03-12 14:40:40 <Gurkenglas_> in "let x = [id] in fix (x !! 1)", x would leave the pattern stack before long, yes?
2021-03-12 14:41:40 <Gurkenglas_> but any function that will ever be called again can be found somewhere in the pattern stack, right?
2021-03-12 14:41:51 nhs joins (~nhs@cpe-70-113-67-118.austin.res.rr.com)
2021-03-12 14:42:07 Natch joins (~Natch@c-b471e255.014-297-73746f25.bbcust.telenor.se)
2021-03-12 14:42:41 Pickchea joins (~private@unaffiliated/pickchea)
2021-03-12 14:42:43 <geekosaur> no? the stack gets stuff pushed onto it as needed. that may cause some previously evaluated value to come back into the stack
2021-03-12 14:43:01 sh9 joins (~sh9@softbank060116136158.bbtec.net)
2021-03-12 14:43:15 <geekosaur> you seem to want the stack to be a tree instead of a stack?
2021-03-12 14:43:43 Athas joins (athas@sigkill.dk)
2021-03-12 14:44:14 berberman joins (~berberman@unaffiliated/berberman)
2021-03-12 14:44:26 × geekosaur quits (82650c7a@130.101.12.122) (Quit: Connection closed)
2021-03-12 14:45:12 × berberman_ quits (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
2021-03-12 14:45:15 <Gurkenglas_> ah so there's an implicit pattern tree and the stack is a path through that tree
2021-03-12 14:45:48 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-03-12 14:46:23 <Gurkenglas_> and all thunks in ram are somewhere on that tree
2021-03-12 14:46:28 <merijn> Gurkenglas_: Haskell expressions are graphs
2021-03-12 14:46:51 <Gurkenglas_> sure, replace tree with graph
2021-03-12 14:47:42 <merijn> Gurkenglas_: The stack isn't really "a path through the graph". Evaluation causes (parts of) the graph to simplified/reduced
2021-03-12 14:48:11 Jd007 joins (~Jd007@162.156.11.151)
2021-03-12 14:48:12 <merijn> The stack is to keep track of "how to continue when the current evaluation finishes"
2021-03-12 14:48:18 × Jd007 quits (~Jd007@162.156.11.151) (Client Quit)
2021-03-12 14:49:04 × ixlun quits (~user@109.249.184.132) (Read error: Connection reset by peer)
2021-03-12 14:49:19 × nhs quits (~nhs@cpe-70-113-67-118.austin.res.rr.com) (Ping timeout: 276 seconds)
2021-03-12 14:49:40 <Gurkenglas_> and when that stack actually loops, that prints <loop>, but stacks depicting recursion are more of a spiral on that graph that would only become a loop if each node were projected onto the identifier that was unpacked to spawn that node
2021-03-12 14:49:58 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 276 seconds)
2021-03-12 14:50:08 ixlun joins (~user@109.249.184.132)
2021-03-12 14:50:48 <Gurkenglas_> (or rather it returns a bottom that shows as "<loop>")
2021-03-12 14:51:51 × mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew)
2021-03-12 14:52:20 <epicte7us> guys guys, I just wrote my first Haskell program that uses the STM TChan, it's SO COOL. I've never done any multi-threaded progrmaming before -- SO COOL
2021-03-12 14:52:28 × secdragon quits (~secdragon@185.204.1.185) (Remote host closed the connection)
2021-03-12 14:53:55 <merijn> \o/
2021-03-12 14:53:59 × xff0x quits (~xff0x@2001:1a81:520c:1100:aa08:8f09:5c11:60cb) (Ping timeout: 272 seconds)
2021-03-12 14:54:49 Stanley00 joins (~stanley00@unaffiliated/stanley00)
2021-03-12 14:55:15 xff0x joins (xff0x@gateway/vpn/mullvad/xff0x)
2021-03-12 14:57:00 rj joins (~x@gateway/tor-sasl/rj)
2021-03-12 14:57:25 <Gurkenglas_> alright so what i asked for is the spine of the Spineless Tagless G-machine. Would a spineful, tagful variant be more than a constant factor more expensive?
2021-03-12 14:57:34 bergey` joins (~user@107.181.19.30)
2021-03-12 14:57:36 Psybur joins (~user@unaffiliated/psybur)
2021-03-12 14:57:56 <Psybur> How would I get stack to tell ghc to use --no-pie instead of -no-pie during linking?
2021-03-12 14:59:02 myShoggoth joins (~myShoggot@75.164.81.55)
2021-03-12 14:59:08 <Psybur> Running into weird stuff on archlinux. I had to manually specify the linker path with -pgml just to get this far. Something doesnt seem right heh
2021-03-12 14:59:32 × Stanley00 quits (~stanley00@unaffiliated/stanley00) (Ping timeout: 256 seconds)
2021-03-12 15:00:09 × bergey quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2021-03-12 15:00:22 × xff0x quits (xff0x@gateway/vpn/mullvad/xff0x) (Ping timeout: 276 seconds)
2021-03-12 15:01:28 xff0x joins (~xff0x@2001:1a81:520c:1100:aa08:8f09:5c11:60cb)
2021-03-12 15:01:59 <Gurkenglas_> I've found lub to not fall to the counterexample I constructed yesterday. Just undefined `lub` fix (fmap (const 2)) actually comes out to Just hangs, not Just 2.
2021-03-12 15:06:16 idhugo joins (~idhugo@87-49-147-45-mobile.dk.customer.tdc.net)
2021-03-12 15:07:17 <nshepperd> what's this lub
2021-03-12 15:07:18 × marinelli quits (~marinelli@gateway/tor-sasl/marinelli) (Quit: marinelli)
2021-03-12 15:07:48 graf_blutwurst joins (~user@2001:171b:226e:adc0:51ba:fe70:8240:4759)
2021-03-12 15:08:13 ketas1 joins (~ketas@37.120.211.188)
2021-03-12 15:08:16 nhs joins (~nhs@cpe-70-113-67-118.austin.res.rr.com)
2021-03-12 15:09:04 <siraben> nshepperd: least upper bound, probably.
2021-03-12 15:09:18 bahamas joins (~lucian@unaffiliated/bahamas)
2021-03-12 15:10:24 <merijn> Psybur: You are using the arch packages?
2021-03-12 15:10:34 <Psybur> yes
2021-03-12 15:11:16 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-03-12 15:11:28 <Gurkenglas_> the least defined value that's more defined than both - lub ((),undefined) (undefined,()) = ((),()). I think the api deliberately doesnt say what it does on lub 1 2
2021-03-12 15:11:29 <merijn> Psybur: Yeah...those are entirely broken
2021-03-12 15:11:58 <merijn> Psybur: Arch maintainers insist on installing a GHC that's broken when used "normally"
2021-03-12 15:12:28 <Psybur> Strange. So I should uninstall stack and ghc and manually install stack?
2021-03-12 15:12:46 <merijn> Psybur: The recommended solution is "don't use GHC installed by Arch" ;)
2021-03-12 15:12:56 <merijn> Psybur: Stack *should* probably work
2021-03-12 15:12:58 × nhs quits (~nhs@cpe-70-113-67-118.austin.res.rr.com) (Ping timeout: 245 seconds)
2021-03-12 15:13:19 <Psybur> Ok thanks
2021-03-12 15:13:41 <merijn> Psybur: Because stack fetches and installs its own copy/copies of GHC
2021-03-12 15:14:03 <merijn> Psybur: There's a section on the Arch wiki on Haskell
2021-03-12 15:14:16 × bahamas quits (~lucian@unaffiliated/bahamas) (Ping timeout: 256 seconds)
2021-03-12 15:14:59 <merijn> Psybur: Which should have more info. But the short summary is: GHC's default linking mode is static. Arch maintainers only install dynamic libraries for ideological reasons. So default invocations of GHC fail due to static libs not being installed/available.
2021-03-12 15:15:31 <nshepperd> oh so lub is like race but recursively
2021-03-12 15:16:32 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 256 seconds)
2021-03-12 15:18:10 <nshepperd> lub seems like a dubious name given that there technically isn't always an upper bound

All times are in UTC.