2022/11/22

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