Home liberachat/#haskell: Logs Calendar

Logs on 2022-11-22 (liberachat/#haskell)

00:00:10 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 252 seconds)
00:00:25 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
00:00:53 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Quit: Leaving)
00:01:16 srz_ joins (~srz@179.36.104.57)
00:01:50 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
00:02:52 × srz_ quits (~srz@179.36.104.57) (Remote host closed the connection)
00:03:13 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1)
00:03:18 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
00:03:24 srz_ joins (~srz@179.36.104.57)
00:03:36 × srz quits (~srz@181.228.49.93) (Ping timeout: 268 seconds)
00:06:53 dsrt^ joins (~dsrt@76.145.185.103)
00:07:29 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
00:07:36 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Ping timeout: 255 seconds)
00:07:58 × ddellacosta quits (~ddellacos@89.45.224.71) (Quit: WeeChat 3.7.1)
00:08:24 ddellacosta joins (~ddellacos@89.45.224.71)
00:08:46 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
00:08:50 × merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
00:09:29 × srz_ quits (~srz@179.36.104.57) (Ping timeout: 260 seconds)
00:10:02 azimut joins (~azimut@gateway/tor-sasl/azimut)
00:11:18 <Axman6> c209e6dc-4d76-47: not really, if you think about it, it's not a super helpful thing to have in a language where nearly everything is a function. There are ways to build stack traces though, you might find this useful: https://www.parsonsmatt.org/2022/08/16/dynamic_exception_reporting_in_haskell.html
00:14:01 freeside joins (~mengwong@103.252.202.193)
00:15:32 <c209e6dc-4d76-47> so I am writing a typechecker for my toy language and using ExceptT to throw various kinds of errors
00:15:51 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
00:15:52 <c209e6dc-4d76-47> but I am having difficulty finding out where a specific error has been thrown in from the compiler code
00:16:03 <c209e6dc-4d76-47> to debug if it is a problem with compiler itself
00:16:26 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:16:26 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:16:26 wroathe joins (~wroathe@user/wroathe)
00:16:28 <Axman6> You can safely add HasCallstack constraints to your functions to make that easier, like in that post
00:16:40 azimut joins (~azimut@gateway/tor-sasl/azimut)
00:28:24 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
00:29:34 chromoblob joins (~user@37.113.164.122)
00:30:25 <c209e6dc-4d76-47> hmm, I see, but I'll have to switch out the ExceptT for error calls, right?
00:30:41 chexum joins (~quassel@gateway/tor-sasl/chexum)
00:31:26 lucerne joins (~lucerne@5.116.75.203)
00:32:04 <jackdk> Your `e` in your `ExceptT e m` monad could capture a call stack?
00:32:25 <Axman6> you could include the call stack in the ExceptT errors - throw' :: HasCallstack => e -> ExceptT (Callstack, e) m a
00:32:40 Axman6 high fives jackdk
00:33:41 <monochrom> I am not sure which "error" you mean: 1. Toy typechecker finds a type error in the input, want to track location? 2. Toy typechecker has a bug, want GHC to report location?
00:34:02 <monochrom> Because "clearly" the former requires you to implement location tracking yourself.
00:36:52 <monochrom> Ironically I am preparing a talk on logics, and I need to clarify how my audience can tell whether I am speaking in the meta-logic or speaking about the target logic.
00:37:15 × chromoblob quits (~user@37.113.164.122) (Ping timeout: 260 seconds)
00:37:21 <monochrom> And I was thinking "oh but programmers don't find it confusing because they are already used to using GHC to compile GHC!"
00:37:49 <monochrom> But I guess we see that it is still confusing to programmers.
00:38:21 <hpc> they're just not meta-meta
00:38:23 <c209e6dc-4d76-47> more on the lines of 2. toy typechecker has a bug, want GHC to report when toy typechecker report error in the toy program.
00:38:49 <c209e6dc-4d76-47> *location in toy typechecker from where toy typechecker found an error in program
00:38:51 <Axman6> that sounds like something for your parser then
00:38:56 <monochrom> Then ExceptT is totally not for that.
00:38:59 <Axman6> or not?
00:39:25 <hpc> yeah, it's the parser's job
00:39:26 <c209e6dc-4d76-47> parser would have locations from programs not the compiler itself afaik
00:39:35 <hpc> it's like asking for a gcc error when a webpage 404s
00:43:23 <probie> monochrom: On slides, I find it's helpful to use different symbols (e.g. wedge and thick arrows for one, & and thin arrows for the other). e.g. (p |- q) -> |- (p => q) for something like "if p entails q, then empty entails p implies q"
00:43:27 Lumia joins (~Lumia@user/Lumia)
00:43:33 <monochrom> To debug bugs, I would use Debug.Trace instead.
00:43:54 <hpc> c209e6dc-4d76-47: to pre-empt another common issue, unless your code does some really fancy guesswork the location info is going to point to the first point of surprise, not the actual first point of error
00:43:56 <Axman6> c209e6dc-4d76-47: an alternative, if you have a program you're parsing which causes a problem is to log things instead - log the arguments to each function with its name and any other relevant values
00:44:03 <monochrom> Yeah I'll use English for the meta-logic, symbols for the target logic.
00:44:37 <hpc> or some kind of intermediate language, depending on how you have it set up?
00:44:39 <Axman6> depending on what your app's monad is, Debug.Trace or print are both food ways to hack this
00:44:56 <hpc> even if the language isn't actually a real language but just a vaguely nice-ish representation of a data structure
00:45:08 <monochrom> yum, food ways :)
00:45:25 <hpc> *depending on what your app's burrito is
00:46:12 <monochrom> "your labour bears fruit" -> "your labour beer food" >:)
00:46:13 <Axman6> good too
00:47:09 <Axman6> monochrom: the Australian Labor Party (yes it is actually spelt like that) owns a bunch of clubs, so labor beer food isn;t a particularly surprising sentense here
00:47:17 <hpc> i eat my bear fruit with my bear hands
00:47:24 <probie> monochrom: out of curiosity, what is the target logic?
00:47:42 <monochrom> intuitionistic logic
00:50:44 <maerwald> sm: correct
00:52:39 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
00:58:49 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
01:02:57 srz joins (~srz@179.36.104.57)
01:06:04 × marc___ quits (~marc@5.83.191.225) (Ping timeout: 256 seconds)
01:06:13 merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl)
01:06:38 × Lumia quits (~Lumia@user/Lumia) (Remote host closed the connection)
01:06:39 × ubert quits (~Thunderbi@91.141.78.146.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
01:06:53 ubert joins (~Thunderbi@178.165.183.156.wireless.dyn.drei.com)
01:07:01 × acidjnk quits (~acidjnk@p200300d6e7137a84584e92a62d782504.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
01:07:35 marc__ joins (~marc@46.167.25.184)
01:09:06 × c209e6dc-4d76-47 quits (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Quit: Konversation terminated!)
01:09:29 × kaol quits (~kaol@94-237-42-30.nl-ams1.upcloud.host) (Ping timeout: 246 seconds)
01:11:48 × xff0x quits (~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 248 seconds)
01:12:02 × zeenk quits (~zeenk@2a02:2f04:a208:3600::7fe) (Quit: Konversation terminated!)
01:13:38 × mud quits (~mud@user/kadoban) (Quit: quit)
01:14:42 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
01:15:27 kaol joins (~kaol@94-237-42-30.nl-ams1.upcloud.host)
01:15:34 <maerwald[m]> Available binaries are here https://github.com/haskell/ghcup-metadata/blob/develop/hls-metadata-0.0.1.json
01:16:01 <maerwald[m]> But only vscode haskell extension makes use of it
01:16:29 mud joins (~mud@user/kadoban)
01:16:34 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
01:17:26 freeside joins (~mengwong@103.252.202.193)
01:21:35 accord joins (uid568320@id-568320.hampstead.irccloud.com)
01:24:56 marc___ joins (~marc@5.83.191.235)
01:26:14 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds)
01:26:29 × Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)
01:28:06 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
01:28:14 × marc__ quits (~marc@46.167.25.184) (Ping timeout: 260 seconds)
01:28:51 razetime joins (~quassel@117.193.5.30)
01:29:21 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
01:29:21 × califax quits (~califax@user/califx) (Remote host closed the connection)
01:29:21 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
01:29:21 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
01:29:21 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
01:29:59 ChaiTRex joins (~ChaiTRex@user/chaitrex)
01:30:23 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
01:30:38 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
01:30:45 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
01:31:04 califax joins (~califax@user/califx)
01:31:25 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
01:31:42 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
01:33:55 azimut joins (~azimut@gateway/tor-sasl/azimut)
01:36:59 × razetime quits (~quassel@117.193.5.30) (Ping timeout: 260 seconds)
01:37:36 razetime joins (~quassel@117.193.5.4)
01:38:46 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
01:38:54 freeside joins (~mengwong@103.252.202.193)
01:38:56 × merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
01:39:36 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
01:40:03 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
01:40:13 ChaiTRex joins (~ChaiTRex@user/chaitrex)
01:40:40 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
01:41:29 ec joins (~ec@gateway/tor-sasl/ec)
01:42:20 × razetime quits (~quassel@117.193.5.4) (Ping timeout: 256 seconds)
01:43:30 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds)
01:44:06 srz_ joins (~srz@181.228.49.93)
01:45:43 razetime joins (~quassel@117.254.34.122)
01:46:28 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 248 seconds)
01:46:39 × srz quits (~srz@179.36.104.57) (Ping timeout: 260 seconds)
01:49:40 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 268 seconds)
01:50:41 razetime_ joins (~quassel@117.193.0.209)
01:50:50 × razetime quits (~quassel@117.254.34.122) (Ping timeout: 256 seconds)
01:51:19 c209e6dc-4d76-47 joins (~aditya@2601:249:4300:1296:195:dac6:592c:a55a)
01:52:18 <c209e6dc-4d76-47> what is this wierd syntax `[] <- locs` at https://github.com/iu-parfunc/gibbon/blob/3e4599346770fb97c4e02569246269e1885c7d30/gibbon-compiler/src/Gibbon/Passes/InferLocations.hs#L834
01:55:36 freeside joins (~mengwong@103.252.202.193)
01:57:45 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds)
01:57:49 <Axman6> it's a pattern guard, it constrains LetE (vr,locs,bty,rhs) bod to only match whern locs is []
01:58:12 <Axman6> it could have been written as LetE (vr,[],bty,rhs) bod
01:58:48 <Axman6> usually you'd use a function there, like LetE (vr,locs,bty,rhs) bod | [] <- filter onlyValid locs -> ...
01:59:03 <jackdk> That was going to be my next question
02:00:37 × beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 252 seconds)
02:00:39 <Axman6> https://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-460003.13 explains them, but it's not a nice to read as I was hoping
02:00:58 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:02:01 andreinovitcho joins (~a@modemcable068.162-80-70.mc.videotron.ca)
02:03:53 <c209e6dc-4d76-47> oh, never saw pattern guards, or boolean guards before, thanks!
02:04:34 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
02:05:52 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:10:10 × srz_ quits (~srz@181.228.49.93) (Quit: Leaving)
02:10:27 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 255 seconds)
02:11:39 × c209e6dc-4d76-47 quits (~aditya@2601:249:4300:1296:195:dac6:592c:a55a) (Quit: Konversation terminated!)
02:14:30 × lyxia quits (~lyxia@poisson.chat) (Ping timeout: 240 seconds)
02:14:41 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
02:14:46 lyxia joins (~lyxia@poisson.chat)
02:15:49 × andreinovitcho quits (~a@modemcable068.162-80-70.mc.videotron.ca) (Quit: Leaving)
02:15:56 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
02:15:56 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
02:16:48 × Inoperable quits (~PLAYER_1@fancydata.science) (Ping timeout: 268 seconds)
02:16:51 chexum joins (~quassel@gateway/tor-sasl/chexum)
02:17:13 In0perable joins (~PLAYER_1@fancydata.science)
02:18:14 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:18:34 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:31:25 thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1)
02:35:39 merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl)
02:36:06 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
02:37:13 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
02:44:39 × gentauro quits (~gentauro@user/gentauro) (Ping timeout: 255 seconds)
02:52:50 × causal quits (~user@50.35.83.177) (Quit: WeeChat 3.7.1)
02:55:04 gentauro joins (~gentauro@user/gentauro)
02:55:17 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
02:55:17 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
02:55:17 wroathe joins (~wroathe@user/wroathe)
02:59:58 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 256 seconds)
03:01:03 freeside joins (~mengwong@103.252.202.193)
03:01:49 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
03:05:46 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1)
03:06:50 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
03:06:50 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
03:06:50 wroathe joins (~wroathe@user/wroathe)
03:06:54 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
03:07:22 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds)
03:09:02 × merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
03:09:20 notzmv joins (~zmv@user/notzmv)
03:09:25 zebrag joins (~chris@user/zebrag)
03:10:11 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Ping timeout: 260 seconds)
03:10:18 × TonyStone quits (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) (Quit: Leaving)
03:14:20 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1)
03:14:47 marc__ joins (~marc@5.83.191.246)
03:18:28 × marc___ quits (~marc@5.83.191.235) (Ping timeout: 268 seconds)
03:21:17 freeside joins (~mengwong@103.252.202.193)
03:32:53 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
03:34:00 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 260 seconds)
03:41:03 berberman joins (~berberman@user/berberman)
03:41:25 × nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Quit: The Lounge - https://thelounge.chat)
03:42:08 × berberman_ quits (~berberman@user/berberman) (Ping timeout: 252 seconds)
03:42:58 bilegeek joins (~bilegeek@2600:1008:b049:5f3c:af56:db8d:9abf:ed4b)
03:43:52 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
03:44:30 × ridcully quits (~ridcully@p57b52925.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
03:44:31 ridcully_ joins (~ridcully@p57b52404.dip0.t-ipconnect.de)
03:46:23 × cafkafk quits (~cafkafk@fsf/member/cafkafk) (Ping timeout: 255 seconds)
03:47:00 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Ping timeout: 256 seconds)
03:47:23 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
03:49:59 terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1)
03:53:44 nek0 joins (~nek0@2a01:4f8:222:2b41::12)
03:53:55 × bilegeek quits (~bilegeek@2600:1008:b049:5f3c:af56:db8d:9abf:ed4b) (Quit: Leaving)
03:54:28 nate4 joins (~nate@98.45.169.16)
03:56:07 × k8yun quits (~k8yun@user/k8yun) (Ping timeout: 252 seconds)
03:57:22 talismanick joins (~talismani@76.133.152.122)
03:59:28 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds)
04:02:18 × td_ quits (~td@83.135.9.7) (Ping timeout: 256 seconds)
04:03:59 td_ joins (~td@83.135.9.38)
04:04:01 cafkafk joins (~cafkafk@fsf/member/cafkafk)
04:06:28 merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl)
04:13:02 opticblast joins (~Thunderbi@secure-165.caltech.edu)
04:17:24 × opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 248 seconds)
04:21:33 opticblast joins (~Thunderbi@secure-165.caltech.edu)
04:22:20 bilegeek joins (~bilegeek@2600:1008:b049:5f3c:af56:db8d:9abf:ed4b)
04:22:53 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
04:28:04 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 248 seconds)
04:28:11 × opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 256 seconds)
04:28:16 × thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection)
04:28:28 freeside joins (~mengwong@103.252.202.193)
04:33:09 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
04:39:48 × merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds)
04:40:54 × monochrom quits (trebla@216.138.220.146) (Quit: NO CARRIER)
04:43:52 opticblast joins (~Thunderbi@secure-165.caltech.edu)
04:46:07 k8yun joins (~k8yun@user/k8yun)
04:47:19 freeside joins (~mengwong@103.252.202.193)
04:48:19 × euandreh quits (~Thunderbi@179.214.113.107) (Ping timeout: 260 seconds)
04:50:28 × k8yun quits (~k8yun@user/k8yun) (Ping timeout: 248 seconds)
04:52:44 × Vajb quits (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Read error: Connection reset by peer)
04:53:49 Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
04:59:59 × ddellacosta quits (~ddellacos@89.45.224.71) (Ping timeout: 260 seconds)
05:08:51 Guest60 joins (~Guest60@149.159.207.218)
05:10:11 <Guest60> Hello, what is the best way to cancel async tasks? I would like to have a coordinator launch bunch of helper tasks, but I want the worker tasks to be cancelled when the coordinator is cancelled.
05:11:42 yella joins (~yell@2607:fb90:80c4:d3a9:a406:e932:6bb2:44ac)
05:13:11 × yella quits (~yell@2607:fb90:80c4:d3a9:a406:e932:6bb2:44ac) (Remote host closed the connection)
05:14:42 <davean> Are you using something like the 'async' package?
05:15:42 <Guest60> I would like to use something like the 'async' package, but it doesn't have anything that does what I want (at least not as directly as I described it).
05:17:12 <davean> Sure it does, withAsync
05:17:59 <davean> also cancel
05:18:17 × wroathe quits (~wroathe@user/wroathe) (Quit: leaving)
05:19:47 × Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
05:19:54 <Guest60> hmm, can you please tell me how to use it exactly to do what I want. If I understand correctly, withAsync does it for an IO action and a function.
05:20:05 Vajb joins (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d)
05:20:20 <Guest60> I want to have a whole bunch of tasks to run concurrently and be cancelled automatically when the coordinator is cancelled
05:22:17 <Guest60> Also, I don't want to use cancel. If I use cancel, I should keep track of which asyncs were spawned off, and cancel them individually. What I want is something like withAsync but it should take multiple arguments, and all of them should be cancelled when the parent thread (the thread that initiated all those asyncs) is cancelled.
05:25:17 <davean> ou might prefer working with 'async-pool', if it makes more sense to you
05:27:34 yl53[m] joins (~yl53matri@2001:470:69fc:105::85b)
05:30:22 × sclv quits (sid39734@haskell/developer/sclv) (Read error: Software caused connection abort)
05:30:31 sclv joins (sid39734@haskell/developer/sclv)
05:32:55 <Guest60> hmm, just took a look at it. Doesn't seem to do what I want. I guess for now I'll just launch the tasks by chaining calls to withAsync.
05:33:21 <dsal> It has a lot of ways to do what you want.
05:34:07 <Guest60> Can you please describe at least one way to me? I am new to all this and pretty much clueless.
05:34:09 <c_wraith> Guest60: mapRace in async-pool does exactly what you want
05:34:10 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
05:34:28 <Guest60> Thanks. I'll take a look at it.
05:35:44 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
05:36:02 <Guest60> mapRace doesn't do what I want. mapRace gets the first result and cancels the rest of the tasks. I don't want that behavior.
05:36:38 merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl)
05:36:51 <Guest60> The spawned async tasks are all independent running entities. They should only be cancelled when the parent thread (the one who launched all these asyncs) is cancelled.
05:36:52 <dsal> So, if you just run a bunch of tasks concurrently, you'll get a bunch of Asyncs. You can cancel all those Asyncs when your supervisor is finished.
05:37:55 <Guest60> yup, I know that I can do it by calling cancel on each of the asyncs, but I was hoping to find withAsync style of cancelling those tasks automatically.
05:38:05 <dsal> Another easy path is using link which is easy linkage if the supervisor should also fail if one of the workers fails.
05:38:28 <dsal> There's no "automatically." Things happen that are programmed to happen.
05:38:45 × hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
05:39:04 <dsal> It'd be easy to build an abstraction like `withAsyncs` that will spawn and cancel.
05:39:57 <Guest60> yup, I actually want something like `withAsyncs` but I don't think it's in the library. I guess I can code it up myself by chaining multiple `withAsync`s
05:42:09 × merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
05:43:34 <Guest60> would something like this work? `foldr withAsync [t1, t2, t3, ..., supervisor]`.
05:44:09 hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com)
05:44:33 <dsal> That doesn't make much sense to me. You could certainly use fold for that, but I'd probably not do it that way. Let me look at the docs real quick…
05:47:04 <dsal> I'd probably just do something like `traverse . async` and then bracket a `traverse cancel as` around the supervisor action.
05:47:18 <Guest60> oh, my bad, I meant to write `foldr withAsync [t1, t2, t3, ..., tn] supervisor`
05:48:05 titibandit joins (~titibandi@xdsl-78-34-153-165.nc.de)
05:48:36 <Guest60> dsal, ah that is good. Thanks.
05:48:58 <dsal> You could implement it that way, but I'd want an abstraction that I could feed work and a supervisor action into.
05:49:45 chromoblob joins (~user@37.113.164.122)
05:50:35 <dsal> Partially because it's not clear to me what the types are supposed to be.
05:50:48 <davean> Guest60: "withAsync is like async, except that the Async is automatically killed (or unscheduled, using cancel) if the enclosing IO operation returns before it has completed."
05:52:19 <davean> Guest60: "Leaving the block cancels every task still executing in the group."
05:52:31 <davean> Guest60: I'm confused why you think this doesn't do the thing you're asking
05:52:50 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 255 seconds)
05:53:07 × mxs quits (~mxs@user/mxs) (Read error: Software caused connection abort)
05:53:15 mxs joins (~mxs@user/mxs)
05:54:10 <davean> Guest60: it seems to me to litterly quote the guarrentee you are looking for
05:54:35 × chromoblob quits (~user@37.113.164.122) (Ping timeout: 260 seconds)
05:55:11 ChaiTRex joins (~ChaiTRex@user/chaitrex)
05:55:41 <dsal> I think it's the "lots of workers" thing.
05:55:58 <davean> dsal: Yes? That specificly handles lots of workers
05:56:18 <davean> Thats the ONLY thing that function does, let you launch an arbitrary number of workers and have them canceled when you leave
05:56:25 <Guest60> davean, I am taking a look at async-pool agian. That quote does seem to guarantee what I want.
05:57:17 <davean> Note "withTaskGroup n f = createPool >>= \p -> withTaskGroupIn p n f" so withTaskGroup also has that property, though the documentation fails to say it exactly.
05:57:48 <dsal> davean: well, "one" isn't really arbitrary. I guess you could start a bunch of workers and link them from within the spawned async.
05:58:47 <davean> dsal: uh, where did "one" come from? None of the text suggests singular.
05:59:01 <davean> dsal: it specificly takes a parameter of how many to allow to run at once.
05:59:31 <dsal> `withAsync :: IO a -> (Async a -> IO b) -> IO b` -- ?
06:00:24 <davean> That particular function does one at a time, it allows building arbitrary, but it also isn't what we're talking about.
06:00:39 <davean> Did you see the code I litterly pasted above?
06:00:52 <davean> Or the citations above that
06:01:10 <dsal> Yeah, you pasted "withAsync is like async, except that the Async is automatically killed (or unscheduled, using cancel) if the enclosing IO operation returns before it has completed."
06:01:17 <Guest60> Oh, I think I there's a communication gap here. davean wrote `withAsync` , but quoted `withTaskGroupIn`
06:01:20 <dsal> If "the Async" doesn't imply "one" then I'm confused.
06:01:58 <davean> Guest60: I've talked about both, you can build it with withAsync
06:02:28 <davean> its not super efficient to, but it is a sufficient combinator
06:02:50 <davean> withTaskGroup, which I mentioned specificly, is a more efficient way
06:03:01 <davean> (Since it doesn't need as many enclosures)
06:03:32 Erutuon joins (~Erutuon@23-88-131-243.fttp.usinternet.com)
06:04:17 × hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
06:05:00 <Guest60> Okay. "Create a task group within the given pool having a specified number of execution slots, but with a bounded lifetime. Leaving the block cancels every task still executing in the group."
06:05:08 <Guest60> What does "block" mean here?
06:05:41 <davean> lexical scope
06:05:57 <davean> well
06:05:59 <davean> not actually
06:06:04 <dsal> I assume it's the `TaskGroup -> IO b` action.
06:06:05 <davean> but thats where the term is pointing you at
06:06:13 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 256 seconds)
06:06:24 <davean> but yah, when (TaskGroup -> IO b) returns, you've left "the block"
06:06:36 <mauke> so I've looked at the async docs. isn't this just forConcurrently?
06:06:49 <davean> withTaskGroupIn :: Pool -> Int -> (TaskGroup -> IO b) -> IO b
06:06:51 <davean> withTaskGroupIn p n f = createTaskGroup p n >>= \g ->
06:06:53 <davean> Async.withAsync (runTaskGroup g) $ const $ f g `finally` cancelAll g
06:07:10 <davean> see the `finally`?
06:07:44 <Guest60> yup. Thanks.
06:08:00 hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com)
06:08:42 <dsal> mauke: I think it's more like if you have `actions :: [IO ()]` and you do something like `bracket_ (traverse async) (traverse cancel) $ superviseStuff`
06:10:03 <dsal> Er, I left the actions out of that traverse async. But basically the idea is that you want to automatically cancel all the launched things when your supervisor is done.
06:10:06 × accord quits (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
06:13:48 × haveo_ quits (~haveo@sl35.iuwt.fr) (Read error: Software caused connection abort)
06:13:51 × MironZ quits (~MironZ@nat-infra.ehlab.uk) (Read error: Software caused connection abort)
06:13:56 haveo joins (~haveo@sl35.iuwt.fr)
06:14:10 MironZ joins (~MironZ@nat-infra.ehlab.uk)
06:16:14 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
06:17:48 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
06:17:57 king_gs joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924)
06:20:33 <Guest60> Thanks, people. I'll try to work with this async-pool stuff.
06:21:33 × T_S_ quits (sid501726@id-501726.uxbridge.irccloud.com) (Read error: Software caused connection abort)
06:21:46 T_S_ joins (sid501726@id-501726.uxbridge.irccloud.com)
06:22:36 × wafflepirate quits (sid467876@2a03:5180:f:3::7:23a4) (Read error: Software caused connection abort)
06:22:45 wafflepirate joins (sid467876@id-467876.ilkley.irccloud.com)
06:23:42 bilegeek_ joins (~bilegeek@16.sub-174-209-37.myvzw.com)
06:26:06 <dsal> Finally got a ghci to come up.
06:26:40 × bilegeek quits (~bilegeek@2600:1008:b049:5f3c:af56:db8d:9abf:ed4b) (Ping timeout: 260 seconds)
06:27:00 <dsal> I'd just do: `:t \ws s -> bracket (traverse async ws) (traverse cancel) $ \_ -> s :: Traversable t => t (IO a) -> IO c -> IO c` based on my understanding.
06:27:53 <dsal> But it's not clear what it means for a worker to exit/abort.
06:30:45 coot joins (~coot@213.134.171.3)
06:34:17 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
06:37:59 merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl)
06:42:28 × ft quits (~ft@p508dbd59.dip0.t-ipconnect.de) (Quit: leaving)
06:42:44 chomwitt joins (~chomwitt@2a02:587:7a0d:dd00:1ac0:4dff:fedb:a3f1)
06:43:05 monochrom joins (trebla@216.138.220.146)
06:43:58 × jean-paul[m] quits (~jean-paul@2001:470:69fc:105::d1ab) (Read error: Software caused connection abort)
06:44:11 jean-paul[m] joins (~jean-paul@2001:470:69fc:105::d1ab)
06:47:06 yella joins (~yell@2607:fb90:80c9:e326:6468:b483:c07e:90c8)
06:48:42 × king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Remote host closed the connection)
06:49:02 king_gs joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924)
06:52:50 Kaiepi joins (~Kaiepi@108.175.84.104)
06:54:22 jakalx joins (~jakalx@base.jakalx.net)
06:55:11 michalz joins (~michalz@185.246.207.197)
06:56:12 mei__ joins (~mei@user/mei)
06:56:16 × merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
07:01:59 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
07:03:19 kenran joins (~user@user/kenran)
07:03:22 × kenran quits (~user@user/kenran) (Remote host closed the connection)
07:08:31 × jmorris quits (uid537181@id-537181.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
07:08:35 <talismanick> What might cause HLS to segfault? Anything that I can fix myself?
07:11:00 × opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 256 seconds)
07:17:50 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
07:18:29 opticblast joins (~Thunderbi@secure-165.caltech.edu)
07:20:50 × nckx quits (~nckx@tobias.gr) (Ping timeout: 268 seconds)
07:24:59 × shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit)
07:26:45 × dolio quits (~dolio@130.44.134.54) (Ping timeout: 260 seconds)
07:27:21 × califax quits (~califax@user/califx) (Quit: ZNC 1.8.2 - https://znc.in)
07:28:23 × Guest60 quits (~Guest60@149.159.207.218) (Ping timeout: 260 seconds)
07:28:44 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 260 seconds)
07:29:12 califax joins (~califax@user/califx)
07:29:33 k8yun joins (~k8yun@user/k8yun)
07:29:56 × king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Ping timeout: 255 seconds)
07:29:58 × califax quits (~califax@user/califx) (Remote host closed the connection)
07:31:14 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:38e4:6025:87e4:a8aa) (Remote host closed the connection)
07:31:18 × ystael quits (~ystael@user/ystael) (Ping timeout: 268 seconds)
07:31:34 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:38e4:6025:87e4:a8aa)
07:32:01 califax joins (~califax@user/califx)
07:35:03 × k8yun quits (~k8yun@user/k8yun) (Quit: Leaving)
07:36:41 akegalj joins (~akegalj@89-172-58-90.adsl.net.t-com.hr)
07:37:58 ystael joins (~ystael@user/ystael)
07:38:40 nckx joins (~nckx@tobias.gr)
07:39:12 dolio joins (~dolio@130.44.134.54)
07:42:43 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 252 seconds)
07:46:30 × mrvdb- quits (~mrvdb@2001:19f0:5000:8582:5400:ff:fe07:3df5) (Read error: Software caused connection abort)
07:46:47 mrvdb joins (~mrvdb@2001:19f0:5000:8582:5400:ff:fe07:3df5)
07:50:48 ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch)
07:53:13 merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl)
07:55:57 nate4 joins (~nate@98.45.169.16)
07:57:12 jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se)
08:00:41 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds)
08:02:01 × Putonlalla quits (~Putonlall@it-cyan.it.jyu.fi) (Read error: Software caused connection abort)
08:02:31 × peddie quits (~peddie@2001:470:69fc:105::25d) (Read error: Software caused connection abort)
08:02:50 peddie joins (~peddie@2001:470:69fc:105::25d)
08:02:51 Putonlalla joins (~Putonlall@it-cyan.it.jyu.fi)
08:03:27 lortabac joins (~lortabac@2a01:e0a:541:b8f0:77f5:99bc:10c3:3c4c)
08:06:17 madjestic joins (~madjestic@77-63-78-129.mobile.kpn.net)
08:06:55 mmhat joins (~mmh@p200300f1c72dc6ddee086bfffe095315.dip0.t-ipconnect.de)
08:07:02 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
08:07:13 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
08:07:14 × coot quits (~coot@213.134.171.3) (Quit: coot)
08:07:21 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
08:10:42 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
08:10:42 × califax quits (~califax@user/califx) (Remote host closed the connection)
08:10:42 × cafkafk quits (~cafkafk@fsf/member/cafkafk) (Remote host closed the connection)
08:10:42 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
08:10:42 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
08:11:31 cafkafk joins (~cafkafk@fsf/member/cafkafk)
08:11:32 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
08:12:43 × bilegeek_ quits (~bilegeek@16.sub-174-209-37.myvzw.com) (Quit: Leaving)
08:13:36 ChaiTRex joins (~ChaiTRex@user/chaitrex)
08:14:03 chexum joins (~quassel@gateway/tor-sasl/chexum)
08:14:10 califax joins (~califax@user/califx)
08:15:50 nschoe joins (~q@2a01:e0a:8e:a190:13d9:919d:218e:b9d2)
08:19:50 × razetime_ quits (~quassel@117.193.0.209) (Ping timeout: 260 seconds)
08:19:51 razetime joins (~quassel@117.193.4.165)
08:20:23 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
08:20:49 × madjestic quits (~madjestic@77-63-78-129.mobile.kpn.net) (Read error: Connection reset by peer)
08:21:03 stiell joins (~stiell@gateway/tor-sasl/stiell)
08:21:03 × Axman6 quits (~Axman6@user/axman6) (Ping timeout: 268 seconds)
08:21:08 × edm quits (sid147314@id-147314.hampstead.irccloud.com) (Read error: Software caused connection abort)
08:21:21 edm joins (sid147314@id-147314.hampstead.irccloud.com)
08:21:59 × aweinstock quits (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) (Read error: Software caused connection abort)
08:22:50 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:25:16 × cjay quits (cjay@nerdbox.nerd2nerd.org) (Read error: Software caused connection abort)
08:25:27 cjay joins (cjay@nerdbox.nerd2nerd.org)
08:25:41 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
08:27:00 × opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 248 seconds)
08:28:09 aweinstock joins (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com)
08:28:38 × razetime quits (~quassel@117.193.4.165) (Ping timeout: 256 seconds)
08:30:31 razetime joins (~quassel@117.254.34.53)
08:33:12 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
08:33:24 acidjnk joins (~acidjnk@p200300d6e7137a84847a35f477003ced.dip0.t-ipconnect.de)
08:35:35 × mei__ quits (~mei@user/mei) (Ping timeout: 260 seconds)
08:35:43 chexum joins (~quassel@gateway/tor-sasl/chexum)
08:39:47 × acidjnk quits (~acidjnk@p200300d6e7137a84847a35f477003ced.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
08:39:51 × dmj` quits (sid72307@id-72307.hampstead.irccloud.com) (Read error: Software caused connection abort)
08:40:18 dmj` joins (sid72307@id-72307.hampstead.irccloud.com)
08:40:20 opticblast joins (~Thunderbi@secure-165.caltech.edu)
08:41:46 fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
08:41:49 × m1dnight quits (~christoph@78-22-0-121.access.telenet.be) (Quit: WeeChat 3.7.1)
08:42:17 m1dnight joins (~christoph@78-22-0-121.access.telenet.be)
08:44:20 × jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
08:45:00 × ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…)
08:45:57 zeenk joins (~zeenk@2a02:2f04:a208:3600::7fe)
08:48:35 karolis joins (~karolis@78.157.77.235)
08:50:46 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
08:51:29 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds)
08:51:41 MajorBiscuit joins (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net)
08:52:07 chexum joins (~quassel@gateway/tor-sasl/chexum)
08:54:55 × juri_ quits (~juri@84.19.175.179) (Read error: Software caused connection abort)
08:55:08 juri_ joins (~juri@84-19-175-179.pool.ovpn.com)
08:55:16 × MajorBiscuit quits (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Client Quit)
09:00:52 MajorBiscuit joins (~MajorBisc@86-88-79-148.fixed.kpn.net)
09:02:27 ubert1 joins (~Thunderbi@178.165.183.156.wireless.dyn.drei.com)
09:02:58 × Matthew|m quits (~arathorn@2001:470:69fc:105::1f) (Read error: Software caused connection abort)
09:03:19 Matthew|m joins (~arathorn@2001:470:69fc:105::1f)
09:04:35 euandreh joins (~Thunderbi@179.214.113.107)
09:08:35 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds)
09:08:43 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
09:08:51 × euandreh quits (~Thunderbi@179.214.113.107) (Remote host closed the connection)
09:11:04 euandreh joins (~Thunderbi@179.214.113.107)
09:14:02 ThePlayer joins (~ThePlayer@94-21-96-104.pool.digikabel.hu)
09:16:00 cfricke joins (~cfricke@user/cfricke)
09:18:16 jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se)
09:19:26 × teehemkay quits (sid14792@id-14792.lymington.irccloud.com) (Read error: Software caused connection abort)
09:19:33 teehemkay joins (sid14792@id-14792.lymington.irccloud.com)
09:19:37 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Remote host closed the connection)
09:19:50 × karolis quits (~karolis@78.157.77.235) (Ping timeout: 268 seconds)
09:21:32 × gaze___ quits (sid387101@id-387101.helmsley.irccloud.com) (Read error: Software caused connection abort)
09:21:42 gaze___ joins (sid387101@id-387101.helmsley.irccloud.com)
09:22:55 × jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 268 seconds)
09:23:39 × SanchayanMaity quits (sid478177@id-478177.hampstead.irccloud.com) (Read error: Software caused connection abort)
09:23:48 SanchayanMaity joins (sid478177@id-478177.hampstead.irccloud.com)
09:24:14 × razetime quits (~quassel@117.254.34.53) (Ping timeout: 255 seconds)
09:24:40 razetime joins (~quassel@117.254.35.120)
09:25:29 atocanist joins (~atocanist@2a01:e34:ec22:3040:260e:115e:44a8:9bee)
09:27:23 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
09:29:55 Robert11 joins (~Robert@ext-1-087.eduroam.chalmers.se)
09:30:28 <Robert11> Hi! `fixm f` where `f` is an IO computations makes little sense, right, since IO is strict?
09:30:47 × merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
09:31:04 madjestic joins (~madjestic@213.208.229.226)
09:31:39 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:31:53 <opqdonut> Robert11: you mean mfix? yeah. even the docs say it should'nt be strinct
09:32:32 <opqdonut> there is an MonadFix IO instance though... I wonder if it can be used with lazy IO or something
09:32:53 <dminuoso> opqdonut: it indoces lazy io via fixIO yes
09:32:57 <dminuoso> induces, even
09:33:00 <dminuoso> https://hackage.haskell.org/package/base-4.17.0.0/docs/src/System.IO.html#fixIO
09:33:07 <c_wraith> the source is frightening
09:33:22 <c_wraith> It only works because IO can create reference types
09:33:46 × titibandit quits (~titibandi@xdsl-78-34-153-165.nc.de) (Remote host closed the connection)
09:34:00 <dminuoso> If you fall in love with fixIO too deeply, you end up building nix.
09:34:07 <c_wraith> Same reason ST has a MonadFix instance
09:34:28 jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se)
09:35:09 <Robert11> Kind off thinking about something
09:35:42 <Robert11> `f :: IO [ThreadID]`, preferably I'd like to access these id's inside `f`
09:36:00 bjourne joins (~bjourne@2001:6b0:1:1140:42bf:ff4:f8fa:50e5)
09:37:00 <dminuoso> Keep in mind that holding a reference to a ThreadId will prevent the GC from reclaiming the thread itself.
09:37:19 <dminuoso> So even if the thread is done, it cant be freed.
09:37:29 <Robert11> This is OK, I don't have many, and they are cleaned up OK
09:37:58 <Robert11> I believe... I will have to investigate this if I end up going this route
09:38:25 <Robert11> I want some sibling threads to be able to communicate to each other
09:39:14 <dminuoso> The ThreadId is not going to help you much, unless you intend to use async exceptions to that effect.
09:39:23 <dminuoso> It is probably better to just use STM to that end.
09:41:44 × talismanick quits (~talismani@76.133.152.122) (Ping timeout: 256 seconds)
09:42:11 <Robert11> Well yes, the siblings need to be able to kill each other
09:42:17 <Robert11> "I did the thing, please stop trying to do the thing"
09:42:43 <c_wraith> in that case, are you more looking for something like race from async?
09:43:07 × razetime quits (~quassel@117.254.35.120) (Ping timeout: 260 seconds)
09:43:25 razetime joins (~quassel@117.254.35.71)
09:44:39 <bjourne> suppose i have a binary tree. in another data structure i want to store names of nodes in the tree. how can this be done without reference equality?
09:44:57 <dminuoso> bjourne: What do you mean by "reference" equality?
09:45:00 × son0p quits (~ff@2604:3d08:5b7f:5540::6bfc) (Ping timeout: 260 seconds)
09:45:10 <Robert11> is async a separate package? I don't want to pull in too many dependencies
09:45:11 × jespada_ quits (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:45:17 <Robert11> I'd like to stick to control.concurrent if possible
09:45:50 <bjourne> "Reference equality is an equality relationship that does not only guarantee that two values are equal, but also that they are, in fact, the same value."
09:46:12 <dminuoso> bjourne: Yes, that is a mode of operation for an Eq implementation.
09:46:42 <dminuoso> Im really not sure what it is you are asking for.
09:47:04 <c_wraith> You're not meant to think of references in Haskell. Just values.
09:47:37 <dminuoso> I have a vague idea of what you might be asking. Is your question how to keep a copy of a string, rather than a reference?
09:48:07 × madjestic quits (~madjestic@213.208.229.226) (Ping timeout: 252 seconds)
09:48:14 jespada joins (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net)
09:48:39 <mauke> Robert11: you can, but ... writing code with manual resource management that is safe in the presence of asynchronous exceptions is fiddly and annoying
09:48:54 <mauke> async gives you safer building blocks
09:49:05 madjestic joins (~madjestic@213.208.229.226)
09:49:12 <Robert11> This is the cross I carry
09:49:12 <bjourne> c_wraith: it doesnt work for graphs
09:49:21 <Robert11> It is my burden, as the package developer
09:50:21 <mauke> yeah, but async was written by Simon Marlow, one of the core developers of ghc
09:50:31 <mauke> so I kind of trust it more than anything I could come up with myself
09:50:46 <c_wraith> bjourne: you'll note that any sort of real-world graph package in haskell does not represent graphs with pointers. They use explicit indices into some backing structure. (Usually an array)
09:50:48 × razetime quits (~quassel@117.254.35.71) (Ping timeout: 256 seconds)
09:52:24 <Robert11> I did not critique async in any way, I just meant that I'd rather spend some time getting it to work than pull in another dependency
09:52:35 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 260 seconds)
09:52:54 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
09:52:59 <c_wraith> how do you feel about spending some time making yourself think it works, then spending a lot more time debugging issues it causes?
09:53:05 <geekosaur> that's generally considered a bad decision: as many things as possible are split off into dependencies
09:53:27 <geekosaur> \they're getting ready to split base again, if I'm reading discussion elsewhere correctly
09:53:29 razetime joins (~quassel@117.193.7.206)
09:53:47 <dminuoso> geekosaur: Really? What is going to be split off?
09:54:30 <geekosaur> actually that part isn't happening yet. first phase is to split the stuff that needs to be wired-in or etc. into a separate ghc-base, which is the one that will be pinned
09:54:48 <geekosaur> then the rest of base can be split, upgraded separately, whatever
09:55:03 <c_wraith> makes sense. there's a lot more in base than needs to be wired in.
09:55:12 <Robert11> Man this discussion is starting to feel like something I'd read on stackoverflow. Rather than answering the question / not answering at all, you're trying to tell me why my desired approach is wrong (not knowing anything of the overall project I am working on)
09:55:14 zmt00 joins (~zmt00@user/zmt00)
09:55:31 × Robert11 quits (~Robert@ext-1-087.eduroam.chalmers.se) (Quit: Connection closed)
09:55:43 <c_wraith> Robert11: perhaps that's because your desired approach has problems that you're not communicating that you understand
09:56:05 <dminuoso> They have just left
09:56:07 <mauke> I thought Robert11's original question was already answered a while ago
09:56:12 <mauke> was there another one?
09:56:24 <geekosaur> also, wishing for access to references won't get you them. the language design gores out of its way to *not give you that*
09:56:28 <geekosaur> *goes
09:56:34 <c_wraith> They wanted to run several IO actions and cancel the others when one finishes.
09:56:40 <dminuoso> And if you do uncover the references, they are evil and treacherous.
09:56:45 <c_wraith> And they wanted to not use the async package
09:56:46 <bjourne> c_wraith: yes, i call that reference equality-- since, practically speaking, it is not type safe
09:56:58 <dminuoso> We have this thing called reallyUnsafePtrEquality# which is a simple pointer address equality
09:57:05 <dminuoso> And it will *not* behave like you expect it, it is truly evil.
09:57:14 <mauke> c_wraith: sure, but that's not a question
09:57:17 <dminuoso> This is due to how the runtime model is built
09:57:51 <c_wraith> mauke: eh. request for help or question, does the difference matter that much?
09:58:06 <dminuoso> bjourne: That thing can give false positives, false negatives
09:58:16 <dminuoso> bjourne: with that in mind, do you think talking about references is generally a useful thing?
09:58:19 merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl)
09:58:47 <c_wraith> dminuoso: I think it can't actually give false positives. It can't be interrupted by GC, so things can't be moved around in the middle of it.
09:59:41 <mauke> c_wraith: "<Robert11> I believe... I will have to investigate this if I end up going this route" <- I didn't parse it as a request for help, more like "this is how I'm planning to go about it"
09:59:50 <dminuoso> c_wraith: let me rephrase what Im thinking off then.
10:00:06 <geekosaur> Robert11 gave up and left
10:00:09 <dminuoso> You can have a situation where `reallyUnsafePtrEquality# a b` starts off as true, and then if you reevaluate that same expression becomes false.
10:00:24 <geekosaur> apparently it's "write and debug from scratch hiimself" or we're all mean playmates
10:00:32 <dminuoso> Thats just one of the many evil traps thinking about references holds
10:00:37 teo joins (~teo@user/teo)
10:00:47 <bjourne> dminuoso: "They use explicit indices into some backing structure." <- this is references implemented "by hand".
10:00:57 <c_wraith> dminuoso: I don't see how that could happen.
10:01:06 __monty__ joins (~toonn@user/toonn)
10:01:06 <geekosaur> and that's pretty much how you have to do it, in Haskell
10:02:14 <dminuoso> c_wraith: imagine some shared impure (unsafePerformIO) thunk
10:02:16 chromoblob joins (~user@37.113.164.122)
10:02:17 <c_wraith> bjourne: I said at the start that haskell wants you to work with values, not pointers. If you want to work with indirect access to data, you need to implement it.
10:02:30 × yella quits (~yell@2607:fb90:80c9:e326:6468:b483:c07e:90c8) (Ping timeout: 255 seconds)
10:02:54 <dminuoso> though mmm
10:03:04 <dminuoso> you wouldnt get a false on the intiail pointer comparison
10:03:06 merijn glances at the 15 different reference types in base
10:03:16 <merijn> I don't think I have to implement references myself ;)
10:03:30 chele joins (~chele@user/chele)
10:03:41 <c_wraith> Sure, but then you give up all the good points of having your graph nodes in an array
10:04:26 <c_wraith> dminuoso: oh, I see. If a and b are pointers to an unevaluated thunk, evaluating it will rewrite *one* of the pointers, not both.
10:04:47 <dminuoso> c_wraith yeah
10:05:17 <dminuoso> bjourne: maybe this is a confused discussion that has its root in an XY problem.
10:05:25 <dminuoso> care to explain the problem you are facing?
10:06:55 <bjourne> c_wraith: ok so you have type Graph = ([Vertex], Map Int [Int]), now you want to delete a vertex
10:07:14 × jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
10:07:24 <merijn> Why the list of vertices? Isn't that implicit in the Map?
10:07:38 <c_wraith> maybe it's storing data other than the index.
10:07:44 <c_wraith> It makes sense to me
10:07:59 <merijn> c_wraith: Wouldn't that make more sense as "Map Int (VertexData, [Int])"?
10:08:28 <c_wraith> Well, ok. that would make more sense.
10:08:47 <merijn> Make illegal states irrepresentible and all that ;)
10:08:54 <c_wraith> yeah
10:09:17 <c_wraith> also, updating it is faster than updating the list if the vertex data changes, but let's ignore that.
10:09:58 × atocanist quits (~atocanist@2a01:e34:ec22:3040:260e:115e:44a8:9bee) (Ping timeout: 260 seconds)
10:11:17 × nek0 quits (~nek0@2a01:4f8:222:2b41::12) (Quit: Ping timeout (120 seconds))
10:11:32 nek0 joins (~nek0@2a01:4f8:222:2b41::12)
10:11:34 <bjourne> so type Graph = Map Int (VertexData, [Int]), you want to add a node, what do you do?
10:12:16 <c_wraith> what's interesting is that Data.Graph doesn't even have that operation
10:12:20 <c_wraith> and... I never noticed.
10:12:25 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 260 seconds)
10:12:39 <c_wraith> Admittedly, Data.Graph is intentionally quite limited. But it's sort of rare to add nodes to a graph online.
10:13:59 <c_wraith> to do it efficiently, your representation is actually (Int, Map Int ...)
10:14:12 <c_wraith> where the first value is the next node index to add.
10:14:29 <merijn> c_wraith: Map has a cheap max value lookup anyway?
10:14:39 <c_wraith> well. max key. yes.
10:15:03 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
10:15:37 <bjourne> so it's now type Graph = (Int, Map Int (VertexData, [Int]))
10:15:44 <merijn> I mean, either way this isn't gonna be a super high performance implementation
10:16:03 <c_wraith> bjourne: or just use lookupMax on the map, whatever
10:16:08 stiell joins (~stiell@gateway/tor-sasl/stiell)
10:16:19 karolis joins (~karolis@78.157.77.235)
10:16:33 <bjourne> i want O(1) insert
10:16:34 × madjestic quits (~madjestic@213.208.229.226) (Ping timeout: 268 seconds)
10:16:48 <c_wraith> why?
10:16:53 <probie> O(log n) is pretty much O(1)
10:17:00 jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se)
10:17:12 <merijn> Could even use IntMap and get even better asymptotics
10:17:19 × chromoblob quits (~user@37.113.164.122) (Ping timeout: 260 seconds)
10:17:25 <c_wraith> I can't imagine any graph algorithm where you insert more nodes than edges.
10:18:35 <merijn> Not to mention any representation that has O(1) insert is gonna have shit performance on queries
10:19:05 <c_wraith> including queries like finding the node to put on the other sides of the edge
10:19:24 <probie> If you keep the graph lazy, "insertion" is always O(1) :p
10:20:07 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1)
10:21:05 <bjourne> it's odd that you dont understand why O(1) amortized complexity is important but it's beside the point
10:21:55 <c_wraith> I mean, you can go make an IORef graph if you want, but performance is going to be a lot worse on almost every algorithm.
10:21:55 <merijn> bjourne: Your graph is not going to be big enough to for O(log n) to be noticably different from O(1). And if your graph IS going to be big enough, the Map and List approach is fundamentally the wrong approach anyway
10:22:17 <merijn> You'd want a mutable vector based CSR or something
10:24:10 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Ping timeout: 240 seconds)
10:24:11 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
10:25:18 mei__ joins (~mei@user/mei)
10:25:52 <c_wraith> ooh, CSR is neat. I never looked into what actually-efficient graph representation use.
10:26:31 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
10:27:50 <c_wraith> hey, and there are variants like PCSR intended for use cases with lots of node insertion/deletion
10:28:14 <bjourne> merijn: if it is the wrong approach, why did you suggest it?
10:28:23 azimut joins (~azimut@gateway/tor-sasl/azimut)
10:28:32 <c_wraith> because it works fine up to a couple million nodes
10:28:46 <c_wraith> most graphs aren't that big.
10:29:21 <c_wraith> and honestly, memory use becomes an issue before speed does.
10:30:13 <merijn> bjourne: Because you haven't specified what you're doing so we're all just randomly guessing based on your initial suggestion/idea
10:30:52 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
10:31:08 <dminuoso> Okay, I think I've done it. I realized I started writing unsafeCoerce without the slightest hesitation.
10:31:13 <merijn> c_wraith: CSR is gonna be painfully expensive to update, though. But for querying operation you can't beat "dense arrasy" as universal HPC datastructur
10:31:16 <dminuoso> Have I gone too far? :)
10:32:20 × razetime quits (~quassel@117.193.7.206) (Ping timeout: 248 seconds)
10:33:01 razetime joins (~quassel@117.254.34.208)
10:33:37 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
10:33:45 <c_wraith> dminuoso: hmm. probably. Even when I know it's safe, I still hesitate to ask if I can possibly do it another way.
10:35:02 acidjnk joins (~acidjnk@p200300d6e7137a84847a35f477003ced.dip0.t-ipconnect.de)
10:35:11 × smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM)
10:35:11 × elvishjerricco quits (~elvishjer@2001:470:69fc:105::6172) (Quit: Bridge terminating on SIGTERM)
10:35:11 × Tisoxin quits (~ikosit@user/ikosit) (Quit: Bridge terminating on SIGTERM)
10:35:11 × geekosaur[m] quits (~geekosaur@xmonad/geekosaur) (Quit: Bridge terminating on SIGTERM)
10:35:11 × jbggs[m] quits (~jbggsmatr@2001:470:69fc:105::2:995f) (Quit: Bridge terminating on SIGTERM)
10:35:11 × adziahel[m] quits (~adziahelm@2001:470:69fc:105::b4d) (Quit: Bridge terminating on SIGTERM)
10:35:11 × inkbottle[m] quits (~inkbottle@2001:470:69fc:105::2ff5) (Quit: Bridge terminating on SIGTERM)
10:35:11 × aaronv quits (~aaronv@user/aaronv) (Quit: Bridge terminating on SIGTERM)
10:35:11 × kfiz[m] quits (~louismatr@2001:470:69fc:105::2:aee0) (Quit: Bridge terminating on SIGTERM)
10:35:11 × psydroid quits (~psydroid@user/psydroid) (Quit: Bridge terminating on SIGTERM)
10:35:12 × M0rphee[m] quits (~M0rpheema@2001:470:69fc:105::2:b1ce) (Quit: Bridge terminating on SIGTERM)
10:35:12 × maralorn quits (~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM)
10:35:12 × srid[m] quits (~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM)
10:35:12 × lawt quits (~lawtonmat@2001:470:69fc:105::2:97b8) (Quit: Bridge terminating on SIGTERM)
10:35:12 × cafkafk[m] quits (~cafkafkma@2001:470:69fc:105::1:cea8) (Quit: Bridge terminating on SIGTERM)
10:35:12 × Clinton[m] quits (~clintonme@2001:470:69fc:105::2:31d4) (Quit: Bridge terminating on SIGTERM)
10:35:12 × afotgkmnzj7asv3r quits (~afotgkmnz@2001:470:69fc:105::c24b) (Quit: Bridge terminating on SIGTERM)
10:35:12 × steve[m]12 quits (~stevetrou@2001:470:69fc:105::e0b) (Quit: Bridge terminating on SIGTERM)
10:35:12 × schuelermine[m] quits (~schuelerm@user/schuelermine) (Quit: Bridge terminating on SIGTERM)
10:35:12 × Artem[m] quits (~artemtype@2001:470:69fc:105::75b) (Quit: Bridge terminating on SIGTERM)
10:35:12 × olivermead[m] quits (~olivermea@2001:470:69fc:105::2:4289) (Quit: Bridge terminating on SIGTERM)
10:35:12 × sm quits (~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM)
10:35:12 × ManofLetters[m] quits (~manoflett@2001:470:69fc:105::3be) (Quit: Bridge terminating on SIGTERM)
10:35:13 × ongy[m] quits (~ongymatri@2001:470:69fc:105::5018) (Quit: Bridge terminating on SIGTERM)
10:35:13 × fgaz quits (~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM)
10:35:13 × silky[m] quits (~noonvande@2001:470:69fc:105::2:943c) (Quit: Bridge terminating on SIGTERM)
10:35:13 × famubu[m] quits (~famubumat@2001:470:69fc:105::1081) (Quit: Bridge terminating on SIGTERM)
10:35:13 × Deide quits (~deide@user/deide) (Quit: Bridge terminating on SIGTERM)
10:35:13 × unclechu quits (~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM)
10:35:13 × VanceIsM7[m] quits (~vanceism7@2001:470:69fc:105::3ad) (Quit: Bridge terminating on SIGTERM)
10:35:13 × VarikValefor[m] quits (~varikvale@2001:470:69fc:105::a5d) (Quit: Bridge terminating on SIGTERM)
10:35:13 × fendor[m] quits (~fendormat@2001:470:69fc:105::fcbd) (Quit: Bridge terminating on SIGTERM)
10:35:14 × ormaaj quits (~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM)
10:35:14 × crazazy[m] quits (~crazazyut@2001:470:69fc:105::2:ba2a) (Quit: Bridge terminating on SIGTERM)
10:35:14 × vladan[m] quits (~vladanmat@2001:470:69fc:105::2:24df) (Quit: Bridge terminating on SIGTERM)
10:35:14 × Las[m] quits (~lasmatrix@2001:470:69fc:105::74e) (Quit: Bridge terminating on SIGTERM)
10:35:14 × SeanKing[m] quits (~seankingm@2001:470:69fc:105::cf9c) (Quit: Bridge terminating on SIGTERM)
10:35:14 × nomagno quits (~nomagno@2001:470:69fc:105::c1f0) (Quit: Bridge terminating on SIGTERM)
10:35:14 × maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM)
10:35:14 × Guillaum[m] quits (~guiboumat@2001:470:69fc:105::1:72ac) (Quit: Bridge terminating on SIGTERM)
10:35:14 × jneira[m] quits (~jneiramat@2001:470:69fc:105::d729) (Quit: Bridge terminating on SIGTERM)
10:35:14 × jinsun_ quits (~jinsun@user/jinsun) (Quit: Bridge terminating on SIGTERM)
10:35:14 × chreekat quits (~chreekat@2001:470:69fc:105::16b5) (Quit: Bridge terminating on SIGTERM)
10:35:14 × drsooch[m] quits (~drsoochma@2001:470:69fc:105::1:c8a1) (Quit: Bridge terminating on SIGTERM)
10:35:14 × oak- quits (~oak-@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM)
10:35:15 × Dominik[m]1 quits (~dschrempf@2001:470:69fc:105::2:bbb6) (Quit: Bridge terminating on SIGTERM)
10:35:15 × czuberion[m] quits (~czuberion@2001:470:69fc:105::2:bc47) (Quit: Bridge terminating on SIGTERM)
10:35:15 × zarel[m] quits (~zarelitma@2001:470:69fc:105::1:fcfb) (Quit: Bridge terminating on SIGTERM)
10:35:15 × AdamConner-Sax[m quits (~adamcsmat@2001:470:69fc:105::1:e2c8) (Quit: Bridge terminating on SIGTERM)
10:35:15 × ted[m] quits (~tedmatrix@2001:470:69fc:105::2:bf60) (Quit: Bridge terminating on SIGTERM)
10:35:16 × alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (Quit: Bridge terminating on SIGTERM)
10:35:16 × ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM)
10:35:16 × Player-205[m] quits (~sashaserp@2001:470:69fc:105::2:30b8) (Quit: Bridge terminating on SIGTERM)
10:35:16 × yl53[m] quits (~yl53matri@2001:470:69fc:105::85b) (Quit: Bridge terminating on SIGTERM)
10:35:16 × jean-paul[m] quits (~jean-paul@2001:470:69fc:105::d1ab) (Quit: Bridge terminating on SIGTERM)
10:35:16 × peddie quits (~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM)
10:35:16 × Matthew|m quits (~arathorn@2001:470:69fc:105::1f) (Quit: Bridge terminating on SIGTERM)
10:35:19 × Christoph[m] quits (~hpotsirhc@2001:470:69fc:105::2ff8) (Quit: Bridge terminating on SIGTERM)
10:35:19 × nicm[m] quits (~nicmollel@2001:470:69fc:105::1:feeb) (Quit: Bridge terminating on SIGTERM)
10:35:19 × romes[m] quits (~romesmatr@2001:470:69fc:105::2:1660) (Quit: Bridge terminating on SIGTERM)
10:35:19 × MangoIV[m] quits (~mangoivma@2001:470:69fc:105::2:8417) (Quit: Bridge terminating on SIGTERM)
10:35:19 × JensPetersen[m] quits (~juhp@2001:470:69fc:105::6e9) (Quit: Bridge terminating on SIGTERM)
10:35:19 × tiziodcaio quits (~tiziodcai@2001:470:69fc:105::1:2bf8) (Quit: Bridge terminating on SIGTERM)
10:35:20 × UdayKiran[m] quits (~neoatnebu@2001:470:69fc:105::2:bae0) (Quit: Bridge terminating on SIGTERM)
10:35:20 × mimi1vx[m] quits (~osukupmat@2001:470:69fc:105::2:418d) (Quit: Bridge terminating on SIGTERM)
10:35:20 × ozkutuk[m] quits (~ozkutuk@2001:470:69fc:105::2:9af8) (Quit: Bridge terminating on SIGTERM)
10:35:20 × JonathanWatson[m quits (~jjwmatrix@2001:470:69fc:105::2:a544) (Quit: Bridge terminating on SIGTERM)
10:35:20 × sektor[m] quits (~sektor@2001:470:69fc:105::2:3f60) (Quit: Bridge terminating on SIGTERM)
10:35:20 × oo_miguel[m] quits (~oomiguelm@2001:470:69fc:105::1:5ab0) (Quit: Bridge terminating on SIGTERM)
10:35:21 × jecxjo[m] quits (~jecxjomat@2001:470:69fc:105::2:bd7c) (Quit: Bridge terminating on SIGTERM)
10:35:21 × jmcantrell quits (~jmcantrel@user/jmcantrell) (Quit: Bridge terminating on SIGTERM)
10:35:21 × kjlid[m] quits (~kjlidmatr@2001:470:69fc:105::2:c193) (Quit: Bridge terminating on SIGTERM)
10:35:22 <c_wraith> wow, it's late. That sure is ambiguously phrase. I still hesitate *to give myself time* to ask....
10:35:45 <dminuoso> c_wraith: Given what Im doing, there is little way around it.
10:35:55 <c_wraith> sometimes that happens.
10:36:07 <c_wraith> But I still spend some time hesitating. :)
10:36:20 <bjourne> merijn: this expression in haskell: Map<T, List<T> > map = new HashMap<>();
10:36:27 <dminuoso> Im essentially doing things like turning `newtype ST s a = ST (State# s -> (# State# s, a #)) into `Proxy# s -> (# Proxy# s, a #)` and back
10:36:37 <dminuoso> For some a bunch of convoluted reasons
10:37:03 <c_wraith> huh. I thought Proxy# arguments were elided at runtime
10:37:12 <dminuoso> Yes, so are State#
10:37:15 <c_wraith> ah, ok
10:37:39 fgaz joins (~fgaz@2001:470:69fc:105::842)
10:37:44 <merijn> bjourne: That's not a description of the problem you want to solve, nor the scale of your data, or really anything useful beyond "I have this exact code in another language that I try to mimic", which may or may not make sense, given that Haskell is lazy and immutable
10:37:46 peddie joins (~peddie@2001:470:69fc:105::25d)
10:37:46 ericson2314 joins (~ericson23@2001:470:69fc:105::70c)
10:37:46 famubu[m] joins (~famubumat@2001:470:69fc:105::1081)
10:38:00 aaronv joins (~aaronv@user/aaronv)
10:38:00 maralorn joins (~maralorn@2001:470:69fc:105::251)
10:38:00 sm joins (~sm@plaintextaccounting/sm)
10:38:01 tiziodcaio joins (~tiziodcai@2001:470:69fc:105::1:2bf8)
10:38:13 Christoph[m] joins (~hpotsirhc@2001:470:69fc:105::2ff8)
10:38:13 ongy[m] joins (~ongymatri@2001:470:69fc:105::5018)
10:38:28 Las[m] joins (~lasmatrix@2001:470:69fc:105::74e)
10:38:30 <dminuoso> https://github.com/dminuoso/flatparse-state/blob/main/app/Main.hs nearly 10% of lines have an unsafeCoerce in them heh
10:38:42 smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32)
10:38:56 chreekat joins (~chreekat@2001:470:69fc:105::16b5)
10:39:09 ManofLetters[m] joins (~manoflett@2001:470:69fc:105::3be)
10:39:09 fendor[m] joins (~fendormat@2001:470:69fc:105::fcbd)
10:39:16 × inversed quits (~inversed@bcdcac82.skybroadband.com) (Ping timeout: 248 seconds)
10:39:24 oak- joins (~oak-@2001:470:69fc:105::fcd)
10:39:32 <probie> bjourne: import Data.HashMap qualified as HM; map = HM.empty
10:39:37 kfiz[m] joins (~louismatr@2001:470:69fc:105::2:aee0)
10:39:37 jmcantrell joins (~jmcantrel@user/jmcantrell)
10:39:37 jinsun_ joins (~jinsun@user/jinsun)
10:39:50 romes[m] joins (~romesmatr@2001:470:69fc:105::2:1660)
10:40:05 JensPetersen[m] joins (~juhp@2001:470:69fc:105::6e9)
10:40:06 ormaaj joins (~ormaaj@user/ormaaj)
10:40:06 Guillaum[m] joins (~guiboumat@2001:470:69fc:105::1:72ac)
10:40:12 inversed joins (~inversed@bcdcac82.skybroadband.com)
10:40:19 silky[m] joins (~noonvande@2001:470:69fc:105::2:943c)
10:40:32 jneira[m] joins (~jneiramat@2001:470:69fc:105::d729)
10:40:32 alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba)
10:40:32 Matthew|m joins (~arathorn@2001:470:69fc:105::1f)
10:40:33 JonathanWatson[m joins (~jjwmatrix@2001:470:69fc:105::2:a544)
10:40:42 <dminuoso> bjourne: What operations do you do with the graph mainly?
10:40:44 <probie> with a type signature of "map :: HM.Map T [T]". It's probably not what you want though
10:40:45 srid[m] joins (~sridmatri@2001:470:69fc:105::1c2)
10:40:46 lawt joins (~lawtonmat@2001:470:69fc:105::2:97b8)
10:40:59 M0rphee[m] joins (~M0rpheema@2001:470:69fc:105::2:b1ce)
10:40:59 nicm[m] joins (~nicmollel@2001:470:69fc:105::1:feeb)
10:41:06 <bjourne> merijn: i disagree. Map<T, List<T> > map = new HashMap<>(); instantiates a graph with capacity for many millions of nodes
10:41:12 drsooch[m] joins (~drsoochma@2001:470:69fc:105::1:c8a1)
10:41:25 olivermead[m] joins (~olivermea@2001:470:69fc:105::2:4289)
10:41:37 jbggs[m] joins (~jbggsmatr@2001:470:69fc:105::2:995f)
10:41:52 oo_miguel[m] joins (~oomiguelm@2001:470:69fc:105::1:5ab0)
10:41:53 Tisoxin joins (~ikosit@user/ikosit)
10:42:06 <dminuoso> Either way, is there any graph representation in which vertex removal is actually cheap?
10:42:08 ozkutuk[m] joins (~ozkutuk@2001:470:69fc:105::2:9af8)
10:42:08 Artem[m] joins (~artemtype@2001:470:69fc:105::75b)
10:42:08 unclechu joins (~unclechu@2001:470:69fc:105::354)
10:42:09 sektor[m] joins (~sektor@2001:470:69fc:105::2:3f60)
10:42:21 Clinton[m] joins (~clintonme@2001:470:69fc:105::2:31d4)
10:42:21 maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee)
10:42:21 vladan[m] joins (~vladanmat@2001:470:69fc:105::2:24df)
10:42:36 <dminuoso> Adjacency list is the cheapest for that type of operation that I know of
10:42:37 elvishjerricco joins (~elvishjer@2001:470:69fc:105::6172)
10:42:37 VarikValefor[m] joins (~varikvale@2001:470:69fc:105::a5d)
10:42:38 geekosaur[m] joins (~geekosaur@xmonad/geekosaur)
10:42:38 nomagno joins (~nomagno@2001:470:69fc:105::c1f0)
10:42:51 jean-paul[m] joins (~jean-paul@2001:470:69fc:105::d1ab)
10:43:03 afotgkmnzj7asv3r joins (~afotgkmnz@2001:470:69fc:105::c24b)
10:43:17 cafkafk[m] joins (~cafkafkma@2001:470:69fc:105::1:cea8)
10:43:29 VanceIsM7[m] joins (~vanceism7@2001:470:69fc:105::3ad)
10:43:29 Deide joins (~deide@user/deide)
10:43:29 SeanKing[m] joins (~seankingm@2001:470:69fc:105::cf9c)
10:43:43 Player-205[m] joins (~sashaserp@2001:470:69fc:105::2:30b8)
10:43:43 MangoIV[m] joins (~mangoivma@2001:470:69fc:105::2:8417)
10:43:43 psydroid joins (~psydroid@user/psydroid)
10:43:43 schuelermine[m] joins (~schuelerm@user/schuelermine)
10:43:43 yl53[m] joins (~yl53matri@2001:470:69fc:105::85b)
10:43:57 crazazy[m] joins (~crazazyut@2001:470:69fc:105::2:ba2a)
10:44:09 UdayKiran[m] joins (~neoatnebu@2001:470:69fc:105::2:bae0)
10:44:22 czuberion[m] joins (~czuberion@2001:470:69fc:105::2:bc47)
10:44:35 zarel[m] joins (~zarelitma@2001:470:69fc:105::1:fcfb)
10:44:44 <bjourne> it's O(1) if you allow for tombstoning
10:44:47 accord joins (uid568320@id-568320.hampstead.irccloud.com)
10:44:48 Dominik[m]1 joins (~dschrempf@2001:470:69fc:105::2:bbb6)
10:44:49 AdamConner-Sax[m joins (~adamcsmat@2001:470:69fc:105::1:e2c8)
10:44:54 <probie> dminuoso: You can use `Map Node (Set Node)` where deletion is just removing a Node from the Map. It just makes querying more expensive since garbage isn't collected (but this might be acceptable)
10:45:04 mimi1vx[m] joins (~osukupmat@2001:470:69fc:105::2:418d)
10:45:22 ted[m] joins (~tedmatrix@2001:470:69fc:105::2:bf60)
10:45:23 adziahel[m] joins (~adziahelm@2001:470:69fc:105::b4d)
10:45:36 steve[m] joins (~stevetrou@2001:470:69fc:105::e0b)
10:45:36 inkbottle[m] joins (~inkbottle@2001:470:69fc:105::2ff5)
10:45:52 jecxjo[m] joins (~jecxjomat@2001:470:69fc:105::2:bd7c)
10:45:57 <[Leary]> If you're clever with a reference-style graph, you can probably build cheap clean-up actions alongside each vertex.
10:46:13 kjlid[m] joins (~kjlidmatr@2001:470:69fc:105::2:c193)
10:46:17 <dminuoso> If performance was relevant, I guess I would generally favour CSR on mutable buffers.
10:46:31 <dminuoso> Much improved locality of reference
10:46:31 <merijn> I mean, this is all just random guess work and fairly pointless
10:48:29 <mauke> let graph = (); insert vertex graph = ()
10:48:32 <mauke> technically O(1)
10:49:53 Guest7579 joins (~Guest75@178.141.130.118)
10:50:33 <Guest7579> Hello. On Hoogle, is it possible to find usage examples of a particular function, provided name and signature? e.g. runParser :: DynFlags -> Parser a -> String -> ParseOutput a
10:50:58 <mauke> I don't think so
10:51:06 <merijn> Depends if the author wrote any :p
10:51:18 <merijn> Oh, wait, you mean like packages that use that code?
10:51:25 <Guest7579> say yes
10:51:26 × karolis quits (~karolis@78.157.77.235) (Ping timeout: 256 seconds)
10:51:32 <geekosaur> sounds more like google code search
10:51:39 <merijn> Probably better luck searching on github
10:51:40 <Guest7579> aha
10:51:44 × Ranhir quits (~Ranhir@157.97.53.139) (Ping timeout: 260 seconds)
10:51:56 <geekosaur> or yes, github
10:52:23 <geekosaur> hoogle's bvetter at looking for definitions, not so much uses or examples
10:52:33 <geekosaur> unless the function docs include useful examples
10:52:49 <Guest7579> Wonder if https://about.sourcegraph.com/ should help
10:55:02 <probie> But seriously, if you're going to be adding and removing nodes all over the place, `data Graph = Graph { nodes :: Map Node Int, edges :: IntMap IntSet }` is almost certainly adequate if Map<T, List<T> > map = new HashMap<>(); was adequate
10:56:36 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
10:57:06 karolis joins (~karolis@78.157.77.235)
10:57:27 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
10:59:54 × jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
11:03:02 sawilagar joins (~sawilagar@user/sawilagar)
11:07:11 Ranhir joins (~Ranhir@157.97.53.139)
11:08:06 xff0x joins (~xff0x@2405:6580:b080:900:9ba0:81b0:6475:533a)
11:09:24 madjestic joins (~madjestic@213.208.229.226)
11:11:09 × jespada quits (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:11:17 jinsun is now known as Guest3604
11:11:17 jinsun__ joins (~jinsun@user/jinsun)
11:11:17 × Guest3604 quits (~jinsun@user/jinsun) (Killed (zirconium.libera.chat (Nickname regained by services)))
11:11:17 jinsun__ is now known as jinsun
11:11:41 jespada joins (~jespada@82.36.38.229)
11:13:21 × nckx quits (~nckx@tobias.gr) (Ping timeout: 256 seconds)
11:23:23 × madjestic quits (~madjestic@213.208.229.226) (Ping timeout: 246 seconds)
11:24:23 × razetime quits (~quassel@117.254.34.208) (Ping timeout: 260 seconds)
11:24:41 razetime joins (~quassel@117.254.35.248)
11:25:26 × Erutuon quits (~Erutuon@23-88-131-243.fttp.usinternet.com) (Ping timeout: 256 seconds)
11:27:36 × phma quits (~phma@2001:5b0:215d:aad8:20ab:f617:f484:4a0d) (Read error: Connection reset by peer)
11:28:25 phma joins (phma@2001:5b0:211f:4b08:4055:ac0:eabe:4279)
11:31:58 <Square> Glad to hear GHC got a wasm backend today.
11:32:25 <Square> https://www.tweag.io/blog/2022-11-22-wasm-backend-merged-in-ghc/
11:32:37 × ThePlayer quits (~ThePlayer@94-21-96-104.pool.digikabel.hu) (Ping timeout: 256 seconds)
11:33:25 <Franciman> major achievement!
11:37:49 yaroot_ joins (~yaroot@p2790051-ipngn7801souka.saitama.ocn.ne.jp)
11:37:54 × yaroot quits (~yaroot@2400:4052:ac0:d900:1cf4:2aff:fe51:c04c) (Ping timeout: 255 seconds)
11:37:55 yaroot_ is now known as yaroot
11:41:49 yoneda joins (~mike@193.206.102.122)
11:43:19 × razetime quits (~quassel@117.254.35.248) (Ping timeout: 252 seconds)
11:43:50 razetime joins (~quassel@117.254.34.137)
11:48:34 zmt01 joins (~zmt00@user/zmt00)
11:50:04 chromoblob joins (~user@37.113.164.122)
11:50:25 × zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 260 seconds)
11:50:34 mikoto-chan joins (~mikoto-ch@164.5.249.78)
11:51:25 <chreekat> hell yeah
11:52:51 × jespada quits (~jespada@82.36.38.229) (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:54:23 son0p joins (~ff@2604:3d08:5b7f:5540::604)
11:54:29 × karolis quits (~karolis@78.157.77.235) (Ping timeout: 246 seconds)
11:57:28 nate4 joins (~nate@98.45.169.16)
11:57:42 <dminuoso> I do wonder, what limitations does the wasm backend impose? Can I use all of ghc-prim with it?
12:00:05 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
12:02:16 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 256 seconds)
12:02:41 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
12:02:44 × califax quits (~califax@user/califx) (Ping timeout: 255 seconds)
12:04:47 jespada joins (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net)
12:05:45 × Guest7579 quits (~Guest75@178.141.130.118) (Quit: Client closed)
12:05:55 ec joins (~ec@gateway/tor-sasl/ec)
12:08:07 califax joins (~califax@user/califx)
12:09:25 × chromoblob quits (~user@37.113.164.122) (Ping timeout: 268 seconds)
12:14:27 × califax quits (~califax@user/califx) (Remote host closed the connection)
12:15:00 califax joins (~califax@user/califx)
12:18:23 jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se)
12:22:32 × razetime quits (~quassel@117.254.34.137) (Ping timeout: 246 seconds)
12:23:00 razetime joins (~quassel@117.193.3.102)
12:27:05 acidjnk_new joins (~acidjnk@p200300d6e7137a845929a180a95a2c61.dip0.t-ipconnect.de)
12:28:12 razetime_ joins (~quassel@117.193.6.246)
12:28:20 × razetime quits (~quassel@117.193.3.102) (Ping timeout: 260 seconds)
12:29:17 × acidjnk quits (~acidjnk@p200300d6e7137a84847a35f477003ced.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
12:33:42 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
12:33:48 <merijn> dminuoso: "whatever asterius supported", presumably?
12:34:27 <Hecate> you fools, just ask terrorjack
12:34:36 <Hecate> we literally have the creator of the backend in our ranks
12:34:49 <geekosaur> ^
12:34:52 <dminuoso> Ah, terrorhack is Cheng Shao?
12:35:00 <Hecate> aye
12:36:30 <maerwald> terrorjack is on vacation or so
12:37:09 <dminuoso> I did talk to him yesterday
12:38:10 × pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer)
12:39:01 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Quit: ZNC - https://znc.in)
12:39:16 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
12:40:14 × akegalj quits (~akegalj@89-172-58-90.adsl.net.t-com.hr) (Ping timeout: 256 seconds)
12:40:18 azimut joins (~azimut@gateway/tor-sasl/azimut)
12:41:12 madjestic joins (~madjestic@213.208.229.226)
12:42:24 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
12:44:02 karolis joins (~karolis@78.157.77.235)
12:45:24 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
12:46:25 × madjestic quits (~madjestic@213.208.229.226) (Ping timeout: 268 seconds)
12:47:30 stiell joins (~stiell@gateway/tor-sasl/stiell)
12:49:49 nckx joins (~nckx@tobias.gr)
12:50:52 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
12:53:57 × CAT_S quits (apic@brezn3.muc.ccc.de) (Read error: Connection reset by peer)
12:54:00 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds)
12:54:10 pavonia joins (~user@user/siracusa)
12:57:04 × karolis quits (~karolis@78.157.77.235) (Remote host closed the connection)
12:58:00 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
13:01:29 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
13:03:53 stiell joins (~stiell@gateway/tor-sasl/stiell)
13:06:50 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
13:07:28 stiell joins (~stiell@gateway/tor-sasl/stiell)
13:09:23 chromoblob joins (~user@37.113.164.122)
13:10:36 CAT_S joins (apic@brezn3.muc.ccc.de)
13:11:52 × ec quits (~ec@gateway/tor-sasl/ec) (Write error: Connection reset by peer)
13:11:52 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Write error: Connection reset by peer)
13:11:52 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Read error: Connection reset by peer)
13:12:02 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
13:13:41 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
13:13:53 chexum joins (~quassel@gateway/tor-sasl/chexum)
13:14:49 stiell joins (~stiell@gateway/tor-sasl/stiell)
13:15:17 jinsun__ joins (~jinsun@user/jinsun)
13:15:17 jinsun is now known as Guest1009
13:15:17 × Guest1009 quits (~jinsun@user/jinsun) (Killed (sodium.libera.chat (Nickname regained by services)))
13:15:17 jinsun__ is now known as jinsun
13:21:24 ec joins (~ec@gateway/tor-sasl/ec)
13:21:25 × jrm quits (~jrm@user/jrm) (Read error: Connection reset by peer)
13:21:44 jrm joins (~jrm@user/jrm)
13:24:08 shriekingnoise joins (~shrieking@186.137.167.202)
13:28:56 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
13:29:47 ec joins (~ec@gateway/tor-sasl/ec)
13:34:18 × use-value quits (~Thunderbi@2a00:23c6:8a03:2f01:38e4:6025:87e4:a8aa) (Remote host closed the connection)
13:34:37 use-value joins (~Thunderbi@2a00:23c6:8a03:2f01:38e4:6025:87e4:a8aa)
13:35:02 <accord> Is the link between lazy evaluation and copy-on-write mutation well known?
13:36:54 × InstX1 quits (~Liam@2601:6c4:4081:54f0:148c:5793:51b7:46e1) (Ping timeout: 256 seconds)
13:37:59 <dminuoso> What link are you referring to, accord?
13:38:20 <accord> dminuoso: it's basically part of the same model, it seems to me.
13:38:27 <accord> dminuoso: compute-on-read and copy-on-write
13:38:29 <dminuoso> I do not see how. Can you explain?
13:38:40 <accord> modify-on-read, and replicate-on-write
13:38:49 <accord> Read and Write are mirror operations.
13:39:07 <accord> Reading modifies the reader, the thing they read is written to them
13:39:23 <accord> Reading is also copying. You copy a book you read in your memory basically
13:39:54 <accord> Systems of lazy evaluation naturally are capable of deferring commands.
13:40:03 <accord> Including to copy physically a result in memory for example
13:40:16 <dminuoso> The only thing I had to think of when you mentioned it, is that Clean does a kind of inverted copy-on-write.
13:40:16 <accord> Instead sharing it
13:40:28 <dminuoso> But it is not necessarily related to lazyness
13:40:41 <accord> dminuoso: Clean deduplicates and interns data yes?
13:41:04 <dminuoso> No rather, when clean detects there are no duplicate references, it will switch to in-place mutations.
13:41:14 <dminuoso> It uses its type system to guarantee this is safe
13:42:14 <accord> Ah
13:42:31 <dminuoso> So it is a kind of inversion of copy-on-write.
13:42:33 × opticblast quits (~Thunderbi@secure-165.caltech.edu) (Read error: Connection reset by peer)
13:42:52 opticblast joins (~Thunderbi@secure-165.caltech.edu)
13:43:09 <dminuoso> accord: I just dont see any connection between call-by-name and copy-on-write.
13:43:28 <dminuoso> Other than some vague similarity if you squint really hard
13:44:12 <accord> dminuoso: I'm implementing a runtime, and I noticed it's basically the same thing. Unexpectedly for myself as well
13:44:24 <accord> dminuoso: from different perspectives though
13:44:46 <dminuoso> Not sure what "same thing from different perspectives" means
13:45:38 <opqdonut> laziness is a good match with immutability, and copy-on-write is an implementation technique for immutability (often called path copying in that context)
13:45:43 <accord> dminuoso: do you know continuations passing style
13:46:05 <accord> opqdonut: yes
13:46:16 <dminuoso> The one thing they have in common, is merely "a deferred action"
13:46:20 <dminuoso> But that's not much of a commonality
13:46:35 <accord> Deferred action sure, that's a big part.
13:47:21 <dminuoso> One is a space optimization technique, the other is an implementation of an evaluation model
13:47:26 × jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Remote host closed the connection)
13:47:43 jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se)
13:48:18 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
13:48:56 <accord> dminuoso: lazy eval aims to skip unnecesary computation. copy on-write aims to skip unnecessary allocation.
13:49:04 stiell joins (~stiell@gateway/tor-sasl/stiell)
13:49:05 ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch)
13:49:07 <accord> It's the good old space-time dichotomy. Lazy eval saves TIME at the expense of more SPACE. And copy-on-write saves SPACE at the expense of more TIME to read from such structures.
13:49:28 <dminuoso> lazy eval does not necessarily need more space. it can easily also save space.
13:49:40 × razetime_ quits (~quassel@117.193.6.246) (Ping timeout: 248 seconds)
13:49:43 <dminuoso> consider something like `repeat 1`, its quite space efficient.
13:50:18 <dminuoso> well its even space efficient for two reasons, but even without tying the knot, lazyness would defer the space usage until consumption
13:50:24 razetime joins (~quassel@117.193.0.25)
13:51:11 <accord> dminuoso: right
13:51:21 <dminuoso> Also, COW does not cost more time to read from such structures.
13:51:35 <dminuoso> It does however impose an additional cost on first modification.
13:51:38 × lucerne quits (~lucerne@5.116.75.203) (Ping timeout: 256 seconds)
13:51:44 <dminuoso> That is, with COW the first modification can be very expensive
13:52:19 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
13:52:27 <dminuoso> Well I guess it does have some impact on things like TLB and regular cache hierarchy as well, but its hard to quantify that.
13:52:45 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 252 seconds)
13:53:14 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
13:55:29 × califax quits (~califax@user/califx) (Quit: ZNC 1.8.2 - https://znc.in)
13:55:46 × razetime quits (~quassel@117.193.0.25) (Read error: Connection reset by peer)
13:56:22 Inst joins (~Liam@c-98-208-218-119.hsd1.fl.comcast.net)
13:56:29 califax joins (~califax@user/califx)
13:56:32 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:57:11 <accord> dminuoso: COW defers space allocation, and lazy eval defers temporal allocation (execution time)
13:58:19 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
13:59:16 <dminuoso> accord: If I had to compare similar things, there's something between lazyness and demand paging.
13:59:21 <dminuoso> With COW I just dont see it.
13:59:35 <dminuoso> (i.e. demand paging is lazy memory allocation)
13:59:38 <accord> dminuoso: space and time, don't you see them as two sides of the same coin
13:59:59 <dminuoso> Physically I see them as the same side of the coin. :p
14:00:00 razetime joins (~quassel@117.193.2.181)
14:00:06 <accord> Neat
14:00:50 <accord> dminuoso: say like 10 construction workers build 1 house in 10 days. How long it takes 2 workers... 50 days. Well that's naive of course, but approximately correct.
14:01:08 <accord> Space/time tradeoffs are so common
14:01:17 <accord> Space and time are the same in a way
14:01:23 <accord> Space is a dimension of time.
14:01:34 <dminuoso> Comparing two things on the basis there is some space/time tradeoff involved in both does not seem useful.
14:01:49 <accord> It's useful in order to realize what space and time are.
14:01:59 dminuoso shrugs
14:03:28 <accord> dminuoso: what do you think space and time are
14:04:23 <geekosaur> aspects of program execution that only sometimes have a relationship and rarely have a simplistic "tradeoff" one
14:04:45 <dminuoso> streaming too is a space optimization technique, it defers/interleaves allocation/computation into the future. but that does not make it useful to look really hard for a connection between lazyness and streaming
14:05:03 <dminuoso> mostly because these things occur in different universes
14:05:26 <dminuoso> one is part of the execution model (or even semantic model), the other is some implementation style
14:05:58 × razetime quits (~quassel@117.193.2.181) (Ping timeout: 268 seconds)
14:06:11 razetime joins (~quassel@117.254.35.59)
14:06:50 × ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:07:17 <dminuoso> I do not know of a framework that lets express and analyze both at the same time. Say we could look into category theory, but we dont even know what category we want to construct, let alone how to express these two things in the category theory, or what properties to look for..
14:08:28 × califax quits (~califax@user/califx) (Remote host closed the connection)
14:08:53 × dsrt^ quits (~dsrt@76.145.185.103) (Remote host closed the connection)
14:09:46 <accord> dminuoso: streaming is the same as lazy eval
14:09:48 califax joins (~califax@user/califx)
14:09:52 <dminuoso> No it is not.
14:09:57 <accord> How
14:10:09 <dminuoso> One is an implementation of an evaluation strategy of the programming language, the other is something you do with that programming language.
14:10:38 <dminuoso> While you can do *some* streaming with lazy evaluation, it is extremely limiting.
14:10:38 o-90 joins (~o-90@gateway/tor-sasl/o-90)
14:10:40 <accord> One is what one side does to gradually expose a result. The other is what the other side does to gradually read the same result
14:11:00 <dminuoso> I think your pattern matching goggles is set too coarse.
14:11:14 <accord> Yes, but I have a reason to have set my goggles like that
14:11:23 <accord> You CPU executes a stream of commands
14:11:33 <accord> All execution is a stream. Sequences are key to execution
14:11:55 × rembo10 quits (~rembo10@main.remulis.com) (Quit: ZNC 1.8.2 - https://znc.in)
14:12:07 <accord> And execution is a pipeline.
14:12:15 ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch)
14:12:15 <accord> It flatmaps one sequence to another sequence.
14:12:43 × o-90 quits (~o-90@gateway/tor-sasl/o-90) (Client Quit)
14:13:07 <accord> Everything fits that definition
14:13:21 <accord> Kinda monadic
14:13:36 AlexNoo_ joins (~AlexNoo@178.34.163.201)
14:14:06 rembo10 joins (~rembo10@main.remulis.com)
14:15:07 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
14:17:08 × AlexNoo quits (~AlexNoo@178.34.160.146) (Ping timeout: 256 seconds)
14:17:08 stiell joins (~stiell@gateway/tor-sasl/stiell)
14:17:30 coot joins (~coot@213.134.171.3)
14:21:53 razetime_ joins (~quassel@117.254.35.67)
14:22:00 × razetime quits (~quassel@117.254.35.59) (Ping timeout: 268 seconds)
14:23:00 AlexNoo_ is now known as AlexNoo
14:23:26 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1)
14:23:53 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
14:27:22 chexum joins (~quassel@gateway/tor-sasl/chexum)
14:27:39 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
14:27:55 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Ping timeout: 260 seconds)
14:28:28 × razetime_ quits (~quassel@117.254.35.67) (Ping timeout: 256 seconds)
14:28:31 razetime joins (~quassel@117.254.34.219)
14:30:21 Alex_test joins (~al_test@178.34.163.201)
14:32:59 kenran joins (~user@user/kenran)
14:34:01 × Alex_test quits (~al_test@178.34.163.201) (Quit: ;-)
14:35:02 × kenran quits (~user@user/kenran) (Remote host closed the connection)
14:35:56 Alex_test joins (~al_test@178.34.163.201)
14:36:07 × Alex_test quits (~al_test@178.34.163.201) (Client Quit)
14:36:38 Alex_test joins (~al_test@178.34.163.201)
14:37:36 jakalx parts (~jakalx@base.jakalx.net) ()
14:40:34 AlexZenon joins (~alzenon@178.34.163.201)
14:45:04 jakalx joins (~jakalx@base.jakalx.net)
14:53:31 ChaiTRex joins (~ChaiTRex@user/chaitrex)
14:59:36 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
15:00:48 L29Ah joins (~L29Ah@wikipedia/L29Ah)
15:01:21 Sgeo joins (~Sgeo@user/sgeo)
15:11:34 <accord> It's weird how with lazy eval you can first get the output of something, and then provide the input that produces it
15:14:44 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:18:55 × sayola1 quits (~sayola@dslb-088-064-186-217.088.064.pools.vodafone-ip.de) (Quit: Leaving.)
15:19:49 <dminuoso> Except its not really true.
15:20:41 × jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 246 seconds)
15:20:51 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
15:22:21 <dminuoso> accord: Do you have a particular example?
15:22:31 × acidjnk_new quits (~acidjnk@p200300d6e7137a845929a180a95a2c61.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
15:23:33 jonathanx joins (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se)
15:24:25 × razetime quits (~quassel@117.254.34.219) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
15:27:48 × ubert1 quits (~Thunderbi@178.165.183.156.wireless.dyn.drei.com) (Ping timeout: 248 seconds)
15:28:00 × merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
15:28:32 `2jt joins (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net)
15:31:39 sayola joins (~sayola@dslb-088-064-186-217.088.064.pools.vodafone-ip.de)
15:31:57 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
15:32:09 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
15:32:18 L29Ah joins (~L29Ah@wikipedia/L29Ah)
15:35:39 ec joins (~ec@gateway/tor-sasl/ec)
15:39:06 ubert1 joins (~Thunderbi@178.165.183.156.wireless.dyn.drei.com)
15:41:40 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
15:44:01 beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
15:45:02 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
15:45:24 mvk joins (~mvk@2607:fea8:5ce3:8500::efb)
15:45:33 azimut joins (~azimut@gateway/tor-sasl/azimut)
15:45:43 × notzmv quits (~zmv@user/notzmv) (Remote host closed the connection)
15:45:46 × mvk quits (~mvk@2607:fea8:5ce3:8500::efb) (Client Quit)
15:46:20 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
15:48:44 × ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:48:57 Guest33 joins (~Guest33@ext-1-087.eduroam.chalmers.se)
15:49:08 <Guest33> Is there a way to block any exception from reaching a process?
15:49:25 ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch)
15:51:14 <dminuoso> What is a `process` to you?
15:51:41 <Guest33> `forkIO $ zthe-process>`
15:52:15 <dminuoso> Guest33: Can you explain the problem you are having?
15:52:44 <dminuoso> Im asking because there's a few different tools relating to exceptions, but the right choice depends on what you're trying to accomplish
15:53:12 <Guest33> `ma `catch` (\some-exception -> do this-must-happen-atomically >> further-exceptions-are-fine-here)`
15:53:28 <Guest33> I had a guess that `mask` might work, but it did not.
15:53:58 <dminuoso> Okay, so mask can be pierced by so called interruptilbe operations.
15:54:07 <dminuoso> mask should have better been called almostButNotQuiteMask
15:54:21 <dminuoso> Guest33: can you share the exact code here?
15:54:42 <dminuoso> because again, there may be different things wrong here.
15:54:52 <Guest33> It is a bit contrived, so I don't think it would do anyone any good. I am using `throwTo` to throw a custom exception from one thread to another
15:55:01 <dminuoso> Do show contrived code
15:56:24 <Guest33> ```
15:56:25 <Guest33>       reports <- catches (sequence (map (flip putMVar ()) barriers) >> sequence (map takeMVar results))
15:56:25 <Guest33>                          [ Handler $ \UserInterrupt -> do sequence $ map (flip throwTo UserInterrupt) tids
15:56:26 <Guest33>                                                           sequence $ map takeMVar results
15:56:26 <Guest33>                          , Handler $ \(ConcurrentAbort tid) -> do sequence $ map (flip throwTo (ConcurrentAbort pid)) (filter ((/=) tid) tids)
15:56:27 <Guest33>                                                                   sequence $ map takeMVar results
15:56:27 <Guest33>                          ]
15:56:28 <Guest33> ```
15:56:32 <Guest33> Hm the formatting never fired
15:56:36 <dminuoso> Use https://paste.tomsmeding.com next time
15:56:44 <dminuoso> Pasting large chunks can get you kicked off the IRC network
15:56:51 <Guest33> Ah, I did not know that
15:57:01 <geekosaur> and IRC doesn't do formatting
15:57:23 <Guest33> Honestly, I thought it could handle it, because it `sometimes` formats stuff :P
15:57:37 <dminuoso> Your client probably does.
15:57:43 <geekosaur> some clients do, up to a point
15:57:53 <geekosaur> but all bets are off with multiline stuff
15:58:05 <Guest33> Ah this makes sense, thanks for clarifying
15:58:12 <dminuoso> Guest33: alright, where did you try to mask?
15:58:52 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
15:58:54 <dminuoso> Guest33: And also, you probably want to use STM instead of exceptoins + mask + mvars.
15:58:58 nate4 joins (~nate@98.45.169.16)
15:59:06 <Guest33> In the handler for `ConcurrentAbort`, I tried to mask the expression `sequence $ map (flip throwTo (ConcurrentAbort pid)) (filter ((/=) tid) tids)
15:59:10 × ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:59:15 <dminuoso> Yeah just use STM instead of all of this.
15:59:22 <Guest33> I need this to happen in IO
15:59:34 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:59:36 merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl)
15:59:48 <dminuoso> Still
15:59:54 ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch)
16:00:01 <dminuoso> You can set up the thread action in STM, and when it completes you run the IO action
16:00:09 snek joins (sid280155@id-280155.lymington.irccloud.com)
16:00:13 <snek> is there a way to resolve dependency conflicts with cabal?
16:00:16 <dminuoso> something like `atomically (waitForCondition ...) >> doIOThing`
16:00:19 × ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Client Quit)
16:00:26 <dminuoso> snek: Uh sure.
16:00:30 <dminuoso> snek: What conflict do you have?
16:01:01 <snek> attoparsec depends on scientific depends on integer-logarithms depends on ghc-prim<0.10 but i have ghc-prim==0.10 installed
16:01:32 × Guest33 quits (~Guest33@ext-1-087.eduroam.chalmers.se) (Quit: Connection closed)
16:02:16 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:77f5:99bc:10c3:3c4c) (Quit: WeeChat 2.8)
16:02:28 <dminuoso> Is that GHC master?
16:02:43 <snek> basically yeah
16:03:01 <sclv> in this case i would use the --allow-newer flag
16:03:27 <sclv> because likely integer-logarithms can work with a newer prim, but it hasn't been tested with it, on account of it is not yet released
16:03:49 × nate4 quits (~nate@98.45.169.16) (Ping timeout: 260 seconds)
16:03:51 <sclv> generally if you're working on ghc master, lots of libs will have conflicting bounds against it
16:03:53 <snek> oh that flag seems perfect
16:03:55 <dminuoso> At the same time its unlikely to get it in before GHC 9.6 has been released, since there could be future breakage.
16:04:06 <dminuoso> snek: You can also vendor integer-logarithms and bump the bound
16:04:12 <dminuoso> That will be more stable at the cost of more work
16:04:34 <sclv> note that in general if you're working against GHC head you can point at https://ghc.gitlab.haskell.org/head.hackage/
16:04:45 lucerne joins (~lucerne@5.113.148.245)
16:04:48 <sclv> and often that'll have temp-patches for lots of nonupdated packages
16:05:30 <dminuoso> That particular package has no patch available though
16:05:37 acidjnk_new joins (~acidjnk@p200300d6e7137a175929a180a95a2c61.dip0.t-ipconnect.de)
16:05:38 <sclv> yep :-/
16:05:53 <dminuoso> But I guess you could make a pull request on that one
16:05:54 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
16:06:30 ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch)
16:06:44 azimut joins (~azimut@gateway/tor-sasl/azimut)
16:08:10 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
16:08:44 azimut joins (~azimut@gateway/tor-sasl/azimut)
16:10:12 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:10:15 × ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Client Quit)
16:10:39 × mei__ quits (~mei@user/mei) (Quit: mei__)
16:10:58 mei joins (~mei@user/mei)
16:12:06 ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch)
16:12:08 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 246 seconds)
16:12:39 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.7.1)
16:13:29 × hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
16:13:48 hrberg joins (~quassel@171.79-160-161.customer.lyse.net)
16:15:19 × hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Client Quit)
16:15:38 hrberg joins (~quassel@171.79-160-161.customer.lyse.net)
16:20:31 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
16:21:51 Guest75 joins (~Guest75@178.141.130.118)
16:25:13 × yuribarros quits (~Srain@2804:14c:65e4:865c::1000) (Ping timeout: 252 seconds)
16:26:34 <AdamConner-Sax[m> @snek You can also use a cabal.project file and put more specific "allow-newer" instructions in there. That can be helpful if you eventually want to drop the flag since you can keep narrowing the set.
16:26:34 <lambdabot> I haven't seen You.
16:29:15 × merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
16:30:13 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
16:30:49 azimut joins (~azimut@gateway/tor-sasl/azimut)
16:32:37 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:35:03 titibandit joins (~titibandi@xdsl-78-34-153-165.nc.de)
16:35:46 × ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:36:25 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1)
16:38:40 ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch)
16:40:50 Inst_ joins (~Inst@2601:6c4:4081:54f0:681d:b835:8895:3ea8)
16:41:12 <Inst_> ugh, FML
16:41:29 <Inst_> I have three parts of my program that either don't work or I'm unsure as to whether it works
16:42:19 <Inst_> the calculator for removed cards, the generator for maps (doesn't work), and the calculator that uses stuff from the maps (doesn't work)
16:42:54 <Inst_> guess I have to learn stack and accelerate now
16:43:03 × Inst quits (~Liam@c-98-208-218-119.hsd1.fl.comcast.net) (Killed (NickServ (GHOST command used by Inst_!~Inst@2601:6c4:4081:54f0:681d:b835:8895:3ea8)))
16:43:04 Inst_ is now known as Inst
16:43:25 InstX1 joins (~Liam@2601:6c4:4081:54f0:c59f:75f5:30c:12fd)
16:45:31 razetime joins (~quassel@117.254.34.219)
16:48:02 × ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:48:20 × chromoblob quits (~user@37.113.164.122) (Ping timeout: 248 seconds)
16:48:51 chromoblob joins (~user@37.113.164.122)
16:49:06 yuribarros joins (~Srain@2804:14c:65e4:865c::1000)
16:49:28 ccapndave joins (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch)
16:51:21 dfeuer joins (~dfeuer@pool-96-231-138-153.washdc.fios.verizon.net)
16:51:39 × jonathanx quits (~jonathan@h-98-128-168-222.NA.cust.bahnhof.se) (Ping timeout: 260 seconds)
16:52:23 × ccapndave quits (~ccapndave@xcpe-62-167-164-99.cgn.res.adslplus.ch) (Client Quit)
16:53:47 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 255 seconds)
16:53:59 <[exa]> Inst: do they work in isolation?
16:54:06 <dfeuer> Does hedgehog have some weird issues on GHC 9.4?
16:54:33 <Athas> Inst: Accelerate doesn't work with cabal?
16:54:57 <Inst> at least not on my machine
16:55:01 <dfeuer> Or something? My test suite keeps hanging :-(. https://github.com/dagit/logict-sequence/actions/runs/3524962723/jobs/5912004000
16:55:05 <Inst> i don't really understand cabal so it's probably my fault anyways
16:55:33 zebrag joins (~chris@user/zebrag)
16:56:04 <dfeuer> Now that *could* be just a matter of lots of unlucky test cases, but ... it looks pretty fishy.
16:56:26 <[exa]> dfeuer: can you reproduce the hang locally? Otherwise I'd blame github.
16:57:29 <dfeuer> [exa], I think I actually get hangs with more GHC versions locally, but I'm not sure....
16:57:45 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
16:57:53 <Inst> [exa] I have no clue, it's very hard to test my cases individually
16:58:05 <Inst> because the reference numbers are on a website, I don't know how to grab the data from the website
16:58:36 <[exa]> dfeuer: might be useful to catch it hanging and have a look at what it's doing (at least peek in gdb or with strace)
16:58:41 madjestic joins (~madjestic@77-63-89-78.mobile.kpn.net)
16:59:02 <dfeuer> Inst, what is a ... website? Is it just where a spider builds its web?
16:59:15 <[exa]> Inst: reference numbers to what?
16:59:37 <Inst> http://www.bjstrat.net/cgi-bin/cdca.cgi
17:00:14 <dfeuer> [exa], hoo boy. I haven't touched gdb in very many years, and was never exactly proficient. strace isn't a bad idea, I guess....
17:03:24 jonathanx joins (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
17:04:30 <[exa]> dfeuer: even just e.g. peeking in /proc/$pid/fds might hint someting
17:05:59 <[exa]> Inst: ah that's blackjack. is the algorithm for computing that described somewhere or you trying to reproduce it?
17:06:19 <Inst> i'm trying to build my own algorithm
17:07:52 × coot quits (~coot@213.134.171.3) (Quit: coot)
17:08:23 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
17:08:29 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Remote host closed the connection)
17:10:58 causal joins (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d)
17:12:17 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
17:12:54 azimut joins (~azimut@gateway/tor-sasl/azimut)
17:14:18 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Remote host closed the connection)
17:15:09 × razetime quits (~quassel@117.254.34.219) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
17:15:29 × causal quits (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d) (Ping timeout: 246 seconds)
17:17:30 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
17:17:32 <dfeuer> [exa], what would looking at file descriptors tell me?
17:17:35 × madjestic quits (~madjestic@77-63-89-78.mobile.kpn.net) (Read error: Connection reset by peer)
17:17:56 <Inst> jeez
17:18:15 <Inst> why is it that installing HLS via github feels like installing the acme-everything package?
17:19:25 <geekosaur> not just HLS
17:19:51 <geekosaur> my xmonad config uses dbus and depends on half of hackage 😕
17:23:23 <Franciman> this is good modularity, at least, no?
17:23:55 × teo quits (~teo@user/teo) (Ping timeout: 268 seconds)
17:27:03 <c_wraith> hls looks like it has about 10 sub-packages
17:27:23 <c_wraith> so it's definitely intended to be modular
17:28:18 ub joins (~Thunderbi@178.165.179.227.wireless.dyn.drei.com)
17:29:06 <fendor[m]> we definitely have more than 10 packages, more like 20
17:29:13 <fendor[m]> quick grep says 39 🙂
17:29:26 × ubert1 quits (~Thunderbi@178.165.183.156.wireless.dyn.drei.com) (Ping timeout: 246 seconds)
17:30:05 <c_wraith> oh. I was only counting the ones on hackage that are named hls-something
17:30:22 × ubert quits (~Thunderbi@178.165.183.156.wireless.dyn.drei.com) (Ping timeout: 256 seconds)
17:30:22 ub is now known as ubert
17:31:10 <fendor[m]> that still should be around 30
17:31:22 × yoneda quits (~mike@193.206.102.122) (Quit: leaving)
17:31:26 <fendor[m]> but it includes benchmark projects
17:32:20 <c_wraith> Hmm. I'd say I'm just bad at estimating numbers of things in a list.
17:35:52 <fendor[m]> tbf, some of the plugins aren't released yet
17:36:26 × Guest75 quits (~Guest75@178.141.130.118) (Quit: Client closed)
17:41:06 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
17:45:00 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:45:06 × nschoe quits (~q@2a01:e0a:8e:a190:13d9:919d:218e:b9d2) (Ping timeout: 256 seconds)
17:49:04 merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl)
17:50:46 gmg joins (~user@user/gehmehgeh)
17:56:21 <Unhammer> https://hackage.haskell.org/package/hevolisa how is this not named MonadLisa? I should report a bug
17:58:11 gqplox joins (~textual@2a02:c7c:941d:fd00:613f:9d6e:948c:2253)
17:58:15 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
17:58:57 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
18:02:22 causal joins (~user@50.35.83.177)
18:03:23 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:03:26 × causal quits (~user@50.35.83.177) (Client Quit)
18:05:08 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
18:06:51 causal joins (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d)
18:08:04 × causal quits (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d) (Client Quit)
18:09:10 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 252 seconds)
18:10:09 causal joins (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d)
18:11:08 × ksu quits (~ksu@user/prtr) (Ping timeout: 252 seconds)
18:11:14 × causal quits (~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0d) (Client Quit)
18:12:27 ksu joins (~ksu@user/prtr)
18:12:57 causal joins (~user@50.35.83.177)
18:13:27 ddellacosta joins (~ddellacos@143.244.47.82)
18:15:43 × Xeroine quits (~Xeroine@user/xeroine) (Ping timeout: 268 seconds)
18:18:32 × merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
18:20:01 Xeroine joins (~Xeroine@user/xeroine)
18:21:23 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
18:22:04 gmg joins (~user@user/gehmehgeh)
18:22:06 × sawilagar quits (~sawilagar@user/sawilagar) (Quit: Leaving)
18:24:49 × beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 252 seconds)
18:25:48 <snek> how does one vendor a dependency with cabal
18:28:15 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
18:28:31 <geekosaur> list its cabal file (or directory containing one) in a "packages:" entry in cabal.project
18:28:37 kenaryn joins (~aurele@89-88-44-27.abo.bbox.fr)
18:28:44 <geekosaur> https://github.com/geekosaur/xmonad.hs/blob/skkukuk/cabal.project
18:30:10 <snek> how does this work with like
18:30:16 econo joins (uid147250@user/econo)
18:30:16 <snek> my `foo.cabal` file
18:31:24 Guest75 joins (~Guest75@178.141.130.118)
18:31:44 <geekosaur> first entry in my packages: line points to the directory with my cabal file. the rest are git checkouts. there are also ways to tell cabal to clone repos itself at specific branches/tags/commits
18:32:32 <geekosaur> https://cabal.readthedocs.io/en/3.8/cabal-project.html#specifying-packages-from-remote-version-control-locations
18:35:26 × kenaryn quits (~aurele@89-88-44-27.abo.bbox.fr) (Quit: leaving)
18:37:31 <snek> i just have folders
18:38:25 <geekosaur> then just list the folders, as I do
18:38:48 <snek> i did that
18:39:12 <snek> what do i do with the `build-depends` field in my main cabal file
18:39:50 × jrm quits (~jrm@user/jrm) (Read error: Connection reset by peer)
18:40:01 <geekosaur> list the dependencies as usual, of course your versions should match those of the vendored deps (or simply be absent but that's rarely a good idea)
18:40:02 jrm2 joins (~jrm@user/jrm)
18:40:19 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
18:40:51 <snek> ok cool, ty
18:40:52 nschoe joins (~q@2a01:e0a:8e:a190:547b:7f8b:8da2:2f93)
18:41:22 jrm2 is now known as jrm
18:41:25 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
18:42:44 <geekosaur> that branch of my repo is a complete working project
18:45:19 bilegeek joins (~bilegeek@2600:1008:b05b:8372:5c1:76fe:2ae1:5709)
18:48:57 king_gs joins (~Thunderbi@187.201.139.206)
19:00:23 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
19:00:59 wootehfoot joins (~wootehfoo@user/wootehfoot)
19:01:01 <snek> does anyone know what this error means? google is empty :( `Couldn't find a target code interpreter. Try with -fexternal-interpreter [11 of 67] Compiling TextShow.Data.Either ( src/TextShow/Data/Either.hs, /home/snek/code/random/ducklingjs/dist-newstyle/build/wasm32-wasi/ghc-9.5.20221116/text-show-3.10/build/TextShow/Data/Either.o )`
19:01:10 ec joins (~ec@gateway/tor-sasl/ec)
19:04:32 <[exa]> snek: that's from something ghci-ish?
19:05:09 <snek> its an error from my running `cabal build`
19:05:24 × MajorBiscuit quits (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 248 seconds)
19:05:50 × Guest75 quits (~Guest75@178.141.130.118) (Quit: Client closed)
19:07:10 <[exa]> snek: the interpreter is used when you need to interpret some code on spot, not just compile it (see here: https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler/external-interpreter)
19:07:18 <[exa]> hm maybe there's TemplateHaskell ?
19:07:28 × chromoblob quits (~user@37.113.164.122) (Ping timeout: 252 seconds)
19:07:35 <snek> i don't know what TemplateHaskell is but
19:07:58 <snek> adding `-fexternal-interpreter` to my cabal build call didn't work
19:08:02 <[exa]> ah yes there is. https://hackage.haskell.org/package/text-show-3.3/docs/src/TextShow-Data-Either.html
19:09:04 <[exa]> you might need to ask the ghc-wasm people about that, given the whole thing is very new
19:09:06 <geekosaur> note that the wasm backend is still new and it's possible this doesn't work quite yet
19:09:40 <snek> so this is like, some sort of existential problem that i can't fix on my end?
19:10:09 chromoblob joins (~user@37.113.164.122)
19:10:30 <snek> i'm ok with vendoring stuff to fix it to work with wasm
19:10:41 <snek> i just rewrote the entire `clock` library lol
19:10:47 <[exa]> yeah, stuff with TemplateHaskell looks like it's not going to compile for WASM anytime soon, see the note below here: https://www.tweag.io/blog/2022-11-22-wasm-backend-merged-in-ghc/
19:11:45 <[exa]> anyway you might have some limited luck with just rewriting the TH stuff in the packages by hand
19:11:45 <snek> what is TemplateHaskell about the file you linked?
19:11:53 × gregberns__ quits (sid315709@id-315709.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
19:11:58 <[exa]> see slightly below
19:12:00 <snek> i see it contains `LANGUAGE TemplateHaskell` at the top
19:12:17 <snek> i'm not sure what that implies of the code in the file though
19:12:23 <snek> i should note i'm not familiar with haskell in general
19:12:23 <[exa]> yes, I just wanted to confirm that it really fails on a TH one
19:12:58 <[exa]> TH is kinda like a very advanced macro system, basically metacompilation that makes various stuff insanely easier and saves a lot of code
19:13:16 <[exa]> (at the cost that your compiler needs to interpret code instead of just compiling it)
19:13:25 <geekosaur> there were several TH splices at the bottom
19:13:48 <geekosaur> the $$(derive…) lines
19:13:56 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 248 seconds)
19:14:08 × irrgit_ quits (~irrgit@89.47.234.74) (Remote host closed the connection)
19:14:36 <snek> ic
19:14:59 irrgit_ joins (~irrgit@146.70.27.250)
19:15:40 merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl)
19:15:45 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:16:10 <snek> could i theoretically pre-macro this in another normal not-experimental ghc?
19:16:16 <snek> i've done a similar trick with expanding macros in c before
19:16:40 <geekosaur> you could try compiling with -ddump=splices
19:16:42 <snek> where you just generate a huge output c file from all the input c files
19:16:49 <geekosaur> er, -ddump-splices
19:17:07 <geekosaur> back in the day there was zeroth but it's long bitrotted
19:17:35 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
19:18:05 ec joins (~ec@gateway/tor-sasl/ec)
19:18:43 jtomas joins (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net)
19:21:05 × `2jt quits (~jtomas@191.red-88-17-199.dynamicip.rima-tde.net) (Ping timeout: 246 seconds)
19:22:54 freeside joins (~mengwong@103.252.202.193)
19:25:28 <snek> wow this generates a lot of code lmao
19:29:30 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 255 seconds)
19:30:57 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
19:33:37 madjestic joins (~madjestic@88-159-247-120.fixed.kpn.net)
19:34:33 <probie> How do I write a type signature for a pattern synonym over a GADT? If I just use what the warning says the type should be, I suddenly get a type error
19:36:38 freeside joins (~mengwong@103.252.202.193)
19:37:37 <probie> It says "Pattern synonym with no type signature: pattern Step :: forall {p :: Bool} {i} {o}.() => (p ~ 'True) => i -> [i] -> NonEmpty o -> Accumulator p i o", but if I add it, at usage sites I get "Couldn't match type ‘p’ with ‘'True’"
19:38:14 <probie> the error actually makes sense - it can't unify p with 'True until after the match succeeds
19:39:41 <probie> I'm slightly more confused about how it allows `Step` to work when there is no type signature. Are patterns without type signatures "unfolded" before type checking?
19:40:12 × king_gs quits (~Thunderbi@187.201.139.206) (Ping timeout: 268 seconds)
19:41:55 <EvanR> that seems like a lot of type signature to say i -> [i] -> NonEmpty o -> Accumulator True i o
19:42:40 × belovachap quits (~chapman@216-188-233-105.dyn.grandenetworks.net) (Ping timeout: 268 seconds)
19:43:48 <EvanR> and yeah it makes sense
19:44:21 × causal quits (~user@50.35.83.177) (Quit: WeeChat 3.7.1)
19:46:19 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
19:46:39 causal joins (~user@50.35.83.177)
19:47:02 <EvanR> use ghci to print out the inferred type of Step?
19:47:50 <probie> What I want is to be able to specify separate types for the actual pattern (which is forall p . i -> [i] -> NonEmpty o -> Accumulator p i o) and the "function" (i -> [i] -> NonEmpty o -> Accumulator 'True i o)
19:48:10 × merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
19:48:18 <probie> ghci correctly gives "Step :: i -> [i] -> NonEmpty o -> Accumulator 'True i o", and the warning correctly (with noise) gives the type of the pattern
19:48:24 pierrot_ is now known as pierrot
19:48:25 <probie> I just can't see a way to manually specify both
19:48:56 lyle joins (~lyle@104.246.145.85)
19:51:05 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
19:55:00 <probie> In practice it doesn't matter, since in my use case https://paste.tomsmeding.com/Gb2uDWdY `Step` is not really meant to be used a constructor, so the pattern doesn't need to be bidirectional, but I'm still stuck wondering if there's a way to do it
19:58:29 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
20:00:25 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Quit: Leaving)
20:01:34 <probie> I've got it. It just took reading through the docs. pattern Step :: () => (p ~ 'True) => i -> [i] -> NonEmpty o -> Accumulator p i o; pattern Step i is o <- Next (i:is) o where Step i is o = Next (i:is) o
20:01:42 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1)
20:02:16 <probie> The first `() =>` was mandatory and I had to use the `pattern Foo <- ... where Foo = ...` syntax instead of `pattern Foo = ...`
20:02:28 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds)
20:04:44 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
20:04:46 <EvanR> weird
20:08:37 <probie> Ok, now I'm going insane, apparently I can use the `pattern Foo = ...` syntax
20:10:32 <probie> and the type that provided by the warning that I directly pasted in works
20:11:17 × Vajb quits (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Read error: Connection reset by peer)
20:11:43 Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
20:11:48 <probie> They key part was the first `() =>` though
20:12:01 thyriaen joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1)
20:12:17 ukj joins (~todor@45.222.24.171)
20:13:11 <geekosaur> yes, first is wanteds, second is provideds
20:14:00 <geekosaur> so this one wants nothing and matching it gives you p ~ 'True, iirc
20:14:13 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
20:14:39 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:15:22 × ukj quits (~todor@45.222.24.171) (Client Quit)
20:15:22 sawilagar joins (~sawilagar@user/sawilagar)
20:15:32 <probie> Yes, that matches what I've read and seems to match what I'm doing. I'm just not sure why what I originally wrote didn't work since my code seems to back to where it started but now it's type checking
20:17:03 <probie> All I can think of is that I dropped the `() =>` without thinking about it. It's 7:15am - if I'm braindead already this doesn't bode well for my work day
20:18:27 <snek> in this text show package, one of the templates generated a reference to `Data.Text.Internal.Fusion.Size.Between`
20:18:44 <snek> but in the expansion of that, i get `Module ‘Data.Text.Internal.Fusion.Size’ does not export ‘Between’.`
20:20:34 <geekosaur> hm. TH can cheat and see stuff that isn't otherwise visible, but it's usually not this blatant iirc
20:21:22 <snek> is this entire `show` thing just for generating debug strings of Text instances?
20:21:50 <snek> i could just mock this stuff out
20:22:12 <geekosaur> yes
20:22:14 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
20:22:31 <geekosaur> oh, also what version of Text are you working with? this may have changed in text-2.0
20:22:47 <geekosaur> I note the module is from 2016 so might not have been updated
20:22:51 merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl)
20:22:56 <geekosaur> (or at least so the copyright claims)
20:22:58 <snek> 3.10
20:23:58 <geekosaur> uh? 2.0.1 is latest https://hackage.haskell.org/package/text
20:24:28 <snek> oh text itself
20:24:35 <snek> how do i check what version got pulled in
20:25:59 <snek> oh its definitely not 2
20:26:06 <snek> duckling limits this to <1.3
20:26:23 azimut joins (~azimut@gateway/tor-sasl/azimut)
20:26:55 <geekosaur> I see Between in 2.0.1's source but indeed it's not exported
20:27:25 <snek> i think i am going to just go into duckling and delete all this code that depends on show-text
20:27:41 × merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
20:27:52 <snek> its not even that much
20:28:37 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Remote host closed the connection)
20:28:55 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1)
20:37:39 dignissimus joins (~sam@user/dignissimus)
20:45:18 × lyle quits (~lyle@104.246.145.85) (Quit: WeeChat 3.7.1)
20:49:21 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:49:56 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 248 seconds)
20:50:50 × dfeuer quits (~dfeuer@pool-96-231-138-153.washdc.fios.verizon.net) (Quit: Client closed)
20:52:32 × dignissimus quits (~sam@user/dignissimus) (Quit: QUIT)
20:55:27 jakalx parts (~jakalx@base.jakalx.net) ()
20:55:43 jakalx joins (~jakalx@base.jakalx.net)
20:56:39 Guest60 joins (~Guest60@149.159.207.218)
20:58:28 fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
20:58:31 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Client Quit)
21:00:22 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
21:01:16 × hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Remote host closed the connection)
21:01:53 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
21:02:29 caryhartline joins (~caryhartl@2603-8080-6a0e-8d88-c90e-511a-79c3-1695.res6.spectrum.com)
21:04:02 pavonia joins (~user@user/siracusa)
21:07:14 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
21:08:11 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Remote host closed the connection)
21:09:02 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
21:09:38 azimut joins (~azimut@gateway/tor-sasl/azimut)
21:10:27 gmg joins (~user@user/gehmehgeh)
21:11:10 Lycurgus joins (~juan@user/Lycurgus)
21:12:16 dtman34 joins (~dtman34@76.156.89.180)
21:14:26 × titibandit quits (~titibandi@xdsl-78-34-153-165.nc.de) (Remote host closed the connection)
21:16:06 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt https://tinyurl.com/4m8d4kd5)
21:16:19 freeside joins (~mengwong@103.252.202.193)
21:17:11 zer0bitz_ joins (~zer0bitz@196.244.192.58)
21:17:31 hgolden joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com)
21:20:07 × gqplox quits (~textual@2a02:c7c:941d:fd00:613f:9d6e:948c:2253) (Quit: Textual IRC Client: www.textualapp.com)
21:20:44 × zer0bitz quits (~zer0bitz@196.244.192.59) (Ping timeout: 268 seconds)
21:20:52 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 248 seconds)
21:21:27 king_gs joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924)
21:25:03 merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl)
21:27:46 × chromoblob quits (~user@37.113.164.122) (Read error: Connection reset by peer)
21:30:14 belovachap joins (~chapman@216-188-233-105.dyn.grandenetworks.net)
21:33:07 freeside joins (~mengwong@103.252.202.193)
21:34:41 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
21:36:02 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
21:37:24 thyriaen_ joins (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1)
21:37:26 × thyriaen_ quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Remote host closed the connection)
21:39:09 × Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
21:39:22 <dminuoso> % f :: forall (r :: ZeroBitType) (s :: r). s -> ()
21:39:22 <yahb2> <interactive>:34:38: error: ; • Expecting a lifted type, but ‘r’ is unlifted ; • In the kind ‘r’ ; In an expression type signature: ; forall (r :: ZeroBitType) (s :: r). s -> ...
21:39:25 <dminuoso> Why am I getting this error?
21:39:49 <dminuoso> type ZeroBitType = TYPE ZeroBitRep
21:39:51 <dminuoso> type ZeroBitRep = 'TupleRep ('[] :: [RuntimeRep])
21:40:03 <dminuoso> These two bindings we defined prior to this, as yahb2 is running on an older GHC
21:41:13 <dminuoso> How does this make any sense, GHC is suggesting that this kind (i.e. the type of a type) to be unlifted - I do not even know what that means.
21:41:48 Vajb joins (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d)
21:45:24 × belovachap quits (~chapman@216-188-233-105.dyn.grandenetworks.net) (Ping timeout: 248 seconds)
21:46:12 × thyriaen quits (~thyriaen@2a01:aea0:dd4:470d:6245:cbff:fe9f:48b1) (Quit: Leaving)
21:47:23 <jackdk> Can anyone recommend a good idiom for performing a three-deep nested record update? I'm normally on team "just use lens" but this is for a library that wants to eventually become lens/optics agnostic. I'm currently leaning towards writing `updateFoo :: (Foo -> Foo) -> Bar -> Bar` etc and composing them, but it feels a bit messy. Happy to use extensions that are in 8.10.7 or later - `RecordWildCards` etc are fine, `RecordDotSyntax` is not.
21:48:30 × mmhat quits (~mmh@p200300f1c72dc6ddee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
21:48:53 mmhat joins (~mmh@p200300f1c72dc696ee086bfffe095315.dip0.t-ipconnect.de)
21:49:07 <dminuoso> jackdk: You can do a Van Laarhoven style lens regardless. Recall that `over = coerce`.
21:49:20 <Hecate> jackdk: gradually update the sub-records until you update the top-level record
21:49:24 <dminuoso> dont need to depend on lens just for that.
21:49:42 <dminuoso> Its agnostic, and optics/lens users can seamingly use it too.
21:50:46 <jackdk> "Recall that `over = coerce`" - can you elaborate further? This is new to me, though I'm pretty OK with writing VL lenses directly.
21:51:19 <jackdk> Hecate: are you describing an idiom that I do not understand, or are you saying that the simplest way to do the thing it just to do the thing?
21:51:33 <Hecate> jackdk: the latter yes
21:51:34 <dminuoso> jackdk: https://gist.github.com/dminuoso/2c4677f3c1bcd05e0c72eeadc6c2e148
21:52:03 <dminuoso> Writing lenses by hand is quite trivial and looks nice as well.
21:52:18 × Guest60 quits (~Guest60@149.159.207.218) (Ping timeout: 260 seconds)
21:53:03 <dminuoso> And `view l = getConst #. l Const`
21:53:13 <jackdk> The library I'm tinkering with and its reverse dependencies are moving away from providing most optics, and instead moving towards providing `Generic` instances. While I could keep lenses around, it feels a bit against that goal.
21:53:26 <dminuoso> For symmetry you can also just write out over
21:53:28 <dminuoso> `over l f = runIdentity #. l (Identity #. f)`
21:53:30 <jackdk> I see now why `over = coerce`; thanks for that. Still means I have to get the lens from somewhere.
21:53:45 belovachap joins (~chapman@216-188-233-105.dyn.grandenetworks.net)
21:57:40 × merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds)
22:00:26 <gurkenglas> Is there any library that uses arcane trickery to construct the pullback of two functions a->c and b->c?
22:00:45 <jackdk> What's a pullback of two functions?
22:01:05 <gurkenglas> the type of pairs (a,b) that map to the same c
22:01:43 <gurkenglas> the arcane trickery might be something like "can't enforce that equality on the type level directly, but here's a type with which you can do the same things"
22:01:55 × king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Remote host closed the connection)
22:02:15 king_gs joins (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924)
22:02:26 <jackdk> If you want to enumerate those values, you could do it with no guarantee of timely termination by using https://hackage.haskell.org/package/universe
22:02:39 <gurkenglas> i don't
22:03:16 <gurkenglas> i don't even want to require Eq
22:03:30 × belovachap quits (~chapman@216-188-233-105.dyn.grandenetworks.net) (Ping timeout: 260 seconds)
22:03:40 <jackdk> *shrug* dunno then
22:03:57 <gurkenglas> i realize that i'm asking for grand wizardry here but some part of me would be entirely unsurprised if this is possible anyway
22:07:28 <gurkenglas> subtask 1 then, i guess: get Eq without boolean blindness
22:07:42 money is now known as polo
22:07:45 ft joins (~ft@p508dbd59.dip0.t-ipconnect.de)
22:08:41 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1)
22:13:17 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:5866:96fb:16f6:58d1) (Ping timeout: 255 seconds)
22:14:22 <gurkenglas> perhaps... data Commutes a b where ______("witness that there is precisely one function that can be constructed with the tools available from a to b, up to equality")_____; data Pullback a b c where Pullback :: (a->c) -> (b->c) -> forall x. (x->a) -> (x->b) -> Commutes x c -> x -> Pullback a b c
22:14:45 <dminuoso> gurkenglas: is this possibly helpful? https://gist.github.com/TOTBWF/0078c21c498e31429f3b4da74453d79d
22:14:56 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
22:15:32 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
22:16:49 <gurkenglas> is there some way to construct that a type X has exactly one element? an element constructs that there is at least one...
22:18:04 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 268 seconds)
22:18:26 jmdaemon joins (~jmdaemon@user/jmdaemon)
22:21:17 × michalz quits (~michalz@185.246.207.197) (Remote host closed the connection)
22:21:39 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
22:26:03 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
22:27:00 <gurkenglas> perhaps you can say "X has at least two elements" with something like "forall a b. if a and b are not empty then there exists some X->a+b, though I can't construct it, such that if i had it i could make (a,b)"
22:28:36 <gurkenglas> dminuoso: I suppose Refl does the job, though how would you ever get Refl (map f . map g) (map (f . g))?
22:30:34 × opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 260 seconds)
22:33:04 motherfsck joins (~motherfsc@user/motherfsck)
22:36:34 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 268 seconds)
22:37:22 opticblast joins (~Thunderbi@secure-165.caltech.edu)
22:39:51 × caryhartline quits (~caryhartl@2603-8080-6a0e-8d88-c90e-511a-79c3-1695.res6.spectrum.com) (Quit: caryhartline)
22:41:56 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
22:42:26 belovachap joins (~chapman@216-188-233-105.dyn.grandenetworks.net)
22:45:20 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
22:46:36 × king_gs quits (~Thunderbi@2806:103e:29:bfeb:c988:bbd5:2586:4924) (Ping timeout: 255 seconds)
22:48:39 freeside joins (~mengwong@103.252.202.193)
22:51:19 × zebrag quits (~chris@user/zebrag) (Ping timeout: 252 seconds)
22:52:10 sammelweis_ joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
22:52:27 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
22:53:19 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
22:54:26 merijn joins (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl)
22:54:56 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:56:02 raoul3 joins (~raoul@95.179.203.88)
22:56:12 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
22:56:25 tabemann_ joins (~tabemann@2600:1700:7990:24e0:a94c:868e:1baa:b99f)
22:56:28 parseval_ joins (sid239098@id-239098.helmsley.irccloud.com)
22:56:30 sclv_ joins (sid39734@haskell/developer/sclv)
22:56:41 siers69 joins (~ij@user/ij)
22:56:51 snek_ joins (sid280155@id-280155.lymington.irccloud.com)
22:56:52 scav_ joins (sid309693@user/scav)
22:56:55 lll joins (~o@user/offon)
22:57:00 maerwald_ joins (~maerwald@mail.hasufell.de)
22:57:09 sajith_ joins (~sajith@user/sajith)
22:57:12 sunarch_ joins (sid526836@user/sunarch)
22:58:15 stiell joins (~stiell@gateway/tor-sasl/stiell)
22:58:27 pie__ joins (~pie_bnc@user/pie/x-2818909)
22:58:33 ladyfriday joins (~robert@what.i.hope.is.not.a.tabernaevagant.es)
22:58:33 kawen_ joins (~quassel@static.208.191.216.95.clients.your-server.de)
22:58:43 Batzy_ joins (~quassel@user/batzy)
22:59:07 mjacob_ joins (~mjacob@adrastea.uberspace.de)
22:59:15 Patternm1ster joins (~georg@li1192-118.members.linode.com)
22:59:15 kawzeg_ joins (kawzeg@2a01:7e01::f03c:92ff:fee2:ec34)
22:59:24 ncf_ joins (~n@monade.li)
22:59:25 RemiYuko joins (~licht@user/akechishiro)
22:59:29 robbert joins (~robbert@robbertvanderhelm.nl)
22:59:32 AWizzArd_ joins (~code@gehrels.uberspace.de)
22:59:39 mtjm_ joins (~mutantmel@2604:a880:2:d0::208b:d001)
22:59:50 darchitect1 joins (~darchitec@2a00:23c6:3584:df01:8400:aa62:2730:49fa)
23:00:07 ddb1 joins (~ddb@tilde.club)
23:00:08 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
23:00:35 x22x22x joins (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb)
23:03:00 cyphase_eviltwin joins (~cyphase@user/cyphase)
23:04:34 × romes[m] quits (~romesmatr@2001:470:69fc:105::2:1660) (*.net *.split)
23:04:34 × Tisoxin quits (~ikosit@user/ikosit) (*.net *.split)
23:04:34 × sm quits (~sm@plaintextaccounting/sm) (*.net *.split)
23:04:34 × psydroid quits (~psydroid@user/psydroid) (*.net *.split)
23:04:34 × famubu[m] quits (~famubumat@2001:470:69fc:105::1081) (*.net *.split)
23:04:34 × snek quits (sid280155@id-280155.lymington.irccloud.com) (*.net *.split)
23:04:35 × sclv quits (sid39734@haskell/developer/sclv) (*.net *.split)
23:04:35 × scav quits (sid309693@user/scav) (*.net *.split)
23:04:35 × Batzy quits (~quassel@user/batzy) (*.net *.split)
23:04:35 × kimjetwav quits (~user@2607:fea8:235e:b600:a711:1a92:88bb:85cd) (*.net *.split)
23:04:35 × darchitect quits (~darchitec@2a00:23c6:3584:df01:d84a:e6ea:9bdf:965a) (*.net *.split)
23:04:35 × pie_ quits (~pie_bnc@user/pie/x-2818909) (*.net *.split)
23:04:35 × AkechiShiro quits (~licht@user/akechishiro) (*.net *.split)
23:04:35 × nisstyre quits (wes@user/nisstyre) (*.net *.split)
23:04:35 × maerwald quits (~maerwald@mail.hasufell.de) (*.net *.split)
23:04:35 × robbert-vdh quits (~robbert@robbertvanderhelm.nl) (*.net *.split)
23:04:35 × tabemann quits (~tabemann@2600:1700:7990:24e0:6933:bf5a:ceeb:44f) (*.net *.split)
23:04:36 × sunarch quits (sid526836@user/sunarch) (*.net *.split)
23:04:36 × mtjm quits (~mutantmel@2604:a880:2:d0::208b:d001) (*.net *.split)
23:04:36 × cyphase quits (~cyphase@user/cyphase) (*.net *.split)
23:04:36 × parseval quits (sid239098@id-239098.helmsley.irccloud.com) (*.net *.split)
23:04:36 × raoul quits (~raoul@95.179.203.88) (*.net *.split)
23:04:36 × jocke-l quits (jocke-l@a.x0.is) (*.net *.split)
23:04:36 × kawzeg quits (kawzeg@2a01:7e01::f03c:92ff:fee2:ec34) (*.net *.split)
23:04:36 × Patternmaster quits (~georg@user/Patternmaster) (*.net *.split)
23:04:36 × sajith quits (~sajith@user/sajith) (*.net *.split)
23:04:36 × x88x88x quits (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb) (*.net *.split)
23:04:36 × mjacob quits (~mjacob@adrastea.uberspace.de) (*.net *.split)
23:04:36 × ddb quits (~ddb@tilde.club) (*.net *.split)
23:04:36 × siers quits (~ij@user/ij) (*.net *.split)
23:04:36 × ncf quits (~n@monade.li) (*.net *.split)
23:04:36 × _\_ quits (~o@user/offon) (*.net *.split)
23:04:36 × mrmonday quits (~robert@what.i.hope.is.not.a.tabernaevagant.es) (*.net *.split)
23:04:36 × kawen quits (~quassel@static.208.191.216.95.clients.your-server.de) (*.net *.split)
23:04:36 × AWizzArd quits (~code@gehrels.uberspace.de) (*.net *.split)
23:04:36 snek_ is now known as snek
23:04:36 lll is now known as _\_
23:04:37 parseval_ is now known as parseval
23:04:37 sclv_ is now known as sclv
23:04:37 scav_ is now known as scav
23:04:38 raoul3 is now known as raoul
23:04:39 sunarch_ is now known as sunarch
23:04:43 Feuermagier joins (~Feuermagi@user/feuermagier)
23:04:56 ncf_ is now known as ncf
23:06:45 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
23:06:47 × opticblast quits (~Thunderbi@secure-165.caltech.edu) (Ping timeout: 268 seconds)
23:08:03 chexum joins (~quassel@gateway/tor-sasl/chexum)
23:09:32 mtjm_ is now known as mtjm
23:10:22 <lyxia> you can't without additional axioms
23:10:32 Tisoxin joins (~ikosit@user/ikosit)
23:10:34 jocke-l joins (jocke-l@a.x0.is)
23:10:46 famubu[m] joins (~famubumat@2001:470:69fc:105::1081)
23:10:50 × sammelweis_ quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
23:11:58 zebrag joins (~chris@user/zebrag)
23:12:02 nisstyre joins (wes@user/nisstyre)
23:12:34 × belovachap quits (~chapman@216-188-233-105.dyn.grandenetworks.net) (Ping timeout: 260 seconds)
23:12:58 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
23:14:01 freeside joins (~mengwong@103.252.202.193)
23:14:50 psydroid joins (~psydroid@user/psydroid)
23:15:15 × Cheery quits (~cheery@7-239-179-185.static.tentacle.fi) (Ping timeout: 260 seconds)
23:15:17 × Logio quits (em@kapsi.fi) (Ping timeout: 246 seconds)
23:17:08 romes[m] joins (~romesmatr@2001:470:69fc:105::2:1660)
23:17:14 sm joins (~sm@plaintextaccounting/sm)
23:17:40 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 252 seconds)
23:18:09 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
23:18:24 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 252 seconds)
23:20:00 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:20:34 Cheery joins (~cheery@7-239-179-185.static.tentacle.fi)
23:21:22 Axman6 joins (~Axman6@user/axman6)
23:22:12 king_gs joins (~Thunderbi@187.201.139.206)
23:22:18 × jespada quits (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:22:32 Logio joins (em@kapsi.fi)
23:24:34 jespada joins (~jespada@nmal-24-b2-v4wan-166357-cust1764.vm24.cable.virginm.net)
23:26:31 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 252 seconds)
23:27:42 belovachap joins (~chapman@216-188-233-105.dyn.grandenetworks.net)
23:27:56 × merijn quits (~merijn@c-001-001-017.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
23:30:39 freeside joins (~mengwong@103.252.202.193)
23:32:19 × belovachap quits (~chapman@216-188-233-105.dyn.grandenetworks.net) (Client Quit)
23:33:40 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
23:34:13 robbert is now known as robbert-vdh
23:36:15 × freeside quits (~mengwong@103.252.202.193) (Ping timeout: 260 seconds)
23:36:47 TonyStone joins (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com)
23:38:55 × cafkafk quits (~cafkafk@fsf/member/cafkafk) (Remote host closed the connection)
23:40:34 cafkafk joins (~cafkafk@fsf/member/cafkafk)
23:40:42 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
23:42:21 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
23:45:01 × chele quits (~chele@user/chele) (Remote host closed the connection)
23:45:04 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
23:46:33 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
23:46:38 × Vajb quits (~Vajb@2001:999:504:3ad6:52a4:a3b5:32d8:e74d) (Ping timeout: 256 seconds)
23:47:42 <Axman6> o/
23:50:43 freeside joins (~mengwong@103.252.202.193)
23:52:20 × madjestic quits (~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 248 seconds)
23:52:52 × mikoto-chan quits (~mikoto-ch@164.5.249.78) (Ping timeout: 256 seconds)
23:53:34 Erutuon joins (~Erutuon@user/erutuon)
23:53:36 × Logio quits (em@kapsi.fi) (Ping timeout: 252 seconds)
23:54:29 × Cheery quits (~cheery@7-239-179-185.static.tentacle.fi) (Ping timeout: 246 seconds)
23:54:42 Cheery joins (~cheery@7-239-179-185.static.tentacle.fi)
23:57:43 azimut_ joins (~azimut@gateway/tor-sasl/azimut)
23:57:47 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
23:58:44 Logio joins (em@kapsi.fi)
23:59:10 × zeenk quits (~zeenk@2a02:2f04:a208:3600::7fe) (Quit: Konversation terminated!)

All times are in UTC on 2022-11-22.