Home liberachat/#haskell: Logs Calendar

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.