Home liberachat/#haskell: Logs Calendar

Logs on 2022-12-19 (liberachat/#haskell)

00:00:26 j4cc3b joins (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net)
00:03:45 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
00:04:26 <dsal> I pick up a lot of code that just does everything at the top level and you have to spend time trying to draw a useful dependency tree to figure out what actually matters. If `addAnotherDice` only needs to be used in a tiny scope, then putting it at the toplevel just muddies things up. Testing the thing you're providing would help, but `addAnotherDice` needs to be tried in ghci once and then given a better name.
00:04:59 <dsal> But this thing being in IO means it's pretty hard to write a test because the IO stuff is coupled with how it's generated. I'd split it that way for testing.
00:06:18 rnat joins (uid73555@id-73555.lymington.irccloud.com)
00:08:48 × wroathe quits (~wroathe@user/wroathe) (Quit: Lost terminal)
00:10:20 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:10:20 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:10:20 wroathe joins (~wroathe@user/wroathe)
00:10:24 × LemanR quits (~LemanR@2607:fb90:54b0:6e01:9403:ba62:4ea3:9eb9) (Quit: Client closed)
00:11:13 <Inst> i'm wondering if i have the only diceware software in Haskell
00:11:56 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
00:13:13 <Inst> nope
00:13:13 <Inst> https://hackage.haskell.org/package/alea
00:14:38 <Inst> Haskell diceware actually seems pretty popular as a newbie project
00:14:58 <dsal> I don't know what diceware is. But if the above one is yours, then the main thing you need to do is separate the IO parts from the functional parts. It sounds like you want to test the functions, but you've combined the IO and the non-IO stuff.
00:16:45 <Inst> it's not
00:16:53 <Inst> you mean the liamzee github?
00:17:08 <Inst> that is mine, the packages aren't
00:17:15 <Inst> erm, the hackage etc aren't
00:17:31 j4cc3b- joins (~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net)
00:20:09 <dsal> RIght, so `process :: ReaderT Stores IO ()` should be `process :: Stores -> Stores` (like `processInner`). The outer action is just calling that with a store and then writing the result. The coupling is unnecessary and makes testing hard.
00:20:11 <EvanR> ideally your haskell program is a thin crunchy IO shell around juicy purely functional interior, says Cale
00:20:35 slack1256 goes for taco bell
00:20:50 <dsal> Monads are tacos.
00:23:28 <EvanR> To use haskell you first need a bit of calzonegory theory
00:24:59 <Inst> yeah, i've had stuff like that, but dicewarist tbh is mostly IO code, which is unfortunate
00:25:26 <Inst> the ReaderT is pretty arbitrary, tbh
00:26:08 <Inst> it wouldn't hurt that much given the design of the program, were ReaderT removed
00:26:54 <Inst> what I did was to move ProcessInner to top-level, rename it
00:26:59 <Inst> because that's the real pure part of the function
00:27:55 shailangsa joins (~shailangs@host217-39-45-196.range217-39.btcentralplus.com)
00:27:58 <slack1256> Is HLS usable to work *on* GHC?
00:28:09 <Inst> what does that question mean?
00:28:19 <dsal> "Does HLS scale?"
00:28:43 <slack1256> The build system in GHC is shake (well still autoconf).
00:28:43 <dsal> I think some people use it at work. Our codebase is kind of big.
00:28:46 <Inst> oh, you mean, does HLS work when you've git-cloned the GHC repo?
00:29:05 × oopzzozzo quits (~Thunderbi@user/oopzzozzo) (Quit: oopzzozzo)
00:29:11 <slack1256> Yeah, work *on* GHC.
00:33:54 <geekosaur> people do use HLS to work on GHC but it requires quite a lot of memory. I think there's some information in the ghc dev wiki
00:34:17 <geekosaur> then again, compiling ghc also requires quite a lot of memory, so if you can do one you can probably do the other
00:35:21 × wroathe quits (~wroathe@user/wroathe) (Quit: Lost terminal)
00:38:37 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:38:37 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:38:37 wroathe joins (~wroathe@user/wroathe)
00:39:09 × ft quits (~ft@p4fc2a257.dip0.t-ipconnect.de) (Remote host closed the connection)
00:39:29 <slack1256> Oh right, the wiki. I was just reading the docs on the repo.
00:40:02 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
00:40:39 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
00:40:54 ft joins (~ft@p4fc2a257.dip0.t-ipconnect.de)
00:41:11 <geekosaur> you might also ask in #ghc since there's a decent chance someone there can give you pointers as to how to set up for HLS
00:45:10 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
00:47:46 morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
00:49:35 × acidjnk quits (~acidjnk@p200300d6e7137a394052686d931fefc2.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
00:55:32 × morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
00:57:14 × finsternis quits (~X@23.226.237.192) (Read error: Connection reset by peer)
01:00:14 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
01:06:46 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
01:06:59 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 255 seconds)
01:10:41 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:12:23 × slack1256 quits (~slack1256@186.11.29.60) (Ping timeout: 255 seconds)
01:16:49 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:16:49 <albet70> unit73e , you're right, I just tested it
01:18:58 <Inst> why is it that containers generally contain a null value?
01:19:02 <Inst> oh wait, mempty identity
01:19:04 <Inst> ;_;
01:20:06 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 252 seconds)
01:27:24 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
01:29:18 × xff0x quits (~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 272 seconds)
01:30:02 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
01:32:46 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
01:34:57 __xor is now known as _xor
01:35:00 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
01:35:14 × Topsi quits (~Topsi@dialin-80-228-141-093.ewe-ip-backbone.de) (Read error: Connection reset by peer)
01:36:26 quazimodo joins (~quazimodo@122-199-39-221.ip4.superloop.com)
01:36:27 <quazimodo> hi all
01:36:56 <quazimodo> I am a perenial 'dont get it' guy and i remember that the last time i tried to internalize how monads work I saw that 'return' was something to define
01:37:14 <quazimodo> recently watched a video to refresh & saw that an instance of monad should be an instance of applicative
01:37:21 <quazimodo> and the dude didnt' define 'return'
01:37:37 <quazimodo> has there been a change to the interface since I last came across this?
01:45:41 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
01:47:41 <hpc> it now defaults to pure
01:47:42 <hpc> :t pure
01:47:43 <lambdabot> Applicative f => a -> f a
01:48:09 <hpc> since you need that Applicative instance anyway and the two are always the same for lawful instances
01:49:28 <dsal> quazimodo: Many of us never write `return` in any code anymore. It's a weird, confusing term.
01:50:05 <EvanR> I never found it weird or confusing, but I think there were less monad tutorials back then
01:50:12 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 255 seconds)
01:51:19 <dsal> People with experience in other languages often find return confusing.
01:51:40 <dsal> It often looks like it does a very different thing from what it actually does.
01:51:41 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
02:08:38 × rnat quits (uid73555@id-73555.lymington.irccloud.com) (Quit: Connection closed for inactivity)
02:14:19 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:17:21 <quazimodo> ok so sounds like the language spec may have changed a little since I last went over it
02:17:28 <quazimodo> because it did look like applicative does the jobp
02:20:48 <quazimodo> i guess the other question that I have is; when is `pure` used?
02:21:36 razetime joins (~quassel@49.207.230.181)
02:21:38 <quazimodo> i see that you define it for a given applicative but i haven't really seen anyone using it, then i can only imagine that other people who write libs that rely on some applicative ?may? need `pure` to do their job, thus we need to write it
02:21:43 <quazimodo> i just havent seen it being used much
02:22:41 <EvanR> after about 1 moment of inquiry about `return' it should be clear that it does not in fact return, then people move on with their haskell
02:22:53 morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
02:24:03 <EvanR> pure is used in Applicative style code when nothing else will do and what pure does would be more code
02:25:05 <EvanR> or when you're in polymorphic applicative code and you couldn't expand it if you wanted to
02:25:42 <EvanR> the <* and *> operators cut down on the need for pure many times
02:28:54 <dsal> > pure 5 :: Maybe Int
02:28:55 <lambdabot> Just 5
02:29:21 <EvanR> look, it saves on holding shift key xD
02:30:50 <quazimodo> ok so it's something more technical than I can understand atm
02:30:51 <quazimodo> cool
02:31:00 <EvanR> dsal used pure!
02:31:04 <EvanR> it wasn't very effective
02:31:05 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
02:31:46 <EvanR> quazimodo, have you used Applicative much?
02:32:13 <dsal> :t many
02:32:14 <lambdabot> Alternative f => f a -> f [a]
02:32:29 <dsal> Man, so close…
02:33:40 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 268 seconds)
02:34:09 × danso quits (~danso@danso.ca) (Quit: ZNC - https://znc.in)
02:35:41 dcoutts_ joins (~duncan@host86-151-44-212.range86-151.btcentralplus.com)
02:35:48 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
02:36:34 <quazimodo> EvanR: i haven't used haskell much :)
02:36:42 danso joins (~danso@danso.ca)
02:36:58 <quazimodo> i probabyl have used it without really 'getting it' in the past
02:38:34 × dcoutts quits (~duncan@host86-151-44-212.range86-151.btcentralplus.com) (Ping timeout: 260 seconds)
02:39:32 <EvanR> the central idiom for Applicative f code is like, g <$> action1 <*> action2 <*> action3 (<*> and so on)
02:40:08 <EvanR> where g takes the results of each action as arguments
02:40:45 <EvanR> if you want to just use a value with no effect as one of the actions, you'll need pure
02:43:13 <quazimodo> by that do you mean if I want to do g <$> action1 <*> action2 <*> pure val <*> actio3 (<*> and so on)?
02:43:29 <quazimodo> I didn't understand why it was called 'pure' until you showed/said that
02:43:51 <quazimodo> but i can't understand why i'd use it in a chain like that in place of an action,
02:46:16 <quazimodo> yeah i clearly don't understand & need to experiment, what I just wrote is nonesense
02:47:16 <quazimodo> maybe it's meant to be like "a value" <$> pure <*> action1 <*> action2 ...etc?
02:47:21 <quazimodo> that makes sense to me, i think
02:49:28 <EvanR> no you're right
02:49:36 <EvanR> the first time
02:50:13 <EvanR> the next step would be to look at the types and see what that idiom is even well typed
02:50:14 <quazimodo> in that case would it be more like pure somePureFunction
02:50:28 <quazimodo> as in, use this pure function in place of an applicative funciton
02:50:47 <EvanR> actions are not necessarily functions
02:50:51 <quazimodo> if i understood the applicative <*> wants an f(a->b)
02:51:16 <EvanR> > (+) <$> Just 3 <*> Just 9
02:51:17 <quazimodo> (also i dont fully understand why we wouldn't use fmap, in that case)
02:51:18 <lambdabot> Just 12
02:51:30 <EvanR> (<$> is fmap)
02:51:30 <quazimodo> oh, yeah that's true
02:51:41 <quazimodo> holy hell haskell is weird hey
02:51:44 <quazimodo> fun stuff
02:52:01 <EvanR> <$> is idiomatic there but is the same thing as
02:52:09 <quazimodo> Yeah I think i got it
02:52:10 <EvanR> > pure (+) <*> Just 3 <*> Just 9
02:52:11 <lambdabot> Just 12
02:52:37 <quazimodo> got it
02:52:55 <EvanR> this pattern really cuts down on certain kinds of code
02:53:26 <quazimodo> the truth of it is that I've been bitten by c# lately, the nominal typing makes it absolutely necessary to do interface based programming & that makes dependency injection even more important
02:53:44 <quazimodo> and that got me thinking how the hell do I do a bit of DI, in a nice automagic way, in something like typescript
02:53:49 <EvanR> I only understood maybe 1/10th of that
02:53:56 <quazimodo> which brought me to haskel & reader/readerT
02:54:13 <quazimodo> EvanR: you're happier this way
02:54:30 <EvanR> 9/10 times dependency injection takes the form of "just pass a parameter into a function" in haskell
02:54:35 <quazimodo> the more OOP i end up having to do the more i miss lispy, functiony shenanigans
02:55:00 <EvanR> s/param/argument
02:55:09 <quazimodo> EvanR: i can't speak to haskell but in other languages it can become very easy to engage in argument drilling
02:55:23 <quazimodo> parents need to know about child dependencies etc
02:55:43 <EvanR> sounds like parent child is the wrong relationship then xD
02:55:49 <quazimodo> yeah
02:56:08 <EvanR> suspicious neighbors pattern
02:56:46 <quazimodo> in c# they invert the situation a bit, something crawls the argument dependency tree and resolves the interfaces to concrete implementations, that then may have dependencies (expressed as interfaces) and so it fetches a concrete implementation of that & so on, then constructs everything
02:56:51 <quazimodo> it's super ugly
02:57:30 <quazimodo> that way the parent doesn't need to know what the child needs, it leaves that to the dependency injection framework
02:57:55 <quazimodo> it's a little all or nothing & harder to do with languages that dont leave runtime metadata somewhere that helps the dynamic injector to know what to inject
02:58:13 <quazimodo> it's not a bad pattern but it's some sort of implicit argument passing
02:58:22 <quazimodo> and I don't mind it but i'd love to not have to do it the way c# does it
02:58:35 <EvanR> yeah I've never needed anything like that in haskell
02:58:36 <quazimodo> i was super curious how haskell might do it though
02:58:57 <quazimodo> EvanR: suppose you have a function that takes an http request & puts stuff in database using some client
02:58:59 <EvanR> if you have a subsystem that needs driver X, just take it as an argument and perhaps close over it
02:59:23 <EvanR> the driver can take the form of a value, a record of functions or IO actions, or even a single IO action
02:59:31 <quazimodo> this in a language like javascript would be a function that imports some modules/functions & uses them till the data gets into the db
02:59:37 <EvanR> where it comes from is not important to the subsystem
03:00:20 <EvanR> I'm sure you could do the same in C#, where the driver takes the form of an object
03:00:45 <quazimodo> yeah so architecture in haskell obviously changes the situation. In my career i've only had to change dependencies on the fly a handful of times - the dependency injection pattern mostly just helped us to set mock classes/instancses during testing
03:01:02 <quazimodo> so the DI pattern mostly seems to be leveraged in testing
03:01:55 <EvanR> indeed taking the driver or resource as an argument opens up the possibility of testing with test drivers
03:01:55 <quazimodo> if i've understood you correctly, your example almost treats the call stack like a reactive pipeline that returns some object(s) that get passed into some 'drivers' that go off & do things in the world
03:02:15 <EvanR> well there's no call stack...
03:02:23 <EvanR> but I'm not sure if it's relevant
03:02:36 <quazimodo> a calls b calls c etc etc and some final value is returend right
03:02:48 <EvanR> no...
03:02:49 <quazimodo> does that fina lthing get shovelled into the driver
03:02:55 <quazimodo> ah ok then i've misunderstood you
03:03:46 king_gs joins (~Thunderbi@2806:103e:29:cdd2:b2dd:cddc:5884:d05c)
03:03:53 × j4cc3b quits (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 260 seconds)
03:03:58 <quazimodo> i'll go eat, my wife is dangerously close to revoking certain privileges if i don't spend some meaningful time with her
03:04:20 <EvanR> like, if you have an http request handler which besides responding to a request (which might even be just a simple function), but needs database access on the side, then you could express that as a Connection -> Request -> IO Response. (just an example)
03:04:22 <quazimodo> be back soon, also really appreciat your time EvanR
03:05:18 <EvanR> the connection could be provided anew each time or partially applied and now you have this Request -> IO Response thing that magically can use the database
03:05:35 × j4cc3b- quits (~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds)
03:05:55 <EvanR> until the connection explodes and that's another story
03:10:03 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
03:15:34 × bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
03:16:50 × Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 268 seconds)
03:23:48 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:23:48 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:23:48 finn_elija is now known as FinnElija
03:26:21 <quazimodo> EvanR: partial application is a reasonable way to go as part of the handling from the top i guess
03:26:52 <EvanR> that's if the resource can reasonably be provided once and closed over
03:26:53 <quazimodo> it's unclear to me how reader & readerT could be applied to this issue of depenencies
03:27:02 <quazimodo> yeah
03:27:06 <quazimodo> makes sense
03:27:17 <EvanR> Reader is basically a function argument
03:27:53 <EvanR> it's great if there's only ever 1 such function argument ever
03:28:08 <quazimodo> ever?
03:28:11 <EvanR> even then, the monad style might be overkill for what it does
03:28:13 <quazimodo> so it can't be changed ever
03:28:22 <EvanR> you can always begin a new Reader context
03:28:25 <quazimodo> right
03:28:57 <quazimodo> does 'pure' perform a 'lift' operation? it seems like it does
03:29:26 <EvanR> if fmap is liftA1, and the <$> <*> pattern above is liftA2, you could say pure is liftA0 xD
03:29:53 <EvanR> this has not much to do with lift from transformers
03:30:51 <quazimodo> ah ok so that's why pure isn't called lift
03:31:44 × td_ quits (~td@83.135.9.47) (Ping timeout: 252 seconds)
03:32:05 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
03:33:30 td_ joins (~td@83.135.9.40)
03:34:13 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds)
03:37:49 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
03:41:23 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
03:44:45 × king_gs quits (~Thunderbi@2806:103e:29:cdd2:b2dd:cddc:5884:d05c) (Quit: king_gs)
03:47:47 × terrorjack quits (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
03:49:09 terrorjack joins (~terrorjac@2a01:4f8:1c1e:509a::1)
03:50:41 talismanick joins (~talismani@76.133.152.122)
03:58:18 × morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
04:00:41 morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
04:05:29 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
04:11:04 azimut joins (~azimut@gateway/tor-sasl/azimut)
04:15:59 × morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
04:18:03 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
04:19:31 × Techcable quits (~Techcable@user/Techcable) (Remote host closed the connection)
04:19:41 <EvanR> cabal complaint incoming
04:20:19 <EvanR> I naively typed ghc -O2 Main.hs for 17 days of AoC this year and things worked alright. You can see where this is going xD
04:20:39 <EvanR> import Control.DeepSeq
04:21:33 <EvanR> misread a type error as "deepseq not installed"
04:21:42 <EvanR> actually it was installed
04:22:04 <EvanR> cabal install --libs deepseq, it installed a second version of deepseq package
04:22:22 <EvanR> now it won't compile for a different reason xD
04:22:33 <EvanR> and I can't seem to undo it
04:23:30 <glguy> what does : ghc-pkg list deepseq show?
04:23:59 <EvanR> the original deepseq only
04:24:17 <glguy> what's the build error?
04:24:42 <EvanR> ambiguous module name Control.DeepSeq, it was found in multiple packages: deepseq-1.4.6.1 deepseq-1.4.8.0
04:27:09 <EvanR> this error is appreciated but I have to wonder what to do about it
04:27:49 <EvanR> (and the complaint follow up is, why did cabal install even install a second version with no warning or anything)
04:28:19 × wroathe quits (~wroathe@user/wroathe) (Quit: Lost terminal)
04:28:57 <EvanR> if the command will get you into an unrecoverable situation maybe it shouldn't continue
04:33:16 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
04:37:29 <glguy> presumably it installed the library because you specifically told it to
04:37:44 Techcable joins (~Techcable@user/Techcable)
04:37:49 <EvanR> yeah but I didn't specify a version
04:38:15 <glguy> Does this show two version? cabal exec ghc-pkg list
04:38:46 <EvanR> no cabal file here
04:40:44 × ddellacosta quits (~ddellacos@143.244.47.88) (Ping timeout: 255 seconds)
04:41:08 <EvanR> running that in a real project shows only 1.4.6.1 just like bare ghc-pkg list
04:42:35 <glguy> I think it sets up some kind of extra environment in your ~/.cabal directory for --lib installed stuff
04:42:45 <glguy> I'm trying to search around to see what that was
04:43:41 × jrm quits (~jrm@user/jrm) (Quit: ciao)
04:44:35 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
04:44:50 <glguy> EvanR: when you run ghci does it say it's loading from: /Users/emertens/.ghc/x86_64-darwin-9.4.3/environments/default or something like that?
04:45:06 jrm joins (~jrm@user/jrm)
04:45:59 <EvanR> yeah, and then a warning about missing libHSdeepseq-1.4.8.0 shared object which was probably in a directory in .cabal that I deleted
04:46:15 <glguy> if you edit that file deepseq is probably at the end of the file
04:46:20 <glguy> it'll have a hash after its name
04:46:29 <glguy> you can remove the line
04:46:58 <EvanR> I see it, in the middle somewhere
04:47:04 <EvanR> 1.4.6.1 was at the bottom curiously
04:47:42 <EvanR> that seems to have fixed it thanks! Now I will try to integrate what I learned
04:49:31 <glguy> EvanR: I haven't used these files (knowingly) before, but there's this: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/packages.html#package-environments
04:49:57 smol-hors is now known as pony
04:50:08 <EvanR> right... right...
04:56:23 iqubic joins (~avi@2601:602:9502:c70:98f0:c0ba:f8c9:e2cc)
05:01:30 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
05:04:14 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
05:06:58 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
05:20:09 × jero98772 quits (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection)
05:22:29 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 260 seconds)
05:27:26 × raym quits (~ray@user/raym) (Ping timeout: 256 seconds)
05:29:13 raym joins (~ray@user/raym)
05:34:56 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 252 seconds)
05:36:18 <Inst> this is probably really stupid, and thus not worth responding to
05:36:18 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
05:36:27 <Inst> but has anyone ever tried to teach 5 languages at once or something?
05:41:21 <EvanR> HTML, XHTML, DHTML, XML, and HTML5
05:42:07 <Inst> lol
05:42:19 <Inst> still, compared to learning haskell, it sort of feels like learning 5 languages at once
05:42:38 <Inst> since all imperative languages are more or less the same, just with effectively different sugar / small syntactical differences
05:42:53 <Inst> might as well try teaching 5 languages at once
05:43:51 <Inst> intro IP, with Python / C / C++... hmm, what other major IP languages are important to pick up? I can think of Java, but Java is wedded to OOP in a similar way than Haskell is wedded to FP
05:44:15 <Inst> i guess it'd probbaly go as well as trying to teach romance languages together, which is to say, not at all
05:44:21 <c_wraith> lots of schools have a course called "programming languages" that's a survery of several languages they don't normally use. Would that be similar to your thoughts?
05:44:44 <Inst> no, but survey of rarely-used paradigms (sorry FP!)
05:44:51 <Inst> is not concurrent
05:44:58 <Inst> if you're stuck wasting weeks on teaching someone the concept of assignment
05:45:06 <Inst> why not teach them how to do assignment in 5 different languages at once?
05:45:50 <Inst> Python / C / C++ / JS, oh what the hell, add Java to it
05:46:15 <Inst> the Haskell-take on it is that it's implicitly teaching the same exact language in different flavors, so what's the big deal?
05:47:38 <Inst> I'm trying to do Python exercises and translate them to Julia at the same time, hence the origin of the idea
05:51:29 <Inst> but I guess I'm serious about it, like, teaching 5 languages at once helps people get to the notion that you have to learn a lot of languages, but fortunately, for the most part, they're just syntax swaps of one another
06:11:01 <EvanR> screw the course of programming languages, where's the course of all the build systems
06:11:20 <EvanR> at least 1 for each language
06:13:45 <DigitalKiwi> my favorite programming course on coursera teaches three lol
06:15:38 <DigitalKiwi> https://www.coursera.org/learn/programming-languages/home/info
06:16:17 <DigitalKiwi> sml scheme and ruby
06:16:45 <DigitalKiwi> err racket w/e
06:17:17 <DigitalKiwi> apparenly i type with a lisp
06:19:30 <DigitalKiwi> lisp programs can only be talked about but never read
06:19:34 <DigitalKiwi> it's untyped
06:19:48 <Inst> tbh i'm really enthusiastic with my multi-lingual programming idea
06:20:02 <Inst> like, teaching an FP course in two languages at once, a hybrid or imperative language, and Haskell
06:20:15 <Inst> force people to implement monads in the hybrid / imperative language
06:20:18 <DigitalKiwi> that's basically what that course i linked is
06:20:24 <Inst> is it concurrent?
06:21:08 <DigitalKiwi> i did the sml examples in haskell too
06:21:19 <DigitalKiwi> s/examples/exercises/
06:22:34 <DigitalKiwi> it's a free course and all of the materials are available (some courses don't let you take the tests etc. but this one did)
06:25:29 kenran joins (~user@user/kenran)
06:25:31 × kenran quits (~user@user/kenran) (Remote host closed the connection)
06:27:31 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:29:12 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
06:29:20 kenran joins (~user@user/kenran)
06:29:51 × kenran quits (~user@user/kenran) (Remote host closed the connection)
06:32:15 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
06:42:15 trev joins (~trev@user/trev)
06:42:16 Kaiepi joins (~Kaiepi@108.175.84.104)
06:47:34 × trev quits (~trev@user/trev) (Remote host closed the connection)
06:48:33 trev joins (~trev@user/trev)
06:52:40 × sammelweis quits (~quassel@c-68-48-18-140.hsd1.mi.comcast.net) (Ping timeout: 260 seconds)
06:54:07 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Quit: au revoir)
06:56:09 Guest123 joins (~Guest123@102.118.46.174)
06:56:56 × telser quits (~quassel@user/telser) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
06:58:38 mncheck joins (~mncheck@193.224.205.254)
06:58:49 Guest123 is now known as jhdr
07:00:21 johnw joins (~johnw@2600:1700:cf00:db0:c0a7:cf05:c926:15f4)
07:00:55 × mncheck quits (~mncheck@193.224.205.254) (Remote host closed the connection)
07:06:18 mncheck joins (~mncheck@193.224.205.254)
07:06:54 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
07:10:24 telser joins (~quassel@user/telser)
07:24:35 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
07:27:33 coot joins (~coot@213.134.171.3)
07:28:35 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
07:29:15 <markasoftware> when you need to compose more than 3 monads do you usually write your own monad that does everything needed, or build a monstrosity of monad transformers and lifts?
07:30:17 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
07:31:50 × shriekingnoise quits (~shrieking@186.137.167.202) (Quit: Quit)
07:34:18 <opqdonut> I'd newtype the stack, and add helpers like `myFoo = lift originalFoo; myBar = lift (lift originalBar)`
07:38:08 × quazimodo quits (~quazimodo@122-199-39-221.ip4.superloop.com) (Ping timeout: 252 seconds)
07:38:16 lortabac joins (~lortabac@2a01:e0a:541:b8f0:ef88:3e30:d92e:5615)
07:39:30 × trev quits (~trev@user/trev) (Remote host closed the connection)
07:40:30 trev joins (~trev@user/trev)
07:51:22 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
08:12:08 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
08:12:22 mbuf joins (~Shakthi@49.204.139.20)
08:19:05 alexiscott joins (~user@4.red-83-36-45.dynamicip.rima-tde.net)
08:21:14 × alexiscott quits (~user@4.red-83-36-45.dynamicip.rima-tde.net) (Client Quit)
08:21:24 × arahael quits (~arahael@193-119-109-208.tpgi.com.au) (Ping timeout: 252 seconds)
08:26:55 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
08:27:54 gmg joins (~user@user/gehmehgeh)
08:33:55 × Inst quits (~Inst@2601:6c4:4081:54f0:38bc:71f6:776d:9675) (Ping timeout: 260 seconds)
08:40:11 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
08:43:24 arahael joins (~arahael@193-119-109-208.tpgi.com.au)
08:46:08 × beefbambi quits (~beefbambi@183.82.30.144) (Ping timeout: 268 seconds)
08:47:02 taeaad joins (~taeaad@user/taeaad)
08:47:05 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
08:47:43 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
08:48:32 beefbambi joins (~beefbambi@183.82.30.144)
08:49:15 kuribas joins (~user@ptr-17d51eoh5205c65jz5o.18120a2.ip6.access.telenet.be)
08:50:04 acidjnk joins (~acidjnk@p200300d6e7137a39c81a3694893f5e3e.dip0.t-ipconnect.de)
08:51:56 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
08:53:30 merijn joins (~merijn@195.114.232.74)
08:54:05 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
08:55:32 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
08:57:09 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
08:57:09 × beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
08:57:25 beefbambi joins (~beefbambi@183.82.30.144)
08:58:06 × beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
08:58:42 beefbambi joins (~beefbambi@183.82.30.144)
09:01:01 azimut joins (~azimut@gateway/tor-sasl/azimut)
09:02:13 gehmehgeh joins (~user@user/gehmehgeh)
09:02:14 fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
09:02:44 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
09:03:06 × beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
09:04:14 beefbambi joins (~beefbambi@183.82.30.144)
09:04:32 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds)
09:05:30 chexum joins (~quassel@gateway/tor-sasl/chexum)
09:08:07 tok joins (~user@mobile-access-d98cd1-96.dhcp.inet.fi)
09:12:44 v0id_ptr joins (~adrift@user/ptr-frac7al/x-0038398)
09:19:40 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
09:20:17 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
09:21:06 azimut joins (~azimut@gateway/tor-sasl/azimut)
09:21:13 × arahael quits (~arahael@193-119-109-208.tpgi.com.au) (Ping timeout: 252 seconds)
09:24:11 cfricke joins (~cfricke@user/cfricke)
09:29:52 × tok quits (~user@mobile-access-d98cd1-96.dhcp.inet.fi) (Changing host)
09:29:52 tok joins (~user@user/tok)
09:32:37 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
09:35:27 × son0p quits (~ff@2604:3d08:5b7f:5540::417e) (Ping timeout: 256 seconds)
09:36:38 × yuribarros quits (~yuribarro@2804:14c:65e4:865c::1000) (Remote host closed the connection)
09:36:56 yuribarros joins (~yuribarro@2804:14c:65e4:865c::1000)
09:37:56 × foul_owl quits (~kerry@193.29.61.234) (Ping timeout: 268 seconds)
09:41:02 × beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
09:41:39 beefbambi joins (~beefbambi@183.82.30.144)
09:41:42 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:43:13 arahael joins (~arahael@193-119-109-208.tpgi.com.au)
09:46:13 × beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
09:46:27 beefbambi joins (~beefbambi@183.82.30.144)
09:47:03 chele joins (~chele@user/chele)
09:48:29 pagnol joins (~user@213-205-209-87.ftth.glasoperator.nl)
09:49:17 × andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com)
09:49:34 × xacktm quits (~xacktm@user/xacktm) (Ping timeout: 265 seconds)
09:53:24 foul_owl joins (~kerry@193.29.61.234)
09:57:24 × coot quits (~coot@213.134.171.3) (Quit: coot)
10:00:56 × beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
10:05:47 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
10:08:33 × ft quits (~ft@p4fc2a257.dip0.t-ipconnect.de) (Quit: leaving)
10:09:15 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
10:12:30 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds)
10:16:46 × jhdr quits (~Guest123@102.118.46.174) (Quit: Client closed)
10:20:09 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
10:20:11 vpan joins (~0@212.117.1.172)
10:23:18 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
10:24:28 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
10:24:34 Lord_of_Life_ is now known as Lord_of_Life
10:25:26 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 255 seconds)
10:28:51 × trev quits (~trev@user/trev) (Quit: trev)
10:29:25 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 252 seconds)
10:32:40 × tok quits (~user@user/tok) (Remote host closed the connection)
10:33:05 × glguy quits (~glguy@libera/staff-emeritus/glguy) (Ping timeout: 255 seconds)
10:33:36 glguy joins (~glguy@libera/staff-emeritus/glguy)
10:34:09 × glguy quits (~glguy@libera/staff-emeritus/glguy) (Read error: Connection reset by peer)
10:37:28 glguy joins (~glguy@libera/staff-emeritus/glguy)
10:37:35 beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
10:40:11 trev joins (~trev@user/trev)
10:41:56 beefbambi joins (~beefbambi@183.82.30.144)
10:47:23 zer0bitz_ joins (~zer0bitz@196.244.192.59)
10:47:26 xacktm joins (~xacktm@user/xacktm)
10:49:10 × beefbambi quits (~beefbambi@183.82.30.144) (Ping timeout: 272 seconds)
10:49:23 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
10:49:45 × zer0bitz quits (~zer0bitz@196.244.192.59) (Ping timeout: 255 seconds)
10:52:36 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
10:53:02 beefbambi joins (~beefbambi@183.82.30.144)
10:53:12 × Me-me quits (~Me-me@146.102.215.218.dyn.iprimus.net.au) (Quit: Going offline, see ya! (www.adiirc.com))
10:58:03 zer0bitz joins (~zer0bitz@196.244.192.58)
10:59:58 × zer0bitz_ quits (~zer0bitz@196.244.192.59) (Ping timeout: 268 seconds)
11:01:14 andreas303 joins (andreas303@ip227.orange.bnc4free.com)
11:06:44 × hueso quits (~root@user/hueso) (Ping timeout: 268 seconds)
11:06:57 xff0x joins (~xff0x@ai071162.d.east.v6connect.net)
11:13:45 Inst joins (~Inst@2601:6c4:4081:54f0:e018:7519:854e:3017)
11:13:52 <Inst> has anyone gotten 3 penny GUI to work recently?
11:19:57 × mbuf quits (~Shakthi@49.204.139.20) (Ping timeout: 265 seconds)
11:21:48 hueso joins (~root@user/hueso)
11:26:20 × int-e quits (~noone@int-e.eu) (Remote host closed the connection)
11:26:49 mbuf joins (~Shakthi@49.204.120.206)
11:27:30 × mbuf quits (~Shakthi@49.204.120.206) (Remote host closed the connection)
11:27:31 int-e joins (~noone@int-e.eu)
11:29:24 × lambdabot quits (~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection)
11:29:52 lambdabot joins (~lambdabot@silicon.int-e.eu)
11:29:52 × lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host)
11:29:52 lambdabot joins (~lambdabot@haskell/bot/lambdabot)
11:36:10 Guest123 joins (~Guest123@102.118.46.174)
11:37:34 × califax quits (~califax@user/califx) (Remote host closed the connection)
11:38:10 × Guest123 quits (~Guest123@102.118.46.174) (Client Quit)
11:38:33 califax joins (~califax@user/califx)
11:38:42 jhdr joins (~jhdr@102.118.46.174)
11:40:53 jakalx parts (~jakalx@base.jakalx.net) ()
11:42:08 ulvarrefr joins (~user@188.124.56.153)
11:42:15 jakalx joins (~jakalx@base.jakalx.net)
11:43:40 dextaa6 joins (~DV@user/dextaa)
11:44:48 son0p joins (~ff@2604:3d08:5b7f:5540::e96e)
11:45:30 jhdr_ joins (~jhdr@102.118.46.174)
11:45:35 × hueso quits (~root@user/hueso) (Ping timeout: 268 seconds)
11:45:43 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
11:46:10 × dextaa quits (~DV@user/dextaa) (Ping timeout: 272 seconds)
11:46:10 dextaa6 is now known as dextaa
11:46:53 hueso joins (~root@user/hueso)
11:50:21 × jhdr quits (~jhdr@102.118.46.174) (Quit: Client closed)
11:51:45 × Alex_test quits (~al_test@178.34.161.14) (Ping timeout: 268 seconds)
11:53:46 × AlexZenon quits (~alzenon@178.34.161.14) (Ping timeout: 272 seconds)
11:53:46 × AlexNoo quits (~AlexNoo@178.34.161.14) (Ping timeout: 272 seconds)
11:53:54 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 260 seconds)
11:55:45 ubert joins (~Thunderbi@p200300ecdf264e7e72c65d11ee5c445f.dip0.t-ipconnect.de)
12:07:08 × meinside quits (uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
12:08:30 CiaoSen joins (~Jura@p200300c9570e1d002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
12:09:35 × hueso quits (~root@user/hueso) (Ping timeout: 256 seconds)
12:10:14 × raym quits (~ray@user/raym) (Ping timeout: 272 seconds)
12:12:53 slack1256 joins (~slack1256@191.126.99.70)
12:14:54 __monty__ joins (~toonn@user/toonn)
12:15:14 × slack1256 quits (~slack1256@191.126.99.70) (Remote host closed the connection)
12:15:29 × beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
12:15:46 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
12:22:54 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
12:24:19 beefbambi joins (~beefbambi@183.82.30.144)
12:26:55 raym joins (~ray@user/raym)
12:33:51 × yuribarros quits (~yuribarro@2804:14c:65e4:865c::1000) (Quit: Leaving)
12:36:00 × xacktm quits (~xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com)
12:36:00 × andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Remote host closed the connection)
12:39:59 hueso joins (~root@user/hueso)
12:46:45 AlexNoo joins (~AlexNoo@94.233.241.57)
12:47:27 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
12:48:29 Alex_test joins (~al_test@94.233.241.57)
12:50:40 freeside joins (~mengwong@213.86.11.74)
12:52:54 AlexZenon joins (~alzenon@94.233.241.57)
12:55:45 × beefbambi quits (~beefbambi@183.82.30.144) (Ping timeout: 255 seconds)
12:56:17 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
12:57:38 × acidjnk quits (~acidjnk@p200300d6e7137a39c81a3694893f5e3e.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
12:58:34 <trev> how do i apply a function over a list of lists?
12:58:48 <Rembane> trev: With more map!
12:58:56 <Rembane> trev: What's the type of the function?
13:00:33 <trev> i'm doing some crazy crappy parsing for AoC... want to apply `dropAround` for each Text in [[Text]]
13:01:26 <merijn> trev: Hint: what's the type of "map (f :: Int -> Char)" :)
13:04:48 <trev> [Int] -> [Char] ?
13:05:12 × freeside quits (~mengwong@213.86.11.74) (Ping timeout: 252 seconds)
13:06:16 <merijn> Looks suspiciously like the kinda function you'd pass to map ;)
13:07:29 <trev> :D i'm dumb
13:07:45 <trev> is there a concise way to do it in haskell?
13:07:59 <trev> like <$$> (wishful)
13:08:07 <merijn> trev: Just do "map (map f)"?
13:09:04 <trev> works
13:09:10 <trev> thanks
13:11:07 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:13:24 × zer0bitz quits (~zer0bitz@196.244.192.58) (Read error: Connection reset by peer)
13:15:14 Sciencentistguy9 joins (~sciencent@hacksoc/ordinary-member)
13:15:51 zer0bitz joins (~zer0bitz@196.244.192.58)
13:17:10 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 252 seconds)
13:17:10 Sciencentistguy9 is now known as Sciencentistguy
13:23:16 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
13:24:02 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:27:39 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 252 seconds)
13:27:51 xacktm joins (~xacktm@user/xacktm)
13:28:18 andreas303 joins (andreas303@ip227.orange.bnc4free.com)
13:29:17 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
13:32:19 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
13:35:58 mvk joins (~mvk@2607:fea8:5ce3:8500::6126)
13:37:06 × mvk quits (~mvk@2607:fea8:5ce3:8500::6126) (Client Quit)
13:40:42 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
13:41:31 × fizbin quits (~fizbin@user/fizbin) (Ping timeout: 268 seconds)
13:43:10 coot_ joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
13:44:43 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
13:45:21 <fendor[m]> is ghc 9.4.2 busted on windows in some way?
13:45:29 beefbambi joins (~beefbambi@183.82.30.144)
13:45:54 coot_ is now known as coot
13:47:04 × v0id_ptr quits (~adrift@user/ptr-frac7al/x-0038398) (Ping timeout: 268 seconds)
13:50:45 × jhdr_ quits (~jhdr@102.118.46.174) (Ping timeout: 265 seconds)
13:51:03 MangoIV[m] joins (~mangoivma@2001:470:69fc:105::2:8417)
13:56:10 × razetime quits (~quassel@49.207.230.181) (Ping timeout: 252 seconds)
13:59:05 fizbin joins (~fizbin@user/fizbin)
13:59:14 × fizbin quits (~fizbin@user/fizbin) (Read error: Connection reset by peer)
13:59:50 × Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 252 seconds)
13:59:56 fizbin joins (~fizbin@user/fizbin)
14:00:32 <Inst> bleh
14:00:40 <Inst> sort of sad that i have no time, i'm thinking about
14:00:46 <Inst> or rather, no skill
14:00:56 <Inst> i'm thinking about refactoring my Haskell program into running entirely in the IO monad
14:01:07 Kaiepi joins (~Kaiepi@108.175.84.104)
14:02:03 thongpv87 joins (~thongpv87@113.169.255.193)
14:04:45 shriekingnoise joins (~shrieking@186.137.167.202)
14:05:33 <lortabac> Inst: you mean without transformers? or literally having everything in IO (what would be the point)?
14:05:42 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
14:05:53 <Inst> with IORef
14:06:07 <Inst> more to the point that Haskell is actually a multiparadigm language (you need HOOP or Objective to get objects, though)
14:06:27 × thongpv87 quits (~thongpv87@113.169.255.193) (Quit: leaving)
14:06:34 <lortabac> IORef instead of what?
14:07:46 <Inst> processing via expression-only language
14:07:56 <Inst> and for loops via forM_
14:12:18 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
14:16:06 jhdr joins (~jhdr@102.118.128.137)
14:16:58 <c_wraith> that seems like a really hard way to use Haskell
14:17:10 × jhdr quits (~jhdr@102.118.128.137) (Client Quit)
14:20:27 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
14:22:03 <lortabac> I mean, IORef instead of State/Writer makes sense if you want to avoid transformers
14:22:24 <lortabac> but IORef everywhere... why?
14:25:44 fizbin_ joins (~fizbin@user/fizbin)
14:26:47 <c_wraith> maybe you don't like ease of reasoning?
14:28:17 × fizbin quits (~fizbin@user/fizbin) (Read error: Connection reset by peer)
14:31:45 morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
14:35:35 × beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
14:36:40 × morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Ping timeout: 265 seconds)
14:36:55 fizbin__ joins (~fizbin@user/fizbin)
14:36:55 <maerwald> c_wraith: transformers and ease of reasoning?
14:37:15 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
14:37:45 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
14:38:06 <maerwald> We could start with explaining MonadBaseControl, MonadUnliftIO and friends. And then maybe how StateT interacts with inner IO and exceptions
14:38:11 <c_wraith> maerwald: nah, pure expressions and ease of reasoning.
14:38:36 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
14:38:46 danza joins (~francesco@151.47.236.122)
14:39:04 <c_wraith> though I am apparently the only person in the world who's unsurprised about the interaction of MonadBaseControl and bracket.
14:39:25 beefbambi joins (~beefbambi@183.82.30.144)
14:39:55 × fizbin_ quits (~fizbin@user/fizbin) (Ping timeout: 260 seconds)
14:40:04 <maerwald> right, effects systems make it a tad easier
14:40:32 <maerwald> https://github.com/hasura/eff/issues/12
14:40:44 fizbin joins (~fizbin@user/fizbin)
14:40:53 rekahsoft joins (~rekahsoft@2605:8d80:6e2:a50e:e78b:13e9:40ed:3d2c)
14:43:09 × fizbin__ quits (~fizbin@user/fizbin) (Ping timeout: 256 seconds)
14:44:00 <maerwald> but yeah, IO is so hard...
14:44:41 <lortabac> maerwald: I think we are discussing using IO instead of pure functions
14:44:48 mikoto-chan joins (~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb)
14:44:50 <maerwald> :D
14:45:41 × danza quits (~francesco@151.47.236.122) (Read error: Connection reset by peer)
14:48:01 × fizbin quits (~fizbin@user/fizbin) (Read error: Connection reset by peer)
14:54:11 freeside joins (~mengwong@212.12.38.120)
14:54:51 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
14:59:15 jakalx joins (~jakalx@base.jakalx.net)
15:01:31 × mikoto-chan quits (~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb) (Read error: Connection reset by peer)
15:03:02 mikoto-chan joins (~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb)
15:12:50 razetime joins (~quassel@49.207.230.181)
15:14:27 <maerwald> how do you make a list of Proxies?
15:16:45 n0den1te joins (~~.~@2401:4900:1cc8:a400:6e01:e0b7:1a5e:9c43)
15:17:33 <Hecate> (without Impredicative Types!)
15:23:36 × mikoto-chan quits (~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb) (Quit: WeeChat 3.6)
15:24:47 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
15:26:07 mikoto-chan joins (~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb)
15:26:11 × mikoto-chan quits (~mikoto-ch@2001:999:488:d7ee:b232:de3f:f786:6eb) (Client Quit)
15:26:54 fizbin joins (~fizbin@user/fizbin)
15:29:08 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 246 seconds)
15:36:59 bodisiw joins (~bodiskw@128.163.238.17)
15:37:31 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.7.1)
15:40:35 × freeside quits (~mengwong@212.12.38.120) (Ping timeout: 260 seconds)
15:43:35 × Xeroine quits (~Xeroine@user/xeroine) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
15:44:19 × beefbambi quits (~beefbambi@183.82.30.144) (Ping timeout: 260 seconds)
15:44:25 Xeroine joins (~Xeroine@user/xeroine)
15:44:45 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
15:48:39 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
15:48:59 beefbambi joins (~beefbambi@183.82.30.144)
15:52:37 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
15:57:36 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Quit: beteigeuze)
16:01:49 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
16:02:11 jinsun__ joins (~jinsun@user/jinsun)
16:02:11 jinsun is now known as Guest2165
16:02:11 jinsun__ is now known as jinsun
16:02:29 j4cc3b joins (~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net)
16:03:20 × Guest2165 quits (~jinsun@user/jinsun) (Ping timeout: 260 seconds)
16:04:49 nschoe joins (~q@141.101.51.197)
16:05:24 elevenkb joins (~elevenkb@105.224.37.128)
16:08:49 × razetime quits (~quassel@49.207.230.181) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
16:09:57 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:12:03 kenran joins (~user@user/kenran)
16:12:29 × kenran quits (~user@user/kenran) (Remote host closed the connection)
16:13:18 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
16:13:46 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:ef88:3e30:d92e:5615) (Quit: WeeChat 2.8)
16:15:00 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
16:20:35 × merijn quits (~merijn@195.114.232.74) (Ping timeout: 260 seconds)
16:21:38 × fizbin quits (~fizbin@user/fizbin) (Ping timeout: 246 seconds)
16:27:51 Inst_ joins (~Inst@2601:6c4:4081:54f0:7095:a698:8ea8:7bc6)
16:27:51 × beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
16:28:09 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:29:01 beefbambi joins (~beefbambi@183.82.30.144)
16:30:44 shapr joins (~user@68.54.166.125)
16:31:38 × Inst quits (~Inst@2601:6c4:4081:54f0:e018:7519:854e:3017) (Ping timeout: 252 seconds)
16:35:18 × rekahsoft quits (~rekahsoft@2605:8d80:6e2:a50e:e78b:13e9:40ed:3d2c) (Ping timeout: 260 seconds)
16:35:51 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
16:37:38 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
16:43:26 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
16:44:55 <kuribas> Any news about FOSDEM 2023? I made a proposal but it is still undecided...
16:45:13 <kuribas> I probably was too late submitting it.
16:45:15 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
16:53:14 × Xeroine quits (~Xeroine@user/xeroine) (Remote host closed the connection)
16:54:06 Xeroine joins (~Xeroine@user/xeroine)
16:59:29 Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
17:02:24 × elevenkb quits (~elevenkb@105.224.37.128) (Quit: Client closed)
17:03:15 × dsrt^ quits (~dsrt@76.145.185.103) (Remote host closed the connection)
17:05:41 morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
17:06:59 × FragByte quits (~christian@user/fragbyte) (Quit: Quit)
17:07:09 × johnw quits (~johnw@2600:1700:cf00:db0:c0a7:cf05:c926:15f4) (Quit: ZNC - http://znc.in)
17:07:21 jakalx parts (~jakalx@base.jakalx.net) ()
17:08:02 jakalx joins (~jakalx@base.jakalx.net)
17:09:19 jmdaemon joins (~jmdaemon@user/jmdaemon)
17:09:58 × morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
17:15:20 slack1256 joins (~slack1256@186.11.29.60)
17:16:22 <slack1256> > show "gato"
17:16:24 <lambdabot> "\"gato\""
17:16:36 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
17:17:03 <slack1256> Is there a newtype over String that has a Show instance where the result does not have the extra " ?
17:17:20 <geekosaur> no
17:17:49 <c_wraith> you could create one, but why? That's not what Show is for...
17:18:17 <slack1256> Yeah, it is an abuse of Show. Maybe I should use Pretty or something.
17:18:32 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
17:19:27 beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
17:20:46 × td_ quits (~td@83.135.9.40) (Quit: waking up from the american dream ...)
17:24:24 × pagnol quits (~user@213-205-209-87.ftth.glasoperator.nl) (Remote host closed the connection)
17:27:23 n0den1te parts (~~.~@2401:4900:1cc8:a400:6e01:e0b7:1a5e:9c43) ()
17:30:52 morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
17:32:11 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:33:24 td_ joins (~td@83.135.9.40)
17:34:43 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:35:08 × morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
17:35:14 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
17:44:39 × nschoe quits (~q@141.101.51.197) (Quit: Switching off)
17:47:31 johnw joins (~johnw@2600:1700:cf00:db0:c0a7:cf05:c926:15f4)
17:49:03 wootehfoot joins (~wootehfoo@user/wootehfoot)
17:49:11 borrow joins (~borrow@dynamic-78-8-220-237.ssp.dialog.net.pl)
17:49:59 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Max SendQ exceeded)
17:50:23 × borrow quits (~borrow@dynamic-78-8-220-237.ssp.dialog.net.pl) (Client Quit)
17:51:02 wootehfoot joins (~wootehfoo@user/wootehfoot)
17:51:29 fizbin joins (~fizbin@user/fizbin)
17:52:25 × jinsun quits (~jinsun@user/jinsun) (Ping timeout: 260 seconds)
17:52:48 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:53:26 econo joins (uid147250@user/econo)
18:01:17 × fizbin quits (~fizbin@user/fizbin) (Remote host closed the connection)
18:01:36 fizbin joins (~fizbin@user/fizbin)
18:02:54 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
18:03:16 <kuribas> > id "gato" -- slack1256
18:03:17 <lambdabot> "gato"
18:03:48 <kuribas> slack1256: https://hackage.haskell.org/package/formatting-7.2.0/docs/Formatting.html
18:06:46 × kuribas quits (~user@ptr-17d51eoh5205c65jz5o.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1))
18:06:53 × CiaoSen quits (~Jura@p200300c9570e1d002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
18:10:59 acidjnk joins (~acidjnk@p200300d6e7137a97c81a3694893f5e3e.dip0.t-ipconnect.de)
18:14:29 Guest8974 joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
18:18:15 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
18:18:38 × vpan quits (~0@212.117.1.172) (Quit: Leaving.)
18:19:05 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
18:20:05 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:20:15 × Xeroine quits (~Xeroine@user/xeroine) (Excess Flood)
18:22:37 Xeroine joins (~Xeroine@user/xeroine)
18:22:43 Me-me joins (~Me-me@146.102.215.218.dyn.iprimus.net.au)
18:23:11 Jade[m] is now known as Jadesheit[m]
18:36:05 tomokojun joins (~tomokojun@75.164.24.44)
18:36:18 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 252 seconds)
18:38:16 Red_Swan joins (~jared@174-23-134-43.slkc.qwest.net)
18:39:28 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
18:43:13 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
18:43:33 beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
18:45:29 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
18:48:00 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 265 seconds)
18:48:50 jinsun joins (~jinsun@user/jinsun)
18:50:00 jinsun__ joins (~jinsun@user/jinsun)
18:50:00 jinsun is now known as Guest3566
18:50:01 × Guest3566 quits (~jinsun@user/jinsun) (Killed (copper.libera.chat (Nickname regained by services)))
18:50:01 jinsun__ is now known as jinsun
18:56:13 × sayola1 quits (~sayola@dslb-088-064-186-217.088.064.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
18:56:20 sayola joins (~sayola@dslb-002-201-085-035.002.201.pools.vodafone-ip.de)
18:57:20 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
19:00:13 × tomokojun quits (~tomokojun@75.164.24.44) (Remote host closed the connection)
19:00:41 elevenkb joins (~elevenkb@105.224.37.128)
19:07:17 segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net)
19:18:22 × Guest8974 quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds)
19:19:43 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
19:25:23 irrgit_ joins (~irrgit@146.70.27.250)
19:28:04 codaraxis joins (~codaraxis@user/codaraxis)
19:33:43 unit73e joins (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36)
19:35:41 × unit73e quits (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Client Quit)
19:37:48 unit73e joins (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36)
19:38:18 × shapr quits (~user@68.54.166.125) (Remote host closed the connection)
19:49:15 Guest8974 joins (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
19:50:30 × elevenkb quits (~elevenkb@105.224.37.128) (Quit: Client closed)
19:54:18 isovector joins (~isovector@172.103.253.106.cable.tpia.cipherkey.com)
19:55:05 beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
19:55:14 ft joins (~ft@p4fc2a257.dip0.t-ipconnect.de)
19:57:02 isovector parts (~isovector@172.103.253.106.cable.tpia.cipherkey.com) ()
19:57:24 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
20:00:09 × beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Ping timeout: 268 seconds)
20:01:43 mikoto-chan joins (~mikoto-ch@85-76-117-48-nat.elisa-mobile.fi)
20:03:47 ec joins (~ec@gateway/tor-sasl/ec)
20:03:52 mvk joins (~mvk@2607:fea8:5ce3:8500::6126)
20:04:07 × mvk quits (~mvk@2607:fea8:5ce3:8500::6126) (Client Quit)
20:06:02 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 255 seconds)
20:06:22 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
20:10:59 elevenkb joins (~elevenkb@105.224.37.128)
20:17:15 kenran joins (~user@user/kenran)
20:17:23 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
20:17:36 × kenran quits (~user@user/kenran) (Remote host closed the connection)
20:18:29 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
20:19:38 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
20:22:21 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
20:22:22 × elevenkb quits (~elevenkb@105.224.37.128) (Quit: Client closed)
20:26:16 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
20:29:07 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
20:29:07 allbery_b joins (~geekosaur@xmonad/geekosaur)
20:29:10 allbery_b is now known as geekosaur
20:33:52 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
20:35:35 × chymera quits (~chymera@ns1000526.ip-51-81-46.us) (Remote host closed the connection)
20:37:40 × Guest8974 quits (~finn@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 252 seconds)
20:40:14 × fizbin quits (~fizbin@user/fizbin) (Ping timeout: 252 seconds)
20:40:26 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
20:42:31 Lycurgus joins (~juan@user/Lycurgus)
20:51:16 × Xeroine quits (~Xeroine@user/xeroine) (Remote host closed the connection)
20:52:08 Xeroine joins (~Xeroine@user/xeroine)
20:54:24 <voidzero> Hi, as an assignment I have: write out the evaluation steps for foldl (flip (*)) 1 [1..3]. Is this correct? https://paste.tomsmeding.com/FkuajyVj
20:55:49 × td_ quits (~td@83.135.9.40) (Ping timeout: 260 seconds)
20:56:32 × slack1256 quits (~slack1256@186.11.29.60) (Ping timeout: 272 seconds)
20:56:38 <Jadesheit[m]> flip (*) is funny
20:58:42 <voidzero> it's not my favorite assignment :) foldl by itself is confoozing
20:58:57 <Jadesheit[m]> I may just not see something but I don't get a lot of the steps
20:59:05 <Jadesheit[m]> does not seem right to me
20:59:35 <Jadesheit[m]> what do you think happens in the first step?
20:59:49 <voidzero> yeah i messed this up
21:00:19 <Jadesheit[m]> lets go through it step by step, ok?
21:01:00 <Jadesheit[m]> first of all you havefoldl (flip (*)) 1 [1, 2, 3]
21:01:03 <Jadesheit[m]> s// `/, s//`/
21:01:21 <Jadesheit[m]> can you look at the definition of foldl and tell me how this would expand?
21:01:51 <voidzero> thanks. foldl (*) 2 [1..3] is going to become ((2 * 1) * 2 ) * 3
21:01:57 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Quit: Leaving)
21:02:13 <Jadesheit[m]> that's already the entire expansion. Only apply the definition once
21:03:03 <MangoIV[m]> <maerwald> "how do you make a list of..." <- HList? A good implementation of HList is NP from sop-core
21:03:06 <voidzero> foldl (flip (*)) 1) * 2) * 3
21:03:17 <voidzero> sorry
21:03:21 <voidzero> foldl ((flip (*)) 1) * 2) * 3
21:03:32 <Jadesheit[m]> this also applies the recursive definitions
21:03:48 <Jadesheit[m]> can you tell me what foldl looks like?
21:04:25 Xeroine_ joins (~Xeroine@user/xeroine)
21:04:35 <voidzero> foldl f acc (x:xs) = foldl f (f acc x) xs
21:04:46 × Xeroine quits (~Xeroine@user/xeroine) (Ping timeout: 272 seconds)
21:05:02 <voidzero> this is really difficult for me to grasp though, thanks for bearing with me :)
21:05:22 <voidzero> weird how foldr seems easier
21:05:47 <Jadesheit[m]> it is, but it's important to know this
21:06:04 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
21:06:17 <Jadesheit[m]> voidzero: apply this *once* to the original expression
21:06:39 chymera joins (~chymera@ns1000526.ip-51-81-46.us)
21:06:40 <voidzero> foldl (flip (*)) 1 (1:[2,3,4])
21:06:44 <voidzero> i'm not sure how to write xs
21:07:17 <Jadesheit[m]> don't yet evaluate
21:07:22 <Jadesheit[m]> note down the thunks
21:07:34 <Jadesheit[m]> and your xs is not quite correct
21:07:41 <MangoIV[m]> MangoIV[m]: It’s probably XY though, I’d expect you want to store your types in a list and then just get a proxy if you need one
21:07:54 <MangoIV[m]> As Proxy is basically unit you can always just make one.
21:09:07 <voidzero> the list is (1:2:3:[])
21:09:16 <Jadesheit[m]> yes
21:09:25 <voidzero> is 1 taken as x and the rest (2:3:[]) as xs?
21:09:32 <Jadesheit[m]> correct
21:09:36 <voidzero> alright
21:09:51 <voidzero> foldl (flip (*)) 1 (1:2:3:4:[])
21:10:18 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
21:10:35 <Jadesheit[m]> where do you get the four from?
21:10:48 <voidzero> i got carried away lol
21:11:09 Sgeo joins (~Sgeo@user/sgeo)
21:11:15 <voidzero> foldl (flip (*)) 1 (1:2:3:[])
21:11:42 <Jadesheit[m]> that's our starting expression
21:11:43 <Jadesheit[m]> now apply foldl once
21:12:08 <Jadesheit[m]> voidzero: using this information
21:12:31 <Square> Why cant I combine "where" with guards in this https://paste.tomsmeding.com/Nw53Nmg3 . Seem I cant have the "| otherwise = .. " if i have a where in the previous guard.
21:12:34 <voidzero> foldl (flip (*)) 1 (1:2:3:[]) = foldl (flip (*)) ((flip (*)) 1 1) 2:3:[]
21:13:05 <Jadesheit[m]> very good
21:13:15 <Jadesheit[m]> (paranthesize the last expression)
21:13:25 <Jadesheit[m]> * (paranthesize the list expression at the end)
21:13:32 <Jadesheit[m]> now apply foldl again
21:13:36 <voidzero> ah yes. -- foldl (flip (*)) 1 (1:2:3:[]) = foldl (flip (*)) ((flip (*)) 1 1) (2:3:[])
21:13:56 <Jadesheit[m]> now apply foldl again
21:14:52 <voidzero> let's see
21:16:10 <Square> nvm, ofcourse it should be after last guard
21:16:51 <geekosaur> correct, where applies to all guards
21:18:47 <voidzero> it's a bit confusing with all these parentheses, still chewing on it for a bit
21:19:18 <Jadesheit[m]> no worries, take your time
21:19:28 <voidzero> ty
21:19:31 <Jadesheit[m]> you can also ask questions or send intermediate results
21:20:32 tvandinther joins (~tvandinth@203.34.100.2)
21:20:42 danza joins (~francesco@151.37.165.128)
21:21:02 shapr joins (~user@68.54.166.125)
21:21:48 <voidzero> foldl ((flip (*)) ((flip (*)) 1 1) 2) (3:[])
21:21:50 <voidzero> I *think*
21:22:32 <Jadesheit[m]> very good
21:22:34 <Jadesheit[m]> yes
21:22:41 <Jadesheit[m]> one more
21:23:07 <voidzero> alright
21:23:21 <tvandinther> Hello. Does anybody here have experience with compiling binaries across various OS and arch using GitHub actions? I'm trying to set up a workflow to compile for various platforms and have them uploaded to a GitHub release. Example yaml files would be a big help if you know of any.
21:24:25 <voidzero> Jadesheit[m], foldl (((flip (*)) ((flip (*)) 1 1) 2) 3) []
21:24:36 <Jadesheit[m]> very nice
21:24:48 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
21:24:55 <Jadesheit[m]> ah wait, minor detail
21:25:01 <Jadesheit[m]> you still need to pass the function
21:25:10 <Jadesheit[m]> same with the version above
21:25:36 <voidzero> ah yes so the intuitive idea ("needs one more flip (*)") was right
21:25:54 <Jadesheit[m]> yes!
21:26:07 × danza quits (~francesco@151.37.165.128) (Read error: Connection reset by peer)
21:26:39 <Jadesheit[m]> voidzero: can you write down this with the function passed?
21:26:50 <Jadesheit[m]> (just add the function as the first parameter)
21:27:53 <voidzero> like this? :
21:27:55 <voidzero> foldl (flip (*)) ((flip (*)) 1 1) (2:3:[]) = foldl ((flip (*)) ((flip (*)) 1 1) (flip (*)) 2) (3:[])
21:29:40 <Jadesheit[m]> in the definition of foldl the function is still passed
21:29:40 <Jadesheit[m]> so even on the other side you still need it
21:31:37 <voidzero> oh. I guess I only did that in the first evaluation step
21:31:41 <voidzero> yes, let's see
21:32:16 <Jadesheit[m]> brb*
21:32:50 beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
21:34:59 <EvanR> voidzero, yeah foldr is easier because it's just doing constructor replacement
21:36:26 <EvanR> [] -> z
21:36:38 <EvanR> (:) x xs -> f x xs
21:37:14 <voidzero> yeah. It's just easier to brain :)
21:37:50 <EvanR> and easier to laze (which as of now is the verb form of lazy)
21:40:13 <voidzero> yes I'm tempted to laze way too often!
21:40:29 <voidzero> ok so this is what i came up with when not lazeing (lazing?)
21:40:33 <voidzero> https://paste.tomsmeding.com/EHvYCmc7
21:40:56 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
21:41:37 <EvanR> someone probably asked this already but what's the point of flip (*), assuming it's a commutative operation
21:41:45 <EvanR> adding a lot f noise
21:42:58 kenaryn joins (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr)
21:43:11 <voidzero> nothing. It's just the author of this book being a sadist (eyeballing you chris allen wherever you are)
21:43:21 <Jadesheit[m]> its an exercise about evaluation
21:43:29 <EvanR> alright assuming your listing is right, you're not done
21:43:37 <voidzero> nah for the purposes of figuring out evaluating it's not that bad
21:44:24 <Jadesheit[m]> voidzero: this is close but you started writing the `flip (*)` infix
21:44:46 <Jadesheit[m]> it needs to be flip (*) a b
21:45:12 <voidzero> ah yes. more parentheses needed
21:45:40 <Jadesheit[m]> yep haha
21:45:44 <EvanR> Not Enough Parenthesene Gas
21:45:45 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 260 seconds)
21:46:44 <voidzero> good catch. So 3 becomes: foldl ((flip (*)) ((flip (*)) 1 1) ((flip (*))) 2) (3:[])
21:47:00 <voidzero> followed by: foldl (((flip (*)) ((flip (*)) 1 1) ((flip (*))) 2) (flip (*)) 3) []
21:47:04 pagnol joins (~user@213-205-209-87.ftth.glasoperator.nl)
21:47:49 <voidzero> wait let me check that
21:47:50 <EvanR> ((flip (*))) seems redundant right
21:48:32 <pagnol> I'm looking for a datastructure to express a mapping from some type A to another type B
21:48:41 <pagnol> something like Map A B, but it should be total
21:48:51 <EvanR> hackage package total-map
21:49:03 <voidzero> EvanR, yes, let me correct these last two steps
21:49:17 <pagnol> thanks
21:49:37 <Jadesheit[m]> voidzero: I think (???) its right
21:49:47 <Jadesheit[m]> now you need to apply foldl once again
21:49:53 <Jadesheit[m]> but another case
21:49:57 td_ joins (~td@83.135.9.40)
21:50:01 <Jadesheit[m]> the one for the empty list
21:50:23 <EvanR> @src foldl
21:50:23 <lambdabot> foldl f z [] = z
21:50:23 <lambdabot> foldl f z (x:xs) = foldl f (f z x) xs
21:50:40 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:51:03 <voidzero> ghci says no
21:51:06 × bodisiw quits (~bodiskw@128.163.238.17) (Quit: This computer has gone to sleep)
21:51:13 <Jadesheit[m]> ok let me see
21:51:40 <Jadesheit[m]> should I just write it out once?
21:51:48 <Jadesheit[m]> because I know you have the right idea
21:51:55 <EvanR> cool thing about haskell, you can factor out the (flip (*)) into a let for readability
21:52:25 <Jadesheit[m]> EvanR: if you are supposed to show evaluation i would think that's not allowed?
21:52:28 <Jadesheit[m]> or it might be
21:52:46 <EvanR> well you could still use it as an aid to working it out, then unfactor it in the end
21:52:52 MajorBiscuit joins (~MajorBisc@31-23-159.netrun.cytanet.com.cy)
21:53:00 <Jadesheit[m]> fair!
21:53:19 <EvanR> the unfactoring will be easy and correct thanks to referential transparency
21:53:24 <voidzero> got it
21:53:26 <Jadesheit[m]> that's actually good, I'd do let mult = flip (*) in ...
21:53:26 <voidzero> foldl (flip (*)) ((flip (*)) ((flip (*)) 1 1) 2) (3:[])
21:53:38 <Jadesheit[m]> perfect
21:53:40 <Jadesheit[m]> yes
21:53:53 <voidzero> ah that let is a good idea yes
21:53:54 <Jadesheit[m]> now apply once more
21:54:38 <voidzero> yes: foldl (flip (*)) (flip (*) ((flip (*)) ((flip (*)) 1 1) 2) 3) []
21:54:57 <Jadesheit[m]> parantheses on the first function
21:55:06 <Jadesheit[m]> but seems good
21:55:25 <Jadesheit[m]> <lambdabot> "foldl f z [] = z" <- now apply foldl again, noting that the case here is different
21:55:26 × gurkenglas quits (~gurkengla@p548ac72e.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
21:57:21 <voidzero> ok.. let's see
21:57:44 <pagnol> does it make sense to use Data.Map.Strict when the number of key-value pairs is low?
21:58:26 <Jadesheit[m]> pagnol: how low, and do you eventually access all pairs?
21:58:45 <pagnol> say only a few dozen, and yes I do access all eventually
21:58:45 <monochrom> Perhaps not. But I wouldn't worry about it until benchmarking says you need to worry about it.
21:59:14 <monochrom> The thing is hardware keeps changing so the "low" threshold keeps changing too. It's a moving target.
21:59:33 <pagnol> I'm curious what Haskellers use, though
21:59:50 <monochrom> Haskellers just use Data.Map.Strict and move on.
22:00:11 <monochrom> Haskellers worry about actual issues not micromanagement issues.
22:00:12 <EvanR> I'd probably use list of (k,v) more often if the API didn't suck xD
22:00:14 <voidzero> so when we remove the list and the function it becomes this:
22:00:17 <voidzero> flip (*) ((flip (*)) ((flip (*)) 1 1) 2) 3
22:00:20 × zns quits (~zns@user/zns) (Remote host closed the connection)
22:00:29 <EvanR> congrats you just foldl'ed
22:00:51 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:01:16 <voidzero> actually I think that was incorrect and this is correct:
22:01:19 <voidzero> (flip (*)) ((flip (*)) ((flip (*)) 1 1) 2) 3
22:01:39 <voidzero> both give the same answer but infix vs prefix
22:01:43 <Jadesheit[m]> should be the same I think
22:01:58 <EvanR> that's the same thing
22:02:03 <Jadesheit[m]> voidzero: not infix but just currying
22:02:04 <EvanR> (f x) y = f x y
22:02:15 zns joins (~zns@user/zns)
22:02:15 <EvanR> not currying but simply grouping
22:02:25 <EvanR> using assocativity rules
22:02:39 <Jadesheit[m]> voidzero: now you can start evaluating this bad boy
22:02:46 × ystael quits (~ystael@user/ystael) (Quit: Lost terminal)
22:02:48 <Jadesheit[m]> EvanR: yeah sorry
22:02:53 <voidzero> let's do it
22:03:01 <EvanR> no reason to evaluate it, it's fine xD
22:03:35 <EvanR> @src flip
22:03:35 <lambdabot> flip f x y = f y x
22:04:32 <pagnol> EvanR ha, I was thinking the same
22:04:35 <Jadesheit[m]> would it be "correct" to write `flip (*) a b` as `b * a` in this context, maintaining the infixity of the operator?
22:05:12 <EvanR> sure
22:05:17 <pagnol> about the (k, v) API being being a bit unergonomic
22:05:24 <EvanR> (*) x y = x * y
22:06:43 <monochrom> But if you're using foldl, the choice is between (flip (*)) and (\x y -> y * x)
22:07:48 <voidzero> (flip (*)) ((flip (*)) ((flip (*)) 1 1) 2) 3 = (flip (*)) ((flip (*)) (1 * 1) 2) 3
22:08:28 <voidzero> (flip (*)) (1 * 2) 3
22:08:42 <voidzero> 2 * 3
22:08:44 <voidzero> 6
22:08:49 <Jadesheit[m]> don't be so quick
22:08:54 <voidzero> darn :D
22:08:56 <Jadesheit[m]> leave the thunks for a second
22:09:39 <Jadesheit[m]> (its absolutely correct, but I assume your prof will want to see the expansion as thunks)
22:09:42 <voidzero> (flip (*)) (2 * (1 * 1)) 3
22:10:15 <Jadesheit[m]> yes
22:10:16 <voidzero> 3 * (2 * (1 * 1))
22:10:17 <Jadesheit[m]> once more
22:10:29 <Jadesheit[m]> perfect
22:10:42 <Jadesheit[m]> now, slowly work your way from the inside out
22:10:49 <Jadesheit[m]> and then you're done
22:10:59 <voidzero> 3 * (2 * 1)
22:11:04 <voidzero> 3 * 2
22:11:08 <voidzero> 6
22:11:10 × Alex_test quits (~al_test@94.233.241.57) (Ping timeout: 252 seconds)
22:11:16 <Jadesheit[m]> congratulations
22:11:21 <Jadesheit[m]> well done!
22:11:54 × AlexZenon quits (~alzenon@94.233.241.57) (Ping timeout: 252 seconds)
22:13:13 opticblast joins (~Thunderbi@172.58.82.193)
22:13:37 <voidzero> thank you so much!
22:13:41 × opticblast quits (~Thunderbi@172.58.82.193) (Client Quit)
22:13:49 <EvanR> that's the most inefficient string of multiplications ever
22:14:09 <voidzero> I don't have a professor but I'm really glad you guys exist <3
22:15:06 × pagnol quits (~user@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 255 seconds)
22:15:38 <voidzero> graybeard sysadmin finally taking the time to learn a proper programming language
22:16:22 <voidzero> the other day i worked out a fibonacci function and did this together with my 7 year old son
22:16:34 <voidzero> I'll save the foldl until later though :-)
22:17:04 <voidzero> EvanR, indeed :)
22:17:37 <voidzero> I'm working through the book Haskell Programming From First Principles and am not allowing myself to skip exercises
22:17:51 <Jadesheit[m]> please teach your son haskell
22:18:24 <voidzero> you bet. It's a lot of fun
22:18:27 Alex_test joins (~al_test@94.233.241.57)
22:18:43 <Jadesheit[m]> I've heard from people who only learned functional languages and not imperative languages, and I'd love to see what it would turn out to be
22:18:46 <Jadesheit[m]> have fun :F
22:18:53 <Jadesheit[m]> * have fun :D
22:19:32 AlexZenon joins (~alzenon@94.233.241.57)
22:19:43 <voidzero> My only other skill is with zsh scripting. I wrote some cool scripts. There is a lot of similarity between piping commands on the shell, and haskell.
22:19:58 <voidzero> xmonad was fun to figure out to the point where i managed to get a working config file
22:20:09 <Jadesheit[m]> voidzero: indeed yeah!
22:21:20 <voidzero> My functional programming interest first got piqued when I wrote a 24h audio stream in the Liquidsoap language (https://liquidsoap.info/)
22:21:52 <Jadesheit[m]> never heard of that haha
22:21:53 <voidzero> it streams audio from a filelist and live hosts can connect to it to stream liveshows
22:22:01 <Jadesheit[m]> gotta take a look
22:22:09 <voidzero> https://github.com/NoAgenda/noagendastream
22:22:23 <geekosaur> fwiw you'll find that Puppet is pretty FP oriented
22:22:50 <geekosaur> to the extent that it's highly declarative
22:23:13 <voidzero> it is? I'm busy moving my stuff over to NixOS. Puppet, I know that from many years ago. Should check it out again.
22:24:22 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 252 seconds)
22:24:35 × j4cc3b quits (~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 246 seconds)
22:27:40 <Reinhilde> "noagenda" has an agenda.
22:30:45 <voidzero> my only interest is to keep the boat afloat, and content wise that's all off topic anyway
22:30:56 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
22:30:58 <Reinhilde> eoe
22:34:27 thegeekinside joins (~thegeekin@189.128.148.159)
22:36:21 mc47 joins (~mc47@xmonad/TheMC47)
22:37:37 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
22:38:24 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
22:41:21 drvitek joins (~drvitek@2601:85:c300:7940:6d22:5284:fc40:3019)
22:41:51 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
22:44:23 fizbin joins (~fizbin@user/fizbin)
22:46:10 × talismanick quits (~talismani@76.133.152.122) (Remote host closed the connection)
22:53:47 × trev quits (~trev@user/trev) (Remote host closed the connection)
22:54:58 talismanick joins (~talismani@76.133.152.122)
22:56:46 quazimodo joins (~quazimodo@122-199-39-221.ip4.superloop.com)
23:02:24 pony is now known as smol-hors
23:03:47 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
23:06:42 fizbin_ joins (~fizbin@user/fizbin)
23:07:00 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
23:07:39 × fizbin quits (~fizbin@user/fizbin) (Ping timeout: 260 seconds)
23:19:57 × beefbambi quits (~beefbambi@183.82.30.144) (Ping timeout: 256 seconds)
23:20:16 beefbambi joins (~beefbambi@183.82.30.144)
23:20:17 × unit73e quits (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Ping timeout: 246 seconds)
23:20:28 × ubert quits (~Thunderbi@p200300ecdf264e7e72c65d11ee5c445f.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
23:20:29 ubert1 joins (~Thunderbi@p200300ecdf264e518eb9d3d0ff313a22.dip0.t-ipconnect.de)
23:22:46 ubert1 is now known as ubert
23:37:24 × mikoto-chan quits (~mikoto-ch@85-76-117-48-nat.elisa-mobile.fi) (Ping timeout: 260 seconds)
23:38:35 × kenaryn quits (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving)
23:38:47 × Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)
23:41:25 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
23:43:23 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
23:44:23 × manwithluck quits (~manwithlu@2a09:bac1:5bc0:20::49:125) (Ping timeout: 260 seconds)
23:46:05 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:47:06 ddellacosta joins (~ddellacos@89.45.224.220)
23:49:23 × beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
23:49:33 beefbambi joins (~beefbambi@183.82.30.144)
23:56:46 × Red_Swan quits (~jared@174-23-134-43.slkc.qwest.net) (Ping timeout: 252 seconds)
23:57:37 Red_Swan joins (~jared@174-23-134-43.slkc.qwest.net)

All times are in UTC on 2022-12-19.