Home liberachat/#haskell: Logs Calendar

Logs on 2023-09-12 (liberachat/#haskell)

00:00:29 × arahael quits (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 245 seconds)
00:03:21 pyooque joins (~puke@user/puke)
00:03:21 × puke quits (~puke@user/puke) (Killed (mercury.libera.chat (Nickname regained by services)))
00:03:21 pyooque is now known as puke
00:03:28 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 252 seconds)
00:04:49 merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl)
00:09:32 × merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 255 seconds)
00:12:15 aaronv joins (~aaronv@user/aaronv)
00:14:04 × hueso quits (~root@user/hueso) (Quit: hueso)
00:16:14 sm joins (~sm@plaintextaccounting/sm)
00:18:09 hueso joins (~root@user/hueso)
00:20:29 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 245 seconds)
00:29:20 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 255 seconds)
00:32:45 arahael joins (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
00:33:18 sm joins (~sm@plaintextaccounting/sm)
00:33:41 ystael joins (~ystael@user/ystael)
00:37:26 × arahael quits (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 255 seconds)
00:37:34 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 252 seconds)
00:39:02 yosef` joins (~yosef`@user/yosef/x-2947716)
00:51:53 tcard_ joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
00:52:37 Sciencentistguy8 joins (~sciencent@hacksoc/ordinary-member)
00:53:13 × dsal quits (sid13060@id-13060.lymington.irccloud.com) (Ping timeout: 240 seconds)
00:54:13 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Ping timeout: 240 seconds)
00:54:32 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 255 seconds)
00:54:32 Sciencentistguy8 is now known as Sciencentistguy
00:55:16 migas8 joins (~migas@astra4961.startdedicated.net)
00:55:27 dsal joins (sid13060@id-13060.lymington.irccloud.com)
00:55:54 mhatta_ joins (~mhatta@www21123ui.sakura.ne.jp)
00:56:04 darksatanic joins (~darkling@2001-ba8-1f1-f0e6-0-0-0-2.autov6rev.bitfolk.space)
00:56:25 × tcard_ quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection)
00:56:25 tcard_ joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
00:56:25 × migas quits (~migas@astra4961.startdedicated.net) (Quit: Ping timeout (120 seconds))
00:56:25 × nyc quits (~nyc@2603-7000-a106-2fb5-0000-0000-0000-1f21.res6.spectrum.com) (Ping timeout: 246 seconds)
00:56:25 nyc joins (~nyc@2603-7000-a106-2fb5-0000-0000-0000-1f21.res6.spectrum.com)
00:56:26 × glider quits (~glider@user/glider) (Quit: ZNC - https://znc.in)
00:56:26 × remmie quits (ianremsen@tilde.team) (Remote host closed the connection)
00:56:26 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:56:26 migas8 is now known as migas
00:56:27 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:56:27 wroathe joins (~wroathe@user/wroathe)
00:57:35 remmie joins (ianremsen@tilde.team)
00:57:41 × shapr quits (~user@75-172-29-107.tukw.qwest.net) (Ping timeout: 255 seconds)
00:58:23 × mhatta quits (~mhatta@www21123ui.sakura.ne.jp) (Ping timeout: 246 seconds)
00:58:23 × darkling quits (~darkling@savella.carfax.org.uk) (Ping timeout: 246 seconds)
00:58:23 × lyxia quits (~lyxia@poisson.chat) (Ping timeout: 246 seconds)
01:00:59 <Inst> What are the chances that there's actually a Haskell codebase using this?
01:01:01 <Inst> https://hackage.haskell.org/package/base-4.18.0.0/docs/Control-Exception.html#t:TypeError
01:03:35 × yosef` quits (~yosef`@user/yosef/x-2947716) (Quit: Client closed)
01:03:44 <Inst> I mean you have NRI prelude on XStrict, so there has to be someone using -fdefer-type-errors
01:05:17 × brettgilio quits (a35ba67324@2604:bf00:561:2000::260) (Remote host closed the connection)
01:06:32 <geekosaur> generally it's used by IDEs, so I'd look at HLS
01:07:25 sm joins (~sm@plaintextaccounting/sm)
01:07:35 × jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Ping timeout: 255 seconds)
01:08:42 <EvanR> -fdefer-type-errors is handy if you want to run your program before the entire thing is compiling
01:09:11 <EvanR> like, if each file is a room, and you promise not to go in the rooms that aren't compiling yet
01:10:30 jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
01:11:30 <Axman6> it'd be appropriate to use if you were using Data.Dynamic and you messed up
01:12:59 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 245 seconds)
01:13:29 <Inst> so maybe IHP?
01:13:33 <Inst> since they have hot reloading?
01:20:38 <Axman6> perhaps
01:21:53 <EvanR> hold the hot reloading until the changes type check, imo
01:22:16 <Axman6> YOLO
01:22:55 <Axman6> just coerce the Dynamic and blame the user when they get it wrong
01:22:59 <jackdk> type changing + hot reloading is a real hard problem. Not sure if IHP even attempts it
01:23:45 <Axman6> luckily we can do things like not reload a Wai application which has a concrete type, so all the other types can change
01:23:49 <Axman6> hot*
01:24:09 <EvanR> not reloading
01:24:23 <Axman6> F4n't
01:24:31 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
01:24:37 <Axman6> is it F4? I dunno, never really used windows
01:24:39 <geekosaur> "hot or not?" 😛
01:24:54 <Inst> f4 is search, iirc, f5 is reload
01:24:56 <Axman6> that's actually a great name for a hot code reloading framework XD
01:25:03 <Axman6> dang, so close
01:25:16 <Axman6> HsHotOrNot
01:25:26 <Inst> c4 is a great name for a package manager, but in a Haskell context...
01:25:37 <Axman6> (HotOrNotHs might get you thrown in jail)
01:25:45 <geekosaur> sounds like the opposite of a package manager to me
01:26:01 <geekosaur> deconstruction manager maybe
01:26:08 <Axman6> unzipping a tarball is definitely exploding a package
01:26:50 shapr joins (~user@c-67-160-55-153.hsd1.wa.comcast.net)
01:27:18 <Axman6> the package I've always wanted to make was a combination of Grenade, the deep learning package, and Accelerate for running it on the GUP - the name would of course be RPG
01:27:24 <Inst> why am i using (\cases ... ) args?
01:27:40 <Inst> did anyone fix accelerate?
01:27:42 <Axman6> I tried to do it once but realised I don't know enough about either package to pull it off :'(
01:27:46 sm joins (~sm@plaintextaccounting/sm)
01:28:27 <Inst> this doesn't work :(
01:28:27 <Inst> cases localFile remoteFile internalFile of
01:28:53 <Axman6> why not?
01:29:04 <Axman6> GPU*
01:29:30 <Inst> ummm, afaik cases isn't a thing, right? but \cases is?
01:29:49 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds)
01:31:59 <int-e> if you want to bind a variable called 'cases'
01:32:34 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 252 seconds)
01:32:50 <int-e> Oh, \cases does exist but is new in 9.4.1.
01:35:24 <int-e> You can always use `case (v1, v2, v3) of ...` in an expression context. But that doesn't really work in the lambda-case niche; you're basically left with the unsugared \v1 v2 v3 -> case (v1, v2, v3) of ... instead.
01:38:38 × xff0x quits (~xff0x@2405:6580:b080:900:3c1b:8aaf:c8cf:6421) (Ping timeout: 255 seconds)
01:39:00 Axman6 was secretly hoping jle` would pick up grenade mantenence after his excellent series on singletons basically built the exact same library from scratch
01:39:25 <Axman6> s/singletons/dependent types
01:41:57 lyxia joins (~lyxia@poisson.chat)
01:42:35 <Inst> yeah, but I wanted to avoid the tupled syntax
01:47:34 × otto_s quits (~user@p5de2fddf.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
01:48:24 × ystael quits (~ystael@user/ystael) (Ping timeout: 245 seconds)
01:48:31 <int-e> > case (,) 1 2 of (,) x y -> (x, y)
01:48:32 <lambdabot> (1,2)
01:48:54 × iteratee quits (~kyle@162.218.222.207) (Ping timeout: 255 seconds)
01:49:18 otto_s joins (~user@p5de2f28b.dip0.t-ipconnect.de)
01:52:34 <Inst> whoa, thanks
01:52:47 <Inst> far, far from ideal, but big improvement
01:53:09 merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl)
01:57:09 lottaquestions joins (~nick@2607:fa49:503d:b200:fe78:84a4:cfad:8849)
01:57:34 × merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 245 seconds)
01:59:08 × lottaquestions_ quits (~nick@2607:fa49:503d:b200:2663:b169:e6fe:3201) (Ping timeout: 248 seconds)
02:01:33 sm joins (~sm@plaintextaccounting/sm)
02:03:16 × lottaquestions quits (~nick@2607:fa49:503d:b200:fe78:84a4:cfad:8849) (Read error: Connection reset by peer)
02:03:41 lottaquestions joins (~nick@2607:fa49:503d:b200:fe78:84a4:cfad:8849)
02:06:40 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 252 seconds)
02:07:05 yosef` joins (~yosef`@user/yosef/x-2947716)
02:12:59 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 245 seconds)
02:14:50 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
02:16:53 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
02:21:41 × shapr quits (~user@c-67-160-55-153.hsd1.wa.comcast.net) (Ping timeout: 246 seconds)
02:23:10 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 252 seconds)
02:23:49 brettgilio joins (~brettgili@2001:19f0:5c01:364:5400:4ff:fe92:8142)
02:25:21 × Typedfern quits (~Typedfern@81.red-83-37-27.dynamicip.rima-tde.net) (Ping timeout: 246 seconds)
02:25:43 Typedfern joins (~Typedfern@81.red-83-37-27.dynamicip.rima-tde.net)
02:26:11 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:26:49 × AWizzArd quits (~code@gehrels.uberspace.de) (Server closed connection)
02:26:56 AWizzArd joins (~code@gehrels.uberspace.de)
02:26:57 × yosef` quits (~yosef`@user/yosef/x-2947716) (Quit: Client closed)
02:27:49 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
02:28:10 Inst joins (~Inst@120.244.192.250)
02:32:09 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 245 seconds)
02:33:15 × mjacob quits (~mjacob@adrastea.uberspace.de) (Server closed connection)
02:33:24 mjacob joins (~mjacob@adrastea.uberspace.de)
02:35:45 sm joins (~sm@plaintextaccounting/sm)
02:40:29 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 245 seconds)
02:42:34 arahael joins (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
02:47:14 × arahael quits (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 246 seconds)
02:47:56 × td_ quits (~td@i53870901.versanet.de) (Ping timeout: 255 seconds)
02:49:45 td_ joins (~td@i53870916.versanet.de)
02:51:36 × mysl quits (~mysl@user/mysl) (Ping timeout: 246 seconds)
02:52:00 mysl joins (~mysl@user/mysl)
02:52:35 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
02:55:12 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:2861:bb9d:e03c:c139) (Remote host closed the connection)
02:55:16 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:55:16 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:55:16 finn_elija is now known as FinnElija
02:55:32 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b93b:6165:58a2:3e5e)
02:59:30 <Inst> you can't get haddock comments into where clauses, right?
03:10:58 aforemny_ joins (~aforemny@i59F516DD.versanet.de)
03:11:20 × aforemny quits (~aforemny@i59F516FF.versanet.de) (Ping timeout: 255 seconds)
03:12:56 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
03:13:48 <glguy> I wouldn't think so
03:17:37 jmdaemon joins (~jmdaemon@user/jmdaemon)
03:17:48 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
03:19:26 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
03:22:08 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 255 seconds)
03:25:18 × jargon quits (~jargon@184.101.67.95) (Remote host closed the connection)
03:29:20 × aaronv quits (~aaronv@user/aaronv) (Ping timeout: 255 seconds)
03:37:49 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
03:39:24 ornx joins (~ornx@user/ornxka)
03:39:24 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 246 seconds)
03:40:30 aaronv joins (~aaronv@user/aaronv)
03:40:44 <ornx> okay, be honest with me, how many times would you all estimate that you have implemented peano numbers in some form
03:41:16 merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl)
03:41:54 <jackdk> ornx: `count = S count` times
03:42:14 <ornx> lmao
03:42:25 <ornx> it certainly feels like that sometimes
03:46:07 <Axman6> Not that often, mostly at the type level
03:47:54 <jackdk> And even then we have Nat now
03:48:35 <Axman6> yeah - and the plugin that Clash uses to make dealing with them sane
03:54:05 × _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Ping timeout: 255 seconds)
03:55:06 × phma quits (~phma@host-67-44-208-5.hnremote.net) (Read error: Connection reset by peer)
03:55:54 phma joins (~phma@2001:5b0:210f:7168:cc95:7518:e3ef:e00e)
03:58:44 <Inst> honestly peano arithmetic is the hello world of proof languages
04:00:00 <segfaultfizzbuzz> https://www.twitch.tv/trumporbiden2024 is why computers were invented
04:05:30 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
04:13:11 <Inst> in haskell-land, when is it a good idea to stop adding features to your library and just ship?
04:13:33 <Inst> right now I'm thinking about trying to figure out how to check if i have read-write permissions on files in a directory
04:14:28 <Inst> and completely rebuild my result for what should be a simple "check if file exists, satisfies hash, deploy into it locally or from net, etc"
04:14:44 × merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 246 seconds)
04:14:46 <monochrom> ornx: Does it count if I use parametricity to prove that (forall a. a -> (a -> a) -> a) is in bijection with the natural numbers? http://www.vex.net/~trebla/haskell/abs-type-param.html#example-a.-aaaa
04:16:08 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 246 seconds)
04:18:24 × malte quits (~malte@mal.tc) (Ping timeout: 246 seconds)
04:21:15 <Inst> hmmm, not sure if this is interesting, but let's say I'm executing a bunch of IO actions and wish to fold the results together
04:21:37 <Inst> i guess we're back to "Haskell sucks at variadic functions"?
04:22:51 <mauke> f <$> a <*> b <*> c <*>
04:22:57 <mauke> d
04:23:08 <Inst> no, but f is specific to a number of arguments
04:23:25 <Inst> i think sequence might be able to do it, i.e, [IO [a]]
04:23:43 <[Leary]> We have `instance Monoid a => Monoid (IO a)`. And even if that weren't the case you could use `Ap`.
04:24:52 <Inst> yeah, okay, this would work better, Seq to avoid append penalties with lists / vector
04:25:32 <Inst> could just fold [IO (Seq a)]?
04:25:44 <Inst> as in, Data.Foldable.Fold?
04:26:32 <Inst> but even if monoid is empty, i'll still get the effects out, right?
04:26:52 × tcard_ quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving)
04:27:08 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
04:27:45 <Inst> foldMap' id, it seems
04:28:29 _d0t joins (~{-d0t-}@user/-d0t-/x-7915216)
04:31:03 arahael joins (~arahael@1.145.115.51)
04:31:08 malte joins (~malte@mal.tc)
04:33:48 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
04:45:08 × pjlsergeant__ quits (sid143467@id-143467.hampstead.irccloud.com) (Server closed connection)
04:45:22 pjlsergeant__ joins (sid143467@id-143467.hampstead.irccloud.com)
04:46:03 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 246 seconds)
04:48:00 <Axman6> that's just fold isn't it? is there a fold'?
04:48:05 <Axman6> @hoogle fold'
04:48:05 <lambdabot> Pipes.Prelude fold' :: Monad m => (x -> a -> x) -> x -> (x -> b) -> Producer a m r -> m (b, r)
04:48:05 <lambdabot> Data.HashPSQ fold' :: (k -> p -> v -> a -> a) -> a -> HashPSQ k p v -> a
04:48:05 <lambdabot> Data.IntPSQ fold' :: (Int -> p -> v -> a -> a) -> a -> IntPSQ p v -> a
04:51:26 shapr joins (~user@c-67-160-55-153.hsd1.wa.comcast.net)
04:51:58 <Inst> tbh i'm trying to run through a bunch of exception-throwing IO actions, catch them, convert them to my own exception type, then collate the exceptions and report them
04:52:27 <Axman6> IIRC lens has some nice stuff for managing and converting exceptions
04:52:36 <Inst> jeez
04:53:10 <Inst> https://hackage.haskell.org/package/lens-5.2.3/docs/Control-Exception-Lens.html
04:56:17 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
04:59:47 <Inst> huh, interesting, i can implement the short-circuiting behavior via <|> from alternative
05:02:21 × litharge quits (litharge@libera/bot/litharge) (*.net *.split)
05:02:21 × pjlsergeant__ quits (sid143467@id-143467.hampstead.irccloud.com) (*.net *.split)
05:02:21 × malte quits (~malte@mal.tc) (*.net *.split)
05:02:21 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b93b:6165:58a2:3e5e) (*.net *.split)
05:02:21 × td_ quits (~td@i53870916.versanet.de) (*.net *.split)
05:02:21 × AWizzArd quits (~code@gehrels.uberspace.de) (*.net *.split)
05:02:21 × lyxia quits (~lyxia@poisson.chat) (*.net *.split)
05:02:21 × remmie quits (ianremsen@tilde.team) (*.net *.split)
05:02:21 × darksatanic quits (~darkling@2001-ba8-1f1-f0e6-0-0-0-2.autov6rev.bitfolk.space) (*.net *.split)
05:02:22 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (*.net *.split)
05:02:22 × puke quits (~puke@user/puke) (*.net *.split)
05:02:22 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (*.net *.split)
05:02:22 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (*.net *.split)
05:02:22 × wz1000 quits (~zubin@static.11.113.47.78.clients.your-server.de) (*.net *.split)
05:02:22 × pointlessslippe1 quits (~pointless@212.82.82.3) (*.net *.split)
05:02:22 × masterbuilder quits (~masterbui@user/masterbuilder) (*.net *.split)
05:02:22 × Logio quits (em@kapsi.fi) (*.net *.split)
05:02:22 × notzmv quits (~zmv@user/notzmv) (*.net *.split)
05:02:23 × NinjaTrappeur quits (~ninja@about/aquilenet/vodoo/NinjaTrappeur) (*.net *.split)
05:02:23 × xelxebar quits (~xelxebar@wilsonb.com) (*.net *.split)
05:02:23 × drdo quits (~drdo@bl8-38-186.dsl.telepac.pt) (*.net *.split)
05:02:23 × dcoutts quits (~duncan@82-69-94-207.dsl.in-addr.zen.co.uk) (*.net *.split)
05:02:23 × kimiamania4 quits (~67afdc47@user/kimiamania) (*.net *.split)
05:02:23 × seeg123456 quits (~seeg12345@64.176.64.83) (*.net *.split)
05:02:23 × dsrt^ quits (~cd@c-66-56-7-24.hsd1.ga.comcast.net) (*.net *.split)
05:02:24 × RMSBach quits (~guygastin@137.184.131.156) (*.net *.split)
05:02:24 × Taneb quits (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) (*.net *.split)
05:02:24 × ursa-major quits (~ursa-majo@static-198-44-128-154.cust.tzulo.com) (*.net *.split)
05:02:24 × hexeme quits (~hexeme@user/hexeme) (*.net *.split)
05:02:24 × _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (*.net *.split)
05:02:24 × phma quits (~phma@2001:5b0:210f:7168:cc95:7518:e3ef:e00e) (*.net *.split)
05:02:24 × jmdaemon quits (~jmdaemon@user/jmdaemon) (*.net *.split)
05:02:24 × mysl quits (~mysl@user/mysl) (*.net *.split)
05:02:24 × mjacob quits (~mjacob@adrastea.uberspace.de) (*.net *.split)
05:02:24 × Inst quits (~Inst@120.244.192.250) (*.net *.split)
05:02:24 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (*.net *.split)
05:02:24 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (*.net *.split)
05:02:24 × brettgilio quits (~brettgili@2001:19f0:5c01:364:5400:4ff:fe92:8142) (*.net *.split)
05:02:24 × mhatta_ quits (~mhatta@www21123ui.sakura.ne.jp) (*.net *.split)
05:02:24 × dsal quits (sid13060@id-13060.lymington.irccloud.com) (*.net *.split)
05:02:25 × migas quits (~migas@astra4961.startdedicated.net) (*.net *.split)
05:02:25 × hueso quits (~root@user/hueso) (*.net *.split)
05:02:25 × jjhoo quits (jahakala@user/jjhoo) (*.net *.split)
05:02:25 × son0p quits (~ff@186.121.39.74) (*.net *.split)
05:02:25 × bgamari quits (~bgamari@70.16.98.14) (*.net *.split)
05:02:25 × hughjfch1 quits (~hughjfche@vmi556545.contaboserver.net) (*.net *.split)
05:02:26 × cptaffe quits (~ZNC@2600:1700:f08:111f::18e7) (*.net *.split)
05:02:26 × xmachina quits (~xmachina@modemcable048.127-56-74.mc.videotron.ca) (*.net *.split)
05:02:26 × dispater quits (~dispater@mail.brprice.uk) (*.net *.split)
05:02:26 × woffs quits (3cd46299b2@woffs.de) (*.net *.split)
05:02:26 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (*.net *.split)
05:02:26 × YuutaW quits (~YuutaW@mail.yuuta.moe) (*.net *.split)
05:02:26 × Hafydd quits (~Hafydd@user/hafydd) (*.net *.split)
05:02:26 × sudden quits (~cat@user/sudden) (*.net *.split)
05:02:26 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (*.net *.split)
05:02:26 × m1dnight quits (~christoph@78-22-4-67.access.telenet.be) (*.net *.split)
05:02:26 × Athas quits (athas@sigkill.dk) (*.net *.split)
05:02:26 × Moyst_ quits (~moyst@user/moyst) (*.net *.split)
05:02:27 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (*.net *.split)
05:02:27 × lawt quits (~lawt@2603:c024:c008:d000:5b4f:1ef2:fed2:ef3d) (*.net *.split)
05:02:27 × geekosaur quits (~geekosaur@xmonad/geekosaur) (*.net *.split)
05:02:27 × arahael quits (~arahael@1.145.115.51) (*.net *.split)
05:02:27 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (*.net *.split)
05:02:27 × aforemny_ quits (~aforemny@i59F516DD.versanet.de) (*.net *.split)
05:02:27 × Typedfern quits (~Typedfern@81.red-83-37-27.dynamicip.rima-tde.net) (*.net *.split)
05:02:27 × lottaquestions quits (~nick@2607:fa49:503d:b200:fe78:84a4:cfad:8849) (*.net *.split)
05:02:28 × otto_s quits (~user@p5de2f28b.dip0.t-ipconnect.de) (*.net *.split)
05:02:28 × jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (*.net *.split)
05:02:28 × Sgeo quits (~Sgeo@user/sgeo) (*.net *.split)
05:02:28 × sajith quits (~sajith@user/sajith) (*.net *.split)
05:02:28 × nonzen quits (~nonzen@user/nonzen) (*.net *.split)
05:02:28 × pavonia quits (~user@user/siracusa) (*.net *.split)
05:02:28 × vglfr quits (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (*.net *.split)
05:02:29 × orcus quits (~orcus@mail.brprice.uk) (*.net *.split)
05:02:29 × zer0bitz_ quits (~zer0bitz@user/zer0bitz) (*.net *.split)
05:02:29 × Pent quits (sid313808@id-313808.lymington.irccloud.com) (*.net *.split)
05:02:29 × tnks quits (sid412124@id-412124.helmsley.irccloud.com) (*.net *.split)
05:02:29 × p3n quits (~p3n@217.198.124.246) (*.net *.split)
05:02:29 × ubert quits (~Thunderbi@77.119.175.117.wireless.dyn.drei.com) (*.net *.split)
05:02:29 × acertain_ quits (sid470584@id-470584.hampstead.irccloud.com) (*.net *.split)
05:02:30 × actioninja quits (~actioninj@user/actioninja) (*.net *.split)
05:02:30 × dminuoso quits (~dminuoso@user/dminuoso) (*.net *.split)
05:02:30 × haskellbridge quits (~haskellbr@069-135-003-034.biz.spectrum.com) (*.net *.split)
05:02:30 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (*.net *.split)
05:02:31 × EsoAlgo81 quits (~EsoAlgo@129.146.136.145) (*.net *.split)
05:02:31 × taktoa[c] quits (sid282096@id-282096.tinside.irccloud.com) (*.net *.split)
05:02:31 × habib quits (~habib@91.196.222.95) (*.net *.split)
05:02:31 × robbert-vdh quits (~robbert@robbertvanderhelm.nl) (*.net *.split)
05:02:31 × tstat quits (~tstat@user/tstat) (*.net *.split)
05:02:31 × Pixi quits (~Pixi@user/pixi) (*.net *.split)
05:02:31 × barrucadu quits (~barrucadu@carcosa.barrucadu.co.uk) (*.net *.split)
05:02:31 × vgtw quits (~vgtw@user/vgtw) (*.net *.split)
05:02:32 × shachaf quits (~shachaf@user/shachaf) (*.net *.split)
05:02:32 × mxs quits (~mxs@user/mxs) (*.net *.split)
05:02:32 × Franciman quits (~Franciman@mx1.fracta.dev) (*.net *.split)
05:02:32 × telser quits (~quassel@user/telser) (*.net *.split)
05:02:32 × cawfee quits (~root@2406:3003:2077:2758::babe) (*.net *.split)
05:02:32 × bionade24 quits (~bionade24@2a03:4000:33:45b::1) (*.net *.split)
05:02:32 × gaze___ quits (sid387101@id-387101.helmsley.irccloud.com) (*.net *.split)
05:02:33 × shawwwn quits (sid6132@id-6132.helmsley.irccloud.com) (*.net *.split)
05:02:33 × joeyh quits (~joeyh@kitenet.net) (*.net *.split)
05:02:33 × Nikopol quits (nikopol@user/astrorigin) (*.net *.split)
05:02:33 × aspen quits (sid449115@helmsley.irccloud.com) (*.net *.split)
05:02:33 × farn quits (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (*.net *.split)
05:02:33 × immae quits (~immae@2a01:4f8:141:53e7::) (*.net *.split)
05:02:33 × liskin quits (~liskin@xmonad/liskin) (*.net *.split)
05:02:33 × img quits (~img@user/img) (*.net *.split)
05:02:33 × thelounge793 quits (~thelounge@2a05:f480:1400:24b2:5400:4ff:fe76:a8f3) (*.net *.split)
05:02:33 × edwtjo quits (~edwtjo@fsf/member/edwtjo) (*.net *.split)
05:02:33 × micro quits (~micro@user/micro) (*.net *.split)
05:02:34 × opqdonut quits (opqdonut@pseudo.fixme.fi) (*.net *.split)
05:02:34 × nadja quits (~dequbed@banana-new.kilobyte22.de) (*.net *.split)
05:02:34 × sweater1 quits (~sweater@206.81.18.26) (*.net *.split)
05:02:34 × kaskal quits (~kaskal@213-147-167-98.nat.highway.webapn.at) (*.net *.split)
05:02:34 × heath3 quits (~heath@user/heath) (*.net *.split)
05:02:35 × lav quits (~pi@wikipedia/maddy-from-celeste) (*.net *.split)
05:02:35 × chymera quits (~chymera@ns1000526.ip-51-81-46.us) (*.net *.split)
05:02:35 × Vajb quits (~Vajb@2001:999:500:7771:18aa:c4e5:e7a9:f44b) (*.net *.split)
05:02:35 × stefan-_ quits (~cri@42dots.de) (*.net *.split)
05:02:35 × oats quits (~thomas@user/oats) (*.net *.split)
05:02:35 × infinity0 quits (~infinity0@pwned.gg) (*.net *.split)
05:02:35 × Katarushisu1 quits (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (*.net *.split)
05:02:35 × zero quits (~z@user/zero) (*.net *.split)
05:02:35 × g00gler quits (uid125351@id-125351.uxbridge.irccloud.com) (*.net *.split)
05:02:36 × meejah quits (~meejah@rutas.meejah.ca) (*.net *.split)
05:02:36 × Adeon quits (sid418992@id-418992.lymington.irccloud.com) (*.net *.split)
05:02:36 × GoldsteinQ quits (~goldstein@goldstein.rs) (*.net *.split)
05:02:36 × thaumavorio quits (~thaumavor@thaumavor.io) (*.net *.split)
05:02:36 × Unode quits (~Unode@fg-ext-220.embl.de) (*.net *.split)
05:02:36 × cyphase quits (~cyphase@user/cyphase) (*.net *.split)
05:02:36 × it_ quits (~quassel@v2202212189510211193.supersrv.de) (*.net *.split)
05:02:36 × haveo quits (~haveo@sl35.iuwt.fr) (*.net *.split)
05:02:37 × edmundnoble_ quits (sid229620@id-229620.helmsley.irccloud.com) (*.net *.split)
05:02:37 × lbseale quits (~quassel@user/ep1ctetus) (*.net *.split)
05:02:37 × loonycyborg quits (loonycybor@wesnoth/developer/loonycyborg) (*.net *.split)
05:02:37 × Clint quits (~Clint@user/clint) (*.net *.split)
05:02:37 × justache quits (~justache@user/justache) (*.net *.split)
05:02:38 × dagit quits (~dagit@2001:558:6025:38:71c6:9d58:7252:8976) (*.net *.split)
05:02:38 × ridcully_ quits (~ridcully@p508ac5fc.dip0.t-ipconnect.de) (*.net *.split)
05:02:38 × Nixkernal quits (~Nixkernal@119.4.193.178.dynamic.wline.res.cust.swisscom.ch) (*.net *.split)
05:02:38 × aku quits (~aku@65.108.245.241) (*.net *.split)
05:02:38 × Buggys quits (Buggys@shelltalk.net) (*.net *.split)
05:02:38 × kritzefitz quits (~kritzefit@debian/kritzefitz) (*.net *.split)
05:02:38 × whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (*.net *.split)
05:02:38 × rubin55 quits (sid175221@id-175221.hampstead.irccloud.com) (*.net *.split)
05:02:38 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (*.net *.split)
05:02:38 × shapr quits (~user@c-67-160-55-153.hsd1.wa.comcast.net) (*.net *.split)
05:02:38 × ft quits (~ft@p508dbaa9.dip0.t-ipconnect.de) (*.net *.split)
05:02:38 × dumptruckman quits (~dumptruck@143-42-184-47.ip.linodeusercontent.com) (*.net *.split)
05:02:39 × haskl quits (~haskl@user/haskl) (*.net *.split)
05:02:39 × hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (*.net *.split)
05:02:39 × Fischmiep quits (~Fischmiep@user/Fischmiep) (*.net *.split)
05:02:39 × V quits (~v@ircpuzzles/2022/april/winner/V) (*.net *.split)
05:02:39 × sefidel quits (~sefidel@user/sefidel) (*.net *.split)
05:02:40 × caubert quits (~caubert@user/caubert) (*.net *.split)
05:02:40 × [Leary] quits (~Leary]@user/Leary/x-0910699) (*.net *.split)
05:02:40 × erisco quits (~erisco@d24-141-66-165.home.cgocable.net) (*.net *.split)
05:02:40 × mcfrdy quits (~mcfrdy@user/mcfrdy) (*.net *.split)
05:02:40 × forell quits (~forell@user/forell) (*.net *.split)
05:02:40 × Vq quits (~vq@90-225-115-195-no122.tbcn.telia.com) (*.net *.split)
05:02:40 × acidsys quits (~crameleon@openSUSE/member/crameleon) (*.net *.split)
05:02:41 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (*.net *.split)
05:02:41 × mht-wtf quits (~mht@2a03:b0c0:3:e0::1e2:c001) (*.net *.split)
05:02:41 × kawzeg_ quits (kawzeg@2a01:7e01::f03c:92ff:fee2:ec34) (*.net *.split)
05:02:41 × xnbya quits (~xnbya@2a01:4f8:c17:cbdd::1) (*.net *.split)
05:02:41 × sgarcia_ quits (sgarcia@swarm.znchost.com) (*.net *.split)
05:02:41 × hamishmack quits (sid389057@id-389057.hampstead.irccloud.com) (*.net *.split)
05:02:41 × T_S____ quits (sid501726@id-501726.uxbridge.irccloud.com) (*.net *.split)
05:02:42 × Rembane quits (~Rembane@li346-36.members.linode.com) (*.net *.split)
05:02:42 × bastelfreak quits (bastelfrea@libera/staff/VoxPupuli.bastelfreak) (*.net *.split)
05:02:42 × dfg quits (~dfg@user/dfg) (*.net *.split)
05:02:42 × gawen quits (~gawen@user/gawen) (*.net *.split)
05:02:42 × s4msung quits (0RQA7T2IW8@user/s4msung) (*.net *.split)
05:02:42 × rachelambda quits (~rachelamb@78-67-128-99-no247.tbcn.telia.com) (*.net *.split)
05:02:42 × connrs quits (~connrs@user/connrs) (*.net *.split)
05:02:42 × kaol quits (~kaol@94-237-42-30.nl-ams1.upcloud.host) (*.net *.split)
05:02:42 × gabiruh quits (~gabiruh@vps19177.publiccloud.com.br) (*.net *.split)
05:02:42 × gentauro quits (~gentauro@user/gentauro) (*.net *.split)
05:02:42 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (*.net *.split)
05:02:43 × cafkafk quits (~cafkafk@fsf/member/cafkafk) (*.net *.split)
05:02:43 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (*.net *.split)
05:02:43 × chexum quits (~quassel@gateway/tor-sasl/chexum) (*.net *.split)
05:02:43 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (*.net *.split)
05:02:43 × chiselfuse quits (~chiselfus@user/chiselfuse) (*.net *.split)
05:02:43 × califax quits (~califax@user/califx) (*.net *.split)
05:02:43 × ec quits (~ec@gateway/tor-sasl/ec) (*.net *.split)
05:02:43 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (*.net *.split)
05:02:43 × Noinia quits (~Frank@77-162-168-71.fixed.kpn.net) (*.net *.split)
05:02:43 × renegade quits (~renegade@bcdcac82.skybroadband.com) (*.net *.split)
05:02:44 × lambdap237 quits (~lambdap@static.167.190.119.168.clients.your-server.de) (*.net *.split)
05:02:44 × myme quits (~myme@2a01:799:d60:e400:523a:264f:abbd:410) (*.net *.split)
05:02:44 × Luj quits (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (*.net *.split)
05:02:44 × koolazer quits (~koo@user/koolazer) (*.net *.split)
05:02:45 × nckx quits (nckx@libera/staff/owl/nckx) (*.net *.split)
05:02:45 × EvanR quits (~EvanR@user/evanr) (*.net *.split)
05:02:45 × YoungFrog quits (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (*.net *.split)
05:02:45 × bjobjo quits (~bjobjo@user/bjobjo) (*.net *.split)
05:02:45 × Unhammer quits (~Unhammer@user/unhammer) (*.net *.split)
05:02:45 × snek quits (sid280155@id-280155.lymington.irccloud.com) (*.net *.split)
05:02:45 × tabemann_ quits (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) (*.net *.split)
05:02:45 × smalltalkman quits (uid545680@id-545680.hampstead.irccloud.com) (*.net *.split)
05:02:45 × Ekho quits (~Ekho@user/ekho) (*.net *.split)
05:02:45 × mankyKitty quits (sid31287@id-31287.helmsley.irccloud.com) (*.net *.split)
05:02:45 × jinsun quits (~jinsun@user/jinsun) (*.net *.split)
05:02:46 × xsarnik quits (xsarnik@lounge.fi.muni.cz) (*.net *.split)
05:02:46 × lightandlight quits (sid135476@id-135476.helmsley.irccloud.com) (*.net *.split)
05:02:46 × xstill_ quits (xstill@fimu/xstill) (*.net *.split)
05:02:46 × riatre quits (~quassel@2001:310:6000:f::5198:1) (*.net *.split)
05:02:46 × hsw quits (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) (*.net *.split)
05:02:46 × pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-46-67-70-100-114.dsl.bell.ca) (*.net *.split)
05:02:46 × monochrom quits (trebla@216.138.220.146) (*.net *.split)
05:02:46 × Me-me quits (~me-me@user/me-me) (*.net *.split)
05:02:46 × peutri quits (~peutri@bobo.desast.re) (*.net *.split)
05:02:46 × VioletJewel quits (~violet@user/violetjewel) (*.net *.split)
05:02:46 × cheater quits (~Username@user/cheater) (*.net *.split)
05:02:46 × CAT_S quits (apic@brezn3.muc.ccc.de) (*.net *.split)
05:02:47 × acro quits (~acro@user/acro) (*.net *.split)
05:02:47 × AlexNoo quits (~AlexNoo@178.34.160.172) (*.net *.split)
05:02:47 × superbil quits (~superbil@1-34-176-171.hinet-ip.hinet.net) (*.net *.split)
05:02:47 × conjunctive quits (sid433686@id-433686.helmsley.irccloud.com) (*.net *.split)
05:02:47 × neptun quits (neptun@2607:5300:60:5910:dcad:beff:feef:5bc) (*.net *.split)
05:02:47 × sand-witch quits (~m-mzmz6l@vmi833741.contaboserver.net) (*.net *.split)
05:02:48 × tomsmeding quits (~tomsmedin@static.21.109.88.23.clients.your-server.de) (*.net *.split)
05:02:48 × hugo quits (znc@verdigris.lysator.liu.se) (*.net *.split)
05:02:48 × institor quits (~henricus@user/institor) (*.net *.split)
05:02:48 × ringo___ quits (~ringo@157.230.117.128) (*.net *.split)
05:02:48 × mira quits (~aranea@wireguard/contributorcat/mira) (*.net *.split)
05:02:48 × user2 quits (~user@162.255.84.96) (*.net *.split)
05:02:48 × raoul quits (~raoul@95.179.203.88) (*.net *.split)
05:02:48 × lilata quits (~lilata@137.184.4.49) (*.net *.split)
05:02:49 × gabriel_sevecek quits (~gabriel@188-167-229-200.dynamic.chello.sk) (*.net *.split)
05:02:49 × Angelz quits (Angelz@Angelz.oddprotocol.org) (*.net *.split)
05:02:49 × Hooloovoo quits (~Hooloovoo@hax0rbana.org) (*.net *.split)
05:02:49 × DigitalKiwi quits (~kiwi@2604:a880:400:d0::1ca0:e001) (*.net *.split)
05:02:49 × krjt quits (~krjst@2604:a880:800:c1::16b:8001) (*.net *.split)
05:02:49 × sphynx quits (~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288) (*.net *.split)
05:02:50 × jmct quits (sid160793@id-160793.tinside.irccloud.com) (*.net *.split)
05:02:50 × buhman quits (sid411355@user/buhman) (*.net *.split)
05:02:50 × lally quits (sid388228@id-388228.uxbridge.irccloud.com) (*.net *.split)
05:02:50 × PotatoGim quits (sid99505@id-99505.lymington.irccloud.com) (*.net *.split)
05:02:50 × Jon quits (jon@dow.land) (*.net *.split)
05:02:50 × geekosaur[c] quits (sid609282@xmonad/geekosaur) (*.net *.split)
05:02:50 × chessai quits (sid225296@id-225296.lymington.irccloud.com) (*.net *.split)
05:02:50 × anderson quits (~anderson@user/anderson) (*.net *.split)
05:02:50 × dfordvm quits (~dfordivam@160.16.87.223.v6.sakura.ne.jp) (*.net *.split)
05:02:50 × minigrim0 quits (~minigrim0@2a01:4f9:6b:3416:68ba:8dff:fe58:a5ea) (*.net *.split)
05:02:50 × Fangs quits (sid141280@id-141280.hampstead.irccloud.com) (*.net *.split)
05:02:50 × tinwood quits (~tinwood@canonical/tinwood) (*.net *.split)
05:02:50 × amir quits (sid22336@user/amir) (*.net *.split)
05:02:50 × SanchayanMaity quits (sid478177@id-478177.hampstead.irccloud.com) (*.net *.split)
05:02:50 × defanor quits (~defanor@tart.uberspace.net) (*.net *.split)
05:02:50 × carter quits (sid14827@id-14827.helmsley.irccloud.com) (*.net *.split)
05:02:50 × delyan_ quits (sid523379@id-523379.hampstead.irccloud.com) (*.net *.split)
05:02:50 × edwardk quits (sid47016@haskell/developer/edwardk) (*.net *.split)
05:02:50 × S11001001 quits (sid42510@id-42510.ilkley.irccloud.com) (*.net *.split)
05:02:51 × ario quits (~ario@159.65.220.102) (*.net *.split)
05:02:51 × nisstyre quits (wes@user/nisstyre) (*.net *.split)
05:02:51 × wallymathieu quits (sid533252@id-533252.uxbridge.irccloud.com) (*.net *.split)
05:02:51 × degraafk quits (sid71464@id-71464.lymington.irccloud.com) (*.net *.split)
05:02:51 × yvan-sraka quits (sid419690@id-419690.lymington.irccloud.com) (*.net *.split)
05:02:51 × welterde quits (welterde@thinkbase.srv.welterde.de) (*.net *.split)
05:02:51 × vjoki quits (~vjoki@2a00:d880:3:1::fea1:9ae) (*.net *.split)
05:02:51 × PHO` quits (~pho@akari.cielonegro.org) (*.net *.split)
05:02:51 × MironZ quits (~MironZ@nat-infra.ehlab.uk) (*.net *.split)
05:02:51 × diagprov quits (sid348783@user/diagprov) (*.net *.split)
05:02:51 × ChanServ quits (ChanServ@services.libera.chat) (*.net *.split)
05:02:51 × natto quits (~natto@129.154.243.159) (*.net *.split)
05:02:51 × nek0 quits (~nek0@2a01:4f8:222:2b41::12) (*.net *.split)
05:02:51 × ncf quits (~n@monade.li) (*.net *.split)
05:02:51 × leah2 quits (~leah@vuxu.org) (*.net *.split)
05:02:51 × [_________] quits (~oos95GWG@user/oos95GWG) (*.net *.split)
05:02:52 × tomboy64 quits (~tomboy64@user/tomboy64) (*.net *.split)
05:02:52 × MelanieMalik quits (ellenor@callbox.trd.is) (*.net *.split)
05:02:52 × lambdabot quits (~lambdabot@haskell/bot/lambdabot) (*.net *.split)
05:02:52 × dy quits (sid3438@user/dy) (*.net *.split)
05:02:52 × agander_m quits (sid407952@id-407952.tinside.irccloud.com) (*.net *.split)
05:02:52 × jackdk quits (sid373013@cssa/jackdk) (*.net *.split)
05:02:52 × ysh____ quits (sid6017@id-6017.ilkley.irccloud.com) (*.net *.split)
05:02:52 × samhh quits (7569f027cf@2604:bf00:561:2000::e4) (*.net *.split)
05:02:53 × juri_ quits (~juri@84-19-175-187.pool.ovpn.com) (*.net *.split)
05:02:53 × nshepper1 quits (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (*.net *.split)
05:02:53 × zups quits (~meow@2a01:4f9:c010:6036::1) (*.net *.split)
05:02:53 × byorgey quits (~byorgey@155.138.238.211) (*.net *.split)
05:02:53 × res0nat0r0844909 quits (~Fletch@falcon.whatbox.ca) (*.net *.split)
05:02:53 × jocke-l quits (jocke-l@a.x0.is) (*.net *.split)
05:02:53 × kosmikus_ quits (~kosmikus@nullzig.kosmikus.org) (*.net *.split)
05:02:53 × mrmonday quits (~robert@what.i.hope.is.not.a.tabernaevagant.es) (*.net *.split)
05:02:53 × codedmart_ quits (codedmart@2600:3c01::f03c:92ff:fefe:8511) (*.net *.split)
05:02:53 × aristid quits (sid1599@id-1599.uxbridge.irccloud.com) (*.net *.split)
05:02:53 × beaky quits (~beaky@2a03:b0c0:0:1010::1e:a001) (*.net *.split)
05:02:54 × robertm quits (robertm@lattice.rojoma.com) (*.net *.split)
05:02:54 × Teacup quits (~teacup@user/teacup) (*.net *.split)
05:02:54 × SrPx quits (sid108780@id-108780.uxbridge.irccloud.com) (*.net *.split)
05:02:54 × yandere quits (sid467876@id-467876.ilkley.irccloud.com) (*.net *.split)
05:02:54 × christiaanb quits (sid84827@id-84827.lymington.irccloud.com) (*.net *.split)
05:02:54 × adium quits (adium@user/adium) (*.net *.split)
05:02:54 × jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (*.net *.split)
05:02:54 × titibandit quits (~titibandi@user/titibandit) (*.net *.split)
05:02:54 × Natch quits (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (*.net *.split)
05:02:55 × Patternmaster quits (~georg@user/Patternmaster) (*.net *.split)
05:02:55 × remedan quits (~remedan@ip-94-112-0-18.bb.vodafone.cz) (*.net *.split)
05:02:55 × bwe quits (~bwe@static.72.17.201.195.clients.your-server.de) (*.net *.split)
05:02:55 × Philonous quits (~Philonous@user/philonous) (*.net *.split)
05:02:55 × dtman34 quits (~dtman34@c-76-156-89-180.hsd1.mn.comcast.net) (*.net *.split)
05:02:56 × Putonlalla quits (~Putonlall@it-cyan.it.jyu.fi) (*.net *.split)
05:02:56 × tomku quits (~tomku@user/tomku) (*.net *.split)
05:02:56 × mniip quits (mniip@libera/staff/mniip) (*.net *.split)
05:02:56 × wagle quits (~wagle@quassel.wagle.io) (*.net *.split)
05:02:56 × drewjose quits (~drewjose@129.154.40.88) (*.net *.split)
05:02:57 × df quits (~ben@justworks.xyz) (*.net *.split)
05:02:57 × pie_ quits (~pie_bnc@user/pie/x-2818909) (*.net *.split)
05:02:57 × nurupo quits (~nurupo.ga@user/nurupo) (*.net *.split)
05:02:57 × mmaruseacph2 quits (~mihai@mihai.page) (*.net *.split)
05:02:57 × nullie quits (~nullie@amsterdam.nullie.name) (*.net *.split)
05:02:57 × Ram-Z quits (~Ram-Z@li1814-254.members.linode.com) (*.net *.split)
05:02:57 × cods quits (~fred@82-65-232-44.subs.proxad.net) (*.net *.split)
05:02:57 × troydm1 quits (~troydm@host-176-37-53-238.b025.la.net.ua) (*.net *.split)
05:02:58 × Techcable quits (~Techcable@user/Techcable) (*.net *.split)
05:02:58 × noteness quits (~noteness@user/noteness) (*.net *.split)
05:02:58 × exarkun quits (~exarkun@user/exarkun) (*.net *.split)
05:02:58 × Yumemi quits (~Yumemi@212.47.254.173) (*.net *.split)
05:02:58 × andjjj23 quits (~irc@107.170.228.47) (*.net *.split)
05:02:58 × jludwig quits (~justin@li657-110.members.linode.com) (*.net *.split)
05:02:58 × nicole quits (ilbelkyr@libera/staff/ilbelkyr) (*.net *.split)
05:03:41 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
05:03:41 shapr joins (~user@c-67-160-55-153.hsd1.wa.comcast.net)
05:03:41 pjlsergeant__ joins (sid143467@id-143467.hampstead.irccloud.com)
05:03:41 malte joins (~malte@mal.tc)
05:03:41 arahael joins (~arahael@1.145.115.51)
05:03:41 _d0t joins (~{-d0t-}@user/-d0t-/x-7915216)
05:03:41 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
05:03:41 phma joins (~phma@2001:5b0:210f:7168:cc95:7518:e3ef:e00e)
05:03:41 jmdaemon joins (~jmdaemon@user/jmdaemon)
05:03:42 aforemny_ joins (~aforemny@i59F516DD.versanet.de)
05:03:42 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b93b:6165:58a2:3e5e)
05:03:42 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
05:03:42 mysl joins (~mysl@user/mysl)
05:03:42 td_ joins (~td@i53870916.versanet.de)
05:03:42 mjacob joins (~mjacob@adrastea.uberspace.de)
05:03:42 Inst joins (~Inst@120.244.192.250)
05:03:42 AWizzArd joins (~code@gehrels.uberspace.de)
05:03:42 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
05:03:42 Typedfern joins (~Typedfern@81.red-83-37-27.dynamicip.rima-tde.net)
05:03:42 brettgilio joins (~brettgili@2001:19f0:5c01:364:5400:4ff:fe92:8142)
05:03:42 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
05:03:42 lottaquestions joins (~nick@2607:fa49:503d:b200:fe78:84a4:cfad:8849)
05:03:42 otto_s joins (~user@p5de2f28b.dip0.t-ipconnect.de)
05:03:42 lyxia joins (~lyxia@poisson.chat)
05:03:42 jespada joins (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net)
05:03:42 remmie joins (ianremsen@tilde.team)
05:03:42 darksatanic joins (~darkling@2001-ba8-1f1-f0e6-0-0-0-2.autov6rev.bitfolk.space)
05:03:42 mhatta_ joins (~mhatta@www21123ui.sakura.ne.jp)
05:03:42 dsal joins (sid13060@id-13060.lymington.irccloud.com)
05:03:42 migas joins (~migas@astra4961.startdedicated.net)
05:03:42 Sciencentistguy joins (~sciencent@hacksoc/ordinary-member)
05:03:42 hueso joins (~root@user/hueso)
05:03:42 puke joins (~puke@user/puke)
05:03:42 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
05:03:42 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
05:03:42 Sgeo joins (~Sgeo@user/sgeo)
05:03:42 sajith joins (~sajith@user/sajith)
05:03:42 nonzen joins (~nonzen@user/nonzen)
05:03:42 jjhoo joins (jahakala@user/jjhoo)
05:03:42 son0p joins (~ff@186.121.39.74)
05:03:42 wz1000 joins (~zubin@static.11.113.47.78.clients.your-server.de)
05:03:42 pavonia joins (~user@user/siracusa)
05:03:42 ft joins (~ft@p508dbaa9.dip0.t-ipconnect.de)
05:03:42 dumptruckman joins (~dumptruck@143-42-184-47.ip.linodeusercontent.com)
05:03:42 cafkafk joins (~cafkafk@fsf/member/cafkafk)
05:03:42 bgamari joins (~bgamari@70.16.98.14)
05:03:42 pointlessslippe1 joins (~pointless@212.82.82.3)
05:03:42 ChaiTRex joins (~ChaiTRex@user/chaitrex)
05:03:42 masterbuilder joins (~masterbui@user/masterbuilder)
05:03:42 vglfr joins (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
05:03:42 Logio joins (em@kapsi.fi)
05:03:42 hughjfch1 joins (~hughjfche@vmi556545.contaboserver.net)
05:03:42 notzmv joins (~zmv@user/notzmv)
05:03:42 Noinia joins (~Frank@77-162-168-71.fixed.kpn.net)
05:03:42 cptaffe joins (~ZNC@2600:1700:f08:111f::18e7)
05:03:42 xmachina joins (~xmachina@modemcable048.127-56-74.mc.videotron.ca)
05:03:42 orcus joins (~orcus@mail.brprice.uk)
05:03:42 dispater joins (~dispater@mail.brprice.uk)
05:03:42 woffs joins (3cd46299b2@woffs.de)
05:03:42 zer0bitz_ joins (~zer0bitz@user/zer0bitz)
05:03:42 NinjaTrappeur joins (~ninja@about/aquilenet/vodoo/NinjaTrappeur)
05:03:42 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
05:03:42 Pent joins (sid313808@id-313808.lymington.irccloud.com)
05:03:42 YuutaW joins (~YuutaW@mail.yuuta.moe)
05:03:42 chexum joins (~quassel@gateway/tor-sasl/chexum)
05:03:42 tnks joins (sid412124@id-412124.helmsley.irccloud.com)
05:03:42 EsoAlgo81 joins (~EsoAlgo@129.146.136.145)
05:03:42 taktoa[c] joins (sid282096@id-282096.tinside.irccloud.com)
05:03:42 habib joins (~habib@91.196.222.95)
05:03:42 nullie joins (~nullie@amsterdam.nullie.name)
05:03:42 Hafydd joins (~Hafydd@user/hafydd)
05:03:42 p3n joins (~p3n@217.198.124.246)
05:03:42 sudden joins (~cat@user/sudden)
05:03:42 ubert joins (~Thunderbi@77.119.175.117.wireless.dyn.drei.com)
05:03:42 L29Ah joins (~L29Ah@wikipedia/L29Ah)
05:03:42 m1dnight joins (~christoph@78-22-4-67.access.telenet.be)
05:03:42 xelxebar joins (~xelxebar@wilsonb.com)
05:03:42 drdo joins (~drdo@bl8-38-186.dsl.telepac.pt)
05:03:42 dcoutts joins (~duncan@82-69-94-207.dsl.in-addr.zen.co.uk)
05:03:42 kimiamania4 joins (~67afdc47@user/kimiamania)
05:03:42 acertain_ joins (sid470584@id-470584.hampstead.irccloud.com)
05:03:42 seeg123456 joins (~seeg12345@64.176.64.83)
05:03:42 Unhammer joins (~Unhammer@user/unhammer)
05:03:42 Athas joins (athas@sigkill.dk)
05:03:42 Moyst_ joins (~moyst@user/moyst)
05:03:42 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
05:03:42 actioninja joins (~actioninj@user/actioninja)
05:03:42 lawt joins (~lawt@2603:c024:c008:d000:5b4f:1ef2:fed2:ef3d)
05:03:42 dminuoso joins (~dminuoso@user/dminuoso)
05:03:42 dsrt^ joins (~cd@c-66-56-7-24.hsd1.ga.comcast.net)
05:03:42 RMSBach joins (~guygastin@137.184.131.156)
05:03:42 Taneb joins (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0)
05:03:42 haskellbridge joins (~haskellbr@069-135-003-034.biz.spectrum.com)
05:03:42 geekosaur joins (~geekosaur@xmonad/geekosaur)
05:03:42 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
05:03:42 ursa-major joins (~ursa-majo@static-198-44-128-154.cust.tzulo.com)
05:03:42 hexeme joins (~hexeme@user/hexeme)
05:03:42 kaskal joins (~kaskal@213-147-167-98.nat.highway.webapn.at)
05:03:42 adium joins (adium@user/adium)
05:03:42 robbert-vdh joins (~robbert@robbertvanderhelm.nl)
05:03:42 jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com)
05:03:42 heath3 joins (~heath@user/heath)
05:03:42 tstat joins (~tstat@user/tstat)
05:03:42 titibandit joins (~titibandi@user/titibandit)
05:03:42 Pixi joins (~Pixi@user/pixi)
05:03:42 barrucadu joins (~barrucadu@carcosa.barrucadu.co.uk)
05:03:42 lav joins (~pi@wikipedia/maddy-from-celeste)
05:03:42 chymera joins (~chymera@ns1000526.ip-51-81-46.us)
05:03:42 Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
05:03:42 Patternmaster joins (~georg@user/Patternmaster)
05:03:42 vgtw joins (~vgtw@user/vgtw)
05:03:42 remedan joins (~remedan@ip-94-112-0-18.bb.vodafone.cz)
05:03:42 bwe joins (~bwe@static.72.17.201.195.clients.your-server.de)
05:03:42 shachaf joins (~shachaf@user/shachaf)
05:03:42 Philonous joins (~Philonous@user/philonous)
05:03:42 Vajb joins (~Vajb@2001:999:500:7771:18aa:c4e5:e7a9:f44b)
05:03:42 dtman34 joins (~dtman34@c-76-156-89-180.hsd1.mn.comcast.net)
05:03:42 oats joins (~thomas@user/oats)
05:03:42 stefan-_ joins (~cri@42dots.de)
05:03:42 mxs joins (~mxs@user/mxs)
05:03:42 Franciman joins (~Franciman@mx1.fracta.dev)
05:03:42 telser joins (~quassel@user/telser)
05:03:42 cawfee joins (~root@2406:3003:2077:2758::babe)
05:03:42 infinity0 joins (~infinity0@pwned.gg)
05:03:42 gaze___ joins (sid387101@id-387101.helmsley.irccloud.com)
05:03:42 bionade24 joins (~bionade24@2a03:4000:33:45b::1)
05:03:42 shawwwn joins (sid6132@id-6132.helmsley.irccloud.com)
05:03:42 aspen joins (sid449115@helmsley.irccloud.com)
05:03:42 joeyh joins (~joeyh@kitenet.net)
05:03:42 Nikopol joins (nikopol@user/astrorigin)
05:03:42 immae joins (~immae@2a01:4f8:141:53e7::)
05:03:42 farn joins (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
05:03:42 liskin joins (~liskin@xmonad/liskin)
05:03:42 img joins (~img@user/img)
05:03:42 thelounge793 joins (~thelounge@2a05:f480:1400:24b2:5400:4ff:fe76:a8f3)
05:03:42 edwtjo joins (~edwtjo@fsf/member/edwtjo)
05:03:42 opqdonut joins (opqdonut@pseudo.fixme.fi)
05:03:42 micro joins (~micro@user/micro)
05:03:42 Katarushisu1 joins (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
05:03:42 zero joins (~z@user/zero)
05:03:42 haskl joins (~haskl@user/haskl)
05:03:42 nadja joins (~dequbed@banana-new.kilobyte22.de)
05:03:42 g00gler joins (uid125351@id-125351.uxbridge.irccloud.com)
05:03:42 sweater1 joins (~sweater@206.81.18.26)
05:03:42 hrberg joins (~quassel@171.79-160-161.customer.lyse.net)
05:03:42 Fischmiep joins (~Fischmiep@user/Fischmiep)
05:03:42 renegade joins (~renegade@bcdcac82.skybroadband.com)
05:03:42 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
05:03:42 natto joins (~natto@129.154.243.159)
05:03:42 lambdap237 joins (~lambdap@static.167.190.119.168.clients.your-server.de)
05:03:42 nek0 joins (~nek0@2a01:4f8:222:2b41::12)
05:03:42 myme joins (~myme@2a01:799:d60:e400:523a:264f:abbd:410)
05:03:42 Luj joins (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb)
05:03:42 ncf joins (~n@monade.li)
05:03:42 V joins (~v@ircpuzzles/2022/april/winner/V)
05:03:42 leah2 joins (~leah@vuxu.org)
05:03:42 [_________] joins (~oos95GWG@user/oos95GWG)
05:03:42 meejah joins (~meejah@rutas.meejah.ca)
05:03:42 Adeon joins (sid418992@id-418992.lymington.irccloud.com)
05:03:42 conjunctive joins (sid433686@id-433686.helmsley.irccloud.com)
05:03:42 sefidel joins (~sefidel@user/sefidel)
05:03:42 tomboy64 joins (~tomboy64@user/tomboy64)
05:03:42 chiselfuse joins (~chiselfus@user/chiselfuse)
05:03:42 neptun joins (neptun@2607:5300:60:5910:dcad:beff:feef:5bc)
05:03:42 GoldsteinQ joins (~goldstein@goldstein.rs)
05:03:42 thaumavorio joins (~thaumavor@thaumavor.io)
05:03:42 Unode joins (~Unode@fg-ext-220.embl.de)
05:03:42 cyphase joins (~cyphase@user/cyphase)
05:03:42 sand-witch joins (~m-mzmz6l@vmi833741.contaboserver.net)
05:03:42 it_ joins (~quassel@v2202212189510211193.supersrv.de)
05:03:42 koolazer joins (~koo@user/koolazer)
05:03:42 califax joins (~califax@user/califx)
05:03:42 haveo joins (~haveo@sl35.iuwt.fr)
05:03:42 caubert joins (~caubert@user/caubert)
05:03:42 MelanieMalik joins (ellenor@callbox.trd.is)
05:03:42 nckx joins (nckx@libera/staff/owl/nckx)
05:03:42 EvanR joins (~EvanR@user/evanr)
05:03:42 litharge joins (litharge@libera/bot/litharge)
05:03:42 YoungFrog joins (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be)
05:03:42 [Leary] joins (~Leary]@user/Leary/x-0910699)
05:03:42 erisco joins (~erisco@d24-141-66-165.home.cgocable.net)
05:03:42 edmundnoble_ joins (sid229620@id-229620.helmsley.irccloud.com)
05:03:42 bjobjo joins (~bjobjo@user/bjobjo)
05:03:42 snek joins (sid280155@id-280155.lymington.irccloud.com)
05:03:42 lbseale joins (~quassel@user/ep1ctetus)
05:03:42 mcfrdy joins (~mcfrdy@user/mcfrdy)
05:03:42 loonycyborg joins (loonycybor@wesnoth/developer/loonycyborg)
05:03:42 forell joins (~forell@user/forell)
05:03:42 tabemann_ joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
05:03:42 Vq joins (~vq@90-225-115-195-no122.tbcn.telia.com)
05:03:42 Putonlalla joins (~Putonlall@it-cyan.it.jyu.fi)
05:03:42 Clint joins (~Clint@user/clint)
05:03:42 ec joins (~ec@gateway/tor-sasl/ec)
05:03:42 smalltalkman joins (uid545680@id-545680.hampstead.irccloud.com)
05:03:42 acidsys joins (~crameleon@openSUSE/member/crameleon)
05:03:42 justache joins (~justache@user/justache)
05:03:42 tomsmeding joins (~tomsmedin@static.21.109.88.23.clients.your-server.de)
05:03:42 institor joins (~henricus@user/institor)
05:03:42 dagit joins (~dagit@2001:558:6025:38:71c6:9d58:7252:8976)
05:03:42 lambdabot joins (~lambdabot@haskell/bot/lambdabot)
05:03:42 ridcully_ joins (~ridcully@p508ac5fc.dip0.t-ipconnect.de)
05:03:42 Ekho joins (~Ekho@user/ekho)
05:03:42 hugo joins (znc@verdigris.lysator.liu.se)
05:03:42 Nixkernal joins (~Nixkernal@119.4.193.178.dynamic.wline.res.cust.swisscom.ch)
05:03:42 adanwan joins (~adanwan@gateway/tor-sasl/adanwan)
05:03:42 exarkun joins (~exarkun@user/exarkun)
05:03:42 aku joins (~aku@65.108.245.241)
05:03:42 Buggys joins (Buggys@shelltalk.net)
05:03:42 kritzefitz joins (~kritzefit@debian/kritzefitz)
05:03:42 mankyKitty joins (sid31287@id-31287.helmsley.irccloud.com)
05:03:42 jinsun joins (~jinsun@user/jinsun)
05:03:42 whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com)
05:03:42 rubin55 joins (sid175221@id-175221.hampstead.irccloud.com)
05:03:42 tomku joins (~tomku@user/tomku)
05:03:42 mniip joins (mniip@libera/staff/mniip)
05:03:42 wagle joins (~wagle@quassel.wagle.io)
05:03:42 xsarnik joins (xsarnik@lounge.fi.muni.cz)
05:03:42 drewjose joins (~drewjose@129.154.40.88)
05:03:42 dy joins (sid3438@user/dy)
05:03:42 agander_m joins (sid407952@id-407952.tinside.irccloud.com)
05:03:42 jackdk joins (sid373013@cssa/jackdk)
05:03:42 lightandlight joins (sid135476@id-135476.helmsley.irccloud.com)
05:03:42 xstill_ joins (xstill@fimu/xstill)
05:03:42 riatre joins (~quassel@2001:310:6000:f::5198:1)
05:03:42 hsw joins (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net)
05:03:42 ringo___ joins (~ringo@157.230.117.128)
05:03:42 pieguy128 joins (~pieguy128@bras-base-mtrlpq5031w-grc-46-67-70-100-114.dsl.bell.ca)
05:03:42 monochrom joins (trebla@216.138.220.146)
05:03:42 Me-me joins (~me-me@user/me-me)
05:03:42 mira joins (~aranea@wireguard/contributorcat/mira)
05:03:42 peutri joins (~peutri@bobo.desast.re)
05:03:42 terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::)
05:03:42 VioletJewel joins (~violet@user/violetjewel)
05:03:42 cheater joins (~Username@user/cheater)
05:03:42 ysh____ joins (sid6017@id-6017.ilkley.irccloud.com)
05:03:42 CAT_S joins (apic@brezn3.muc.ccc.de)
05:03:42 user2 joins (~user@162.255.84.96)
05:03:42 acro joins (~acro@user/acro)
05:03:42 raoul joins (~raoul@95.179.203.88)
05:03:42 lilata joins (~lilata@137.184.4.49)
05:03:42 AlexNoo joins (~AlexNoo@178.34.160.172)
05:03:42 superbil joins (~superbil@1-34-176-171.hinet-ip.hinet.net)
05:03:42 mht-wtf joins (~mht@2a03:b0c0:3:e0::1e2:c001)
05:03:42 kawzeg_ joins (kawzeg@2a01:7e01::f03c:92ff:fee2:ec34)
05:03:42 xnbya joins (~xnbya@2a01:4f8:c17:cbdd::1)
05:03:42 samhh joins (7569f027cf@2604:bf00:561:2000::e4)
05:03:42 sgarcia_ joins (sgarcia@swarm.znchost.com)
05:03:42 T_S____ joins (sid501726@id-501726.uxbridge.irccloud.com)
05:03:42 hamishmack joins (sid389057@id-389057.hampstead.irccloud.com)
05:03:42 Rembane joins (~Rembane@li346-36.members.linode.com)
05:03:42 bastelfreak joins (bastelfrea@libera/staff/VoxPupuli.bastelfreak)
05:03:42 juri_ joins (~juri@84-19-175-187.pool.ovpn.com)
05:03:42 dfg joins (~dfg@user/dfg)
05:03:42 gawen joins (~gawen@user/gawen)
05:03:42 s4msung joins (0RQA7T2IW8@user/s4msung)
05:03:42 df joins (~ben@justworks.xyz)
05:03:42 rachelambda joins (~rachelamb@78-67-128-99-no247.tbcn.telia.com)
05:03:42 connrs joins (~connrs@user/connrs)
05:03:42 kaol joins (~kaol@94-237-42-30.nl-ams1.upcloud.host)
05:03:42 gabiruh joins (~gabiruh@vps19177.publiccloud.com.br)
05:03:42 gentauro joins (~gentauro@user/gentauro)
05:03:42 nshepper1 joins (nshepperd@2600:3c03::f03c:92ff:fe28:92c9)
05:03:42 pie_ joins (~pie_bnc@user/pie/x-2818909)
05:03:42 zups joins (~meow@2a01:4f9:c010:6036::1)
05:03:42 byorgey joins (~byorgey@155.138.238.211)
05:03:42 res0nat0r0844909 joins (~Fletch@falcon.whatbox.ca)
05:03:42 jocke-l joins (jocke-l@a.x0.is)
05:03:42 nurupo joins (~nurupo.ga@user/nurupo)
05:03:42 mmaruseacph2 joins (~mihai@mihai.page)
05:03:42 gabriel_sevecek joins (~gabriel@188-167-229-200.dynamic.chello.sk)
05:03:42 Angelz joins (Angelz@Angelz.oddprotocol.org)
05:03:42 Ram-Z joins (~Ram-Z@li1814-254.members.linode.com)
05:03:42 cods joins (~fred@82-65-232-44.subs.proxad.net)
05:03:42 troydm1 joins (~troydm@host-176-37-53-238.b025.la.net.ua)
05:03:42 kosmikus_ joins (~kosmikus@nullzig.kosmikus.org)
05:03:42 mrmonday joins (~robert@what.i.hope.is.not.a.tabernaevagant.es)
05:03:42 codedmart_ joins (codedmart@2600:3c01::f03c:92ff:fefe:8511)
05:03:42 aristid joins (sid1599@id-1599.uxbridge.irccloud.com)
05:03:42 beaky joins (~beaky@2a03:b0c0:0:1010::1e:a001)
05:03:42 Techcable joins (~Techcable@user/Techcable)
05:03:42 noteness joins (~noteness@user/noteness)
05:03:42 robertm joins (robertm@lattice.rojoma.com)
05:03:42 Teacup joins (~teacup@user/teacup)
05:03:42 SrPx joins (sid108780@id-108780.uxbridge.irccloud.com)
05:03:42 yandere joins (sid467876@id-467876.ilkley.irccloud.com)
05:03:42 christiaanb joins (sid84827@id-84827.lymington.irccloud.com)
05:03:42 Yumemi joins (~Yumemi@212.47.254.173)
05:03:42 andjjj23 joins (~irc@107.170.228.47)
05:03:42 jludwig joins (~justin@li657-110.members.linode.com)
05:03:42 Hooloovoo joins (~Hooloovoo@hax0rbana.org)
05:03:42 nicole joins (ilbelkyr@libera/staff/ilbelkyr)
05:03:42 diagprov joins (sid348783@user/diagprov)
05:03:42 MironZ joins (~MironZ@nat-infra.ehlab.uk)
05:03:42 PHO` joins (~pho@akari.cielonegro.org)
05:03:42 vjoki joins (~vjoki@2a00:d880:3:1::fea1:9ae)
05:03:42 welterde joins (welterde@thinkbase.srv.welterde.de)
05:03:42 yvan-sraka joins (sid419690@id-419690.lymington.irccloud.com)
05:03:42 degraafk joins (sid71464@id-71464.lymington.irccloud.com)
05:03:42 wallymathieu joins (sid533252@id-533252.uxbridge.irccloud.com)
05:03:42 nisstyre joins (wes@user/nisstyre)
05:03:42 ario joins (~ario@159.65.220.102)
05:03:42 S11001001 joins (sid42510@id-42510.ilkley.irccloud.com)
05:03:42 edwardk joins (sid47016@haskell/developer/edwardk)
05:03:42 delyan_ joins (sid523379@id-523379.hampstead.irccloud.com)
05:03:42 carter joins (sid14827@id-14827.helmsley.irccloud.com)
05:03:42 defanor joins (~defanor@tart.uberspace.net)
05:03:42 SanchayanMaity joins (sid478177@id-478177.hampstead.irccloud.com)
05:03:42 amir joins (sid22336@user/amir)
05:03:42 tinwood joins (~tinwood@canonical/tinwood)
05:03:42 Fangs joins (sid141280@id-141280.hampstead.irccloud.com)
05:03:42 minigrim0 joins (~minigrim0@2a01:4f9:6b:3416:68ba:8dff:fe58:a5ea)
05:03:42 dfordvm joins (~dfordivam@160.16.87.223.v6.sakura.ne.jp)
05:03:42 anderson joins (~anderson@user/anderson)
05:03:42 chessai joins (sid225296@id-225296.lymington.irccloud.com)
05:03:42 geekosaur[c] joins (sid609282@xmonad/geekosaur)
05:03:42 lally joins (sid388228@id-388228.uxbridge.irccloud.com)
05:03:42 PotatoGim joins (sid99505@id-99505.lymington.irccloud.com)
05:03:42 jmct joins (sid160793@id-160793.tinside.irccloud.com)
05:03:42 Jon joins (jon@dow.land)
05:03:42 buhman joins (sid411355@user/buhman)
05:03:42 sphynx joins (~xnyhps@2a02:2770:3:0:216:3eff:fe67:3288)
05:03:42 DigitalKiwi joins (~kiwi@2604:a880:400:d0::1ca0:e001)
05:03:42 krjt joins (~krjst@2604:a880:800:c1::16b:8001)
05:03:42 ChanServ joins (ChanServ@services.libera.chat)
05:03:42 molybdenum.libera.chat sets mode +o ChanServ
05:03:58 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 255 seconds)
05:03:58 × biberu quits (~biberu@user/biberu) (Max SendQ exceeded)
05:03:58 × jakesyl____ quits (sid56879@id-56879.hampstead.irccloud.com) (Max SendQ exceeded)
05:03:58 × hook54321 quits (sid149355@user/hook54321) (Max SendQ exceeded)
05:03:58 × NiKaN quits (sid385034@2a03:5180:f:1::5:e00a) (Max SendQ exceeded)
05:03:58 × joel135 quits (sid136450@id-136450.hampstead.irccloud.com) (Max SendQ exceeded)
05:03:58 × shailangsa quits (~shailangs@host86-186-196-224.range86-186.btcentralplus.com) (Max SendQ exceeded)
05:03:58 × haskellbridge quits (~haskellbr@069-135-003-034.biz.spectrum.com) (Excess Flood)
05:03:58 × Fischmiep quits (~Fischmiep@user/Fischmiep) (Max SendQ exceeded)
05:03:58 × dsrt^ quits (~cd@c-66-56-7-24.hsd1.ga.comcast.net) (Max SendQ exceeded)
05:03:58 mrmr158 joins (~mrmr@user/mrmr)
05:03:58 × Pixi quits (~Pixi@user/pixi) (Max SendQ exceeded)
05:03:59 × sympt quits (~sympt@user/sympt) (Max SendQ exceeded)
05:03:59 Fischmiep joins (~Fischmiep@user/Fischmiep)
05:03:59 × mrmr15 quits (~mrmr@user/mrmr) (Max SendQ exceeded)
05:03:59 mrmr158 is now known as mrmr15
05:03:59 × arahael quits (~arahael@1.145.115.51) (Quit: leaving)
05:03:59 joel135 joins (sid136450@id-136450.hampstead.irccloud.com)
05:04:06 Pixi joins (~Pixi@user/pixi)
05:04:27 sympt joins (~sympt@user/sympt)
05:04:32 dsrt^ joins (~cd@c-66-56-7-24.hsd1.ga.comcast.net)
05:04:44 × Guest3051 quits (sid1055@id-1055.tinside.irccloud.com) (Ping timeout: 243 seconds)
05:04:56 biberu joins (~biberu@user/biberu)
05:05:27 jakesyl____ joins (sid56879@id-56879.hampstead.irccloud.com)
05:05:39 NiKaN joins (sid385034@id-385034.helmsley.irccloud.com)
05:05:47 hook54321 joins (sid149355@user/hook54321)
05:06:18 haskellbridge joins (~haskellbr@069-135-003-034.biz.spectrum.com)
05:06:18 × haskellbridge quits (~haskellbr@069-135-003-034.biz.spectrum.com) (Read error: Connection reset by peer)
05:06:39 haskellbridge joins (~haskellbr@069-135-003-034.biz.spectrum.com)
05:07:04 Guest3051 joins (sid1055@id-1055.tinside.irccloud.com)
05:08:53 michalz joins (~michalz@185.246.207.222)
05:12:14 acidjnk joins (~acidjnk@p200300d6e7072f13848a4652d3a909c0.dip0.t-ipconnect.de)
05:14:22 qqq joins (~qqq@92.43.167.61)
05:23:55 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
05:26:15 iteratee joins (~kyle@162.218.222.207)
05:28:05 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:32:23 merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl)
05:36:33 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
05:36:48 × acidjnk quits (~acidjnk@p200300d6e7072f13848a4652d3a909c0.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
05:39:49 × christiaanb quits (sid84827@id-84827.lymington.irccloud.com) (Server closed connection)
05:39:58 christiaanb joins (sid84827@id-84827.lymington.irccloud.com)
05:40:13 sm joins (~sm@plaintextaccounting/sm)
05:43:28 zero is now known as yin
05:46:03 shailangsa joins (~shailangs@host86-186-196-224.range86-186.btcentralplus.com)
05:56:30 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
05:58:37 CiaoSen joins (~Jura@2a05:5800:29f:6f00:664b:f0ff:fe37:9ef)
06:02:09 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 245 seconds)
06:04:02 acidjnk joins (~acidjnk@p200300d6e7072f13dd7273edbfdb54c8.dip0.t-ipconnect.de)
06:04:38 × aaronv quits (~aaronv@user/aaronv) (Ping timeout: 246 seconds)
06:05:33 × yandere quits (sid467876@id-467876.ilkley.irccloud.com) (Server closed connection)
06:05:43 yandere joins (sid467876@id-467876.ilkley.irccloud.com)
06:06:45 × merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 255 seconds)
06:08:46 × SrPx quits (sid108780@id-108780.uxbridge.irccloud.com) (Server closed connection)
06:09:30 SrPx joins (sid108780@id-108780.uxbridge.irccloud.com)
06:10:44 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
06:11:56 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
06:15:44 aaronv joins (~aaronv@user/aaronv)
06:20:30 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
06:29:36 × cafkafk quits (~cafkafk@fsf/member/cafkafk) (Ping timeout: 246 seconds)
06:30:44 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2)
06:30:49 chomwitt joins (~chomwitt@2a02:587:7a0c:4d00:1ac0:4dff:fedb:a3f1)
06:31:47 cafkafk joins (~cafkafk@fsf/member/cafkafk)
06:31:54 mmhat joins (~mmh@p200300f1c7178aebee086bfffe095315.dip0.t-ipconnect.de)
06:35:05 × bliminse quits (~bliminse@user/bliminse) (Ping timeout: 246 seconds)
06:47:49 × jludwig quits (~justin@li657-110.members.linode.com) (Server closed connection)
06:48:12 jludwig joins (~justin@li657-110.members.linode.com)
06:52:19 lortabac joins (~lortabac@2a01:e0a:541:b8f0:d785:ed50:6a7:a156)
06:53:30 darksatanic is now known as darkling
06:55:49 sord937 joins (~sord937@gateway/tor-sasl/sord937)
07:03:42 × shapr quits (~user@c-67-160-55-153.hsd1.wa.comcast.net) (Ping timeout: 255 seconds)
07:05:33 jackneill__ joins (~Jackneill@20014C4E1E101A00E9F1E1049A19AA9C.dsl.pool.telekom.hu)
07:10:57 privacy joins (~privacy@47.219.84.6)
07:13:31 danza joins (~francesco@151.37.250.249)
07:16:26 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
07:21:32 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
07:24:26 outerh3ll joins (~outerhell@user/outerh3ll)
07:28:08 aforemny_ is now known as aforemny
07:30:51 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
07:35:56 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
07:37:13 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:37:17 × danza quits (~francesco@151.37.250.249) (Ping timeout: 255 seconds)
07:37:41 × outerh3ll quits (~outerhell@user/outerh3ll) (Quit: WeeChat 4.0.4)
07:38:53 outerh3ll joins (~outerhell@user/outerh3ll)
07:39:07 merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl)
07:39:32 × outerh3ll quits (~outerhell@user/outerh3ll) (Client Quit)
07:41:06 brankow joins (~brankow@95.180.100.181)
07:44:14 robobub joins (uid248673@id-248673.uxbridge.irccloud.com)
07:46:21 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
07:49:43 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
07:51:49 oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
07:52:05 gentauro joins (~gentauro@user/gentauro)
07:54:50 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 255 seconds)
07:59:17 chele joins (~chele@user/chele)
08:00:31 × aaronv quits (~aaronv@user/aaronv) (Remote host closed the connection)
08:00:49 aaronv joins (~aaronv@user/aaronv)
08:11:35 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
08:16:39 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
08:18:56 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
08:21:19 × mysl quits (~mysl@user/mysl) (Ping timeout: 245 seconds)
08:24:58 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b93b:6165:58a2:3e5e) (Remote host closed the connection)
08:27:52 <probie> Does anyone here have strong preferences about GraphQL server libraries?
08:30:41 <[exa]> I wish there would be good ones
08:31:35 mysl joins (~mysl@user/mysl)
08:32:36 × phma quits (~phma@2001:5b0:210f:7168:cc95:7518:e3ef:e00e) (Read error: Connection reset by peer)
08:32:39 <probie> As far as I can tell, of those that are maintained there's Morpheus, which is a bit too opinionated for me
08:33:30 cfricke joins (~cfricke@user/cfricke)
08:33:38 phma joins (~phma@2001:5b0:211c:cea8:446a:c697:5d5a:83a7)
08:37:13 ubert2 joins (~Thunderbi@178.115.39.254.wireless.dyn.drei.com)
08:38:15 Inst joins (~Inst@120.244.192.250)
08:38:16 × ubert quits (~Thunderbi@77.119.175.117.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
08:38:16 ubert2 is now known as ubert
08:39:41 <kuribas> I started designing one, since I didn't like the existing ones.
08:39:48 <kuribas> But it's on hold.
08:40:44 <kuribas> Like a lot of haskell libraries, they are either to sofisticated, or to simple (just a clone of javascript libraries).
08:41:11 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:41:50 arahael joins (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net)
08:42:14 <tomsmeding> jackdk: do we? GHC.TypeNats.Nat is just NAtural
08:42:16 <tomsmeding> *Natural
08:43:02 <Inst> does anyone use IO as a monoid?
08:43:12 danza joins (~francesco@151.37.250.249)
08:43:42 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
08:47:51 <[exa]> probie: kuribas: I actually needed to simplify it, full graphql querying doesn't at all by far allow reasonably federated evaluation
08:49:16 × pavonia quits (~user@user/siracusa) (Ping timeout: 252 seconds)
08:49:34 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
08:50:11 × danza quits (~francesco@151.37.250.249) (Ping timeout: 246 seconds)
08:53:49 danse-nr3 joins (~francesco@151.37.250.249)
08:54:13 pavonia joins (~user@user/siracusa)
08:57:02 <kuribas> federated?
08:57:27 × immae quits (~immae@2a01:4f8:141:53e7::) (Quit: WeeChat 3.3)
08:57:47 <tomsmeding> Inst: "did anyone fix accelerate" what did you mean?
08:58:10 azimut joins (~azimut@gateway/tor-sasl/azimut)
08:59:33 immae joins (~immae@2a01:4f8:141:53e7::)
08:59:46 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b93b:6165:58a2:3e5e)
09:01:01 × merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 258 seconds)
09:07:08 <[exa]> kuribas: like with sparql, but preferably less b0rked
09:09:13 kuribas doesn't know sparql
09:09:39 <Inst> tomsmeding: well, is the hackage compiling on 9.4.x?
09:09:53 <Inst> also, here's something interesting we're discussing on Discord, mainly because I misunderstood the applicative instance of IO
09:09:54 <tomsmeding> Inst: the master branch is, as far as I know
09:10:06 <Inst> newtype over IO [a]
09:10:06 <tomsmeding> hackage is indeed lagging
09:10:14 <Inst> get it to fail like a parser combinator when [a] is []
09:10:34 <Inst> i.e, cheap short-circuiting
09:11:00 <Inst> erm, alternative instance, not applicative instance
09:11:55 <tomsmeding> as in `newtype InstIO a = InstIO (IO [a])` ?
09:12:00 <Inst> ya
09:12:01 <[exa]> kuribas: happy you. :D
09:12:09 <Inst> not familiar with asum
09:12:16 <Inst> but that's a good approximation of fold, no?
09:12:40 <Inst> so, io actions yielding some list type, map the newtype constructor onto the list of io actions, then asum
09:12:46 <Inst> cheap short-circuiting?
09:13:39 <tomsmeding> Inst: would it be a monad too?
09:14:52 <Inst> ack, IO [IO [a]]
09:15:09 <Inst> isn't ListT generally not producing a monad? :(
09:15:47 × andjjj23 quits (~irc@107.170.228.47) (Server closed connection)
09:16:04 andjjj23 joins (~irc@107.170.228.47)
09:17:26 <kuribas> fold uses <>, asum <|>
09:17:46 <tomsmeding> Inst: https://paste.tomsmeding.com/nRdGemxt ?
09:17:59 <tomsmeding> not sure about the monad instance
09:18:00 danse-nr3_ joins (~francesco@151.35.249.3)
09:19:47 <Inst> only important thing was that i wanted cheap short-circuiting via the alternative
09:20:29 × danse-nr3 quits (~francesco@151.37.250.249) (Ping timeout: 245 seconds)
09:21:20 <[Leary]> If you really want cheap short-circuiting, just use the mechanism that's already built into IO? E.g. `\io -> io >>= \case{ [] -> throwIO EmptyList; x:xs -> pure (x:|xs) }`.
09:22:04 caryhartline joins (~caryhartl@168.182.58.169)
09:23:35 <danse-nr3_> still unsure about the question. Short-circuiting for what? Could you write an instance of function you expect to short-circuit?
09:23:44 <jackdk> tomsmeding: maybe I was too hopeful
09:23:54 Guest|2 joins (~Guest|2@150.214.58.89)
09:23:55 × Guest|2 quits (~Guest|2@150.214.58.89) (Client Quit)
09:28:48 <Inst> yeah, tired, will work on it later, was just surprised this wasn't IO type's default behavior
09:29:19 <tomsmeding> monads doesn't care about what's in the returned value
09:29:21 <tomsmeding> *don't
09:29:31 <tomsmeding> indeed they can't, because of parametricity
09:30:07 <tomsmeding> anything that does something special with a returned empty list from a monad M (e.g. IO) would have to look like 'data M a = M [a]' -- i.e. have the list embedded
09:30:27 <tomsmeding> in (<|>) or (>>=) you have no clue what the 'a' is that you're passing on
09:32:10 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
09:34:38 × Teacup quits (~teacup@user/teacup) (Server closed connection)
09:34:49 Teacup joins (~teacup@user/teacup)
09:37:43 mc47 joins (~mc47@xmonad/TheMC47)
09:38:42 <Inst> tomsmeding: so, call it the Go monad / Go monoid informally?
09:39:48 <tomsmeding> why "Go"?
09:40:05 <Inst> IO monad with multiple return, no?
09:40:18 <tomsmeding> it's a combination of the list monad (nondeterminism) with the IO monad
09:40:36 <Inst> with a different alternative instance
09:40:57 <Inst> that, unfortunately, isn't as ergonomic as you'd like it to be, but the problem I'm trying to solve is handling a combination of unrecoverable and recoverable exceptions
09:41:07 <Inst> and outputting them to a result list
09:41:13 <tomsmeding> These?
09:41:31 <tomsmeding> https://hackage.haskell.org/package/monad-chronicle
09:43:37 <probie> % import Control.Exception
09:43:37 <yahb2> <no output>
09:43:49 <probie> % catchErrs = foldr (\f k -> catch (f >> pure id) (\(SomeException e) -> pure (SomeException e:)) <*> k) (pure [])
09:43:49 <yahb2> <interactive>:99:21: error: [-Wname-shadowing, -Werror=name-shadowing] ; This binding for ‘f’ shadows the existing binding ; defined at <interactive>:61:1
09:43:50 <Inst> interesting types
09:44:15 <probie> % catchErrs [print 5, throwIO (userError "oh no"), print 7, print 42 >> throwIO (userError "sad")]
09:44:15 <yahb2> <interactive>:101:1: error: ; Variable not in scope: catchErrs :: [IO ()] -> t
09:44:16 <tomsmeding> % :set -Wno-error
09:44:16 <yahb2> <no location info>: warning: [-Wunrecognised-warning-flags] ; unrecognised warning flag: -Wno-error
09:44:22 <Inst> but tbh i'm just more attracted to the idea of using a different interface for IO monad
09:44:30 <tomsmeding> % :unset -Werror
09:44:30 <yahb2> don't know how to reverse -Werror
09:44:35 <tomsmeding> -.-
09:44:40 <Inst> instead of using it as a monad, using it as a monoid / alternative, and having roughly the same power as IO monad
09:44:55 <[Leary]> % :set -Wwarn
09:44:55 <yahb2> <no output>
09:45:03 <probie> % foldr (\next k -> catch (next >> pure id) (\(SomeException e) -> pure (SomeException e:)) <*> k) (pure []) [print 5, throwIO (userError "oh no"), print 7, print 42 >> throwIO (userError "sad")]
09:45:03 <yahb2> <interactive>:109:115: warning: [-Wtype-defaults] ; • Defaulting the following constraints to type ‘Integer’ ; (Num a0) arising from the literal ‘5’ at <interactive>:109:115 ; (...
09:45:24 <tomsmeding> % :q
09:45:24 <yahb2> <no output>
09:45:26 <tomsmeding> % 42
09:45:27 <yahb2> 42
09:45:33 <tomsmeding> % import Control.Exception
09:45:33 <yahb2> <no output>
09:45:39 <tomsmeding> % catchErrs = foldr (\f k -> catch (f >> pure id) (\(SomeException e) -> pure (SomeException e:)) <*> k) (pure [])
09:45:39 <yahb2> <no output>
09:45:45 <tomsmeding> % catchErrs [print 5, throwIO (userError "oh no"), print 7, print 42 >> throwIO (userError "sad")]
09:45:46 <yahb2> 5 ; 7 ; 42 ; [user error (oh no),user error (sad)]
09:45:50 <tomsmeding> probie: ^
09:46:18 <probie> Inst: is that the sort of thing you want, or are you trying to do something else?
09:46:26 <Inst> you're really the king of foldr, probie
09:49:05 <Inst> seems close enough, i'm too tired, about to fall asleep
09:49:56 <Inst> i already have code that's doing this in do notation, but i'm trying to set it up so i can do it via fold, foldMap', or something like that, the monoid method was just really attractive, shame alternative wasn't supportive
09:52:09 <Inst> still, i'm guessing, the IO [a] newtype isn't interesting?
09:52:51 <Inst> I'm also trying to figure out, how to get IO . []... ffff
09:54:06 × danse-nr3_ quits (~francesco@151.35.249.3) (Remote host closed the connection)
09:54:15 <tomsmeding> I mean, the data type is isomorphic to Compose IO []
09:54:20 <tomsmeding> but its instances probably differ
09:54:29 danse-nr3_ joins (~francesco@151.35.249.3)
10:02:22 × ft quits (~ft@p508dbaa9.dip0.t-ipconnect.de) (Quit: leaving)
10:02:22 gensyst joins (~gensyst@user/gensyst)
10:02:38 × CiaoSen quits (~Jura@2a05:5800:29f:6f00:664b:f0ff:fe37:9ef) (Ping timeout: 246 seconds)
10:03:31 × mysl quits (~mysl@user/mysl) (Ping timeout: 252 seconds)
10:04:32 <gensyst> What are your opinions on prefixing record fields vs. NoFieldSelectors & having a proper ability to reuse record field names ??
10:04:40 <gensyst> I've been trying the latter, but it seems to have a massive disadvantage: Stuff like (\(Dog { name = x } -> x), and something similar, all over the place. The big offender: Having to type out the "Dog", losing the entire benefit of type inference (one of the great advertised Haskell benefits).
10:04:44 <gensyst> Is this really a tradeoff?
10:04:58 <gensyst> Or are there ways to make NoFieldSelectors more painless?
10:05:03 notzmv joins (~zmv@user/notzmv)
10:05:10 mysl joins (~mysl@user/mysl)
10:05:28 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
10:10:29 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 245 seconds)
10:11:03 <jackdk> gensyst: I usually use `generic-lens` with `import Data.Generics.Labels ()` and `-XOverloadedLabels`
10:13:26 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 255 seconds)
10:14:31 Inst joins (~Inst@120.244.192.250)
10:14:34 <Inst> hmmm
10:14:43 <Inst> this is closer to a typeclass than a newtype with a different instance
10:14:46 merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl)
10:15:13 <Inst> short-term, i can implement this via an operator
10:15:32 <Inst> within a where clause, less smelly use of custom operators
10:16:39 <Inst> alternative doesn't work the way I expect, if the way I expect is lawful, I can just come up with a typeclass for it
10:17:53 fendor joins (~fendor@2a02:8388:1640:be00:c785:45ab:c70:9d3f)
10:18:18 <Inst> XAlternative is unused, I assume XAlternative2 is unused as well
10:18:26 <Inst> >||< is unused
10:18:47 <Inst> falsy is unused
10:19:21 <Inst> ^_^ is also unused, but sort of twee
10:21:15 <tomsmeding> ^_^ is not a valid operator name unfortunately
10:21:21 <tomsmeding> ^.^ is
10:21:38 <Inst> already in hoogle
10:21:50 <Inst> https://hackage.haskell.org/package/cubicbezier
10:22:09 <Inst> i'm not good at abstract algebra or category theory, isn't Alternative essentially ad-hoc?
10:22:20 <Inst> a monoid on applicative
10:23:14 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
10:29:30 <ncf> it should at least be a monoid on f a, but sometimes other laws are required, see https://en.wikibooks.org/wiki/Haskell/Alternative_and_MonadPlus#Other_suggested_laws
10:30:48 <ncf> you could also take the view that, while applicative functors are functors that preserve finite products, alternatives also preserve coproducts
10:31:10 <ncf> this suggests a different typing: empty :: f Void; (<|>) :: f a -> f b -> f (Either a b)
10:31:42 <ncf> see http://h2.jaguarpaw.co.uk/posts/alternatives-convert-products-to-sums/
10:32:23 × puke quits (~puke@user/puke) (Remote host closed the connection)
10:33:58 <kuribas> Inst: do you have a question about cubicbezier?
10:34:16 <ncf> one nice example of a functor that is both product-preserving (monoidal/applicative) and coproduct-preserving (alternative) is Decidable a = Yes a | No (a -> Void). it's not hard to see that if you can decide A and B, you can also decide (A, B) and Either A B
10:34:57 <ncf> the interesting thing is that Decidable isn't even a Functor, because you can't map No contravariantly. it's an Invariant functor, so it doesn't fit the usual hierarchy Functor => Applicative => Alternative
10:35:15 <ncf> anyhow this isn't very useful without dependent types
10:35:56 <Inst> I mean cubicbeizier is using ^.^
10:38:10 <Inst> well, I'm trying to find a stabilization of XAlternative beyond "parser combinators work this why, why don't other Alternatives work the same way?"
10:38:22 puke joins (~puke@user/puke)
10:38:53 random-jellyfish joins (~random-je@user/random-jellyfish)
10:39:59 <ncf> what's XAlternative?
10:42:38 × Yumemi quits (~Yumemi@212.47.254.173) (Server closed connection)
10:42:42 <tomsmeding> Inst: because for parser combinators, the list is inside the monad
10:42:47 <tomsmeding> it's Parser a, not Parser [a]
10:42:57 Yumemi joins (~Yumemi@2001:bc8:47a0:1b14::1)
10:43:56 <Inst> moreover, natively, <|> ends up consuming input
10:44:08 <Inst> unless there's try built into the parser combinator
10:44:14 <Inst> or try is applied
10:44:23 <tomsmeding> that's very parser-combinator-specific semantics
10:44:38 <tomsmeding> not all functors have a sense of "input" :p
10:44:42 <Inst> ncf: a typeclass based on falsy and >||<
10:44:59 <Inst> wherein falsy >||< a = a, a >||< _ = a
10:46:44 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 255 seconds)
10:48:38 waleee joins (~waleee@h-176-10-137-138.NA.cust.bahnhof.se)
10:48:39 <ncf> those laws together imply a = falsy for all a
10:48:43 × merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 240 seconds)
10:49:26 <ncf> a =(1) falsy >||< a =(2) falsy
10:50:46 <tomsmeding> ncf: presumably the second law only holds if the first argument doesn't reduce to 'falsy'
10:51:10 <Inst> falsy >||< a = a; a >||< _ = a
10:51:31 <ncf> so you depend on Eq?
10:51:33 <Inst> afaik it's a lawful definition for applicative
10:51:46 <Inst> erm, alternative
10:52:07 <ncf> are functors involved? what's the type of falsy and (>||<)?
10:52:51 <Inst> falsy is basically how I'd imagine alternative generally worked until I found out stuff like, well, instance [a] where <|> = <>
10:53:22 <Inst> so a valid implementatino for XAlternative would also be valid for Applicative
10:53:26 <Inst> erm, Alternative
10:53:46 <Inst> you could define list that way too
10:54:13 <gensyst> jackdk, sigh... another (probably useful) library without a tutorial
10:58:35 <gensyst> right?
11:02:51 <probie> gensyst: are you referring to generic-lens, or something else?
11:04:41 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
11:06:28 <danse-nr3_> i always assumed that if i could not understand a library considering its reduced doc, i was on the wrong stage of the evolution of an haskell programmer
11:07:06 <gensyst> probie, yeah generic-lens. here's the quote:
11:07:07 <gensyst> jackdk> gensyst: I usually use `generic-lens` with `import Data.Generics.Labels ()` and `-XOverloadedLabels`
11:08:02 <gensyst> Are lenses "*the* way" to allow both duplicate record names and avoid all the pain if I would try doing it without lenses (e.g. NoFieldSelectors)??
11:08:09 <gensyst> maybe the time has come to bite the bullet, and get into lenses
11:08:22 <gensyst> but that only raises more questions... lens vs. generic-lens, etc.
11:08:47 <gensyst> Quick recap from above comments of mine:
11:08:47 <probie> So if you've got a field call "foo", and have derived Generic, you can go `thing ^. #foo` to extract foo from thing
11:08:47 <gensyst> <gensyst> What are your opinions on prefixing record fields vs. NoFieldSelectors & having a proper ability to reuse record field names ??
11:08:54 <gensyst> <gensyst> I've been trying the latter, but it seems to have a massive disadvantage: Stuff like (\(Dog { name = x } -> x), and something similar, all over the place. The big offender: Having to type out the "Dog", losing the entire benefit of type inference (one of the great advertised Haskell benefits).
11:09:48 <probie> `generic-lens` is used in addition to `lens` - it just gives you "lenses for free" and doesn't require TH
11:10:00 <danse-nr3_> i guess lenses should actually be orthogonal to the problem of naming selectors, but maybe you want to learn the solution with lenses to save some time as they are often better than regular selectors
11:11:45 × privacy quits (~privacy@47.219.84.6) (Quit: Leaving)
11:12:48 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
11:13:05 L29Ah joins (~L29Ah@wikipedia/L29Ah)
11:14:36 xff0x joins (~xff0x@2405:6580:b080:900:6189:4408:b965:9b16)
11:15:41 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
11:18:12 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
11:22:09 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
11:23:07 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 258 seconds)
11:25:19 × waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Quit: WeeChat 4.0.2)
11:28:09 × malte quits (~malte@mal.tc) (Remote host closed the connection)
11:41:29 <danse-nr3_> had never heard about the Go monad before
11:42:00 × aaronv quits (~aaronv@user/aaronv) (Remote host closed the connection)
11:42:25 aaronv joins (~aaronv@user/aaronv)
11:46:08 Square joins (~Square4@user/square)
11:47:59 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 245 seconds)
11:49:02 × danse-nr3_ quits (~francesco@151.35.249.3) (Ping timeout: 246 seconds)
11:49:37 L29Ah joins (~L29Ah@wikipedia/L29Ah)
11:52:13 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
11:53:48 danse-nr3_ joins (~francesco@151.35.249.3)
11:54:23 <danse-nr3_> i cannot even find it anywhere https://hoogle.haskell.org/?hoogle=Go
12:05:05 <carbolymer> why ghc is complaining: Redundant constraint: HasCallStack
12:05:10 <carbolymer> doesn't make sense to me
12:05:43 <carbolymer> oh... actually it does
12:05:51 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
12:05:58 merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl)
12:06:06 <carbolymer> I'm using HasCallstack on a function which calls functions which do not have HasCallStack
12:10:23 × merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 258 seconds)
12:14:48 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Quit: WeeChat 4.0.3)
12:16:34 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
12:28:35 <gensyst> probie, danse-nr3_ thanks for the input
12:28:54 <gensyst> danse-nr3_> "i guess lenses should actually be orthogonal to the problem of naming selectors"
12:29:06 <gensyst> why? with lenses, i can have same record names for different types without issues, right?
12:30:59 <danse-nr3_> i doubt it, but i guess if you pursue a solution to have same lens names, you will enable some extension that allows same selector names anyways
12:32:16 <danse-nr3_> it is just an abstraction more on top of the problem. Might save you some time as you will probably want to eventually use that abstraction anyways
12:33:14 <gensyst> so with lenses with same names, i'll still have to resort to (\(Dog { name = x } -> x) shenanigans (as with NoFieldSelectors)?
12:33:23 <gensyst> jackdk, look forward to your input if you're still around
12:34:22 <danse-nr3_> i am not sure that you need that shenigan in the first place, but my answer is no, you might have to resort to completely different shenigans
12:34:55 <danse-nr3_> sorry, your original problem is a bit far away in the chat. If you want to come back to it, might have to state it again
12:35:56 <gensyst> Here's the original:
12:35:58 <gensyst> ---
12:35:59 <gensyst> <gensyst> What are your opinions on prefixing record fields vs. NoFieldSelectors & having a proper ability to reuse record field names ??
12:36:00 <gensyst> <gensyst> I've been trying the latter, but it seems to have a massive disadvantage: Stuff like (\(Dog { name = x } -> x), and something similar, all over the place. The big offender: Having to type out the "Dog", losing the entire benefit of type inference (one of the great advertised Haskell benefits).
12:36:00 <gensyst> <gensyst> Is this really a tradeoff?
12:36:00 <gensyst> <gensyst> Or are there ways to make NoFieldSelectors more painless?
12:36:01 <gensyst> ---
12:37:23 × shailangsa quits (~shailangs@host86-186-196-224.range86-186.btcentralplus.com) (Remote host closed the connection)
12:37:55 <danse-nr3_> i think you cannot use `name` and expect the compiler to infer the type, although i am not very familiar with these extensions. I do not think (\(Dog { name = x } -> x) is needed though, probably just something like Dog.name
12:37:59 × robertm quits (robertm@lattice.rojoma.com) (Server closed connection)
12:38:18 robertm joins (robertm@lattice.rojoma.com)
12:38:27 <danse-nr3_> maybe we can play a bit with the interpreter and figure out
12:38:39 <danse-nr3_> % set -XNoFieldSelectors
12:38:39 <yahb2> <interactive>:13:1: error: ; • Variable not in scope: set ; • Perhaps you meant ‘seq’ (imported from Prelude) ; ; <interactive>:13:6: error: ; Data constructor not in scope: XNoFieldSe...
12:38:48 <danse-nr3_> % :set -XNoFieldSelectors
12:38:48 <yahb2> <no output>
12:39:08 <danse-nr3_> % data Dog { name :: String }
12:39:08 <yahb2> <interactive>:17:10: error: ; Unexpected type ‘{name :: String}’ ; In the data declaration for ‘Dog’ ; A data declaration should have form ; data Dog a = ...
12:39:15 <danse-nr3_> % data Dog = Dog { name :: String }
12:39:15 <yahb2> <no output>
12:39:24 <danse-nr3_> % data Cat = Cat { name :: String }
12:39:24 <yahb2> <no output>
12:39:33 <danse-nr3_> % :t Dog.name
12:39:33 <yahb2> <interactive>:1:1: error: ; Not in scope: ‘Dog.name’ ; No module named ‘Dog’ is imported.
12:39:52 <danse-nr3_> some other extension might be needed
12:39:56 <danse-nr3_> % :t name
12:39:56 <yahb2> <interactive>:1:1: error: ; • Variable not in scope: name ; • NB: ‘name’ is a field selector belonging to the type ‘Cat’ ; that has been suppressed by NoFieldSelectors
12:42:30 <danse-nr3_> possibly this one https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/overloaded_record_dot.html gensyst
12:42:58 <danse-nr3_> % :set -XOverloadedRecordDot
12:42:58 <yahb2> <no output>
12:43:05 <danse-nr3_> % :t Dog.name
12:43:05 <yahb2> <interactive>:1:1: error: ; Not in scope: ‘Dog.name’ ; No module named ‘Dog’ is imported.
12:43:23 × mjs2600 quits (~mjs2600@174.169.225.239) (Quit: ZNC 1.8.2 - https://znc.in)
12:43:26 <stefan-_> % dog = Dog "foo"
12:43:27 <yahb2> <no output>
12:43:29 <stefan-_> % dog.name
12:43:29 <yahb2> "foo"
12:43:43 <stefan-_> the dot syntax works at the value level
12:43:51 <danse-nr3_> thanks stefan-_
12:44:07 <danse-nr3_> and possibly this also gives you what you wanted gensyst, let us see...
12:44:13 <danse-nr3_> % :t (.name)
12:44:13 <yahb2> (.name) :: GHC.Records.HasField "name" r a => r -> a
12:44:43 <danse-nr3_> looks like it, your `.name` that will play nicely with type inference
12:45:10 mjs2600 joins (~mjs2600@c-174-169-225-239.hsd1.vt.comcast.net)
12:45:24 <gensyst> woah.... hmmmmmm
12:45:39 <gensyst> but this already gives you the biggest benefits of lenses
12:45:42 <gensyst> record syntax
12:46:00 <danse-nr3_> lenses have a lot of benefits, it is a big library
12:46:22 <danse-nr3_> and even just `get`, `set` and `over` are handy enough to justify its use
12:46:44 <danse-nr3_> sorry ... that was not `get`, it is actually called `view`
12:47:20 <danse-nr3_> unfortunately it is not very easy to approach as a library, so you might want to keep it for later
12:48:51 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Ping timeout: 255 seconds)
12:49:34 <gensyst> thanks!
12:49:59 <danse-nr3_> you are welcome! Now my battery is over. Bye
12:50:13 <gensyst> danse-nr3_, this is on my list https://leanpub.com/optics-by-example
12:50:18 <gensyst> goodbye!
12:50:35 terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::)
12:51:13 × aaronv quits (~aaronv@user/aaronv) (Ping timeout: 240 seconds)
12:51:42 <stefan-_> gensyst, for a short introduction you can check: https://www.schoolofhaskell.com/school/to-infinity-and-beyond/pick-of-the-week/a-little-lens-starter-tutorial
12:52:07 <stefan-_> I recently also read a bit Optics by Example, was quite a good read so far
12:52:34 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 245 seconds)
12:52:55 <gensyst> stefan-_, nice thanks
12:53:15 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 246 seconds)
12:54:31 <stefan-_> gensyst, and I found this a quite good introduction to all the extensions: https://github.com/mtamc/generic-lens-modern-setup
12:54:32 × danse-nr3_ quits (~francesco@151.35.249.3) (Ping timeout: 255 seconds)
12:55:13 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
12:58:07 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
12:58:07 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
12:58:07 wroathe joins (~wroathe@user/wroathe)
12:59:42 <ddellacosta> gensyst: optics by example is great btw, it probably helped me get a basic level of familiarity with non-trivial lens concepts more than anything
13:00:04 <ddellacosta> definitely recommend picking that up soon if it's already on your list
13:01:54 <gensyst> very, very nice
13:02:34 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 245 seconds)
13:02:35 <gensyst> stefan-_, ddellacosta I can see end of the tunnel now. Haskell learning curve essential end, because Haskell progress seems to have stagnated a bit (imo a great thing)
13:03:00 <gensyst> for me things remaining: lenses (optics by example book), type level magic (thinking with types book), and concurrency (marlow book)
13:03:07 <gensyst> after that i'm basically "done" i think
13:03:15 <gensyst> unless dependent types come along
13:03:27 <gensyst> which could take... a few years at least?
13:04:01 <gensyst> so at least newbies nowadays know how long the road will be. this was not the case a few years ago. you just kept learning, and learning, and learning,... and you had no idea where things would end
13:05:17 danse-nr3_ joins (~francesco@151.35.249.3)
13:14:52 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
13:15:57 Lycurgus joins (~juan@user/Lycurgus)
13:17:28 <jackdk> I would not consider optics essential (though it is very useful), and I would delay thinking with types and the Marlow book (though both are probably excellent)
13:18:20 danse-nr3__ joins (~francesco@151.37.243.136)
13:18:39 × danse-nr3_ quits (~francesco@151.35.249.3) (Read error: Connection reset by peer)
13:19:23 <gensyst> jackdk, can you elaborate on those three?
13:20:17 shailangsa joins (~shailangs@host86-186-196-224.range86-186.btcentralplus.com)
13:21:01 <jackdk> I find it easier to understand the solutions people have come up with if I've seen the problems they've faced. Therefore, write Haskell, hit problems, then go looking for the solutions. If you stick to reasonably flat records, you can do without lens for quite a while (despite it being really awesome). You can also do a lot without typelevel magic or concurrency, so defer them to later instead of trying to learn the entire ecosystem up front
13:22:02 <gensyst> ok i see what you mean
13:22:07 <gensyst> thanks
13:22:14 <gensyst> so those are, wait until you need them
13:22:23 <dminuoso> This is a difficult process in general though. For instance, you couldnt want to first write your own HTTP server before using warp.
13:22:36 <jackdk> Haskell's iconic feature is laziness, after all
13:22:41 <dminuoso> Its also difficult to have the foresight to know when the attempt is pointless.
13:23:04 <jackdk> read enough to know _that_ there are these problems and the names (and maybe the outlines) of the solutions, but then go and write some code
13:23:37 <dminuoso> But yeah, optics is definitely not essential (unless you are interfacing with a library that imposes this requirement onto you).
13:24:56 <gensyst> You guys have, BTW, blown my mind today with NoFieldSelectors. How did I not know about this.
13:25:09 <gensyst> stefan-_, the setup you linked to is imo the way. should be standardized
13:25:16 <gensyst> and advocated on the whole planet
13:25:29 <gensyst> sorry, I meant
13:25:35 <gensyst> OverloadedRecordDot
13:25:42 <gensyst> (on top of NoFieldSelectors)
13:26:02 <gensyst> How did I not know about OverloadedRecordDot??? This is obviously the future
13:26:13 × qqq quits (~qqq@92.43.167.61) (Ping timeout: 240 seconds)
13:26:18 <gensyst> Every newbie will wonder why nobody mentioned it to them in the beginning.
13:26:25 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 255 seconds)
13:26:26 <danse-nr3__> i saw the two extensions bundled together in some doc, but could not retrieve it again
13:28:37 <danse-nr3__> how did you get to NoFieldSelectors? Maybe we can improve some wiki page
13:29:16 ystael joins (~ystael@user/ystael)
13:30:27 <gensyst> danse-nr3__, probably after googling in frustration about some "name clashes" stuff
13:30:40 <danse-nr3__> :P
13:34:07 <gensyst> Mind-blowing.... unless I'm mistaken, this will allow me (among other things) to put the same "un" name into each newtype:
13:34:12 <gensyst> newtype Foo = Foo { un :: Int }
13:34:12 <gensyst> newtype Bar = Bar { un :: Int }
13:34:24 <gensyst> no need to think about "unFoo" and "unBar" pitas
13:34:44 <danse-nr3__> cool, had not thought about that
13:34:52 <gensyst> Pure bliss
13:35:42 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
13:35:42 <danse-nr3__> i guess this is an opportunity to define a conventional name for those cases, although `un` sounds good to me
13:36:19 <danse-nr3__> considering the knowledge most haskellers have, there is probably a more scientific choice
13:38:10 <EvanR> why isn't the point of having the newtype field name with NoFieldSelectors
13:38:16 <EvanR> what is the point*
13:38:56 <gensyst> EvanR, we're talking in combination with OverloadedRecordDot
13:39:01 <gensyst> let a = foo.un
13:39:04 <gensyst> let b = bar.un
13:39:32 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 255 seconds)
13:39:49 <EvanR> cool, now when you want map over something and unFoo, you can write like map (\foo -> foo.un) stuff instead of map unFoo stuff
13:40:11 <danse-nr3__> actually you can just use (.un), no need for lambdas
13:40:14 <danse-nr3__> to feed the brainstorming, i suggest `de`. Because if `Foo` is a constructor, `de` would be a deconstructor? Not sure the term exists
13:40:56 <danse-nr3__> but on the other hand, `un` is closer to most usages in current haskell code
13:41:08 <EvanR> why does it need to be 1 or 2 characters long
13:41:15 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
13:41:18 <EvanR> unwrap
13:41:19 <danse-nr3__> it does not. Of course, brevity helps
13:41:37 <danse-nr3__> yeah, "wrapper" is a bit an overloaded term in programming
13:41:46 <EvanR> it helps people point at haskell and say, look, incomprehensible
13:42:14 <EvanR> (to be fair, shit like "yes! call it `un'" is common in every other language
13:42:15 × caryhartline quits (~caryhartl@168.182.58.169) (Quit: caryhartline)
13:42:16 <EvanR> )
13:42:41 <EvanR> hopefully we learn from their mistakes
13:43:14 <gensyst> danse-nr3__> "actually you can just use (.un), no need for lambdas"
13:43:14 <gensyst> This is the part I'm finding so cool. Just replacing "recordName" with "(.recordName)" (of course not necessary in cases where the ".recordName" suffix works) just suddenly works, and everything typechecks magically, and all name clashes are magically gone.
13:43:25 <EvanR> de is short for german or germany, unless we're in spanish or something
13:43:39 <danse-nr3__> `dec`?
13:43:57 <EvanR> it's a newtype unwrapper, a standard thing, unwrap makes sense to me
13:44:05 <EvanR> no, monads are not based on unwrapping
13:44:10 <EvanR> specifically
13:44:21 <EvanR> but newtypes are
13:45:21 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Tschüss)
13:45:46 <danse-nr3__> i think i prefer `un` to `unwrap`, the concept of wrapping is way too overloaded
13:46:29 <EvanR> in bad explanations of monads, yes
13:46:40 <EvanR> what else are you thinking of
13:46:45 <gensyst> I'll let others, powerful players decide documented conventions. I wrote "un" because I've seen "unFoo", "unBar", etc. many times.
13:46:52 <gensyst> although I've also seen "getBar", etc.
13:47:02 <gensyst> but get is so... boring lol
13:47:17 <EvanR> also run
13:47:21 <gensyst> yeah
13:47:23 <gensyst> indeed
13:47:27 <dminuoso> `runFoo` is something I like as well, if the (often monadic) combinators you use continously construct up some computation you can somehow later force.
13:48:06 <danse-nr3__> not sure why you keep thinking about monads, as this is way more abstract
13:48:12 <EvanR> though the runFoo stuff doesn't run anything, it just unwraps
13:48:19 <EvanR> which is a no-op because newtypes
13:48:41 <haskellbridge> <m​auke> I invented the unFoo convention, but I probably wasn't the first
13:48:45 <dminuoso> EvanR: well the `runFoo` is usually used in the spots where you actually force its inner thing.
13:48:52 <dminuoso> So the `run` part is not unjustified.
13:49:23 <haskellbridge> <m​auke> Do we know who introduced it?
13:49:40 <dminuoso> Given that the data/newtype wrapper will protect the innards from computation.
13:49:59 sm joins (~sm@plaintextaccounting/sm)
13:50:05 <EvanR> danse-nr3__, you aren't giving any examples at all, really
13:50:16 <danse-nr3__> which examples do you want?
13:50:47 <EvanR> you can't call something unwrap because too many things (like what) Are Unwrapping In Haskell
13:51:46 <danse-nr3__> https://en.wikipedia.org/wiki/Wrapper
13:51:46 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
13:52:30 <EvanR> well this is a discussion about oop-like dot syntax so I guess it makes sense to go as far as we want to judge what stuff should be called or feel like
13:52:37 <EvanR> instead of haskell context
13:52:56 <danse-nr3__> XD
13:52:57 <dolio> Personally I think the extension itself has design flaws.
13:53:08 <dolio> .field is a poor choice of name.
13:53:36 <lortabac> gensyst: I don't know if someone has already mentioned it, but Data.Coerce is probably a better tool for working with newtypes
13:54:26 merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl)
13:54:38 <danse-nr3__> where did you pick `.field` from dolio?
13:54:48 <dolio> I mean using a dot.
13:56:04 <danse-nr3__> i see, what had you used?
13:56:08 <lortabac> dolio: why do you think so? dot only has 4 different meanings in Haskell /s
13:56:22 <dolio> # maybe
13:56:35 <danse-nr3__> yeah, a bit noisy
13:57:12 <danse-nr3__> i think # is already used in haskell although i do not use it often
13:57:58 <dolio> It's not used in anything common that I can think of.
13:58:48 <c_wraith> isn't it used by the optics library?
13:58:55 <geekosaur> # is already in use… for that, even
13:59:13 <dolio> The overloaded record accessors would have predated that.
14:00:00 <EvanR> # has precedent in other languages, ML?
14:00:06 <EvanR> for record fields
14:00:20 <c_wraith> # is also use by GHC internals with MagicHash, though that is a very specific syntactic extra case
14:00:26 × nicole quits (ilbelkyr@libera/staff/ilbelkyr) (Quit: Reconnecting)
14:00:29 nicole joins (ilbelkyr@libera/staff/ilbelkyr)
14:00:38 <danse-nr3__> anyways, we have not been nearly as "scientific" as i had hoped. Probably we will end up on no agreement and i guess i would stick on `un`. Anyways, thinking this as an isomorphism, we have a function `Foo` to go from a type to the other. We want to find a name for its inverse. Since `Foo` is a constructor, the other is a deconstructor, but being so common i suggest the shorter `de` or `dec`
14:00:42 <dolio> Yeah, that's at the end of the name.
14:01:14 EdnaLuv joins (~EdnaLuv@2605:59c8:70dd:1300:345e:9be7:36f7:e799)
14:01:29 gehmehgeh joins (~user@user/gehmehgeh)
14:02:11 <c_wraith> Not just names! ghci> :t 1#\n1# :: GHC.Prim.Int#
14:03:00 <c_wraith> and "hello"# :: GHC.Prim.Addr#
14:03:14 <tomsmeding> also OverloadedLabels
14:03:40 <EdnaLuv> TSA Delta Flight 194 Ad - Be Careful What You Eat before Your Flight! A TSA public service ad urges air passengers to be mindful of what they eat before their flight to avoid another Delta 194 diarrhea spray incident. https://justpaste.it/Delta_194_TSA/
14:03:46 ChanServ sets mode +o geekosaur
14:03:51 geekosaur sets mode +b *!*@2605:59c8:70dd:1300:345e:9be7:36f7:e799
14:03:51 EdnaLuv is kicked by geekosaur (EdnaLuv)
14:03:57 <tomsmeding> geekosaur++
14:03:58 geekosaur sets mode -o geekosaur
14:04:20 <dolio> Well, the labels thing just points to a kind of overall failure in these record extensions.
14:05:39 qqq joins (~qqq@92.43.167.61)
14:08:51 <dolio> So, actually, the overloaded labels already used my choice much earlier, and allow something very similar.
14:10:21 <dolio> You could have just had an extension that auto-declares labels for records, but OverloadedRecordDot decided to instead not do that and add a separate system for .field syntax, with the bad excuse that other languages use . for that.
14:12:19 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 255 seconds)
14:12:43 × qqq quits (~qqq@92.43.167.61) (Ping timeout: 240 seconds)
14:28:35 × merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 255 seconds)
14:31:35 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
14:40:09 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 258 seconds)
14:41:29 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
14:42:03 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
14:42:24 dhil joins (~dhil@78.45.150.83.ewm.ftth.as8758.net)
14:47:43 × cafkafk quits (~cafkafk@fsf/member/cafkafk) (Remote host closed the connection)
14:48:08 cafkafk joins (~cafkafk@fsf/member/cafkafk)
14:49:34 phma_ joins (~phma@host-67-44-208-7.hnremote.net)
14:50:33 <ncf> is there a way to, in a cabal.project file, say "use whatever version of foo is installed, and if you can't find any, fall back to this source-repository-package"?
14:50:53 <ncf> it seems like the falling back is in the other direction
14:51:29 Guest|44 joins (~Guest|44@203.189.114.89.rev.vodafone.pt)
14:51:54 phma__ joins (phma@2001:5b0:211c:cea8:446a:c697:5d5a:83a7)
14:51:56 × Guest|44 quits (~Guest|44@203.189.114.89.rev.vodafone.pt) (Client Quit)
14:53:05 × cptaffe quits (~ZNC@2600:1700:f08:111f::18e7) (Quit: ZNC 1.8.2 - https://znc.in)
14:53:20 × phma quits (~phma@2001:5b0:211c:cea8:446a:c697:5d5a:83a7) (Ping timeout: 255 seconds)
14:53:44 <c_wraith> "is installed" isn't really a concept cabal v2 does.
14:53:55 × phma_ quits (~phma@host-67-44-208-7.hnremote.net) (Ping timeout: 252 seconds)
14:54:25 <c_wraith> (by which I mean the v2 UI, not specific versions)
14:54:33 phma__ is now known as phma
14:55:22 <geekosaur> well, `installed` is actually a thing, but you can't specify a fallback to a source-repository-package
14:56:06 cptaffe joins (~ZNC@99-47-99-155.lightspeed.ltrkar.sbcglobal.net)
14:58:16 <ncf> bummer
15:03:14 × arahael quits (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 255 seconds)
15:08:21 × chomwitt quits (~chomwitt@2a02:587:7a0c:4d00:1ac0:4dff:fedb:a3f1) (Ping timeout: 255 seconds)
15:12:10 × gensyst quits (~gensyst@user/gensyst) (Quit: Leaving)
15:12:33 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:14:54 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b93b:6165:58a2:3e5e) (Remote host closed the connection)
15:15:04 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:d785:ed50:6a7:a156) (Quit: WeeChat 2.8)
15:15:10 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
15:19:58 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
15:22:24 billchenchina joins (~billchenc@103.152.35.21)
15:24:43 × fendor quits (~fendor@2a02:8388:1640:be00:c785:45ab:c70:9d3f) (Remote host closed the connection)
15:24:48 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
15:31:38 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
15:35:14 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
15:38:12 blomberg joins (~default_u@117.200.7.49)
15:38:55 <blomberg> hey inside f there is g and inside g there is h, but that's just currying, what if i want both g and h side by side inside f, is that allowed?
15:39:10 <blomberg> if so, that doesn't seeem functional?
15:40:04 <danse-nr3__> could you make an example, blomberg? Can use an interpreter here with %, i will try something that follows your description, you can correct
15:41:22 <danse-nr3__> % print "actually, i am not sure how to write what you described, please try yourself"
15:41:22 <yahb2> "actually, i am not sure how to write what you described, please try yourself"
15:42:15 <danse-nr3__> does > also work?
15:42:20 <danse-nr3__> > print "yes"
15:42:21 <lambdabot> <IO ()>
15:42:24 <blomberg> i don't know where keyword does generates curried functions or function side by side
15:43:59 <danse-nr3__> i do not understand what you mean
15:44:16 <blomberg> i will show you pseudocode
15:44:27 <danse-nr3__> alright
15:45:50 merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl)
15:45:54 <blomberg> def f(): { (def g(): return 3) ; (def h(): return 7) }
15:46:29 <blomberg> notice g() and h() are not curried in f
15:46:39 <danse-nr3__> i will try
15:46:39 <danse-nr3__> % f = g + h where g = 3, h = 7
15:46:39 <yahb2> <interactive>:41:22: error: parse error on input ‘,’
15:47:27 <blomberg> def f(): { [def g(): def h(): return 7] } #now they are curried
15:47:30 <danse-nr3__> % let g = 3 in let h = 7 in let f = g + h
15:47:30 <yahb2> <interactive>:43:40: error: ; parse error (possibly incorrect indentation or mismatched brackets)
15:47:48 <int-e> % f = g + h where g = 3; h = 7
15:47:49 <yahb2> <no output>
15:47:50 <blomberg> def f(): { [def g(): return def h(): return 7] } #now they are curried
15:47:52 <int-e> % f
15:47:52 <yahb2> 10
15:47:56 <danse-nr3__> thanks int-e
15:48:33 <blomberg> my question is if i use where and inside it define a function, and then in another clause define another function, they are side by side
15:48:37 <int-e> `where` is at the declaration level; let ... in ... is an expression, so that's why the second attempt didn't work
15:48:59 <int-e> s/declaration/binding/ I guess
15:49:54 <danse-nr3__> thanks, maybe had to use parenthesis with `let`, but i will just try to remember ; the next time. I am still a bit confused about blomberg's question
15:50:12 <blomberg> f x |x<3 = g^2 where g | x>3 = h where h --h and g are the expanded defintions of the functions
15:51:10 <blomberg> int-e: what's declaration level vs expression inside functions don't they share the same scope
15:51:30 <blomberg> ok let has local scope
15:51:35 <blomberg> but i was talking about where
15:51:52 <danse-nr3__> blomberg, in your first example f seems to return two functions
15:52:36 <blomberg> danse-nr3__: not in haskell definitions dont' "return" unless explicitly mentioned via = sign
15:52:57 <blomberg> danse-nr3__: look ^
15:53:05 <blomberg> danse-nr3__: f x |x<3 = g^2 where g | x>3 = h where h --h and g are the expanded defintions of the functions
15:53:36 caryhartline joins (~caryhartl@168.182.58.169)
15:53:41 <blomberg> where g ; where h are just definitions they don't return it means they can't be curried and thus 2 definitions are there inside f
15:54:07 <blomberg> what if there were multiple definitions inside f side-by-side , then that's not currying
15:54:12 <int-e> blomberg: there are many scopes; each `let [bindings] in [expression]` creates a nested scope for the final expression.
15:54:34 <blomberg> int-e: got it
15:54:45 <blomberg> but that's not my question
15:55:06 <int-e> blomberg: f x | [guards] = [expression] where [bindings] opens a scope for the guards and the expression
15:55:23 <danse-nr3__> blomberg, could you collect a small example in haskell? The pseudocode is not very clear
15:55:23 <blomberg> inside f there is g inside g there is h inside h there is i and inside i there is j . versus
15:55:29 <int-e> "don't they share the same scope" made no sense to me.
15:55:37 <blomberg> inside f there is g beside h beside i beside j .....
15:55:54 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
15:55:55 <blomberg> look i already showed you the code
15:56:02 ripspin joins (~chatzilla@1.145.166.245)
15:56:12 <blomberg> f x |x<3 = g^2 where g | x>3 = h where h --h and g are the expanded defintions of the functions -- i can't be more clear than this
15:56:21 <yushyin> well ...
15:56:48 <blomberg> my question is clear, inside that code that i sent, are f->g->h curried or does haskell not curry then
15:56:52 shapr joins (~user@c-67-160-55-153.hsd1.wa.comcast.net)
15:56:57 <blomberg> yushyin: please don't
15:57:14 <int-e> what does currying have to do with scopes?!
15:57:27 <EvanR> everything function is curried and takes exactly 1 argument
15:57:35 <EvanR> every function
15:57:48 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds)
15:57:48 <blomberg> int-e: nothing you mentioned let, so i said to you, that's irrelevant to my quesiton, please don't digress furthere
15:57:49 <EvanR> surface syntax is just sugar
15:57:57 <blomberg> EvanR: yes
15:58:05 <EvanR> so there you go
15:58:14 <EvanR> next
15:58:18 <blomberg> EvanR: f x |x<3 = g^2 where g | x>3 = h where h --h and g are the expanded defintions of the functions -- i can't be more clear than this
15:58:53 <int-e> That's not a question.
15:58:56 <yushyin> you can repost your code many times, but that doesn't make it more clear what your actual question is
15:59:01 <EvanR> also that's highly repetitious chat
15:59:04 <blomberg> so what about in this case : where g ; g is not a function borrowed from outside but is defined
15:59:24 <int-e> (Saying that your question is clear doesn't do anything to clarify your question.)
15:59:49 <EvanR> blomberg what are you actually asking
15:59:54 <blomberg> EvanR: f x |x<3 = g^2 where g x = x | x>3 = h where h x = x*2
15:59:55 <geekosaur> you keep saying "curried"; it seems to have nothing to do with your question
16:00:29 <EvanR> maybe go get your question and code together in a compact form and come back with a link to it
16:00:39 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1))
16:00:42 <geekosaur> if your question is "where are g and h in scope" then the answer is that "g" is in scope in "f" and "h" is in scope in "g"
16:00:52 <blomberg> EvanR: f x |x<3 = g^2 where g x = x | x>3 = h where h x = x*2 --ok edited, are both g and h inside f ?so my question is can i have multiple functions "SIDE BY SIDE"
16:01:11 <EvanR> go edit it more and come back
16:01:18 <EvanR> instead of reposting over and over
16:01:20 <blomberg> what ?
16:01:24 <geekosaur> you can define "h" in the same where block as "g" and then it will be in scope in "f"
16:01:53 <geekosaur> if you define it in its own "where" block, that block is local to the definition of "g"
16:01:55 <blomberg> geekosaur: ok thx that's what i was asking, but the problem is it's not purely functional
16:02:00 <geekosaur> so?
16:03:26 <blomberg> {where h x = x*2; g x = g^2; } now these functions are defined SIDE BY SIDE
16:03:31 <EvanR> where is attached to the definitions, rather than expressions, that might help you
16:03:34 <geekosaur> that has to do with the difference between evaluation and execution, not with scoping
16:03:48 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 240 seconds)
16:03:56 <blomberg> EvanR: yes so it's not purely functional
16:03:58 <EvanR> first where is attached to the definition for f, second where is attached to definition for g, which is inside the first where
16:04:22 <blomberg> EvanR: yes but it's not purely functional
16:04:31 <geekosaur> also what you just wrote is a type error because you used "g" both as a function and as a value, but I suspect you meant "x" for the second
16:04:46 <EvanR> all 3 functions are purely functional functions
16:04:48 <geekosaur> also there is nothing there so far that is not purely functional
16:05:02 <geekosaur> what do you believe "purely functional" means?
16:05:28 Square2 joins (~Square4@user/square)
16:05:40 <int-e> . o O ( bland, not curried )
16:05:45 <geekosaur> I really think you need to take a turn through the haskell wikibook at least to learn what Haskellers mean by things like "currying" and "purely functional"
16:06:02 <geekosaur> because you're just causing confusion when you use them to mean something else
16:06:08 <blomberg> well \x -> (\y -> (\z > value )) #this is curried but \x->(\y->value1 ; \z->value2) --look this is not curried
16:06:19 <int-e> what is ";'?
16:06:28 <danse-nr3__> was going to ask the same
16:06:30 <int-e> you're making up syntax that doesn't exist
16:06:39 <int-e> (in Haskell)
16:06:44 <blomberg> ; is the "uncurry" that I just prepared for you int-e as my dish
16:07:11 danse-nr3__ smells trolling
16:07:14 <blomberg> int-e: in where that's where ; came from in my haskell code that you don't pay attention to
16:07:24 × Square quits (~Square4@user/square) (Ping timeout: 240 seconds)
16:07:27 <EvanR> it's not valid
16:07:31 <blomberg> danse-nr3__: i am very serious
16:07:46 <EvanR> your code is wrong
16:08:06 <blomberg> {where h x = x*2; g x = g^2; } that's where the ; comes from it's the "uncurry" guys i have been reiterating to you over and over without trolling
16:08:12 <geekosaur> uncurry means turning (a, b) -> c into a -> b -> c. no semicolons involved
16:08:19 <yushyin> blomberg: it's not
16:08:32 <blomberg> but you seem to take the ; as my uncurry dish just for you to eat and taste the uncurry!!!!
16:08:36 <geekosaur> we have no idea what you are trying to say when you say "uncurry" because it's not that
16:08:51 <EvanR> :t uncurry
16:08:52 <lambdabot> (a -> b -> c) -> (a, b) -> c
16:08:58 int-e leans back pointing towards https://www.haskell.org/onlinereport/haskell2010/haskellch4.html
16:08:59 <geekosaur> reversed, sigh
16:09:16 qqq joins (~qqq@92.43.167.61)
16:09:33 <geekosaur> in any case you may not be trolling but you are refusing to use terminology that will be understood and blaming us for it
16:09:56 <shapr> uh oh, do I need my hat of power?
16:09:56 <blomberg> evan (a,b) is my (a;b) assuming a and b are functions that's the uncurry
16:10:14 <blomberg> EvanR:so how does haskell curry that up as it's side by side
16:10:17 <EvanR> uncurry takes a function and a pair, not two functions
16:10:23 ChanServ sets mode +o shapr
16:10:23 <blomberg> side by side pay attention to this word
16:10:56 <shapr> blomberg: if several people are taking issue with how you are expressing things, it may be a good time to consider what they are saying
16:12:44 <shapr> you don't have to, but the alternative is likely removal from the discussion
16:12:47 <blomberg> f->g->h that's fine i have no problem, but f->(g,h) that's i don't understand wehre is the explanation in https://www.haskell.org/onlinereport/haskell2010/haskellch4.html
16:13:42 <int-e> FWIW the point of that link was that declarations and bindings are quite different from lambda abstractions.
16:13:57 × exarkun quits (~exarkun@user/exarkun) (Server closed connection)
16:14:07 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
16:14:30 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 246 seconds)
16:14:53 <blomberg> int-e: in what way
16:15:02 <int-e> you wouldn't understand
16:15:09 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
16:15:14 <yushyin> perhaps learning haskell via a repl (ghci, lambdabot, yahb2) and using expanded layout syntax is not the most appropriate way, it seems to confuse you
16:15:19 <blomberg> i know lambda calculus
16:15:21 exarkun joins (~exarkun@user/exarkun)
16:15:28 <shapr> exarkun: hi, how's code?
16:16:04 <exarkun> Hi shapr
16:16:20 <exarkun> I have a function, `decode`, that takes a list of erasure-coded values. The list might be longer than the minimum threshold required to recover the encoded data.
16:16:31 <exarkun> Also I have cryptographic hashes of chunks of both the inputs and outputs to the erasure coding process
16:16:47 <shapr> ooh, this sounds like fun
16:16:53 <exarkun> My function currently does not verify the hashes, it just takes the minimum number of required values and throws them at the decoder
16:17:32 <exarkun> But now I would like it to verify the hashes, and also I would like it to recover with per-"chunk" granularity to hash verification failures (where possible)
16:18:02 <exarkun> Should be kind of straightforward right?
16:18:14 <shapr> I dunno, is the code in a repo I can see?
16:18:47 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 246 seconds)
16:18:49 <shapr> Does order matter when handing chunks to erasure decode?
16:18:52 <exarkun> Also I have a property test that throws what should be fatal corruption into the encoded data and verifies it no longer decodes (but I don't have one that throws supposedly non-fatal corruption in and verifies that it still does yet)
16:19:00 <exarkun> yes, it does
16:19:27 <shapr> Is order something you can determine from only the values?
16:19:53 <exarkun> The code is here, https://whetstone.private.storage/privatestorage/tahoe-chk/-/tree/20.validate-share-blocks?ref_type=heads
16:20:01 <exarkun> no, you have to keep track of it
16:20:04 × merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 245 seconds)
16:20:36 <exarkun> The function takes the values to be decoded as a [(Int, Share)], where that Int needs to be passed along to the decoder
16:20:45 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:21:21 <exarkun> The function that needs to do this work is Tahoe.CHK.decode (src/Tahoe/CHK.hs)
16:22:33 <exarkun> The Share record has `shareBlocks` that gives a list of the chunks (maybe I should start calling them "blocks" now)
16:22:49 <exarkun> It also has `shareBlockHashTree`, a merkle tree of the correct hashes of each block
16:24:40 <exarkun> So, eg, `zipWith someHashCheckFunction (leafHashes . shareBlockHashTree $ share) (shareBlocks share)` would tell you something I think - give you a list of bools of the validity of each block of one share.
16:25:21 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 246 seconds)
16:25:29 × _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Ping timeout: 245 seconds)
16:27:17 n0den1te joins (~n0den1te@223.178.81.181)
16:27:28 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
16:27:28 <mauke> did you know that your haskell program can use a lot more memory than expected if you accidentally innerJoin an unrelated table (with no condition) to your main query?
16:27:31 <mauke> sigh
16:28:08 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
16:28:58 × mjs2600 quits (~mjs2600@c-174-169-225-239.hsd1.vt.comcast.net) (Quit: ZNC 1.8.2 - https://znc.in)
16:29:55 × ripspin quits (~chatzilla@1.145.166.245) (Remote host closed the connection)
16:30:05 <shapr> exarkun: it's too bad the order can't be determined from the values themselves
16:30:23 <danse-nr3__> which library mauke?
16:30:25 <exarkun> shapr: Tell me more
16:30:38 <mauke> danse-nr3__: for SQL? selda
16:30:59 <shapr> it'd just be easier to pitch whatever subset you get into the erasure decoder
16:31:07 shapr sets mode -o shapr
16:31:12 _d0t joins (~{-d0t-}@user/-d0t-/x-7915216)
16:31:20 mjs2600 joins (~mjs2600@c-174-169-225-239.hsd1.vt.comcast.net)
16:31:28 <exarkun> shapr: As a bonus, the erasure decoder I have uses `error` if you give it the wrong number of things
16:32:17 <exarkun> shapr: Or if the inputs aren't all the same length
16:32:22 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
16:32:44 <exarkun> shapr: Or if you double up on any block numbers
16:33:34 <exarkun> shapr: I imagine we can just pretend (Int, ByteString) is the block and work around that structure where necessary?
16:33:50 <shapr> yeah
16:35:22 <shapr> hm, I get failures running the test suite, is that expected?
16:36:03 <exarkun> "decode signals error if the integrity of the shares is compromised" should fail, that's the property test that checks whether bad blocks are detected
16:36:21 <exarkun> sometimes ~70 other tests fail because the erasure decoder bindings are buggy!
16:36:57 <exarkun> but just run it again, eventually they'll pass ;)
16:37:06 <shapr> Yeah, only that one failed for me
16:37:17 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:37:36 <exarkun> That one should have something like `│ BlockBitFlips [ [ "a" ] , [ "a" ] ]` in its output
16:38:05 <exarkun> That says "I xor'd the blocks of both shares with "a" and then ran the decoder"
16:38:33 <exarkun> And then `diff True (==) (isLeft result)` fails because the decoder doesn't notice the corruption and just gives back some result
16:39:18 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 246 seconds)
16:39:32 <exarkun> (Hedgehog.Gen.bytes shrinks towards "a" which was a little surprising, but okay fine)
16:42:33 ChaiTRex joins (~ChaiTRex@user/chaitrex)
16:44:12 <shapr> exarkun: is it possible the corruption produces a valid value?
16:44:30 <exarkun> shapr: Corruption can't be detected by looking at only the values
16:44:38 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
16:44:41 <exarkun> shapr: So working on corrupt inputs _will_ give you _some_ output
16:44:46 <shapr> oh
16:47:32 <shapr> I think you said one of your inputs is the hash of the correct output? Is that how you would detect corrupted data?
16:47:41 <exarkun> yes
16:47:45 <exarkun> Or
16:48:02 <exarkun> I have two things, I'm not sure which one it makes more sense to use
16:48:30 <exarkun> The inputs to the erasure decoder are "blocks" and the outputs are "segments". I have hashes of all of the blocks and all of the segments.
16:48:45 <exarkun> So I could check before decoding or after
16:50:13 <exarkun> there are k times more blocks than segments, so checking the blocks is k times more expensive (I guess)
16:50:27 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
16:50:29 <exarkun> but you can't check segments until you've finished decoding, so checking segments incurs all of the decoding cost
16:50:51 <exarkun> so performance-wise I don't see an obvious winner
16:51:18 <exarkun> in terms of correctness, checking segments means you'll catch bugs in the decoder in addition to corrupt blocks
16:51:27 ChaiTRex joins (~ChaiTRex@user/chaitrex)
16:51:44 <exarkun> (and there's definitely at least one of those right now!)
16:51:53 <shapr> is this pure Haskell code where you can lazily check both as you go?
16:53:14 <shapr> I like the using a lazy list as control flow, perhaps more than I should.
16:53:23 <exarkun> The decoder is C but everything around it is Haskell. I think the decoder being C gets rid of the chance to have smaller-than-a-block laziness, but doesn't cause problems otherwise (and none of the hashes help with smaller-than-a-block stuff anyway)
16:53:56 <exarkun> yea I think I know what you mean. I almost feel like the return type of this function should be [IO (Either SomeError ByteString)].
16:54:06 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 255 seconds)
16:54:15 <exarkun> instead of IO Either (SomeError ByteString)
16:54:32 <shapr> How difficult is a pure Haskell decoder? Would that be a useful oracle to see if bugs are present in the C code?
16:54:40 <exarkun> I wonder if that version would actually be even easier to write, hm
16:55:47 <exarkun> the C code is only about 500 lines of dense matrix manipulation code...
16:55:48 × blomberg quits (~default_u@117.200.7.49) (Ping timeout: 240 seconds)
16:56:10 <shapr> :-(
16:56:12 <exarkun> plus there's a paper to go with it!
16:56:21 <shapr> ooh, bonus fun!
16:56:56 <exarkun> at some point I will have to tackle the decoder directly, to find out why its results get randomly corrupted somehow
16:57:13 <exarkun> but I think for adding this validation it's a red herring
16:57:37 <EvanR> C applied for its strengths: numeric code
16:57:59 <EvanR> where has all the fortran gone
16:59:36 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 246 seconds)
17:01:05 <shapr> exarkun: I got a bugfix PR for my testing library from someone I met at ICFP, that's how code is going for me
17:01:14 <exarkun> shapr: nice
17:01:34 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f9cc:9bb3:d19d:9050)
17:01:40 <shapr> turns out if you sass QuickCheck hard enough, a PhD will immediately be dispatched to your location
17:01:46 <shapr> er, "a PhD student"
17:01:51 ChaiTRex joins (~ChaiTRex@user/chaitrex)
17:01:51 <exarkun> haha
17:02:19 <exarkun> is it a fun bug
17:02:46 <shapr> eh, not really. Seems that QuickCheck is now a full on batch testing tool instead of a true random tester as it was before
17:03:05 <exarkun> hm, what's the difference between those things?
17:03:09 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
17:03:39 <shapr> I was doing a loop of "run one property test, check coverage" and that caused QuickCheck to produce the same value over and over
17:03:47 <exarkun> ahh
17:09:00 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 240 seconds)
17:10:18 × Square2 quits (~Square4@user/square) (Ping timeout: 255 seconds)
17:10:19 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
17:10:31 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
17:13:03 wootehfoot joins (~wootehfoo@user/wootehfoot)
17:18:19 danse-nr3_ joins (~francesco@151.47.242.109)
17:18:29 × danse-nr3__ quits (~francesco@151.37.243.136) (Read error: Connection reset by peer)
17:19:38 <shapr> exarkun: as far as I know, a real random test means a PRNG picks a value from the entire value range of the type you requested
17:20:10 <shapr> that's not quite the case anymore for QuickCheck; https://github.com/shapr/kudzu/issues/8#issuecomment-1709103689
17:21:32 chomwitt joins (~chomwitt@2a02:587:7a0c:4d00:1ac0:4dff:fedb:a3f1)
17:21:52 <shapr> QuickCheck returns the seed on failure: https://github.com/nick8325/quickcheck/blob/master/src/Test/QuickCheck/Test.hs#L130
17:22:17 <shapr> (and the size, and last I checked you need both to get the exact value that failed the test)
17:22:59 <shapr> if it also returned the seed on success, I could extract the (seed,size) after each succees, and feed that into the next size 1 batch test
17:23:17 <shapr> so I may put up a PR and ask for feedback
17:23:29 × vgtw quits (~vgtw@user/vgtw) (Quit: ZNC - https://znc.in)
17:23:41 <mauke> seedback
17:23:46 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
17:23:49 <shapr> :-D
17:24:20 <shapr> I gave a talk on kudzu at ICFP! Afterwards I got really interesting questions that I had never considered!
17:24:42 <shapr> I can barely wait for the final recording to be public so I can go listen to the questions, I was *way* too nervous to remember all of them.
17:26:50 vgtw joins (~vgtw@user/vgtw)
17:27:08 zer0bitz_ is now known as zer0bitz
17:27:56 × noteness quits (~noteness@user/noteness) (Server closed connection)
17:29:10 noteness joins (~noteness@user/noteness)
17:29:46 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:f9cc:9bb3:d19d:9050) (Remote host closed the connection)
17:35:00 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving)
17:35:04 × danse-nr3_ quits (~francesco@151.47.242.109) (Ping timeout: 252 seconds)
17:36:56 merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl)
17:37:35 × Techcable quits (~Techcable@user/Techcable) (Server closed connection)
17:37:43 Techcable joins (~Techcable@user/Techcable)
17:41:24 × merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 240 seconds)
17:43:06 wootehfoot joins (~wootehfoo@user/wootehfoot)
17:48:44 × phma quits (phma@2001:5b0:211c:cea8:446a:c697:5d5a:83a7) (Read error: Connection reset by peer)
17:49:40 phma joins (~phma@2001:5b0:210d:8e28:dfdb:e371:52a2:8c6c)
18:09:39 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:f9cc:9bb3:d19d:9050)
18:11:10 notzmv joins (~zmv@user/notzmv)
18:11:50 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:15:07 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:16:39 danza joins (~francesco@151.47.242.109)
18:20:29 × son0p quits (~ff@186.121.39.74) (Ping timeout: 245 seconds)
18:22:26 × vgtw quits (~vgtw@user/vgtw) (Quit: ZNC - https://znc.in)
18:25:56 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 258 seconds)
18:26:49 Pickchea joins (~private@user/pickchea)
18:28:03 vgtw joins (~vgtw@user/vgtw)
18:31:00 × chomwitt quits (~chomwitt@2a02:587:7a0c:4d00:1ac0:4dff:fedb:a3f1) (Ping timeout: 246 seconds)
18:32:46 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:34:14 chomwitt joins (~chomwitt@ppp-94-67-130-18.home.otenet.gr)
18:34:49 × phma quits (~phma@2001:5b0:210d:8e28:dfdb:e371:52a2:8c6c) (Read error: Connection reset by peer)
18:35:33 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
18:36:11 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
18:39:00 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
18:42:46 phma joins (~phma@host-67-44-208-181.hnremote.net)
18:42:55 × danza quits (~francesco@151.47.242.109) (Remote host closed the connection)
18:43:19 danza joins (~francesco@151.47.242.109)
18:47:44 abrar joins (~abrar@pool-108-52-90-30.phlapa.fios.verizon.net)
18:49:17 × shapr quits (~user@c-67-160-55-153.hsd1.wa.comcast.net) (Quit: gotta buy shoes for glass blowing)
18:52:08 × chele quits (~chele@user/chele) (Remote host closed the connection)
18:56:53 powderhorn joins (~powderhor@207-153-12-54.static.fttp.usinternet.com)
18:58:24 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:00:07 × tomsmeding quits (~tomsmedin@static.21.109.88.23.clients.your-server.de) (Quit: ZNC 1.8.2 - https://znc.in)
19:00:47 tomsmeding joins (~tomsmedin@2a01:4f8:c0c:5e5e::2)
19:02:47 aaronv joins (~aaronv@user/aaronv)
19:05:49 × aaronv quits (~aaronv@user/aaronv) (Remote host closed the connection)
19:06:08 aaronv joins (~aaronv@user/aaronv)
19:11:48 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:15:34 pavonia joins (~user@user/siracusa)
19:19:05 × cptaffe quits (~ZNC@99-47-99-155.lightspeed.ltrkar.sbcglobal.net) (Changing host)
19:19:05 cptaffe joins (~ZNC@user/cptaffe)
19:19:59 codaraxis joins (~codaraxis@user/codaraxis)
19:20:54 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:21:29 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
19:26:43 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds)
19:28:04 merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl)
19:34:07 × powderhorn quits (~powderhor@207-153-12-54.static.fttp.usinternet.com) (Quit: Client closed)
19:34:21 powderhorn joins (~powderhor@207-153-12-54.static.fttp.usinternet.com)
19:34:37 Sgeo joins (~Sgeo@user/sgeo)
19:34:44 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
19:34:47 × stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
19:35:21 stiell_ joins (~stiell@gateway/tor-sasl/stiell)
19:37:35 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:37:44 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Ping timeout: 258 seconds)
19:38:08 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2)
19:49:24 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:49:57 evertedsphere_ joins (uid434122@id-434122.hampstead.irccloud.com)
19:50:13 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
19:52:45 × evertedsphere_ quits (uid434122@id-434122.hampstead.irccloud.com) (Client Quit)
19:53:47 evertedsphere joins (sid434122@id-434122.hampstead.irccloud.com)
19:58:14 × merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 246 seconds)
20:01:19 segfaultfizzbuzz joins (~segfaultf@12.172.217.142)
20:02:26 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
20:02:33 × segfaultfizzbuzz quits (~segfaultf@12.172.217.142) (Client Quit)
20:04:27 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 258 seconds)
20:05:01 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:06:19 × vglfr quits (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Ping timeout: 252 seconds)
20:06:58 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
20:08:05 vglfr joins (~vglfr@88.155.2.21)
20:10:29 × mysl quits (~mysl@user/mysl) (Ping timeout: 245 seconds)
20:12:10 Guest|79 joins (~Guest|79@83-82-144-164.cable.dynamic.v4.ziggo.nl)
20:14:26 × aaronv quits (~aaronv@user/aaronv) (Ping timeout: 246 seconds)
20:16:55 aaronv joins (~aaronv@user/aaronv)
20:17:40 mysl joins (~mysl@user/mysl)
20:18:24 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 245 seconds)
20:18:27 × ddellacosta quits (~ddellacos@ool-44c738de.dyn.optonline.net) (Ping timeout: 246 seconds)
20:19:04 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:20:24 Carbon-lang joins (~Carbonlan@ip121.ip-149-56-160.net)
20:20:42 ddellacosta joins (~ddellacos@ool-44c738de.dyn.optonline.net)
20:21:19 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 245 seconds)
20:22:04 sm joins (~sm@plaintextaccounting/sm)
20:25:35 stackdroid18 joins (14094@de1.hashbang.sh)
20:28:09 × Carbon-lang quits (~Carbonlan@ip121.ip-149-56-160.net) (Ping timeout: 252 seconds)
20:28:32 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
20:30:36 Carbon-lang joins (~Carbonlan@ip121.ip-149-56-160.net)
20:32:35 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:36:08 accord joins (uid568320@id-568320.hampstead.irccloud.com)
20:36:50 × caryhartline quits (~caryhartl@168.182.58.169) (Ping timeout: 246 seconds)
20:39:41 × Guest|79 quits (~Guest|79@83-82-144-164.cable.dynamic.v4.ziggo.nl) (Quit: Connection closed)
20:39:56 Inst joins (~Inst@120.244.192.250)
20:40:46 × stackdroid18 quits (14094@de1.hashbang.sh) (Quit: hasta la vista... tchau!)
20:41:35 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:41:47 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
20:42:59 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 255 seconds)
20:43:56 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
20:46:49 × michalz quits (~michalz@185.246.207.222) (Remote host closed the connection)
20:52:15 Square2 joins (~Square4@user/square)
20:53:27 × acidjnk quits (~acidjnk@p200300d6e7072f13dd7273edbfdb54c8.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
20:54:41 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
20:54:43 × jackneill__ quits (~Jackneill@20014C4E1E101A00E9F1E1049A19AA9C.dsl.pool.telekom.hu) (Ping timeout: 252 seconds)
20:55:39 × Carbon-lang quits (~Carbonlan@ip121.ip-149-56-160.net) (Ping timeout: 252 seconds)
20:57:07 Carbon-lang joins (~Carbonlan@ip121.ip-149-56-160.net)
20:58:55 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:00:54 × sudden quits (~cat@user/sudden) (Ping timeout: 245 seconds)
21:01:46 sudden joins (~cat@user/sudden)
21:05:08 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
21:05:11 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
21:06:36 × _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Ping timeout: 240 seconds)
21:08:23 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:09:42 × mysl quits (~mysl@user/mysl) (Ping timeout: 255 seconds)
21:10:54 × vglfr quits (~vglfr@88.155.2.21) (Ping timeout: 245 seconds)
21:11:23 mysl joins (~mysl@user/mysl)
21:11:52 vglfr joins (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua)
21:16:05 merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl)
21:18:19 danza_ joins (~francesco@151.37.245.236)
21:20:47 × danza quits (~francesco@151.47.242.109) (Ping timeout: 255 seconds)
21:22:18 × beaky quits (~beaky@2a03:b0c0:0:1010::1e:a001) (Server closed connection)
21:22:37 beaky joins (~beaky@2a03:b0c0:0:1010::1e:a001)
21:30:59 _d0t joins (~{-d0t-}@user/-d0t-/x-7915216)
21:31:57 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 246 seconds)
21:33:49 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 245 seconds)
21:35:29 × mysl quits (~mysl@user/mysl) (Ping timeout: 245 seconds)
21:35:33 × erisco quits (~erisco@d24-141-66-165.home.cgocable.net) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
21:36:02 × sm quits (~sm@plaintextaccounting/sm) (Quit: sm)
21:36:25 erisco joins (~erisco@d24-141-66-165.home.cgocable.net)
21:37:39 mysl joins (~mysl@user/mysl)
21:38:42 × ornx quits (~ornx@user/ornxka) (Quit: WeeChat 4.0.3)
21:46:19 × dhil quits (~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 245 seconds)
21:50:16 × merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 252 seconds)
21:50:57 sm joins (~sm@plaintextaccounting/sm)
21:52:12 jmdaemon joins (~jmdaemon@user/jmdaemon)
21:52:37 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:53:18 emmanuelux joins (~emmanuelu@user/emmanuelux)
21:56:38 wroathe joins (~wroathe@user/wroathe)
21:57:32 × wroathe quits (~wroathe@user/wroathe) (Client Quit)
21:57:41 wroathe joins (~wroathe@user/wroathe)
22:04:37 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
22:10:29 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 245 seconds)
22:13:03 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:15:33 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
22:15:48 × _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Ping timeout: 240 seconds)
22:19:17 × aaronv quits (~aaronv@user/aaronv) (Ping timeout: 255 seconds)
22:19:38 Inst joins (~Inst@120.244.192.250)
22:21:23 sm joins (~sm@plaintextaccounting/sm)
22:24:51 × cptaffe quits (~ZNC@user/cptaffe) (Ping timeout: 255 seconds)
22:25:48 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 240 seconds)
22:25:56 cptaffe joins (~cptaffe@user/cptaffe)
22:26:12 × caubert quits (~caubert@user/caubert) (Ping timeout: 255 seconds)
22:26:15 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
22:26:49 _d0t joins (~{-d0t-}@user/-d0t-/x-7915216)
22:29:43 notzmv joins (~zmv@user/notzmv)
22:29:51 × aristid quits (sid1599@id-1599.uxbridge.irccloud.com) (Server closed connection)
22:30:03 aristid joins (sid1599@id-1599.uxbridge.irccloud.com)
22:31:01 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
22:38:15 aaronv joins (~aaronv@user/aaronv)
22:39:41 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
22:40:08 × powderhorn quits (~powderhor@207-153-12-54.static.fttp.usinternet.com) (Ping timeout: 245 seconds)
22:49:41 gmg joins (~user@user/gehmehgeh)
22:55:42 × accord quits (uid568320@id-568320.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
22:55:52 sm joins (~sm@plaintextaccounting/sm)
22:58:42 <wroathe> Hey dumb question, but I commonly see a pattern where there's a typeclass like class Foo, and then a default method that refers to a constraint with a GFoo version of the typeclass for generics. What's the purpose of this pattern if my goal is to define a typeclass that has a default instance for all types that derive Generic?
22:59:09 <wroathe> What would the harm be in just making my Foo class the generic typeclass
23:00:36 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 240 seconds)
23:02:20 <wroathe> Actually, scratch that. I think the difference there is the kind of type for the typeclass. The reason we want the outer typeclass is to apply the Rep type family
23:03:06 <jackdk> wroathe: the GFoo pattern is an older idiom before -XDerivingVia existed. If you define `instance (Generic a, Foo (Rep a)) => Foo a` you'll tie yourself in knots because that will match every type, including the ones made up of the generic data types.
23:03:08 <jackdk> The more modern way is to use the `Generically` newtype, which lets you hang the generic instance off of something else, preserve the default declaration for non-generic stuff if you want it, and make Generic derivation explicit.
23:04:00 <jackdk> https://hackage.haskell.org/package/generically is the compat package, but its haddocks still show `instance (Generic a, Monoid (Rep a ()) => Monoid (Generically a)` so that can give you the flavour.
23:05:19 hays joins (rootvegeta@fsf/member/hays)
23:06:16 <wroathe> jackdk: Thanks much
23:06:20 <wroathe> I'll have a look
23:06:52 merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl)
23:07:26 <jackdk> wroathe: For completeness, the deriving clause on the types which use it looks like `deriving (Semigroup, Monoid) via (Generically Foo)`
23:08:52 <wroathe> Looks neat. I need to get up to speed on DerivingVia
23:11:40 × merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 252 seconds)
23:12:03 × Inst quits (~Inst@120.244.192.250) (Ping timeout: 252 seconds)
23:12:45 × Square2 quits (~Square4@user/square) (Ping timeout: 255 seconds)
23:13:13 × mmhat quits (~mmh@p200300f1c7178aebee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
23:13:35 mmhat joins (~mmh@p200300f1c7178a38ee086bfffe095315.dip0.t-ipconnect.de)
23:14:11 × ubert quits (~Thunderbi@178.115.39.254.wireless.dyn.drei.com) (Ping timeout: 255 seconds)
23:16:53 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds)
23:17:09 × _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Ping timeout: 245 seconds)
23:21:41 _d0t joins (~{-d0t-}@user/-d0t-/x-7915216)
23:22:59 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 245 seconds)
23:23:15 nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net)
23:25:05 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
23:26:18 × mmhat quits (~mmh@p200300f1c7178a38ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.0.4)
23:28:35 × nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
23:30:15 Inst joins (~Inst@120.244.192.250)
23:31:18 sm joins (~sm@plaintextaccounting/sm)
23:34:24 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 246 seconds)
23:36:51 × sm quits (~sm@plaintextaccounting/sm) (Ping timeout: 255 seconds)
23:41:55 × mysl quits (~mysl@user/mysl) (Ping timeout: 252 seconds)
23:42:58 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
23:42:58 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
23:42:58 wroathe joins (~wroathe@user/wroathe)
23:55:25 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
23:56:05 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
23:56:56 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 255 seconds)
23:57:19 × ystael quits (~ystael@user/ystael) (Ping timeout: 252 seconds)
23:57:26 Lord_of_Life_ is now known as Lord_of_Life
23:57:33 × _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Ping timeout: 255 seconds)
23:58:17 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 255 seconds)
23:59:08 notzmv- joins (~zmv@user/notzmv)
23:59:40 notzmv- is now known as notzmv

All times are in UTC on 2023-09-12.