Logs on 2023-05-30 (liberachat/#haskell)
| 00:07:59 | × | machinedgod quits (~machinedg@93-136-113-216.adsl.net.t-com.hr) (Ping timeout: 240 seconds) |
| 00:08:03 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 00:12:27 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 250 seconds) |
| 00:16:43 | → | ryanbooker joins (uid4340@id-4340.hampstead.irccloud.com) |
| 00:20:07 | → | machinedgod joins (~machinedg@93-136-113-216.adsl.net.t-com.hr) |
| 00:20:49 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 00:25:02 | Ellenor | is now known as AmyMalik |
| 00:29:12 | → | Guest13 joins (~Guest13@250.79-105-213.static.virginmediabusiness.co.uk) |
| 00:29:21 | <Guest13> | hi, i managed to construct a code example of the problem i was asking before |
| 00:29:36 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6c9c:9af5:8708:5fc6) |
| 00:29:56 | <Guest13> | i was wondering if anyone could tell if it works by looking, since i dont really want to have to profile it to see if the bang pattern is doing what i think it should |
| 00:30:19 | <Guest13> | https://paste.tomsmeding.com/qnT5pH7j |
| 00:31:05 | × | machinedgod quits (~machinedg@93-136-113-216.adsl.net.t-com.hr) (Ping timeout: 250 seconds) |
| 00:33:32 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6c9c:9af5:8708:5fc6) (Remote host closed the connection) |
| 00:34:09 | <Guest13> | fr is used twice, but the hope is that the internal randoms are only computed once |
| 00:35:38 | <Guest13> | and if this approach seems well structured, in order to avoid the recomputation |
| 00:36:18 | <Guest13> | (opted for a continuation in the end, rather than Reader monad which seems no better than this kind of encapsulated version in the way monochrom advised) |
| 00:37:13 | <Guest13> | i actually quite like the way a bang pattern in a continuation seems like it manages to achieve this |
| 00:37:24 | <Guest13> | but i cant actually tell if does! can anyone take a look for me? |
| 00:40:04 | <[Leary]> | Guest13: So you just want `rs` to be shared? I don't think the bang pattern will do anything, but you can just change the definition to `withRandoms (chunkLength, nLayers) = \f -> f rs`. |
| 00:40:50 | <[Leary]> | I don't see any good reason for the continuation there, however; you may as well just return `rs` directly. |
| 00:40:55 | <Guest13> | ... basically rs should only be computed once |
| 00:41:21 | <Guest13> | i dont want to reexplain the motivation which we covered yesterday |
| 00:41:57 | <Guest13> | the idea is basically that the continuation and this withRandoms function offers the user a way to encapsulate the strictly evaluated value |
| 00:42:23 | <Guest13> | something like a "global environment" which Reader monad is used for |
| 00:42:42 | <Guest13> | but i find the continuation paradigm easier to work with and rationalise |
| 00:43:05 | <Guest13> | why do you think the bang pattern would fail? |
| 00:43:40 | <Guest13> | an "immutable global environment" |
| 00:44:10 | <Guest13> | since all Reader was doing was hiding a partial application, the continuation way seems to do the same but clearer |
| 00:44:18 | <int-e> | Guest13: that bang pattern has no effect |
| 00:44:34 | <Guest13> | so fr will recalculate the randoms each time it is called? |
| 00:45:25 | → | nate2 joins (~nate@98.45.169.16) |
| 00:45:29 | <int-e> | You're at the compiler's mercy here to realize that it's computing the exact same thing twice, namely `fr randomSupport`. |
| 00:45:29 | <Guest13> | or would it somehow manage to do what its supposed to even without the ! |
| 00:46:00 | <int-e> | As [Leary] said, the CPS is not doing anything useful here. |
| 00:46:21 | <Guest13> | int-e: i could have given it randomSupport' for the second call, fr should still store !rs |
| 00:46:50 | <Guest13> | regardless of what fr is applied to, i want it to somehow store the computed rs |
| 00:47:32 | <Guest13> | int-e: monochrom was saying Reader achieves dependency injection in the same way as partial application |
| 00:47:54 | <Guest13> | so im just partially applying the first argument, which gives a continuation |
| 00:48:24 | <Guest13> | its just a form to work with that is comprehensible, i dont expect it to force the evaluation like the ! should or anything special |
| 00:49:37 | <Guest13> | i guess its the partial application itself that i expect to somehow be able to make strict in its applied argument |
| 00:50:50 | <Guest13> | so maybe it should just work without the bang pattern as i expect it should |
| 00:50:52 | <int-e> | Well, apparently GHC's optimizations are smart enough to figure this out in this case. It's not at all obvious from reading the code that this will happen. |
| 00:51:01 | × | dcleonarski quits (~user@2804:d51:4793:c800:b0e2:a2e8:89a0:4c46) (Remote host closed the connection) |
| 00:51:03 | <Guest13> | damn |
| 00:51:08 | <Guest13> | thanks tho |
| 00:51:35 | <[Leary]> | Skimming the backlog, what was wrong with MonadRandom? Isn't it exactly what you want? |
| 00:51:41 | <Guest13> | not at all |
| 00:52:01 | <Guest13> | iiuc thats for handling the seed behind the scenes |
| 00:52:09 | <Guest13> | while this stores all the randoms behind the scenes |
| 00:52:27 | <Guest13> | and while the seed changes, like State. these randoms are fixed, like Reader |
| 00:53:13 | <int-e> | If, on the other hand, you had `withRandoms :: (Int,Int) -> Randoms` then the compiler would not have to be clever. Or, if the goal were to actually recompute the `rs` twice, {-# NOINLINE withRandoms #-} seems to accomplish that. |
| 00:53:30 | <int-e> | Sorry, I meant to name that first function `makeRandoms` |
| 00:53:48 | → | chanceyan joins (~chanceyan@user/chanceyan) |
| 00:53:54 | <[Leary]> | In Haskell's lazy/streaming context, there's no real difference between unfolding with a seed and reading from a list unfolded from a seed. |
| 00:53:56 | <int-e> | And I can't count either. (compute twice, recompute nonce) |
| 00:54:00 | <int-e> | *once |
| 00:54:10 | <Guest13> | so id have to tell it explicitly *to* recompute it, rather than the other way round |
| 00:54:36 | × | chanceyan quits (~chanceyan@user/chanceyan) (Client Quit) |
| 00:54:56 | <int-e> | Guest13: how did I figure this out? I used `rs = trace "Foo" $ Randoms chunkLength nLayers (createRandomSupport chunkLength nLayers)` where `trace` comes from Debug.Trace |
| 00:55:32 | <Guest13> | can you paste the code? |
| 00:55:56 | <int-e> | no, I deleted it already |
| 00:56:21 | <Guest13> | ok, ill try to recreate from your snippet |
| 00:56:45 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 240 seconds) |
| 00:57:49 | <Guest13> | hmm, if i just put the trace "Foo" in the computation of rs, it only prints Foo at the start, so it must be doing it correctly |
| 00:58:14 | <Guest13> | even with the bang pattern removed like you suggested |
| 00:58:25 | <int-e> | Guest13: but only if you use -O |
| 00:58:47 | <Guest13> | im just using cabal v2-run without -O |
| 00:58:59 | <Guest13> | wow its faster with -O |
| 00:59:16 | <int-e> | while with `makeRandoms` you wouldn't have to rely on the compiler for this |
| 01:00:23 | <Guest13> | hmm, strange |
| 01:04:49 | <Guest13> | https://paste.tomsmeding.com/vPefbu5f |
| 01:05:06 | <Guest13> | i guess its slightly less strange looking without the CPS |
| 01:05:10 | <Guest13> | thanks |
| 01:05:45 | <[Leary]> | By they way, you might actually /want/ to be recomputing these randoms. Generating them is definitely cheap, but storing them might not be. |
| 01:06:51 | <Guest13> | !!! |
| 01:06:56 | <Guest13> | thats the worst news ever! |
| 01:07:16 | <Guest13> | as if its cheaper to recalculate than store |
| 01:07:24 | <Guest13> | i guess i should get criterion on this... |
| 01:09:48 | <Guest13> | even with the chunking? |
| 01:10:13 | <Guest13> | i guess if i did that on the fly it would be faster... |
| 01:10:27 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:11:18 | <Guest13> | isnt the point that storing them is 0 cheap or am i just a fool... |
| 01:11:35 | <Guest13> | like, it would have to opperate on a stored version anyway |
| 01:11:43 | <Guest13> | you just save regenerating that stored version |
| 01:12:22 | <int-e> | it's not simply stored; GC will move the data around, and even without GC you'd be putting extra burden on the caches |
| 01:12:26 | <[Leary]> | Storing something that's expensive to compute, but small enough to fit in cache is a big win. Storing something that's cheap to compute but big enough to need RAM access often isn't. |
| 01:13:11 | <Guest13> | i get what your saying, but, what i was saying is that it would have to go into ram if it was that big anyway |
| 01:13:24 | <Guest13> | its not like im doing anything where build fold fusion would kick in |
| 01:13:47 | <Guest13> | like if i was consumeing the values as they were produced, but it doesnt, it has to have the whole object before it can overlap all the chunks |
| 01:14:03 | <int-e> | fusion is excellent, but the power of laziness is that you can consume data as it's produced even without fusion |
| 01:14:18 | <int-e> | not for free either |
| 01:14:36 | <int-e> | profiling is really the only way to figure these trade-offs out |
| 01:14:42 | × | phma quits (phma@2001:5b0:2172:dd28:7911:911:8af7:7b23) (Read error: Connection reset by peer) |
| 01:14:47 | <Guest13> | criterion is still building |
| 01:14:50 | <Guest13> | ... |
| 01:15:08 | → | phma joins (phma@2001:5b0:2172:dd28:3b22:598:a9f4:e4a5) |
| 01:15:31 | <Guest13> | right, but im consuming the end of the long list with the earlier elements |
| 01:15:57 | <Guest13> | i guess if i changed the order so it folded up lists, like transposing the chunks... |
| 01:16:10 | <Guest13> | but then it would have to make loads of copies of the coeffecients |
| 01:16:20 | → | zaquest joins (~notzaques@5.130.79.72) |
| 01:16:35 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:16:49 | <Guest13> | map (zipWith (*) coeffecients) . transpose . chunks |
| 01:16:55 | × | lav quits (~pi@wikipedia/maddy-from-celeste) (Ping timeout: 260 seconds) |
| 01:17:24 | <Guest13> | but like, obviously if you want to use the lazy or fusion thing you dont implement the transposed chunks like that |
| 01:18:01 | <Guest13> | probably this also depends on the length of the supported vector, and the number of random support vectors used |
| 01:18:07 | <int-e> | also if you figure that you want to store the values, consider using a vector instead of a list... that'll give you better memory efficiency and random access |
| 01:18:11 | → | Xe joins (~cadey@tailscale/xe) |
| 01:18:27 | <int-e> | (O(1) random access that is) |
| 01:18:30 | <Guest13> | yeah, your right, if this is supposed to be the fast version |
| 01:18:40 | <Guest13> | would you be able to help me write that? |
| 01:19:05 | <Guest13> | i hate using vectors... |
| 01:19:39 | <Guest13> | my code production rate is so low nowerdays i cant really afford to clunk up the code |
| 01:20:24 | <Guest13> | i used to be able to write for like 3 days without sleep but since i started working out, i can hardly type a sentence without getting exhausted |
| 01:21:07 | <Guest13> | (a tall order) |
| 01:23:05 | <Guest13> | i might just do it in the slowest way possible instead! |
| 01:23:10 | <Guest13> | so lazy.. |
| 01:23:39 | <int-e> | but then why do you worry about sharing :P |
| 01:23:53 | → | lav joins (~pi@wikipedia/maddy-from-celeste) |
| 01:24:24 | <Guest13> | i thought that was the only optimization i needed |
| 01:24:30 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6c9c:9af5:8708:5fc6) |
| 01:24:34 | <Guest13> | im not sure Vectors would help even |
| 01:24:39 | <Guest13> | since all the values are consumed |
| 01:24:54 | <Guest13> | and there is a way of producing them where they would be consumed in the order they were produced |
| 01:25:24 | <Guest13> | like, i assume zipWith for the coefficients is basically a parallel fold |
| 01:25:42 | <Guest13> | not sure where random access would enter the picture |
| 01:26:11 | <Guest13> | its not faster than a list in that case is it? |
| 01:26:35 | <int-e> | If you consume as you produce then vectors won't pay off indeed. |
| 01:26:46 | × | thegeekinside quits (~thegeekin@189.180.19.71) (Ping timeout: 265 seconds) |
| 01:26:55 | <Guest13> | ok great, thats some overhead i can avoid |
| 01:26:58 | <int-e> | But then you probably also should not be sharing that big list of lists of pseudorandom numbers. |
| 01:27:17 | <Guest13> | yeah, thats the thing thats worth profiling to discover |
| 01:28:06 | → | thegeekinside joins (~thegeekin@189.180.43.189) |
| 01:28:08 | <Guest13> | oh, that and the transpose thing. |
| 01:28:23 | <Guest13> | im going to take a rest and see if i can conquer this |
| 01:28:57 | <int-e> | the transpose is why I thought of random access |
| 01:29:55 | <int-e> | but if you can reorder the pseudo-random numbers, you could also work directly with m chunks of length n instead of n chunks of length m |
| 01:30:23 | <Guest13> | oh i see what you meant now |
| 01:30:39 | <int-e> | > (chunksOf 2 [1..12], chunksOf 5 [1..12]) |
| 01:30:41 | <lambdabot> | ([[1,2],[3,4],[5,6],[7,8],[9,10],[11,12]],[[1,2,3,4,5],[6,7,8,9,10],[11,12]]) |
| 01:30:53 | × | vandita quits (~vandit@94-21-131-99.pool.digikabel.hu) (Ping timeout: 250 seconds) |
| 01:30:58 | <int-e> | oops, that 5 was meant to be a 6 |
| 01:31:18 | <Guest13> | > (chunksOf 2 [1..12], chunksOf 6 [1..12]) |
| 01:31:19 | <lambdabot> | ([[1,2],[3,4],[5,6],[7,8],[9,10],[11,12]],[[1,2,3,4,5,6],[7,8,9,10,11,12]]) |
| 01:31:45 | <int-e> | if you only consider the shape, the second looks like a transposition of the first result |
| 01:32:04 | <Guest13> | yeah, and given they are random numbers anyway it shouldnt matter |
| 01:32:06 | <int-e> | but you get the 12 numbers in a different order |
| 01:32:30 | <int-e> | and only you know whether that matters |
| 01:32:33 | → | vandita joins (~vandit@213-197-76-99.pool.digikabel.hu) |
| 01:32:51 | <Guest13> | well as long as its the same each time then it should work as a support |
| 01:33:19 | <Guest13> | its interesting how this came about |
| 01:33:31 | <Guest13> | basically i had a mixture of matrix model |
| 01:33:45 | <Guest13> | where the outputs were combined with coeffecients |
| 01:33:52 | <Guest13> | and since matricies are linear opperators |
| 01:34:09 | <Guest13> | this is the same as combining the matricies with these coefficients |
| 01:34:40 | <Guest13> | and then, i think its redundant to sum the randomly supported matricies |
| 01:34:59 | <Guest13> | unless the two orthogonal coefficients is better for learning.... |
| 01:35:23 | <Guest13> | like, the coefs for the random supports of each matrix, and the coefs for combining these together |
| 01:35:39 | <Guest13> | i guess there is an n-ary version of this |
| 01:35:53 | <Guest13> | which if it does indeed help during learning, could be really powerful |
| 01:36:01 | <Guest13> | does that make sense? |
| 01:36:30 | <Guest13> | i wish i could get someone to help me write this code, i feel like i forgot how to type |
| 01:38:27 | <Guest13> | i think im gona call it a night tbh |
| 01:38:32 | <Guest13> | thanks for the help |
| 01:39:25 | × | thegeekinside quits (~thegeekin@189.180.43.189) (Ping timeout: 240 seconds) |
| 01:40:57 | → | thegeekinside joins (~thegeekin@189.180.105.132) |
| 01:43:01 | × | Guest13 quits (~Guest13@250.79-105-213.static.virginmediabusiness.co.uk) (Quit: Connection closed) |
| 01:47:35 | × | thegeekinside quits (~thegeekin@189.180.105.132) (Ping timeout: 240 seconds) |
| 01:47:53 | → | thegeekinside joins (~thegeekin@189.180.41.85) |
| 01:47:53 | × | czy quits (~user@host-140-24.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection) |
| 01:48:48 | × | nate2 quits (~nate@98.45.169.16) (Ping timeout: 248 seconds) |
| 01:50:55 | × | thegeekinside quits (~thegeekin@189.180.41.85) (Remote host closed the connection) |
| 01:51:18 | → | thegeekinside joins (~thegeekin@189.180.41.85) |
| 01:53:59 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 01:57:52 | × | thegeekinside quits (~thegeekin@189.180.41.85) (Ping timeout: 248 seconds) |
| 01:58:15 | → | TonyStone joins (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) |
| 01:58:30 | → | thegeekinside joins (~thegeekin@189.180.42.214) |
| 02:01:36 | × | xff0x quits (~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 248 seconds) |
| 02:08:21 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 256 seconds) |
| 02:10:35 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Remote host closed the connection) |
| 02:10:58 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 02:17:54 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 02:25:03 | → | scrungus joins (~scrungus@bras-base-aurron9127w-grc-63-70-24-87-21.dsl.bell.ca) |
| 02:33:15 | × | scrungus quits (~scrungus@bras-base-aurron9127w-grc-63-70-24-87-21.dsl.bell.ca) (Quit: WeeChat 3.8) |
| 02:40:21 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Remote host closed the connection) |
| 02:40:45 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 02:42:52 | × | terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat) |
| 02:44:26 | → | terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::) |
| 02:44:52 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 02:45:33 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:45:33 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 02:45:33 | finn_elija | is now known as FinnElija |
| 02:46:02 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 02:59:31 | × | td_ quits (~td@i53870935.versanet.de) (Ping timeout: 240 seconds) |
| 03:01:22 | → | td_ joins (~td@i53870907.versanet.de) |
| 03:15:06 | → | trev joins (~trev@user/trev) |
| 03:18:46 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 03:18:54 | → | falafel joins (~falafel@2603-8000-d700-115c-baeb-e94d-8eca-e244.res6.spectrum.com) |
| 03:18:59 | × | gry quits (quasselcor@botters/gry) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 03:19:01 | × | falafel quits (~falafel@2603-8000-d700-115c-baeb-e94d-8eca-e244.res6.spectrum.com) (Remote host closed the connection) |
| 03:20:30 | → | gry joins (quasselcor@2400:c400:1002:11:5054:ff:fe78:ebe6) |
| 03:23:44 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds) |
| 03:27:07 | → | Sciencentistguy5 joins (~sciencent@hacksoc/ordinary-member) |
| 03:29:11 | × | Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 240 seconds) |
| 03:29:11 | Sciencentistguy5 | is now known as Sciencentistguy |
| 03:30:35 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6c9c:9af5:8708:5fc6) (Remote host closed the connection) |
| 03:33:29 | × | gry quits (quasselcor@2400:c400:1002:11:5054:ff:fe78:ebe6) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 03:35:42 | → | gry joins (quasselcor@botters/gry) |
| 03:40:54 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 250 seconds) |
| 03:42:11 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 250 seconds) |
| 03:44:23 | danso_o | is now known as danso |
| 03:45:39 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) |
| 03:47:25 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
| 04:06:31 | × | ryanbooker quits (uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 04:08:04 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 04:08:30 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 04:11:39 | × | zaquest quits (~notzaques@5.130.79.72) (Ping timeout: 250 seconds) |
| 04:12:25 | × | ystael quits (~ystael@user/ystael) (Ping timeout: 240 seconds) |
| 04:24:31 | → | zaquest joins (~notzaques@5.130.79.72) |
| 04:36:05 | → | notzmv joins (~zmv@user/notzmv) |
| 04:38:39 | × | vandita quits (~vandit@213-197-76-99.pool.digikabel.hu) (Ping timeout: 265 seconds) |
| 04:40:02 | → | vandita joins (~vandit@84-236-1-110.pool.digikabel.hu) |
| 04:46:05 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 246 seconds) |
| 04:47:48 | × | shapr quits (~user@2600:1700:c640:3100:6ac8:cf17:6356:ff5f) (Ping timeout: 240 seconds) |
| 04:51:46 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 04:53:13 | → | oo_miguel joins (~Thunderbi@77.252.47.84) |
| 05:02:36 | → | monochrom joins (trebla@216.138.220.146) |
| 05:08:11 | × | monochrom quits (trebla@216.138.220.146) (Quit: NO CARRIER) |
| 05:10:05 | × | _xor quits (~xor@nw-esr1-72-49-97-201.fuse.net) (Quit: brb/bbiab) |
| 05:16:08 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 240 seconds) |
| 05:19:22 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:28:06 | → | monochrom joins (trebla@216.138.220.146) |
| 05:31:11 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection) |
| 05:34:31 | → | redmp joins (~redmp@mobile-166-171-249-80.mycingular.net) |
| 05:35:09 | <redmp> | hi, I'm using "-threaded" and make calls to "threadDelay", but I'm on an exotic machine and these calls fail with an error I've not seen before. I'll paste it. |
| 05:36:07 | <redmp> | it's only one line: "main: user error (Pattern match failure in do expression at libraries/base/GHC/Event/Thread.hs:216:3-10)" |
| 05:36:30 | <redmp> | This seems to indicate a problem in https://hackage.haskell.org/package/base-4.15.1.0/docs/src/GHC-Event-Thread.html (I'm using GHC 9.0.2) |
| 05:36:58 | <redmp> | I looked at the line, and indeed, it's doing "Just mgr <- readIORef timerManager" |
| 05:37:46 | <redmp> | Googling around indicated that this might be due to forgetting the "-threaded" option so I double checked by running my executable with "+RTS -info" and its "way" is indeed rts_thr |
| 05:38:24 | <redmp> | Short of debugging Thread.hs, I'm not sure what to try next |
| 05:47:12 | × | d34df00d quits (~d34df00d@2600:1702:4f1b:7c10::f) (Ping timeout: 248 seconds) |
| 06:17:04 | × | shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 248 seconds) |
| 06:17:49 | × | emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Quit: au revoir) |
| 06:34:39 | → | cfricke joins (~cfricke@user/cfricke) |
| 06:41:08 | → | acidjnk joins (~acidjnk@p200300d6e7072f08c511281507bd955a.dip0.t-ipconnect.de) |
| 06:42:53 | × | vandita quits (~vandit@84-236-1-110.pool.digikabel.hu) (Ping timeout: 250 seconds) |
| 06:44:26 | → | vandita joins (~vandit@84-236-21-17.pool.digikabel.hu) |
| 06:53:20 | × | ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds) |
| 07:00:58 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 07:04:12 | <Axman6> | redmp: that might be an appropriate question for #ghc. what exotic machine are you running on? |
| 07:05:01 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:bd3c:70d:4e85:6e2b) |
| 07:10:05 | → | Guest70 joins (~Guest75@176.122.87.241) |
| 07:10:17 | <Guest70> | hello |
| 07:11:02 | <Axman6> | o/ |
| 07:12:45 | <Guest70> | i have ng network |
| 07:12:47 | <Guest70> | https://pastecode.io/s/um3dwcay |
| 07:13:11 | <Guest70> | i have jail with vnet on ngeth0 |
| 07:14:54 | <Guest70> | after enabling ipfw on the host i automatically get the rule in jail "65535 deny ip from any to any" |
| 07:15:11 | <Axman6> | does this have anything to do with Haskell? |
| 07:15:23 | <Guest70> | sorry! |
| 07:15:41 | <Guest70> | my mistake |
| 07:15:49 | <Axman6> | All good, good luck! |
| 07:15:56 | <Guest70> | not that channel |
| 07:16:18 | × | Guest70 quits (~Guest75@176.122.87.241) (Quit: Client closed) |
| 07:16:43 | → | dhil joins (~dhil@78.45.150.83.ewm.ftth.as8758.net) |
| 07:16:48 | <probie> | I wonder if there's any haskell library to manage pf rules |
| 07:17:26 | <Axman6> | I hope so, I always find them somewhat painful to write, needs moar types |
| 07:25:57 | → | merijn joins (~merijn@86-86-29-250.fixed.kpn.net) |
| 07:26:57 | → | titibandit joins (~titibandi@user/titibandit) |
| 07:36:53 | → | Guest49 joins (~Guest75@176.122.87.241) |
| 07:37:56 | × | Guest49 quits (~Guest75@176.122.87.241) (Client Quit) |
| 07:42:44 | → | hisa382 joins (~hisa38@104-181-102-238.lightspeed.wepbfl.sbcglobal.net) |
| 07:44:44 | × | hisa38 quits (~hisa38@104-181-102-238.lightspeed.wepbfl.sbcglobal.net) (Ping timeout: 265 seconds) |
| 07:44:44 | hisa382 | is now known as hisa38 |
| 07:50:56 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 07:51:24 | → | chomwitt joins (~chomwitt@2a02:587:7a16:6700:1ac0:4dff:fedb:a3f1) |
| 07:52:18 | <Hecate> | pf <3 |
| 07:53:14 | → | gurkenglas joins (~user@dynamic-046-114-181-050.46.114.pool.telefonica.de) |
| 07:55:42 | → | Guest39 joins (~Guest75@176.122.87.241) |
| 07:57:27 | Guest39 | is now known as cr4zsci |
| 08:07:17 | → | oneeyedalien joins (~oneeyedal@125-63-26-100.ip4.superloop.au) |
| 08:07:40 | × | oneeyedalien quits (~oneeyedal@125-63-26-100.ip4.superloop.au) (Remote host closed the connection) |
| 08:10:57 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:11:35 | × | gurkenglas quits (~user@dynamic-046-114-181-050.46.114.pool.telefonica.de) (Ping timeout: 240 seconds) |
| 08:17:55 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 08:21:40 | → | gurkenglas joins (~user@dynamic-046-114-181-050.46.114.pool.telefonica.de) |
| 08:26:04 | → | shane joins (~shane@ana.rch.ist) |
| 08:26:19 | → | titibandit joins (~titibandi@user/titibandit) |
| 08:27:51 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 08:28:09 | <shane> | Is `(# #) -> Int#` similar to a boxed `Int`? Does it end up just being a pointer to an `Int#` or is it an actual function call? |
| 08:41:43 | → | gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 08:42:55 | × | ubert quits (~Thunderbi@p548c91e0.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 08:43:20 | → | ubert joins (~Thunderbi@p200300ecdf0002063c1d2db889bb964c.dip0.t-ipconnect.de) |
| 08:46:04 | → | _xor joins (~xor@nw-esr1-72-49-97-201.fuse.net) |
| 08:46:26 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) (Remote host closed the connection) |
| 08:53:40 | × | thegeekinside quits (~thegeekin@189.180.42.214) (Remote host closed the connection) |
| 08:55:49 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 08:55:49 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 08:56:23 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds) |
| 08:56:55 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:89bf:2c1e:724:8d14) |
| 08:57:10 | Lord_of_Life_ | is now known as Lord_of_Life |
| 08:58:22 | → | ubert1 joins (~Thunderbi@2a02:8109:abc0:6434:e3:e79d:949c:d6b) |
| 09:00:01 | × | vladan[m] quits (~vladanmat@2001:470:69fc:105::2:24df) (Remote host closed the connection) |
| 09:02:43 | × | cr4zsci quits (~Guest75@176.122.87.241) (Ping timeout: 245 seconds) |
| 09:02:59 | <probie> | shane: https://godbolt.org/z/Wdrxh7qM6 it looks like an actual function call to me |
| 09:06:50 | → | xameer joins (~xameer@144.48.224.57) |
| 09:08:31 | → | mncheck joins (~mncheck@193.224.205.254) |
| 09:10:12 | × | xameer quits (~xameer@144.48.224.57) (Client Quit) |
| 09:12:40 | <shane> | probie: Thanks for that! |
| 09:15:30 | → | Guest9 joins (~Guest75@176.122.87.241) |
| 09:16:11 | <shane> | That's a nice tool, I hadn't come across it before |
| 09:16:24 | Guest9 | is now known as cr4zsci |
| 09:31:09 | → | thegeekinside joins (~thegeekin@189.180.42.214) |
| 09:35:02 | <tomsmeding> | shane, probie: shameless plug for an alternative tool :) https://play.haskell.org/saved/4nYlce4v |
| 09:35:29 | <tomsmeding> | doesn't have highlighting that relates source and asm yet, though |
| 09:36:05 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 09:37:03 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 09:37:54 | <redmp> | Axman6: it's a machine with 256 1.5GHz cores, according to /proc/cpuinfo, but the university website say it's a GPU machine w/4000 cores.. anyway, thanks, i'll ask in #ghc tomorrow |
| 09:38:24 | <merijn> | redmp: gpu cores aren't reported in cpuinfo, though? |
| 09:38:33 | <merijn> | redmp: What was the original question? |
| 09:39:17 | <geekosaur> | [30 05:36:07] <redmp> it's only one line: "main: user error (Pattern match failure in do expression at libraries/base/GHC/Event/Thread.hs:216:3-10)" |
| 09:39:21 | <probie> | merijn: > hi, I'm using "-threaded" and make calls to "threadDelay", but I'm on an exotic machine and these calls fail with an error I've not seen before. I'll paste it. it's only one line: "main: user error (Pattern match failure in do expression at libraries/base/GHC/Event/Thread.hs:216:3-10)" |
| 09:39:40 | <merijn> | heh |
| 09:40:19 | <probie> | (They're on ghc 9.0.2) |
| 09:42:17 | × | redmp quits (~redmp@mobile-166-171-249-80.mycingular.net) (Ping timeout: 250 seconds) |
| 09:42:31 | <merijn> | redmp: are you, perchance, using rtsopts and specifying -N? |
| 09:46:51 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) |
| 09:46:59 | <merijn> | It seems like it's either 1) number of capabilities exceeding the max number of event managers, or 2) some kinda memory ordering issue accessing one before they're initialised |
| 09:47:30 | <merijn> | Also, isn't 9.0 kinda busted to begin with? |
| 09:48:32 | → | chele joins (~chele@user/chele) |
| 09:51:17 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) (Ping timeout: 246 seconds) |
| 09:51:23 | × | chomwitt quits (~chomwitt@2a02:587:7a16:6700:1ac0:4dff:fedb:a3f1) (Ping timeout: 250 seconds) |
| 09:58:47 | × | use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:89bf:2c1e:724:8d14) (Remote host closed the connection) |
| 09:59:07 | → | use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:89bf:2c1e:724:8d14) |
| 10:03:27 | × | red-snail1 quits (~snail@static.151.210.203.116.clients.your-server.de) (Quit: ZNC 1.8.2 - https://znc.in) |
| 10:03:44 | → | red-snail1 joins (~snail@static.151.210.203.116.clients.your-server.de) |
| 10:04:05 | × | madnight quits (~madnight@static.59.103.201.195.clients.your-server.de) (Quit: ZNC 1.8.2 - https://znc.in) |
| 10:04:20 | → | madnight joins (~madnight@static.59.103.201.195.clients.your-server.de) |
| 10:04:33 | × | thegeekinside quits (~thegeekin@189.180.42.214) (Remote host closed the connection) |
| 10:05:42 | → | barcisz joins (~barcisz@83.6.194.51.ipv4.supernova.orange.pl) |
| 10:05:59 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 246 seconds) |
| 10:24:56 | → | CiaoSen joins (~Jura@145.224.73.17) |
| 10:29:32 | × | reverse quits (~inversed@bcdcac82.skybroadband.com) (Ping timeout: 250 seconds) |
| 10:32:05 | × | troydm quits (~troydm@user/troydm) (Ping timeout: 240 seconds) |
| 10:41:23 | × | pyook quits (~puke@user/puke) (Remote host closed the connection) |
| 10:41:41 | → | pyook joins (~puke@user/puke) |
| 10:43:20 | → | reverse joins (~inversed@bcdcac82.skybroadband.com) |
| 10:44:32 | × | CiaoSen quits (~Jura@145.224.73.17) (Ping timeout: 265 seconds) |
| 10:46:25 | → | CiaoSen joins (~Jura@145.224.73.17) |
| 10:50:50 | → | tackleton joins (~tackleton@user/tackleton) |
| 10:53:49 | × | ft quits (~ft@p4fc2a88b.dip0.t-ipconnect.de) (Quit: leaving) |
| 10:54:00 | ← | tackleton parts (~tackleton@user/tackleton) (Since you gotta go you better go now) |
| 10:59:27 | → | xff0x joins (~xff0x@2405:6580:b080:900:2331:d5b8:4a67:9709) |
| 11:11:01 | × | oo_miguel quits (~Thunderbi@77.252.47.84) (Quit: oo_miguel) |
| 11:15:39 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 11:22:08 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 248 seconds) |
| 11:30:41 | × | cr4zsci quits (~Guest75@176.122.87.241) (Quit: Client closed) |
| 11:30:48 | × | xff0x quits (~xff0x@2405:6580:b080:900:2331:d5b8:4a67:9709) (Remote host closed the connection) |
| 11:31:06 | → | xff0x joins (~xff0x@2405:6580:b080:900:bf5:d0f1:bef5:d272) |
| 11:32:50 | <zero> | https://github.com/ghc-proposals/ghc-proposals/issues/587 <- please don't do this |
| 11:33:35 | <yushyin> | yet another or-pattern proposal? |
| 11:34:19 | <zero> | i don't get it |
| 11:34:37 | <yushyin> | Oh, one was actually accepted, I didn't know that yet |
| 11:34:46 | <zero> | https://github.com/ghc-proposals/ghc-proposals/pull/522 <- the example given here is an argument against wildcards, not for or patterns |
| 11:34:55 | <zero> | just don't use wildcards then |
| 11:35:02 | <zero> | am i missing something? |
| 11:36:25 | × | CiaoSen quits (~Jura@145.224.73.17) (Ping timeout: 240 seconds) |
| 11:36:26 | <zero> | piling on layers of redundant sugar is a good way to kill a language |
| 11:36:30 | <zero> | imo |
| 11:37:28 | <zero> | just make wildcards throw a warning by default |
| 11:37:51 | <zero> | it's bad practice anyway |
| 11:40:14 | <probie> | If wildcards are "bad practice", why not just remove them? |
| 11:42:32 | × | gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8) |
| 11:45:13 | × | vandita quits (~vandit@84-236-21-17.pool.digikabel.hu) (Ping timeout: 256 seconds) |
| 11:46:45 | → | vandita joins (~vandit@92-249-185-171.pool.digikabel.hu) |
| 11:57:34 | → | machinedgod joins (~machinedg@93-138-3-195.adsl.net.t-com.hr) |
| 12:11:48 | × | xff0x quits (~xff0x@2405:6580:b080:900:bf5:d0f1:bef5:d272) (Ping timeout: 240 seconds) |
| 12:13:55 | → | xff0x joins (~xff0x@ai098135.d.east.v6connect.net) |
| 12:14:43 | <merijn> | I don't agree they're bad practice to begin with |
| 12:15:33 | <merijn> | I severely dislike the accepted or-proposal anyway, since it doesn't actually implement the *one* actual use case I can imagine for it |
| 12:16:01 | <merijn> | zero: Well, tell the people who keep insisting on making trivial syntax change proposals :\ |
| 12:16:37 | <geekosaur> | I don't think they're bad practice either |
| 12:16:38 | <merijn> | I mostly agree, there's lots of syntax I would change IFF we were doing Haskell from scratch (like imports), but these post-hoc minor tweaks just create a freaking mess of a language |
| 12:17:07 | <merijn> | The record dot proposal is also brain-damaged for that reason, imo |
| 12:19:50 | <merijn> | I can think of like 5-10 minor changes that woulda make things much more pleasant, but the gain in pleasantness doesn't outweigh the potential breakage and long-term splintering, I think |
| 12:23:14 | → | mei joins (~mei@user/mei) |
| 12:23:36 | → | Las[m]1 joins (~lasmatrix@2001:470:69fc:105::74e) |
| 12:24:34 | <Las[m]1> | Does anyone know the reasoning for why top-level definitions must be lifted? |
| 12:25:28 | <jade[m]> | what do you mean by lifted? |
| 12:25:49 | <merijn> | jade[m]: That they have a Lifted TypeRep, presumably |
| 12:26:15 | <merijn> | Las[m]1: Probably because else you could export them from the module, which sounds like a nightmare to implement |
| 12:26:25 | <merijn> | Las[m]1: Since then you can't just resolve them to a simple symbol |
| 12:26:46 | <Las[m]1> | Type rather than TYPE anything |
| 12:27:09 | <geekosaur> | there's also questions like whether it's a computation as opposed to a constant value, in which case when is it performed? |
| 12:27:47 | <geekosaur> | (C++ has this problem and solves it with file level constructors/destructors, which are indeed a nightmare) |
| 12:28:04 | <geekosaur> | especially if it's dynamically loaded |
| 12:28:08 | <merijn> | Las[m]1: essentially, it sounds like a design headache to implement and of limited use |
| 12:28:38 | <merijn> | Which seems a reasonable enough reason to say "sod this" :p |
| 12:29:03 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
| 12:32:47 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 12:39:29 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Remote host closed the connection) |
| 12:39:42 | <dminuoso> | Las[m]1: Is lifted an actual requirement? |
| 12:39:52 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 12:40:07 | <dminuoso> | Naively I would expect any BoxedRep to be enough |
| 12:40:16 | <dminuoso> | i.e. boxed/unlifted |
| 12:40:32 | × | machinedgod quits (~machinedg@93-138-3-195.adsl.net.t-com.hr) (Ping timeout: 265 seconds) |
| 12:43:40 | <geekosaur> | You cannot bind a variable with an unboxed type in a top-level binding. |
| 12:43:56 | <geekosaur> | (https://downloads.haskell.org/ghc/9.0.1/docs/html/users_guide/exts/primitives.html#unboxed-type-kinds) |
| 12:44:33 | <geekosaur> | (9.0.1 there is more or less accident; that's the last version I needed to check the release notes for 🙂 ) |
| 12:45:19 | <dminuoso> | geekosaur: Right. Im just saying it sufficient but not necessary to be lifted. |
| 12:45:31 | <dminuoso> | Since you can also have boxed unlifted things |
| 12:48:32 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 248 seconds) |
| 12:49:40 | <Axman6> | zero: two things, it will be behind a language extension, so if you don't likeit, you don't have to use it; and this isn't the place to complain, you've literally linked to where you should be raising this if you care so deeply |
| 12:50:55 | <Axman6> | it also seems like you missed the point of or-patterns, they aren't really related twildcards at all (though the example could lead you to believe that) |
| 12:51:07 | <Axman6> | to * |
| 12:53:17 | <dminuoso> | Well there is some relationship in that some uses of wildcards lead to brittle code. |
| 12:53:35 | <dminuoso> | But the use of one-of covers not only that but goes further. |
| 12:55:29 | <Axman6> | I want to be able to say case one of (Foo a _); (Bar a _) -> ... ; one of (Baz x y); (Quux y x) -> ... and the compiler just needs to check those bindings are for values of the same type |
| 12:56:01 | <merijn> | Axman6: or-patterns don't let you do that :\ |
| 12:56:02 | <jackdk> | just bodge prisms together |
| 12:56:19 | <Axman6> | that to me is the main use case for or-patterns, not to get exhaustive pattern matches without using wildcards |
| 12:56:21 | <merijn> | Axman6: The accepted proposals doesn't allow bindings shared between the patterns |
| 12:56:31 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 240 seconds) |
| 12:56:35 | <Axman6> | merijn: well shit (: guess it's not very useful then |
| 12:56:36 | <merijn> | Axman6: so you can only use or patterns when you bind nothing |
| 12:56:53 | <merijn> | Axman6: yeah, that's my main complaint, that's the one usecase I could see and they ruined it |
| 12:57:14 | <merijn> | Axman6: Because they can't comprehensively support GADTs and whatever DependentHaskell nonsense with it |
| 12:57:18 | <Axman6> | what was the reasoning for not doing that? |
| 12:57:27 | <Axman6> | -_- |
| 12:57:27 | <merijn> | like...screw those things, just check if the two unify |
| 12:57:38 | <Axman6> | yeah |
| 12:58:00 | <merijn> | as-is it's an extension neutered to the point of uselessness so it's just adding syntactic noise and doesn't even address the one usecase they're good for |
| 12:58:03 | <Axman6> | "Error: or-patterns are not supported for GADTs" problem solved |
| 12:58:35 | <Axman6> | imagine if we had Erlang's pattern matching |
| 12:59:00 | <Axman6> | IIRC you can basically do e == e = True; _ == _ = False |
| 12:59:20 | <Axman6> | I guess they don't have infinite data |
| 13:08:10 | → | MajorBiscuit joins (~MajorBisc@c-001-021-017.client.tudelft.eduvpn.nl) |
| 13:12:28 | <dminuoso> | But I agree, that without variable bindings, the value of or-patterns will largely be limited to sum types of nullary data types. |
| 13:14:23 | → | __monty__ joins (~toonn@user/toonn) |
| 13:22:56 | × | barcisz quits (~barcisz@83.6.194.51.ipv4.supernova.orange.pl) (Quit: Connection closed) |
| 13:34:32 | → | ystael joins (~ystael@user/ystael) |
| 13:34:38 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 13:34:38 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 13:34:38 | → | wroathe joins (~wroathe@user/wroathe) |
| 13:35:09 | × | td_ quits (~td@i53870907.versanet.de) (Quit: waking up from the american dream ...) |
| 13:46:47 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 13:47:14 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds) |
| 13:48:38 | → | td_ joins (~td@i53870907.versanet.de) |
| 13:50:41 | × | dhil quits (~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 246 seconds) |
| 13:51:01 | × | jero98772 quits (~jero98772@2800:484:1d7f:5d36::1) (Ping timeout: 250 seconds) |
| 13:52:22 | → | gensyst joins (~gensyst@user/gensyst) |
| 13:52:45 | <gensyst> | During putMVar (when waiting for it to become empty), does GHC call the garbage collector at all? |
| 13:52:55 | <gensyst> | (because something in the GC could empty the mvar?) |
| 13:53:36 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 13:54:08 | → | titibandit joins (~titibandi@user/titibandit) |
| 13:54:35 | <Axman6> | why would the GC empty an MVar? |
| 13:54:49 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 13:55:00 | <Axman6> | they can only be emptied by a call to takeMVar (or equivalent) |
| 13:55:05 | × | ystael quits (~ystael@user/ystael) (Quit: Lost terminal) |
| 13:56:36 | <Axman6> | IIRC, the way that poutMVar works is: optimistically try to write to it, if it';s full, the thread adds itself to a queue of threads waiting to write and that thread is not runable until it reaches the head of the queue |
| 13:57:06 | <Axman6> | Parallel and Concurrent Programming in Haskell will have more details |
| 13:57:10 | <Axman6> | @where pcph |
| 13:57:10 | <lambdabot> | "Parallel and Concurrent Programming in Haskell" by Simon Marlow in 2013 at <http://community.haskell.org/~simonmar/pcph/>,<http://chimera.labs.oreilly.com/books/1230000000929/>,<https://web.archive. |
| 13:57:10 | <lambdabot> | org/web/20180117194842/http://chimera.labs.oreilly.com/books/1230000000929>,<https://www.oreilly.com/library/view/parallel-and-concurrent/9781449335939/> |
| 13:57:14 | → | barcisz joins (~barcisz@83.6.194.51.ipv4.supernova.orange.pl) |
| 13:57:33 | → | ystael joins (~ystael@user/ystael) |
| 13:58:49 | <merijn> | gensyst: MVars are GC roots, so GC can never empty them |
| 13:58:56 | <merijn> | Axman6: correct |
| 14:02:43 | <gensyst> | Axman6, merijn thanks! |
| 14:02:56 | → | jero98772 joins (~jero98772@2800:484:1d7f:5d36::1) |
| 14:03:46 | <merijn> | I guess that *theoretically* some atrocious abomination of weak pointers and finalizer could conceivably indirectly cause GC to run a finalizer that empties an MVar, but that seems sufficiently farfetched it's not what you mean :p |
| 14:04:09 | <merijn> | Also, if you do that, you deserve any misery you get :p |
| 14:04:18 | <gensyst> | Axman6, merijn so code that empties an mvar (with takeMVar) on GC (through e.g. weakIORRef is invalid code? |
| 14:04:28 | <gensyst> | merijn, lol that's the route i was barking on :( |
| 14:04:30 | <gensyst> | fuuuuuuuuu |
| 14:05:11 | <merijn> | gensyst: I mean, the interactions there are complicated enough I'm not willing to make any statement on their correctness or sanity :p |
| 14:05:38 | <merijn> | That's "better stare at GHC's implementation to make sure this makes sense" levels of complexity |
| 14:06:15 | → | ddellacosta joins (~ddellacos@143.244.47.100) |
| 14:08:08 | <gensyst> | merijn, are literally all mvars gc roots? why? |
| 14:08:29 | <merijn> | gensyst: I'm not sure how you can imagine them not being GC roots? |
| 14:08:49 | <merijn> | I can't really conceive what that'd mean |
| 14:08:50 | <dminuoso> | They are global mutable state. |
| 14:10:58 | <geekosaur> | a value in an `MVar` is "unowned" until `takeMVar`ed, so the `MVar` itself has to keep it alive, hence must be a GC root |
| 14:11:44 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 248 seconds) |
| 14:11:49 | × | ubert1 quits (~Thunderbi@2a02:8109:abc0:6434:e3:e79d:949c:d6b) (Ping timeout: 250 seconds) |
| 14:13:49 | × | ddellacosta quits (~ddellacos@143.244.47.100) (Ping timeout: 265 seconds) |
| 14:13:53 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 14:15:35 | → | ddellacosta joins (~ddellacos@146.70.168.170) |
| 14:18:23 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 14:19:17 | <gensyst> | I still don't see why some weakioref code (my own code) can't contain takeMVar. What's so special about takeMVar? i'm just doing stuff, like i do any other stuff. After that code is run, things are what they are in the end. |
| 14:19:20 | <gensyst> | so what's the big deal? |
| 14:19:42 | <gensyst> | the only difference is that GC eventually runs that code |
| 14:19:43 | <merijn> | gensyst: It can, it just makes it a nightmare to reason about |
| 14:21:48 | <merijn> | I didn't say it was invalid code. I said people who value their sanity avoid writing code like that :p |
| 14:22:13 | → | captnemo joins (~captnemo@193.32.127.232) |
| 14:25:12 | → | cheater joins (~Username@user/cheater) |
| 14:28:06 | → | stackdroid18 joins (14094@de1.hashbang.sh) |
| 14:28:42 | × | captnemo quits (~captnemo@193.32.127.232) (Quit: WeeChat 3.8) |
| 14:31:16 | → | shriekingnoise joins (~shrieking@186.137.175.87) |
| 14:32:42 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 14:40:59 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 14:44:01 | zero | is now known as zzz |
| 14:45:05 | → | oo_miguel joins (~Thunderbi@77.252.47.84) |
| 14:45:42 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:bd3c:70d:4e85:6e2b) (Quit: WeeChat 2.8) |
| 14:45:53 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.8) |
| 14:47:53 | → | motherfsck joins (~motherfsc@user/motherfsck) |
| 14:50:49 | × | ddellacosta quits (~ddellacos@146.70.168.170) (Ping timeout: 250 seconds) |
| 14:51:16 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) |
| 14:52:55 | → | ddellacosta joins (~ddellacos@143.244.47.74) |
| 14:55:28 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) (Ping timeout: 248 seconds) |
| 15:00:47 | × | jero98772 quits (~jero98772@2800:484:1d7f:5d36::1) (Ping timeout: 250 seconds) |
| 15:01:34 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) |
| 15:12:47 | → | jero98772 joins (~jero98772@2800:484:1d7f:5d36::1) |
| 15:16:32 | <jade[m]> | would it make sense to have |
| 15:16:32 | <jade[m]> | ``` |
| 15:16:32 | <jade[m]> | pass :: Applicative f => f () |
| 15:16:32 | <jade[m]> | ...(truncated) |
| 15:16:45 | <jade[m]> | s/use/export |
| 15:20:33 | <dminuoso> | jade[m]: The answer to that question is the same as for whether anything is sensible to export. |
| 15:21:12 | <dminuoso> | It's a convenince bit I generally dont use because I just write: () <$ foo |
| 15:21:14 | <geekosaur> | "pass" feels like a Pythonism |
| 15:21:19 | → | cheater_ joins (~Username@user/cheater) |
| 15:21:48 | <dminuoso> | As much as `return` feels like a Fortranism. |
| 15:21:58 | <geekosaur> | was just thinking that, yes |
| 15:22:26 | <ncf> | jade[m]: we can't see your entire message because the matrix bridge truncates it; please use an IRC client |
| 15:22:44 | <geekosaur> | yeh, I had to switch to matrix to see it |
| 15:22:47 | × | cheater quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 15:22:54 | cheater_ | is now known as cheater |
| 15:23:05 | <geekosaur> | annoyingly, the bridge only *sometimes* truncates; other times it at least pastebins the whole message |
| 15:23:43 | <ncf> | matrix bridges are a disaster and we should just stop it |
| 15:24:10 | <dminuoso> | ncf: Federation of federated chat networks! |
| 15:24:31 | × | ubert quits (~Thunderbi@p200300ecdf0002063c1d2db889bb964c.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 15:24:38 | <dminuoso> | It's like running bitcoin in a smart contract on cardano. |
| 15:28:56 | → | ubert joins (~Thunderbi@p200300ecdf0002068202f1bd1e34972c.dip0.t-ipconnect.de) |
| 15:29:18 | → | cheater_ joins (~Username@user/cheater) |
| 15:30:38 | → | cheater__ joins (~Username@user/cheater) |
| 15:31:33 | × | cheater quits (~Username@user/cheater) (Ping timeout: 250 seconds) |
| 15:31:43 | cheater__ | is now known as cheater |
| 15:34:10 | × | cheater_ quits (~Username@user/cheater) (Ping timeout: 250 seconds) |
| 15:35:38 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 15:37:04 | × | kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 248 seconds) |
| 15:37:27 | → | kritzefitz joins (~kritzefit@debian/kritzefitz) |
| 15:41:59 | × | kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 240 seconds) |
| 15:42:15 | → | cheater_ joins (~Username@user/cheater) |
| 15:42:18 | → | kritzefitz joins (~kritzefit@debian/kritzefitz) |
| 15:43:31 | → | cheater__ joins (~Username@user/cheater) |
| 15:45:00 | × | cheater quits (~Username@user/cheater) (Ping timeout: 250 seconds) |
| 15:45:06 | cheater__ | is now known as cheater |
| 15:45:20 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) (Remote host closed the connection) |
| 15:46:47 | × | cheater_ quits (~Username@user/cheater) (Ping timeout: 240 seconds) |
| 15:47:33 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 15:47:39 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) |
| 15:47:52 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Quit: WeeChat 3.8) |
| 15:52:03 | → | cheater__ joins (~Username@user/cheater) |
| 15:52:12 | → | kritzefitz_ joins (~kritzefit@debian/kritzefitz) |
| 15:52:28 | × | kritzefitz quits (~kritzefit@debian/kritzefitz) (Ping timeout: 240 seconds) |
| 15:53:34 | <gensyst> | Is there a reliable way to convert ThreadId to Int? |
| 15:54:06 | <gensyst> | wondering if i really have to do mkWeakThreadId (to point to it weakly) instead of just storing the Int (which I really need in the end) |
| 15:54:11 | → | cheater___ joins (~Username@user/cheater) |
| 15:54:57 | × | cheater quits (~Username@user/cheater) (Ping timeout: 250 seconds) |
| 15:55:05 | cheater___ | is now known as cheater |
| 15:55:34 | <Hecate> | gensyst: heavens why do you need it to be an Int? |
| 15:55:45 | <EvanR> | there might be a proof that ThreadId can't logically be converted to an Int |
| 15:55:56 | <EvanR> | puts euclid's hat on |
| 15:56:09 | → | esph joins (~weechat@user/esph) |
| 15:56:57 | <EvanR> | 1. different threads have different ThreadIds. 2. for any function f :: ThreadId -> Int, and and two different ThreadId x /= y, f x /= f y |
| 15:57:04 | kritzefitz_ | is now known as kritzefitz |
| 15:57:12 | <EvanR> | but as time goes on you can have more threads in the history of the program than Int |
| 15:57:28 | <EvanR> | so by pigeonhole principle you would have f x == f y for some pair of ThreadIds |
| 15:57:38 | <EvanR> | causing a contradiction |
| 15:57:44 | × | cheater__ quits (~Username@user/cheater) (Ping timeout: 265 seconds) |
| 15:57:53 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Remote host closed the connection) |
| 15:58:09 | <c_wraith> | gensyst: https://hackage.haskell.org/package/base-4.18.0.0/docs/GHC-Conc-Sync.html#t:ThreadId this exposes the constructor |
| 15:58:13 | <geekosaur> | well, the key point is as long as you hold a ThreadId you prevent it from being reused, this is not true if you make it an Int (or make it weak for that matter) |
| 15:58:35 | <geekosaur> | \but at least you get a finalizer call in the latter case |
| 15:58:46 | <gensyst> | well, all I wanted to do is at some point in the program, check if the Int I stored is the same int as the currently running thread. |
| 15:58:46 | → | chomwitt joins (~chomwitt@ppp-94-67-203-168.home.otenet.gr) |
| 15:59:27 | <geekosaur> | do you accept false positives? |
| 15:59:29 | × | merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds) |
| 15:59:50 | <ncf> | EvanR: you're assuming that f is injective! const 0 :: ThreadId -> Int |
| 16:00:01 | <c_wraith> | Hmm. I guess the constructor isn't that helpful |
| 16:00:12 | <gensyst> | EvanR's point stands that yeah, I guess at some point i might exhaust maxBound :: Int |
| 16:00:14 | → | kluk joins (~arrowhead@cpe-74-66-76-151.nyc.res.rr.com) |
| 16:00:27 | <c_wraith> | On a 64-bit system? |
| 16:00:29 | <gensyst> | if the program runs long enough :S |
| 16:00:34 | <gensyst> | unlikely |
| 16:00:45 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) (Remote host closed the connection) |
| 16:00:55 | <gensyst> | unlikely on 64-bit sys |
| 16:01:01 | <geekosaur> | (I note that it's currently a pointer per the documentation, which reduces the space because threads might be pooled and reused) |
| 16:01:03 | <gensyst> | unlikely that this happens on a 64-bit sys |
| 16:01:48 | <ncf> | apparently it fits in a CULLong https://hackage.haskell.org/package/base-4.18.0.0/docs/src/GHC.Conc.Sync.html#getThreadId |
| 16:02:47 | <EvanR> | Int (on 64-bit) is approximately infinite |
| 16:03:03 | <EvanR> | lol |
| 16:03:33 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 16:03:59 | <EvanR> | damn good job obliterating my proof, const 0 indeed |
| 16:10:28 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 240 seconds) |
| 16:10:30 | → | n0den1te joins (~~.~@157.119.87.13) |
| 16:11:41 | <c_wraith> | As a very silly alternative, you could hold ThreadIds and periodically check that the ThreadStatus is still in one of the active states, and discard the ThreadId if it needs to be cleaned up. |
| 16:12:08 | <c_wraith> | I can't offhand think of when that's better than using a finalizer, but it's an option of sorts |
| 16:14:33 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 16:17:36 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 16:18:23 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Remote host closed the connection) |
| 16:18:46 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 16:21:14 | → | econo joins (uid147250@user/econo) |
| 16:21:22 | → | nick___ joins (~nick@wsip-174-78-110-18.pn.at.cox.net) |
| 16:22:05 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 16:22:28 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 16:22:31 | → | mikail joins (~mikail@2a02:c7c:60bc:7b00:436c:7fb5:a1d2:3a5e) |
| 16:25:43 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 256 seconds) |
| 16:26:12 | → | merijn joins (~merijn@c-001-001-004.client.esciencecenter.eduvpn.nl) |
| 16:26:43 | → | zero joins (~z@user/zero) |
| 16:27:38 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 16:27:42 | × | MajorBiscuit quits (~MajorBisc@c-001-021-017.client.tudelft.eduvpn.nl) (Ping timeout: 265 seconds) |
| 16:28:32 | <eldritchcookie[m> | we have a FFI for c, what would it take exactly to make one for another compiled language? |
| 16:29:02 | <geekosaur> | a fixed, standardized ABI for that language |
| 16:29:28 | <geekosaur> | as yet only C has such and even it has limitations (for example, passing/returning `struct`s by value is not part of the standard) |
| 16:29:43 | → | MajorBiscuit joins (~MajorBisc@128-227-168.netrun.cytanet.com.cy) |
| 16:30:10 | <geekosaur> | Raku tried to do one for C++ only to discover it wasn't portable; C++ makes no promises as to ABI |
| 16:30:15 | × | zzz quits (~z@user/zero) (Ping timeout: 256 seconds) |
| 16:30:50 | <geekosaur> | so pretty much all FFI passes through the subset of C that has a fixed ABI |
| 16:32:40 | <EvanR> | how about pascal ffi for haskell, which would have a side benefit of confusing everyone who thought those were the same language |
| 16:33:05 | <geekosaur> | first, find one |
| 16:33:46 | <geekosaur> | (ironically, it used to exist after a fashion: older macos and older windows both used a pascal-based ABI) |
| 16:34:32 | <EvanR> | that's what I was thinking of, wow this is older and more obsolete than I thought |
| 16:35:15 | <EvanR> | a 16 bit ThreadId would really ruin gensyst's day |
| 16:44:29 | × | EvanR quits (~EvanR@user/evanr) (Remote host closed the connection) |
| 16:44:49 | → | EvanR joins (~EvanR@user/evanr) |
| 16:49:50 | × | mikail quits (~mikail@2a02:c7c:60bc:7b00:436c:7fb5:a1d2:3a5e) (Quit: Leaving) |
| 16:51:59 | × | turlando quits (~turlando@user/turlando) (Ping timeout: 240 seconds) |
| 16:55:37 | × | vandita quits (~vandit@92-249-185-171.pool.digikabel.hu) (Ping timeout: 250 seconds) |
| 16:55:52 | × | nick___ quits (~nick@wsip-174-78-110-18.pn.at.cox.net) (Quit: WeeChat 3.8) |
| 16:57:13 | → | vandita joins (~vandit@92-249-182-8.pool.digikabel.hu) |
| 16:59:28 | × | merijn quits (~merijn@c-001-001-004.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 17:00:44 | × | n0den1te quits (~~.~@157.119.87.13) (Quit: Leaving.) |
| 17:01:15 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) |
| 17:01:40 | → | __monty__ joins (~toonn@user/toonn) |
| 17:03:10 | → | turlando joins (~turlando@user/turlando) |
| 17:05:31 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) (Ping timeout: 240 seconds) |
| 17:07:44 | × | barcisz quits (~barcisz@83.6.194.51.ipv4.supernova.orange.pl) (Quit: Connection closed) |
| 17:07:59 | → | ub joins (~Thunderbi@p548c91e0.dip0.t-ipconnect.de) |
| 17:08:05 | × | ubert quits (~Thunderbi@p200300ecdf0002068202f1bd1e34972c.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 17:08:06 | ub | is now known as ubert |
| 17:11:30 | × | oo_miguel quits (~Thunderbi@77.252.47.84) (Quit: oo_miguel) |
| 17:12:02 | → | oo_miguel joins (~Thunderbi@77.252.47.84) |
| 17:13:15 | → | merijn joins (~merijn@c-001-001-004.client.esciencecenter.eduvpn.nl) |
| 17:13:45 | <merijn> | eldritchcookie[m: The main thing it'd take to make another FFI is "a lot of elbow grease" |
| 17:15:28 | <Las[m]1> | eldritch cookie: you typically use that C FFI for all other languages |
| 17:15:29 | <Las[m]1> | so e.g. you'd bind to it from Rust, Python, Go, because C is universally supporoted |
| 17:15:45 | → | Midjak joins (~Midjak@82.66.147.146) |
| 17:15:53 | <Las[m]1> | if you want to have more in-depth support (e.g. translate type classes), that depends on the language and can be very complex. |
| 17:17:09 | <eldritchcookie[m> | yeah was looking at it unfortunately not worth it, time used on the javascript backend would be way more efficient to do what i want |
| 17:17:43 | × | MajorBiscuit quits (~MajorBisc@128-227-168.netrun.cytanet.com.cy) (Ping timeout: 250 seconds) |
| 17:20:35 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) |
| 17:22:45 | <dminuoso> | `geekosaur | as yet only C has such [...]` |
| 17:22:55 | <dminuoso> | Even thats a mild lie at best. |
| 17:22:55 | × | Midjak quits (~Midjak@82.66.147.146) (Quit: Leaving) |
| 17:24:25 | <dminuoso> | The gigantic clustermess of different ABIs, incoherent clusterscrew of header macros being interpreted differently depending on what compiler you use or what platform you have, completely broken dances across static storage state in glibc (Im looking at you NSS) |
| 17:25:11 | <dminuoso> | It's not really standardized either, at best there's a bunch of conventions that - as long as you obey by using a stack of ancient convoluted autotools - might work togehter. |
| 17:25:14 | <dminuoso> | Or might not. |
| 17:26:33 | <dminuoso> | .NET and JRE are examples of how standardized FFI can work. |
| 17:26:49 | <dminuoso> | C is the epitome of "but it works for me" |
| 17:26:55 | <merijn> | eldritchcookie[m: a javascript FFI is the one thing I can see getting added at some point |
| 17:27:05 | <merijn> | Now that wasm is in mainline ghc |
| 17:30:56 | → | quarkyalice joins (~alice@92.sub-75-198-181.myvzw.com) |
| 17:30:56 | × | quarkyalice quits (~alice@92.sub-75-198-181.myvzw.com) (Changing host) |
| 17:30:56 | → | quarkyalice joins (~alice@user/quarkyalice) |
| 17:42:22 | × | gensyst quits (~gensyst@user/gensyst) (Quit: Leaving) |
| 17:43:48 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 240 seconds) |
| 17:48:58 | × | TMA quits (tma@twin.jikos.cz) (Ping timeout: 268 seconds) |
| 17:49:55 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 17:57:48 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 240 seconds) |
| 18:02:03 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 18:08:56 | → | Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
| 18:10:52 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 18:12:30 | → | scrungus joins (~scrungus@bras-base-aurron9127w-grc-63-70-24-87-21.dsl.bell.ca) |
| 18:17:05 | × | vandita quits (~vandit@92-249-182-8.pool.digikabel.hu) (Ping timeout: 250 seconds) |
| 18:18:04 | <tomsmeding> | dminuoso: that's the glibc ABI |
| 18:18:37 | <tomsmeding> | granted, that's relevant when talking about C at large, but when talking about FFI'ing with another C library, what glibc does matters less |
| 18:18:55 | → | vandita joins (~vandit@94-21-82-214.pool.digikabel.hu) |
| 18:19:26 | → | dhil joins (~dhil@78.45.150.83.ewm.ftth.as8758.net) |
| 18:19:38 | <tomsmeding> | though even the bare-bones C ABI for calling functions differs by architecture and platform :) |
| 18:19:56 | tomsmeding | is thinking about fastcall/ccall/whatever windows does again |
| 18:20:44 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Remote host closed the connection) |
| 18:21:06 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 18:23:01 | <EvanR> | pascall |
| 18:31:54 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 18:38:34 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 18:40:18 | → | gmg joins (~user@user/gehmehgeh) |
| 18:47:28 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 248 seconds) |
| 18:52:13 | → | pavonia joins (~user@user/siracusa) |
| 19:01:41 | → | Feuermagier joins (~Feuermagi@user/feuermagier) |
| 19:05:12 | × | stackdroid18 quits (14094@de1.hashbang.sh) (Quit: hasta la vista... tchau!) |
| 19:07:09 | → | mechap joins (~mechap@user/mechap) |
| 19:07:17 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 19:14:19 | × | robobub quits (uid248673@2a03:5180:f:5::3:cb61) (Quit: Connection closed for inactivity) |
| 19:14:56 | × | taupiqueur quits (~taupiqueu@2a02-842a-8180-4601-655d-eb2e-b97d-d4ca.rev.sfr.net) (Quit: WeeChat 3.8) |
| 19:16:23 | × | vandita quits (~vandit@94-21-82-214.pool.digikabel.hu) (Ping timeout: 240 seconds) |
| 19:18:16 | → | vandita joins (~vandit@80-95-69-242.pool.digikabel.hu) |
| 19:19:53 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 19:21:12 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 19:21:31 | → | ub joins (~Thunderbi@p200300ecdf0002068202f1bd1e34972c.dip0.t-ipconnect.de) |
| 19:21:45 | × | ubert quits (~Thunderbi@p548c91e0.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 19:21:46 | ub | is now known as ubert |
| 19:25:03 | × | Lycurgus quits (~juan@user/Lycurgus) (Client Quit) |
| 19:27:28 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 240 seconds) |
| 19:31:25 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 19:32:13 | → | wrengr joins (~wrengr@201.59.83.34.bc.googleusercontent.com) |
| 19:32:43 | × | phma quits (phma@2001:5b0:2172:dd28:3b22:598:a9f4:e4a5) (Read error: Connection reset by peer) |
| 19:33:35 | → | simendsjo joins (~user@84.211.91.241) |
| 19:33:36 | → | phma joins (phma@2001:5b0:211c:ea78:b455:bfa2:d6ff:5b73) |
| 19:35:46 | → | ub joins (~Thunderbi@p548c91e0.dip0.t-ipconnect.de) |
| 19:35:55 | × | ubert quits (~Thunderbi@p200300ecdf0002068202f1bd1e34972c.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 19:35:56 | ub | is now known as ubert |
| 19:38:34 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 250 seconds) |
| 19:41:57 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 19:42:14 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 19:42:24 | × | motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 248 seconds) |
| 19:47:23 | → | machinedgod joins (~machinedg@93-138-3-195.adsl.net.t-com.hr) |
| 19:49:42 | × | hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 19:50:01 | → | hrberg joins (~quassel@171.79-160-161.customer.lyse.net) |
| 19:50:15 | × | vandita quits (~vandit@80-95-69-242.pool.digikabel.hu) (Ping timeout: 250 seconds) |
| 19:51:29 | → | redmp joins (~redmp@mobile-166-137-179-122.mycingular.net) |
| 19:52:10 | → | vandita joins (~vandit@193-110-63-63.cable-modem.hdsnet.hu) |
| 19:53:29 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 19:55:03 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 265 seconds) |
| 19:59:21 | × | gurkenglas quits (~user@dynamic-046-114-181-050.46.114.pool.telefonica.de) (Ping timeout: 250 seconds) |
| 20:01:30 | <dminuoso> | tomsmeding: Fair enough. But the issues surrounding autotools, compiler specialties (fixincludes comes to mind), or just different macro substitution... |
| 20:02:04 | <dminuoso> | I mean if you give me a library and a header, in general I cant even guarantee proper linkage. Will my `struct foo` have the same layout as your `struct foo`? |
| 20:02:40 | <dminuoso> | As soon as CPP enters the scene, all bets are off. |
| 20:03:41 | <dminuoso> | And even without CPP, it depends on all the extensions and compiler flags that are used., |
| 20:04:07 | <dminuoso> | And while yes, those are non-standard C, standard C is just a myth that language lawyers in ##c on freenode or libera spread. |
| 20:04:46 | × | trev quits (~trev@user/trev) (Quit: trev) |
| 20:04:50 | → | gurkenglas joins (~user@dynamic-046-114-181-050.46.114.pool.telefonica.de) |
| 20:05:29 | <geekosaur> | sounds like my attitude toward posix, except mine includes that it's not even a tech standard |
| 20:08:35 | → | ft joins (~ft@p4fc2a88b.dip0.t-ipconnect.de) |
| 20:10:14 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) (Remote host closed the connection) |
| 20:10:50 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 20:15:21 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds) |
| 20:18:50 | → | darchitect1 joins (~darchitec@2a00:23c6:3584:df01:25bf:d476:680b:8299) |
| 20:19:21 | <darchitect1> | hey guys, has anyone seen Robert Harper's Practical Foundations for Programming Languages in lectures ? |
| 20:23:00 | <darchitect1> | there he mentions the fact that Haskell has `undefined` and is lazy by default makes it unable to have inductive types, but I didn't quite get why he reached this conclusion... |
| 20:23:52 | <darchitect1> | any clarification or rebutal would be welcome :) |
| 20:25:39 | <merijn> | darchitect1: Harper is a very smart and knowledgeable person, hampered by his personal grudge/vendetta against haskell, because he's mad (S)ML lost the popularity contest :p |
| 20:26:15 | <merijn> | darchitect1: So he makes a big deal of several haskell flaws/problems that are "technically correct, but practically irrelevant" |
| 20:26:53 | × | jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Read error: Connection reset by peer) |
| 20:27:27 | → | jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) |
| 20:27:31 | <merijn> | darchitect1: The problem is that laziness + undefined combined means that, for example, you can never prove a list is finite (the inductive definition of a list would be, by definition) |
| 20:28:22 | <merijn> | darchitect1: in essence, all Haskell datatypes are codata (i.e. possibly infinite in size) |
| 20:28:34 | <darchitect1> | does this matter when proving software to be correct though ? |
| 20:28:56 | <merijn> | darchitect1: Yes, because reasoning about codata is harder than inductive datatypes |
| 20:29:00 | <geekosaur> | yes, if that's what you are doing. if you are solving problems with it, no |
| 20:29:01 | <darchitect1> | as in - does that make Haskell more "unsafe" than OCaml in practice when it comes to software verification |
| 20:29:23 | <merijn> | darchitect1: Not (necessarily) more unsafe, but certainly harder to prove the same things |
| 20:29:47 | <darchitect1> | alright I think I'm getting the gist of it |
| 20:29:49 | <darchitect1> | one more q |
| 20:30:06 | <darchitect1> | (again I'm pretty no to PL so bare with me if it's a stupid one) |
| 20:30:09 | × | phma quits (phma@2001:5b0:211c:ea78:b455:bfa2:d6ff:5b73) (Read error: Connection reset by peer) |
| 20:30:10 | <darchitect1> | new * |
| 20:30:18 | <geekosaur> | flip side, purity makes it easier to prove some things you can't prove in OCaml or SML because it's impure and might do IO anywhere |
| 20:30:29 | <geekosaur> | so it's a tradeoff |
| 20:30:41 | <merijn> | geekosaur: Sure, but that goes against Harper's haskell-grudge, so he's not gonna call that out ;) |
| 20:30:49 | <geekosaur> | exactly |
| 20:31:07 | <geekosaur> | remember I was in the building next to his for ~15 years 🙂 |
| 20:31:21 | <geekosaur> | hobnobbing with his students |
| 20:31:38 | <darchitect1> | geekosaur: nice |
| 20:31:47 | <EvanR> | an angry mob appears, blames undefined, and removes it from the language. Meanwhile we have unsafePerformIO and unsafeCoerce |
| 20:32:11 | <darchitect1> | what about DSLs written in Haskell |
| 20:32:12 | <EvanR> | sorry for using "whataboutism" |
| 20:32:24 | → | Feuermagier_ joins (~Feuermagi@user/feuermagier) |
| 20:32:51 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
| 20:32:58 | <darchitect1> | say I have a less expressive DSL in Haskell, does the fact that we have undefined and lazy by default mean it will be hard to prove things about the DSL because it's implemented in Haskell ? |
| 20:33:00 | <geekosaur> | you can choose not to import those, you can't choose not to import nontermination |
| 20:33:13 | <ncf> | it's not like ML-style language are total anyway |
| 20:33:17 | <geekosaur> | then again you can't in SML anyuway |
| 20:33:18 | <ncf> | languages* |
| 20:33:20 | <merijn> | darchitect1: Nope, it does mean it'll be trickier to prove your DSL implementation conforms to your spec |
| 20:33:20 | <geekosaur> | either |
| 20:34:14 | <merijn> | darchitect1: there's 2 different meta levels: proving something about a formal system (i.e., your DSL) and proving that some artifact actually *implements* a formal system as specified |
| 20:34:20 | <darchitect1> | would it be any easier in OCaml? |
| 20:34:44 | <merijn> | darchitect1: The former depends solely on your formal system (DSL), the latter would also depend on your implementation language (i.e. Haskell) |
| 20:34:56 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 246 seconds) |
| 20:34:56 | <EvanR> | if someone is saying haskell can't properly do inductive types, they are probably alluding to languages like Coq which is dependently typed and designed to prove things |
| 20:35:15 | <EvanR> | not ocaml |
| 20:35:36 | <merijn> | darchitect1: Incidentally, if your studying formal proofs, etc. let me also highly recommend the insightful paper "Fast and Loose Reasoning is Morally Correct" |
| 20:35:42 | <ncf> | or agda, to stay within haskell territory |
| 20:36:05 | <darchitect1> | merijn: will do! thanks |
| 20:36:15 | → | Pickchea joins (~private@user/pickchea) |
| 20:36:42 | <merijn> | darchitect1: Which (partially) justifies reasoning/pretending Haskell is total, despite it obviously not being total |
| 20:37:08 | <EvanR> | you can and should write total functions in any language! |
| 20:37:24 | <EvanR> | unless it's elixir because let it crash |
| 20:37:34 | <merijn> | EvanR: I'm trying, but TIS-100 is very hard ;_; |
| 20:37:40 | <EvanR> | lol |
| 20:37:46 | <darchitect1> | I was only wondering because I like both OCaml (modules and great imperative support) and Haskell (beauty :D ) and wanted to know if both languages are in the sweet spot of productivity + math rigor or there are clear benefits to using one over the other for general use cases where correctness is critical without sacrificing performance or clarity |
| 20:38:20 | <merijn> | darchitect1: They're about the same, tbh |
| 20:38:22 | <EvanR> | in haskell you control how lazy and how total your code is |
| 20:38:41 | <EvanR> | as long as you don't download anyone's code |
| 20:38:51 | <merijn> | darchitect1: FYI, haskell has great imperative support to :p |
| 20:38:52 | <darchitect1> | EvanR: what exactly does total mean ? no libs ? |
| 20:39:05 | <EvanR> | a total function is defined for all its inputs |
| 20:39:09 | <merijn> | darchitect1: And STM! And purity by default is smart |
| 20:39:34 | <EvanR> | practically, it returns an answer in finite time |
| 20:39:41 | <merijn> | darchitect1: I'd say overall Haskell is slightly nicer and more practical |
| 20:39:45 | <darchitect1> | merijn: yeah, I like the monadic way and do notation, but maybe I'm just too used to fors and whiles |
| 20:39:47 | <darchitect1> | :D |
| 20:39:59 | <darchitect1> | + refs and pointers |
| 20:40:01 | <merijn> | @hackage monad-loops |
| 20:40:01 | <lambdabot> | https://hackage.haskell.org/package/monad-loops |
| 20:40:15 | <merijn> | darchitect1: But you get refs and pointers in Haskell too :p |
| 20:40:23 | <merijn> | darchitect1: Like 8 different flavours even |
| 20:40:23 | × | dhil quits (~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 240 seconds) |
| 20:43:30 | <darchitect1> | will have a look at that |
| 20:43:52 | <darchitect1> | thanks a lot ! |
| 20:52:02 | × | chomwitt quits (~chomwitt@ppp-94-67-203-168.home.otenet.gr) (Remote host closed the connection) |
| 20:52:39 | × | darchitect1 quits (~darchitec@2a00:23c6:3584:df01:25bf:d476:680b:8299) (Ping timeout: 250 seconds) |
| 20:56:59 | × | redmp quits (~redmp@mobile-166-137-179-122.mycingular.net) (Quit: leaving) |
| 21:00:45 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:05:57 | → | statusbot9 joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) |
| 21:06:09 | → | AlexNoo_ joins (~AlexNoo@178.34.163.104) |
| 21:06:49 | → | pavonia_ joins (~user@user/siracusa) |
| 21:06:56 | → | hgolden_ joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com) |
| 21:07:10 | → | hometown joins (~blurb@96.45.2.121) |
| 21:07:14 | → | bollu0 joins (~bollu@159.65.151.13) |
| 21:07:21 | → | bramhaag4 joins (~bramhaag@134.195.121.39) |
| 21:07:33 | → | russruss5 joins (~russruss@my.russellmcc.com) |
| 21:07:36 | → | kimiamania6 joins (~65804703@user/kimiamania) |
| 21:07:37 | → | oo_miguel1 joins (~Thunderbi@77.252.47.84) |
| 21:07:38 | → | finnekit2 joins (~finnekit@fsf/member/finnekit) |
| 21:07:42 | → | EsoAlgo81 joins (~EsoAlgo@129.146.136.145) |
| 21:07:51 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 21:07:55 | → | elkcl_ joins (~elkcl@broadband-37-110-27-252.ip.moscow.rt.ru) |
| 21:07:57 | → | malte_ joins (~malte@mal.tc) |
| 21:07:58 | → | remexre_ joins (~remexre@mail.sift.net) |
| 21:08:01 | → | eL_Bart0- joins (eL_Bart0@dietunichtguten.org) |
| 21:08:22 | → | jbalint_ joins (~jbalint@2600:6c44:117f:e98a:816a:9488:fb1:7b7) |
| 21:08:31 | → | bgamari joins (~bgamari@64.223.233.113) |
| 21:08:37 | → | kaskal joins (~kaskal@2001:4bb8:2dd:a79d:1a7:8529:b79b:cfa) |
| 21:08:38 | → | B-J joins (~BenziJuni@88-149-64-165.du.xdsl.is) |
| 21:08:52 | → | kadobanana joins (~mud@user/kadoban) |
| 21:08:55 | → | phma joins (~phma@2001:5b0:2143:ed58:27b1:77ae:44a6:25c1) |
| 21:08:58 | → | urdh_ joins (~urdh@user/urdh) |
| 21:09:12 | → | swistak- joins (~swistak@185.21.216.141) |
| 21:10:01 | → | telser_ joins (~quassel@user/telser) |
| 21:11:00 | → | _koolazer joins (~koo@user/koolazer) |
| 21:11:01 | → | finstern1s joins (~X@23.226.237.192) |
| 21:11:06 | → | ystael_ joins (~ystael@user/ystael) |
| 21:11:06 | → | hpc_ joins (~juzz@ip98-169-35-163.dc.dc.cox.net) |
| 21:11:15 | → | aweinsto1k joins (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) |
| 21:11:38 | → | Gremlin8583 joins (~Gremlin84@c-73-243-250-212.hsd1.co.comcast.net) |
| 21:12:13 | → | Alex_test_ joins (~al_test@178.34.163.104) |
| 21:14:37 | → | noteness- joins (~noteness@user/noteness) |
| 21:16:03 | × | pavonia quits (~user@user/siracusa) (*.net *.split) |
| 21:16:03 | × | oo_miguel quits (~Thunderbi@77.252.47.84) (*.net *.split) |
| 21:16:03 | × | kluk quits (~arrowhead@cpe-74-66-76-151.nyc.res.rr.com) (*.net *.split) |
| 21:16:03 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (*.net *.split) |
| 21:16:03 | × | ystael quits (~ystael@user/ystael) (*.net *.split) |
| 21:16:03 | × | pyook quits (~puke@user/puke) (*.net *.split) |
| 21:16:03 | × | davean quits (~davean@davean.sciesnet.net) (*.net *.split) |
| 21:16:03 | × | Benzi-Junior quits (~BenziJuni@88-149-64-165.du.xdsl.is) (*.net *.split) |
| 21:16:03 | × | telser quits (~quassel@user/telser) (*.net *.split) |
| 21:16:03 | × | Alex_test quits (~al_test@178.34.163.104) (*.net *.split) |
| 21:16:03 | × | offtherock quits (~blurb@96.45.2.121) (*.net *.split) |
| 21:16:03 | × | dsrt^ quits (~dsrt@c-71-204-38-59.hsd1.ga.comcast.net) (*.net *.split) |
| 21:16:03 | × | son0p quits (~ff@181.136.122.143) (*.net *.split) |
| 21:16:03 | × | hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (*.net *.split) |
| 21:16:03 | × | russruss quits (~russruss@my.russellmcc.com) (*.net *.split) |
| 21:16:03 | × | bgamari_ quits (~bgamari@64.223.233.113) (*.net *.split) |
| 21:16:03 | × | hpc quits (~juzz@ip98-169-35-163.dc.dc.cox.net) (*.net *.split) |
| 21:16:03 | × | finnekit quits (~finnekit@fsf/member/finnekit) (*.net *.split) |
| 21:16:03 | × | statusbot quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (*.net *.split) |
| 21:16:03 | × | jbalint quits (~jbalint@071-090-119-177.res.spectrum.com) (*.net *.split) |
| 21:16:03 | × | EsoAlgo8 quits (~EsoAlgo@129.146.136.145) (*.net *.split) |
| 21:16:03 | × | mud quits (~mud@user/kadoban) (*.net *.split) |
| 21:16:03 | × | eL_Bart0 quits (eL_Bart0@dietunichtguten.org) (*.net *.split) |
| 21:16:03 | × | kaskal- quits (~kaskal@213-147-167-98.nat.highway.webapn.at) (*.net *.split) |
| 21:16:03 | × | elkcl quits (~elkcl@broadband-37-110-27-252.ip.moscow.rt.ru) (*.net *.split) |
| 21:16:03 | × | Putonlalla quits (~Putonlall@it-cyan.it.jyu.fi) (*.net *.split) |
| 21:16:03 | × | koolazer quits (~koo@user/koolazer) (*.net *.split) |
| 21:16:03 | × | bramhaag quits (~bramhaag@134.195.121.39) (*.net *.split) |
| 21:16:03 | × | shailangsa quits (~shailangs@host86-186-133-102.range86-186.btcentralplus.com) (*.net *.split) |
| 21:16:03 | × | kimiamania quits (~65804703@user/kimiamania) (*.net *.split) |
| 21:16:03 | × | aweinstock quits (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) (*.net *.split) |
| 21:16:03 | × | AlexNoo quits (~AlexNoo@178.34.163.104) (*.net *.split) |
| 21:16:03 | × | remexre quits (~remexre@user/remexre) (*.net *.split) |
| 21:16:04 | × | finsternis quits (~X@23.226.237.192) (*.net *.split) |
| 21:16:04 | × | Gremlin8483 quits (~Gremlin84@c-73-243-250-212.hsd1.co.comcast.net) (*.net *.split) |
| 21:16:04 | × | urdh quits (~urdh@user/urdh) (*.net *.split) |
| 21:16:04 | × | swistak quits (~swistak@185.21.216.141) (*.net *.split) |
| 21:16:04 | × | malte quits (~malte@mal.tc) (*.net *.split) |
| 21:16:04 | × | Typedfern quits (~Typedfern@60.red-83-37-32.dynamicip.rima-tde.net) (*.net *.split) |
| 21:16:04 | × | noteness_ quits (~noteness@user/noteness) (*.net *.split) |
| 21:16:04 | × | bollu quits (~bollu@159.65.151.13) (*.net *.split) |
| 21:16:05 | bramhaag4 | is now known as bramhaag |
| 21:16:05 | russruss5 | is now known as russruss |
| 21:16:06 | oo_miguel1 | is now known as oo_miguel |
| 21:16:06 | urdh_ | is now known as urdh |
| 21:16:06 | remexre_ | is now known as remexre |
| 21:16:06 | EsoAlgo81 | is now known as EsoAlgo8 |
| 21:16:06 | finnekit2 | is now known as finnekit |
| 21:16:06 | elkcl_ | is now known as elkcl |
| 21:16:06 | kimiamania6 | is now known as kimiamania |
| 21:16:07 | malte_ | is now known as malte |
| 21:16:07 | bollu0 | is now known as bollu |
| 21:16:07 | finstern1s | is now known as finsternis |
| 21:17:12 | → | dsrt^ joins (~dsrt@c-71-204-38-59.hsd1.ga.comcast.net) |
| 21:18:56 | → | Ranhir joins (~Ranhir@157.97.53.139) |
| 21:19:47 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 21:21:00 | → | MQ-17J joins (~MQ-17J@104.28.248.166) |
| 21:21:06 | × | MQ-17J quits (~MQ-17J@104.28.248.166) (Client Quit) |
| 21:21:53 | → | Typedfern joins (~Typedfern@60.red-83-37-32.dynamicip.rima-tde.net) |
| 21:22:59 | → | davean joins (~davean@davean.sciesnet.net) |
| 21:23:01 | → | Putonlalla joins (~Putonlall@it-cyan.it.jyu.fi) |
| 21:23:37 | → | myxos_ joins (~myxos@cpe-65-28-251-121.cinci.res.rr.com) |
| 21:24:14 | × | myxos_ quits (~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Client Quit) |
| 21:26:36 | → | myxokephale joins (~myxos@cpe-65-28-251-121.cinci.res.rr.com) |
| 21:26:52 | × | myxokephale quits (~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Client Quit) |
| 21:27:02 | × | myxos quits (~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Quit: myxos) |
| 21:27:16 | → | myxos joins (~myxos@cpe-65-28-251-121.cinci.res.rr.com) |
| 21:27:46 | × | myxos quits (~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Client Quit) |
| 21:28:29 | → | myxos joins (~myxos@cpe-65-28-251-121.cinci.res.rr.com) |
| 21:28:40 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 21:29:59 | × | mei quits (~mei@user/mei) (Remote host closed the connection) |
| 21:31:21 | → | Headlights joins (~Headlight@37.182.188.207) |
| 21:32:23 | → | mei joins (~mei@user/mei) |
| 21:38:45 | × | michalz quits (~michalz@185.246.204.93) (Ping timeout: 240 seconds) |
| 21:39:27 | ← | Headlights parts (~Headlight@37.182.188.207) (Leaving) |
| 21:43:48 | × | ubert quits (~Thunderbi@p548c91e0.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
| 21:43:52 | → | ub joins (~Thunderbi@p200300ecdf00029cf94c40b268cbf3ca.dip0.t-ipconnect.de) |
| 21:46:10 | ub | is now known as ubert |
| 21:50:08 | → | shailangsa_ joins (~shailangs@host86-186-133-102.range86-186.btcentralplus.com) |
| 21:50:27 | hpc_ | is now known as hpc |
| 21:59:56 | → | TMA joins (tma@twin.jikos.cz) |
| 22:00:03 | × | ubert quits (~Thunderbi@p200300ecdf00029cf94c40b268cbf3ca.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 22:00:05 | → | ub joins (~Thunderbi@p548c91e0.dip0.t-ipconnect.de) |
| 22:02:22 | ub | is now known as ubert |
| 22:03:50 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 246 seconds) |
| 22:04:17 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 22:09:12 | × | foul_owl quits (~kerry@45.143.82.39) (Ping timeout: 268 seconds) |
| 22:16:17 | × | gurkenglas quits (~user@dynamic-046-114-181-050.46.114.pool.telefonica.de) (Ping timeout: 250 seconds) |
| 22:21:29 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Ping timeout: 250 seconds) |
| 22:25:36 | × | mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 248 seconds) |
| 22:26:15 | × | merijn quits (~merijn@c-001-001-004.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
| 22:30:16 | → | taupiqueur joins (~taupiqueu@2a02-842a-8180-4601-a566-5e72-30af-bdfe.rev.sfr.net) |
| 22:35:34 | → | alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-a566-5e72-30af-bdfe.rev.sfr.net) |
| 22:35:53 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 22:37:06 | × | mei quits (~mei@user/mei) (Remote host closed the connection) |
| 22:37:24 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 22:39:30 | → | mei joins (~mei@user/mei) |
| 22:40:21 | → | pyook joins (~puke@user/puke) |
| 22:41:05 | × | forell quits (~forell@user/forell) (Ping timeout: 240 seconds) |
| 22:41:51 | × | mei quits (~mei@user/mei) (Remote host closed the connection) |
| 22:43:44 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Ping timeout: 265 seconds) |
| 22:44:07 | → | Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
| 22:44:15 | → | mei joins (~mei@user/mei) |
| 22:46:42 | → | forell joins (~forell@user/forell) |
| 22:47:18 | → | Guest66 joins (~Guest83@2a02:8070:8e83:c500:aa1d:72d7:e754:bd20) |
| 22:50:06 | × | CalculusCats quits (NyaaTheKit@user/calculuscat) (Quit: Meow Meow Meow Meow Meow Meow Meow Meow) |
| 22:51:50 | → | CalculusCats joins (NyaaTheKit@user/calculuscat) |
| 22:52:11 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 22:53:00 | → | merijn joins (~merijn@c-001-001-004.client.esciencecenter.eduvpn.nl) |
| 22:54:01 | × | oo_miguel quits (~Thunderbi@77.252.47.84) (Ping timeout: 240 seconds) |
| 22:54:18 | → | zeenk joins (~zeenk@2a02:2f04:a105:f00::7fe) |
| 22:59:29 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 23:10:31 | × | acidjnk quits (~acidjnk@p200300d6e7072f08c511281507bd955a.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 23:12:45 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) |
| 23:12:55 | × | Guest66 quits (~Guest83@2a02:8070:8e83:c500:aa1d:72d7:e754:bd20) (Quit: Client closed) |
| 23:14:19 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 23:14:20 | × | jero98772 quits (~jero98772@2800:484:1d7f:5d36::1) (Read error: Connection reset by peer) |
| 23:16:48 | × | xff0x quits (~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 240 seconds) |
| 23:17:20 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:3dda:98a9:2443:29bc) (Ping timeout: 248 seconds) |
| 23:17:38 | → | son0p joins (~ff@181.136.122.143) |
| 23:18:23 | → | mauke_ joins (~mauke@user/mauke) |
| 23:19:25 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 23:20:00 | × | mauke quits (~mauke@user/mauke) (Ping timeout: 248 seconds) |
| 23:20:00 | mauke_ | is now known as mauke |
| 23:20:33 | → | xff0x_ joins (~xff0x@ai098135.d.east.v6connect.net) |
| 23:23:15 | → | caryhartline joins (~caryhartl@168.182.58.169) |
| 23:26:30 | × | merijn quits (~merijn@c-001-001-004.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
| 23:33:43 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Remote host closed the connection) |
| 23:34:06 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 23:34:21 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 23:34:21 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 23:34:21 | → | wroathe joins (~wroathe@user/wroathe) |
| 23:34:55 | × | _xor quits (~xor@nw-esr1-72-49-97-201.fuse.net) (Read error: Connection reset by peer) |
| 23:36:31 | → | _xor joins (~xor@nw-esr1-72-49-97-201.fuse.net) |
| 23:36:56 | × | machinedgod quits (~machinedg@93-138-3-195.adsl.net.t-com.hr) (Ping timeout: 246 seconds) |
| 23:37:12 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:38:46 | → | jero98772 joins (~jero98772@190.158.28.80) |
| 23:40:00 | × | reach quits (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) (Remote host closed the connection) |
| 23:40:24 | → | reach joins (~reach@2607:fea8:4c0:990:f891:b512:3659:bf1b) |
| 23:40:57 | → | _xor6 joins (~xor@nw-esr1-72-49-97-201.fuse.net) |
| 23:42:31 | × | _xor quits (~xor@nw-esr1-72-49-97-201.fuse.net) (Ping timeout: 250 seconds) |
| 23:42:31 | _xor6 | is now known as _xor |
| 23:48:10 | × | _xor quits (~xor@nw-esr1-72-49-97-201.fuse.net) (Ping timeout: 250 seconds) |
| 23:50:42 | × | myxos quits (~myxos@cpe-65-28-251-121.cinci.res.rr.com) (Remote host closed the connection) |
| 23:50:42 | × | myxokeph quits (~myxokeph@cpe-65-28-251-121.cinci.res.rr.com) (Remote host closed the connection) |
| 23:52:49 | → | o-90 joins (~o-90@gateway/tor-sasl/o-90) |
| 23:54:20 | × | o-90 quits (~o-90@gateway/tor-sasl/o-90) (Client Quit) |
| 23:57:44 | → | motherfsck joins (~motherfsc@user/motherfsck) |
All times are in UTC on 2023-05-30.