2021/03/16

2021-03-16 00:00:15 +0100stux|RC-only(stux2@grid9.quadspeedi.net)
2021-03-16 00:00:52 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 265 seconds)
2021-03-16 00:01:32 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2021-03-16 00:02:19 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-03-16 00:04:56 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving)
2021-03-16 00:06:17 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
2021-03-16 00:06:24 +0100bbear(~znc@21212.s.t4vps.eu) (Read error: Connection reset by peer)
2021-03-16 00:06:28 +0100bergey(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2021-03-16 00:06:34 +0100bbear(~znc@21212.s.t4vps.eu)
2021-03-16 00:07:23 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-03-16 00:08:44 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-03-16 00:10:03 +0100cafce25(~cafce25@ipbcc3009d.dynamic.kabel-deutschland.de)
2021-03-16 00:10:25 +0100cosimone(~user@93-47-228-249.ip115.fastwebnet.it)
2021-03-16 00:12:43 +0100solidus-river(~fuag1@174.127.249.180) (Read error: Connection reset by peer)
2021-03-16 00:15:38 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2021-03-16 00:17:15 +0100molehillish(~molehilli@2600:8800:8d06:1800:c9c1:cc0:ccd2:b4f)
2021-03-16 00:18:19 +0100son0p(~son0p@181.136.122.143) (Quit: Lost terminal)
2021-03-16 00:18:27 +0100conal(~conal@64.71.133.70)
2021-03-16 00:20:41 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4) (Remote host closed the connection)
2021-03-16 00:21:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4)
2021-03-16 00:29:30 +0100cosimone(~user@93-47-228-249.ip115.fastwebnet.it) (Remote host closed the connection)
2021-03-16 00:30:44 +0100xsperry(~as@unaffiliated/xsperry) (Remote host closed the connection)
2021-03-16 00:32:11 +0100molehillish(~molehilli@2600:8800:8d06:1800:c9c1:cc0:ccd2:b4f) (Remote host closed the connection)
2021-03-16 00:33:04 +0100molehillish(~molehilli@2600:8800:8d06:1800:c9c1:cc0:ccd2:b4f)
2021-03-16 00:33:48 +0100xsperry(~as@unaffiliated/xsperry)
2021-03-16 00:35:02 +0100acidjnk_new(~acidjnk@p200300d0c72b954785b86a8446f85480.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-03-16 00:37:14 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds)
2021-03-16 00:37:50 +0100molehillish(~molehilli@2600:8800:8d06:1800:c9c1:cc0:ccd2:b4f) (Ping timeout: 264 seconds)
2021-03-16 00:39:37 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 276 seconds)
2021-03-16 00:41:25 +0100molehillish(~molehilli@2600:8800:8d06:1800:c9c1:cc0:ccd2:b4f)
2021-03-16 00:41:28 +0100__minoru__shirae(~shiraeesh@109.166.58.121) (Ping timeout: 260 seconds)
2021-03-16 00:43:42 +0100brandly(~brandly@c-73-68-15-46.hsd1.ma.comcast.net)
2021-03-16 00:45:08 +0100codygman__(~user@47.186.207.161)
2021-03-16 00:45:40 +0100cfricke(cfricke@gateway/vpn/mullvad/cfricke) (Ping timeout: 256 seconds)
2021-03-16 00:46:13 +0100nrh^(~hph@ip98-184-89-2.mc.at.cox.net) ()
2021-03-16 00:47:04 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2021-03-16 00:47:18 +0100bergey(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 246 seconds)
2021-03-16 00:47:34 +0100 <wickedjargon> question for anyone: Do you think reading "The Little Schemer" will help with programming in Haskell?
2021-03-16 00:47:46 +0100usr25_tm(~usr25@unaffiliated/usr25)
2021-03-16 00:48:15 +0100codygman__(~user@47.186.207.161) (Remote host closed the connection)
2021-03-16 00:48:37 +0100codygman__(~user@47.186.207.161)
2021-03-16 00:48:58 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net)
2021-03-16 00:50:49 +0100 <Axman6> I doubt it would hurt
2021-03-16 00:51:31 +0100usr25(~usr25@unaffiliated/usr25) (Ping timeout: 268 seconds)
2021-03-16 00:51:52 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-16 00:57:34 +0100codygman__(~user@47.186.207.161) (Ping timeout: 256 seconds)
2021-03-16 00:58:22 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-03-16 01:03:32 +0100 <koz_> I've tried reading those books. I personally didn't find them useful for any purpose. YMMV.
2021-03-16 01:03:42 +0100conal(~conal@64.71.133.70)
2021-03-16 01:04:23 +0100Jd007(~Jd007@162.156.11.151) (Quit: Jd007)
2021-03-16 01:04:38 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
2021-03-16 01:06:42 +0100brandly(~brandly@c-73-68-15-46.hsd1.ma.comcast.net) (Ping timeout: 260 seconds)
2021-03-16 01:06:47 +0100dsrt^(~hph@ip98-184-89-2.mc.at.cox.net)
2021-03-16 01:07:01 +0100jess(jess@freenode/staff/jess) (Quit: K-Lined)
2021-03-16 01:07:34 +0100j(jess@freenode/staff/jess)
2021-03-16 01:11:10 +0100jjess
2021-03-16 01:12:34 +0100 <koz_> I need something like a combination of mapMaybe and hashNub. The idea is that I have f :: a -> Maybe b; I toss out Nothings, and nub on the b in Justs, but give back as in the end.
2021-03-16 01:12:35 +0100usr25_tm(~usr25@unaffiliated/usr25) (Read error: Connection reset by peer)
2021-03-16 01:12:41 +0100 <koz_> What's a good way to write this?
2021-03-16 01:13:05 +0100usr25(~usr25@unaffiliated/usr25)
2021-03-16 01:13:10 +0100 <Axman6> what type are you looking for?
2021-03-16 01:13:55 +0100 <koz_> Something like '(Eq b, Hashable b) => (a -> Maybe b) -> [a] -> [a]'
2021-03-16 01:15:53 +0100 <monochrom> I think catMaybe helps with the Maybe aspect.
2021-03-16 01:16:10 +0100 <monochrom> Err no nevermind, it loses the a.
2021-03-16 01:16:55 +0100 <Axman6> @djinn (a -> Maybe b) -> (a -> Maybe (a,b))
2021-03-16 01:16:55 +0100 <lambdabot> f a b =
2021-03-16 01:16:55 +0100 <lambdabot> case a b of
2021-03-16 01:16:55 +0100 <lambdabot> Nothing -> Nothing
2021-03-16 01:16:55 +0100 <lambdabot> Just c -> Just (b, c)
2021-03-16 01:17:09 +0100usr25(~usr25@unaffiliated/usr25) (Read error: Connection reset by peer)
2021-03-16 01:17:17 +0100 <monochrom> :)
2021-03-16 01:18:12 +0100 <monochrom> Axman6's function will help, if you combine with catMaybes. You now have [(a,b)]. Are you OK with nubBy (<something that uses the hashing function here>)?
2021-03-16 01:18:25 +0100 <Axman6> fmap snd
2021-03-16 01:18:30 +0100 <koz_> monochrom: I'm just seeing if anyone can come up with something decent.
2021-03-16 01:18:48 +0100dhil(~dhil@80.208.56.181) (Ping timeout: 245 seconds)
2021-03-16 01:19:00 +0100 <koz_> That could be fine, as long as I don't have bad nubbing costs.
2021-03-16 01:19:06 +0100 <koz_> (like, not accidentally quadratic somehow)
2021-03-16 01:19:32 +0100 <monochrom> nubBy has bad nubbing cost. I haven't followed the hashing libraries.
2021-03-16 01:19:33 +0100Axman6resists recommending the discrimination package
2021-03-16 01:20:04 +0100 <koz_> Axman6: LOL. Tempting as that is, I don't think my colleagues would appreciate that.
2021-03-16 01:20:12 +0100 <koz_> OK, I'll just try and write it.
2021-03-16 01:20:14 +0100 <koz_> Thanks anyways.
2021-03-16 01:20:33 +0100monochromneeds the meme picture for panel 1: quadratic cost on fire; panel 2: "this is fine"
2021-03-16 01:20:40 +0100 <koz_> LOL
2021-03-16 01:20:51 +0100 <Axman6> discrimination isn't that crazy really
2021-03-16 01:21:05 +0100 <koz_> monochrom: https://imgflip.com/memegenerator/This-Is-Fine
2021-03-16 01:21:05 +0100 <Axman6> you can use it without understanding how it works
2021-03-16 01:21:24 +0100 <koz_> Axman6: Yeah, I realize that. Plus, I actually _do_ understand how it works.
2021-03-16 01:21:40 +0100 <Axman6> do you though?
2021-03-16 01:21:54 +0100 <koz_> Axman6: Well, maybe not the implementation specifics, but I do understand the theory behind it.
2021-03-16 01:22:06 +0100 <pjb> It's not funny.
2021-03-16 01:22:33 +0100 <Axman6> yeah the idea is pretty simple, the implementation is a fun other level of understanding
2021-03-16 01:25:08 +0100Jd007(~Jd007@162.156.11.151)
2021-03-16 01:26:16 +0100 <koz_> Suppose I have f :: a -> Maybe b. How can I get a -> Maybe (b, a) out of f?
2021-03-16 01:26:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-03-16 01:26:42 +0100 <Axman6> @djinn (a -> Maybe b) -> (a -> Maybe (a,b))
2021-03-16 01:26:42 +0100 <lambdabot> f a b =
2021-03-16 01:26:42 +0100 <lambdabot> case a b of
2021-03-16 01:26:42 +0100 <lambdabot> Nothing -> Nothing
2021-03-16 01:26:42 +0100 <lambdabot> Just c -> Just (b, c)
2021-03-16 01:27:01 +0100 <koz_> Legit.
2021-03-16 01:27:13 +0100 <Axman6> a.k.a: \f a -> (a,) <$> f a
2021-03-16 01:27:41 +0100 <Axman6> or: \f a -> (,a) <$> f a -- to match the type you asked for
2021-03-16 01:28:38 +0100 <koz_> @pl \x -> (,x) <$> f x
2021-03-16 01:28:38 +0100 <lambdabot> (line 1, column 9):
2021-03-16 01:28:38 +0100 <lambdabot> unexpected ','
2021-03-16 01:28:38 +0100 <lambdabot> expecting expression
2021-03-16 01:28:43 +0100 <koz_> @pl \x -> (x,) <$> f x
2021-03-16 01:28:43 +0100 <lambdabot> (line 1, column 9):
2021-03-16 01:28:43 +0100 <lambdabot> unexpected ","
2021-03-16 01:28:43 +0100 <lambdabot> expecting letter or digit, variable, "(", operator or ")"
2021-03-16 01:28:46 +0100 <koz_> Argh.
2021-03-16 01:28:53 +0100 <koz_> Oh well.
2021-03-16 01:29:28 +0100 <hololeap> % :t (>>=) @((->) _)
2021-03-16 01:29:29 +0100 <yahb> hololeap: (w -> a) -> (a -> w -> b) -> w -> b
2021-03-16 01:29:40 +0100 <hololeap> % :t (<*>) @((->) _)
2021-03-16 01:29:40 +0100 <yahb> hololeap: (w -> (a -> b)) -> (w -> a) -> w -> b
2021-03-16 01:30:02 +0100Jd007(~Jd007@162.156.11.151) (Quit: Jd007)
2021-03-16 01:30:46 +0100 <hololeap> @pl \x -> ((,) x) <$> f x
2021-03-16 01:30:47 +0100 <lambdabot> liftM2 (<$>) (,) f
2021-03-16 01:31:00 +0100 <hololeap> @pl \x -> (flip (,) x) <$> f x
2021-03-16 01:31:00 +0100 <lambdabot> ap ((<$>) . flip (,)) f
2021-03-16 01:31:29 +0100 <koz_> So ((<$>) . flip (,)) <$> f
2021-03-16 01:33:06 +0100nfd(~nfd9001@2601:602:77f:1820:61ac:3926:b4ff:2973)
2021-03-16 01:33:26 +0100g0nk(~g0nk@173-26-39-109.client.mchsi.com)
2021-03-16 01:33:54 +0100crobbins(~crobbins@2600:1700:48eb:8490:f076:8bfb:8043:913e) (Remote host closed the connection)
2021-03-16 01:34:55 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 265 seconds)
2021-03-16 01:37:15 +0100ajc(~ajc@69.231.232.79)
2021-03-16 01:41:14 +0100Jd007(~Jd007@162.156.11.151)
2021-03-16 01:42:51 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 256 seconds)
2021-03-16 01:44:26 +0100nfd(~nfd9001@2601:602:77f:1820:61ac:3926:b4ff:2973) (Ping timeout: 264 seconds)
2021-03-16 01:48:04 +0100gienah(~mwright@gentoo/developer/gienah)
2021-03-16 01:48:15 +0100klixto(~klixto@130.220.8.139)
2021-03-16 01:48:38 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-03-16 01:48:46 +0100rajivr(uid269651@gateway/web/irccloud.com/x-jiwetompintgtwib)
2021-03-16 01:49:14 +0100aarvar(~foewfoiew@2601:602:a080:fa0:6cfb:c91f:3c9a:a8cb) (Ping timeout: 264 seconds)
2021-03-16 01:49:41 +0100DTZUZU_(~DTZUZO@207.81.119.43)
2021-03-16 01:49:55 +0100nf(~n@monade.li) (Quit: Fairfarren.)
2021-03-16 01:50:25 +0100__minoru__shirae(~shiraeesh@109.166.58.121)
2021-03-16 01:50:40 +0100nf(~n@monade.li)
2021-03-16 01:51:33 +0100gienah_(~mwright@119-18-2-23.771202.syd.nbn.aussiebb.net) (Ping timeout: 264 seconds)
2021-03-16 01:52:03 +0100DTZUZU(~DTZUZO@205.ip-149-56-132.net) (Ping timeout: 246 seconds)
2021-03-16 01:55:02 +0100ajc(~ajc@69.231.232.79) ("Leaving")
2021-03-16 01:55:26 +0100ajc(~ajc@69.231.232.79)
2021-03-16 01:55:28 +0100jespada(~jespada@90.254.243.187) (Ping timeout: 245 seconds)
2021-03-16 01:56:43 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 245 seconds)
2021-03-16 01:57:39 +0100jespada(~jespada@90.254.243.187)
2021-03-16 01:58:50 +0100gienah_(~mwright@119-18-3-26.771203.syd.nbn.aussiebb.net)
2021-03-16 02:00:10 +0100augnun(~augnun@189.6.16.141)
2021-03-16 02:00:19 +0100DTZUZU(~DTZUZO@205.ip-149-56-132.net)
2021-03-16 02:01:18 +0100gienah(~mwright@gentoo/developer/gienah) (Ping timeout: 260 seconds)
2021-03-16 02:01:42 +0100dfeuer(~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net)
2021-03-16 02:02:29 +0100aarvar(~foewfoiew@2601:602:a080:fa0:d8ee:3872:3a62:88c1)
2021-03-16 02:02:33 +0100DTZUZU_(~DTZUZO@207.81.119.43) (Ping timeout: 246 seconds)
2021-03-16 02:03:42 +0100ajc(~ajc@69.231.232.79) ("Leaving")
2021-03-16 02:03:44 +0100Kaiepi(~Kaiepi@47.54.252.148)
2021-03-16 02:03:58 +0100sm2n_(~sm2n@bras-base-hmtnon143hw-grc-15-70-54-78-219.dsl.bell.ca)
2021-03-16 02:04:11 +0100ajc(~ajc@69.231.232.79)
2021-03-16 02:04:31 +0100raoul9(~raoulhida@nomnomnomnom.co.uk)
2021-03-16 02:04:36 +0100drewolson0(~drewolson@64.227.24.16)
2021-03-16 02:04:42 +0100{abby}9(~{abby}@unaffiliated/demhydraz)
2021-03-16 02:04:45 +0100concept26(~concept2@unaffiliated/tubo)
2021-03-16 02:05:04 +0100mozzarel1(~sam@unaffiliated/sam113101)
2021-03-16 02:05:13 +0100tromp_(~tromp@dhcp-077-249-230-040.chello.nl)
2021-03-16 02:05:17 +0100koz(~koz@121.99.240.58)
2021-03-16 02:05:18 +0100Geekingfrog_(geekingfro@2a01:7e01::f03c:92ff:fe48:8bdf)
2021-03-16 02:05:22 +0100lazyshrk_(~lazyshrk@128.199.58.13)
2021-03-16 02:05:29 +0100uwap(~uwap@mail.uwap.name)
2021-03-16 02:05:32 +0100fre(~freusque@104.238.190.229)
2021-03-16 02:05:36 +0100sepples_(~sepples@67.205.168.224)
2021-03-16 02:05:38 +0100xwvvvvwx-(xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx)
2021-03-16 02:05:52 +0100minoru_shiraeesh(~shiraeesh@109.166.58.121)
2021-03-16 02:06:01 +0100incertia(~incertia@d4-50-26-103.nap.wideopenwest.com)
2021-03-16 02:06:02 +0100djanatyn_(~djanatyn@ec2-18-209-155-56.compute-1.amazonaws.com)
2021-03-16 02:06:23 +0100sm_(~user@li229-222.members.linode.com)
2021-03-16 02:06:24 +0100bonz060_(~quassel@2001:bc8:47a4:a23::1)
2021-03-16 02:06:33 +0100aforemny_(~aforemny@static.248.158.34.188.clients.your-server.de)
2021-03-16 02:06:56 +0100tanuki(~quassel@173.168.154.189)
2021-03-16 02:07:02 +0100kaletaa_(~kaletaa@188.34.177.83)
2021-03-16 02:07:08 +0100duckonomy(~duckonomy@177.ip-144-217-84.net)
2021-03-16 02:07:34 +0100duairc_(~shane@ana.rch.ist)
2021-03-16 02:07:39 +0100dilinger_(~dilinger@spindle.queued.net)
2021-03-16 02:07:48 +0100hrdl_(~ef24a0e6@unaffiliated/hrdl)
2021-03-16 02:07:48 +0100aldum_(~vishera@aldum.pw)
2021-03-16 02:07:49 +0100gothos_(~gothos@antsy.jhz.name)
2021-03-16 02:07:51 +0100hpc_(~juzz@ip98-169-35-13.dc.dc.cox.net)
2021-03-16 02:07:54 +0100falsifia1(~falsifian@exoco.falsifian.org)
2021-03-16 02:07:54 +0100koluacik_(~koluacik@134.122.28.77)
2021-03-16 02:07:57 +0100int-e_(~noone@int-e.eu)
2021-03-16 02:08:00 +0100ridcully_(~ridcully@pd951f269.dip0.t-ipconnect.de)
2021-03-16 02:08:02 +0100amiri_(~amiri@cpe-76-91-154-9.socal.res.rr.com)
2021-03-16 02:08:02 +0100sajith_(~sajith@fsf/member/nonzen)
2021-03-16 02:08:08 +0100peutri_(~peutri@ns317027.ip-94-23-46.eu)
2021-03-16 02:08:10 +0100jack1909_(~qpls@cpeb4750e67d202-cmf81d0fad5840.cpe.net.fido.ca)
2021-03-16 02:08:14 +0100[df]_(~ben@51.15.198.140)
2021-03-16 02:08:16 +0100bind2(~bind@unaffiliated/bind)
2021-03-16 02:08:18 +0100johnyginthehouse(~johnygint@159.203.30.32)
2021-03-16 02:08:18 +0100jlamothe(~jlamothe@198.251.55.207)
2021-03-16 02:08:19 +0100otulp_(~otulp@ti0187q162-6639.bb.online.no)
2021-03-16 02:08:20 +0100ian_(~igloo@matrix.chaos.earth.li)
2021-03-16 02:08:22 +0100ski_(~ski@ed-3358-10.studat.chalmers.se)
2021-03-16 02:08:22 +0100quicksilver(~jules@roobarb.crazydogs.org)
2021-03-16 02:08:23 +0100remexre_(~nathan@207-153-38-50.fttp.usinternet.com)
2021-03-16 02:08:23 +0100theDon_(~td@94.134.91.151)
2021-03-16 02:08:26 +0100cods_(~fred@82-65-232-44.subs.proxad.net)
2021-03-16 02:08:27 +0100hiredman_(~hiredman@volyova.ec2.thelastcitadel.com)
2021-03-16 02:08:29 +0100jdt_(~jdt@38.77.195.50)
2021-03-16 02:08:30 +0100EvanR_(~evan@mail.evanr.info)
2021-03-16 02:08:32 +0100shachaf_(~shachaf@unaffiliated/shachaf)
2021-03-16 02:08:38 +0100patrick3(~tarpk@ool-182dca76.dyn.optonline.net)
2021-03-16 02:08:40 +0100gienah(~mwright@gentoo/developer/gienah)
2021-03-16 02:11:00 +0100mht-technology(~mht@mht.wtf)
2021-03-16 02:11:15 +0100luigy_(~luigy@104.236.106.229)
2021-03-16 02:11:19 +0100deni(~deni@unaffiliated/deni)
2021-03-16 02:11:36 +0100Aleksejs_Home(~Aleksejs@haskell.lv)
2021-03-16 02:12:11 +0100johnsteinVPS(~johnstein@192.73.239.18)
2021-03-16 02:12:22 +0100Kaiepi(~Kaiepi@47.54.252.148) (Ping timeout: 256 seconds)
2021-03-16 02:12:36 +0100dfeuer(~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net) (*.net *.split)
2021-03-16 02:12:36 +0100gienah_(~mwright@119-18-3-26.771203.syd.nbn.aussiebb.net) (*.net *.split)
2021-03-16 02:12:36 +0100__minoru__shirae(~shiraeesh@109.166.58.121) (*.net *.split)
2021-03-16 02:12:36 +0100dilinger(~dilinger@spindle.queued.net) (*.net *.split)
2021-03-16 02:12:36 +0100Aleksejs(~Aleksejs@haskell.lv) (*.net *.split)
2021-03-16 02:12:36 +0100deni_(~deni@unaffiliated/deni) (*.net *.split)
2021-03-16 02:12:36 +0100Someguy123(~someguy@unaffiliated/compgenius999) (*.net *.split)
2021-03-16 02:12:36 +0100aforemny(~aforemny@static.248.158.34.188.clients.your-server.de) (*.net *.split)
2021-03-16 02:12:36 +0100johnstein(~johnstein@192.73.239.18) (*.net *.split)
2021-03-16 02:12:36 +0100ukari(~ukari@unaffiliated/ukari) (*.net *.split)
2021-03-16 02:12:36 +0100Tario(~Tario@201.192.165.173) (*.net *.split)
2021-03-16 02:12:36 +0100koz_(~koz@121.99.240.58) (*.net *.split)
2021-03-16 02:12:36 +0100xwvvvvwx(xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) (*.net *.split)
2021-03-16 02:12:36 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (*.net *.split)
2021-03-16 02:12:36 +0100theDon(~td@94.134.91.151) (*.net *.split)
2021-03-16 02:12:36 +0100jneira(501e6406@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.6) (*.net *.split)
2021-03-16 02:12:36 +0100amiri(~amiri@cpe-76-91-154-9.socal.res.rr.com) (*.net *.split)
2021-03-16 02:12:37 +0100mozzarella(~sam@unaffiliated/sam113101) (*.net *.split)
2021-03-16 02:12:37 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (*.net *.split)
2021-03-16 02:12:37 +0100sm2n(~sm2n@bras-base-hmtnon143hw-grc-15-70-54-78-219.dsl.bell.ca) (*.net *.split)
2021-03-16 02:12:37 +0100hackage(mniip@haskell/bot/hackage) (*.net *.split)
2021-03-16 02:12:37 +0100jdt(~jdt@38.77.195.50) (*.net *.split)
2021-03-16 02:12:37 +0100patrick2(~tarpk@ool-182dca76.dyn.optonline.net) (*.net *.split)
2021-03-16 02:12:37 +0100gothos(~gothos@antsy.jhz.name) (*.net *.split)
2021-03-16 02:12:37 +0100jack1909(~qpls@cpeb4750e67d202-cmf81d0fad5840.cpe.net.fido.ca) (*.net *.split)
2021-03-16 02:12:37 +0100tanuki_(~quassel@173.168.154.189) (*.net *.split)
2021-03-16 02:12:37 +0100lazyshrk(~lazyshrk@128.199.58.13) (*.net *.split)
2021-03-16 02:12:37 +0100drewolson(~drewolson@64.227.24.16) (*.net *.split)
2021-03-16 02:12:37 +0100sssb54(~ssssb56@vps-b2931db6.vps.ovh.ca) (*.net *.split)
2021-03-16 02:12:37 +0100koluacik(~koluacik@134.122.28.77) (*.net *.split)
2021-03-16 02:12:37 +0100falsifian(~falsifian@exoco.falsifian.org) (*.net *.split)
2021-03-16 02:12:37 +0100[df](~ben@51.15.198.140) (*.net *.split)
2021-03-16 02:12:37 +0100kaletaa(~kaletaa@188.34.177.83) (*.net *.split)
2021-03-16 02:12:37 +0100Geekingfrog(~geekingfr@li2156-64.members.linode.com) (*.net *.split)
2021-03-16 02:12:37 +0100bind1(~bind@unaffiliated/bind) (*.net *.split)
2021-03-16 02:12:37 +0100cods(~fred@unaffiliated/cods) (*.net *.split)
2021-03-16 02:12:37 +0100int-e(~noone@int-e.eu) (*.net *.split)
2021-03-16 02:12:37 +0100jlamothe_(~jlamothe@198.251.55.207) (*.net *.split)
2021-03-16 02:12:37 +0100{abby}(~{abby}@unaffiliated/demhydraz) (*.net *.split)
2021-03-16 02:12:37 +0100hrdl(~ef24a0e6@unaffiliated/hrdl) (*.net *.split)
2021-03-16 02:12:37 +0100luigy(~luigy@104.236.106.229) (*.net *.split)
2021-03-16 02:12:37 +0100deu(de@uio.re) (*.net *.split)
2021-03-16 02:12:37 +0100myme(~myme@li1406-121.members.linode.com) (*.net *.split)
2021-03-16 02:12:37 +0100Igloo(~igloo@matrix.chaos.earth.li) (*.net *.split)
2021-03-16 02:12:37 +0100mht(~mht@mht.wtf) (*.net *.split)
2021-03-16 02:12:37 +0100shachaf(~shachaf@unaffiliated/shachaf) (*.net *.split)
2021-03-16 02:12:37 +0100remexre(~nathan@207-153-38-50.fttp.usinternet.com) (*.net *.split)
2021-03-16 02:12:37 +0100aldum(~vishera@aldum.pw) (*.net *.split)
2021-03-16 02:12:37 +0100ridcully(~ridcully@pd951f269.dip0.t-ipconnect.de) (*.net *.split)
2021-03-16 02:12:37 +0100sepples(~sepples@67.205.168.224) (*.net *.split)
2021-03-16 02:12:37 +0100sajith(~sajith@fsf/member/nonzen) (*.net *.split)
2021-03-16 02:12:37 +0100fre_(~freusque@104.238.190.229) (*.net *.split)
2021-03-16 02:12:37 +0100ski(~ski@ed-3358-10.studat.chalmers.se) (*.net *.split)
2021-03-16 02:12:37 +0100quicksil1er(~jules@roobarb.crazydogs.org) (*.net *.split)
2021-03-16 02:12:37 +0100EvanR(~evan@unaffiliated/evanr) (*.net *.split)
2021-03-16 02:12:37 +0100otulp(~otulp@ti0187q162-6639.bb.online.no) (*.net *.split)
2021-03-16 02:12:37 +0100djanatyn-(~djanatyn@ec2-18-209-155-56.compute-1.amazonaws.com) (*.net *.split)
2021-03-16 02:12:37 +0100duckonomy_(~duckonomy@177.ip-144-217-84.net) (*.net *.split)
2021-03-16 02:12:37 +0100bonz060(~quassel@163.172.132.198) (*.net *.split)
2021-03-16 02:12:37 +0100peutri(~peutri@ns317027.ip-94-23-46.eu) (*.net *.split)
2021-03-16 02:12:37 +0100johnygin1hehouse(~johnygint@159.203.30.32) (*.net *.split)
2021-03-16 02:12:37 +0100uwap_(~uwap@mail.uwap.name) (*.net *.split)
2021-03-16 02:12:37 +0100incertia_(~incertia@d4-50-26-103.nap.wideopenwest.com) (*.net *.split)
2021-03-16 02:12:37 +0100earthy_(~arthurvl@deban2.xs4all.space) (*.net *.split)
2021-03-16 02:12:37 +0100hiredman(~hiredman@volyova.ec2.thelastcitadel.com) (*.net *.split)
2021-03-16 02:12:37 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (*.net *.split)
2021-03-16 02:12:37 +0100concept2(~concept2@unaffiliated/tubo) (*.net *.split)
2021-03-16 02:12:37 +0100lyxia(~lyxia@poisson.chat) (*.net *.split)
2021-03-16 02:12:38 +0100sm(~user@li229-222.members.linode.com) (*.net *.split)
2021-03-16 02:12:38 +0100duairc(~shane@ana.rch.ist) (*.net *.split)
2021-03-16 02:12:38 +0100raoul(~raoulhida@nomnomnomnom.co.uk) (*.net *.split)
2021-03-16 02:12:38 +0100otulp_otulp
2021-03-16 02:12:39 +0100xwvvvvwx-xwvvvvwx
2021-03-16 02:12:39 +0100drewolson0drewolson
2021-03-16 02:12:39 +0100lazyshrk_lazyshrk
2021-03-16 02:12:40 +0100mozzarel1mozzarella
2021-03-16 02:12:41 +0100johnsteinVPSjohnstein
2021-03-16 02:12:43 +0100gothos_gothos
2021-03-16 02:12:50 +0100{abby}9{abby}
2021-03-16 02:13:00 +0100concept26concept2
2021-03-16 02:13:06 +0100hackage(mniip@haskell/bot/hackage)
2021-03-16 02:14:18 +0100Tario(~Tario@200.119.184.43)
2021-03-16 02:15:12 +0100carlomagno(~cararell@148.87.23.6) (Ping timeout: 256 seconds)
2021-03-16 02:15:33 +0100mht-technology(~mht@mht.wtf) (Ping timeout: 264 seconds)
2021-03-16 02:16:51 +0100carlomagno(~cararell@148.87.23.13)
2021-03-16 02:17:39 +0100mht(~mht@2a03:b0c0:3:e0::1e2:c001)
2021-03-16 02:18:59 +0100Someguy123(~someguy@unaffiliated/compgenius999)
2021-03-16 02:19:23 +0100ukari(~ukari@unaffiliated/ukari)
2021-03-16 02:19:38 +0100sssb54(~ssssb56@vps-b2931db6.vps.ovh.ca)
2021-03-16 02:19:42 +0100lyxia(~lyxia@poisson.chat)
2021-03-16 02:19:57 +0100earthy_(~arthurvl@deban2.xs4all.space)
2021-03-16 02:21:15 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-03-16 02:21:17 +0100myme(~myme@li1406-121.members.linode.com)
2021-03-16 02:21:56 +0100deu(de@uio.re)
2021-03-16 02:22:30 +0100roconnor(~roconnor@host-45-58-230-226.dyn.295.ca) (Ping timeout: 246 seconds)
2021-03-16 02:23:21 +0100Deide1(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2021-03-16 02:23:44 +0100Tario(~Tario@200.119.184.43) (Ping timeout: 265 seconds)
2021-03-16 02:25:34 +0100shailangsa(~shailangs@host86-162-150-241.range86-162.btcentralplus.com)
2021-03-16 02:26:01 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4) (Remote host closed the connection)
2021-03-16 02:26:09 +0100Tario(~Tario@200.119.184.133)
2021-03-16 02:27:49 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2021-03-16 02:28:05 +0100roconnor(~roconnor@host-45-58-230-226.dyn.295.ca)
2021-03-16 02:30:54 +0100orion(~orion@unaffiliated/orion) (Ping timeout: 246 seconds)
2021-03-16 02:32:39 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 246 seconds)
2021-03-16 02:33:48 +0100esp32_prog(~esp32_pro@185.254.75.51) (Ping timeout: 245 seconds)
2021-03-16 02:33:56 +0100azure2(~azure@103.154.230.130) (Read error: Connection reset by peer)
2021-03-16 02:34:22 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 265 seconds)
2021-03-16 02:35:03 +0100sagax(~sagax_nb@213.138.71.146) (Ping timeout: 245 seconds)
2021-03-16 02:35:26 +0100aarvar(~foewfoiew@2601:602:a080:fa0:d8ee:3872:3a62:88c1) (Ping timeout: 264 seconds)
2021-03-16 02:36:02 +0100azure2(~azure@103.154.230.130)
2021-03-16 02:37:13 +0100orion(~orion@c-76-19-236-20.hsd1.nh.comcast.net)
2021-03-16 02:37:13 +0100orion(~orion@c-76-19-236-20.hsd1.nh.comcast.net) (Changing host)
2021-03-16 02:37:13 +0100orion(~orion@unaffiliated/orion)
2021-03-16 02:38:17 +0100gitgoood(~gitgood@80-44-12-39.dynamic.dsl.as9105.com)
2021-03-16 02:39:39 +0100Kaiepi(~Kaiepi@47.54.252.148)
2021-03-16 02:40:09 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 264 seconds)
2021-03-16 02:40:42 +0100gitgood(~gitgood@80-44-12-39.dynamic.dsl.as9105.com) (Ping timeout: 256 seconds)
2021-03-16 02:42:52 +0100vBm1(~vBm@195.140.213.38) (Remote host closed the connection)
2021-03-16 02:44:17 +0100ezrakilty(~ezrakilty@97-113-58-224.tukw.qwest.net)
2021-03-16 02:46:15 +0100g0nk(~g0nk@173-26-39-109.client.mchsi.com) ()
2021-03-16 02:46:21 +0100nf(~n@monade.li) (Quit: Fairfarren.)
2021-03-16 02:46:55 +0100remexre_remexre
2021-03-16 02:47:16 +0100nf(~n@monade.li)
2021-03-16 02:47:26 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-03-16 02:49:24 +0100aarvar(~foewfoiew@2601:602:a080:fa0:1175:1d12:3f7a:f4b9)
2021-03-16 02:50:16 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-03-16 02:51:32 +0100rickygee(~rickygee@236-53-74-65.gci.net)
2021-03-16 02:55:40 +0100drbean(~drbean@TC210-63-209-153.static.apol.com.tw)
2021-03-16 02:55:41 +0100Tario(~Tario@200.119.184.133) (Read error: Connection reset by peer)
2021-03-16 02:56:41 +0100esp32_prog(~esp32_pro@185.254.75.51)
2021-03-16 02:57:38 +0100Volt_(~Volt_@c-73-145-164-70.hsd1.mi.comcast.net)
2021-03-16 02:58:16 +0100augnun(~augnun@189.6.16.141) (Ping timeout: 256 seconds)
2021-03-16 02:58:32 +0100Tario(~Tario@201.192.165.173)
2021-03-16 03:00:18 +0100augnun(~augnun@2804:14c:658b:41bb:2619:95b9:b021:720c)
2021-03-16 03:04:06 +0100DataComputist(~lumeng@50.43.26.251) (Quit: Leaving...)
2021-03-16 03:05:25 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2021-03-16 03:09:30 +0100toorevitimirp(~tooreviti@117.182.182.40)
2021-03-16 03:09:38 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 245 seconds)
2021-03-16 03:10:22 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
2021-03-16 03:10:25 +0100vicfred(vicfred@gateway/vpn/mullvad/vicfred)
2021-03-16 03:11:39 +0100vgtw(~vgtw@gateway/tor-sasl/vgtw) (Ping timeout: 268 seconds)
2021-03-16 03:12:11 +0100DataComputist(~lumeng@50.43.26.251)
2021-03-16 03:13:30 +0100rj_(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-03-16 03:13:37 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2021-03-16 03:13:53 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-03-16 03:13:53 +0100hackageservant-rawm-client 1.0.0.2 - The client implementation of servant-rawm. https://hackage.haskell.org/package/servant-rawm-client-1.0.0.2 (cdepillabout)
2021-03-16 03:15:13 +0100chrisdotcode(~chrisdotc@unaffiliated/chrisdotcode)
2021-03-16 03:15:55 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2021-03-16 03:16:10 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-03-16 03:16:25 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-03-16 03:18:18 +0100DataComputist(~lumeng@50.43.26.251) (Ping timeout: 260 seconds)
2021-03-16 03:18:24 +0100jamm_(~jamm@unaffiliated/jamm)
2021-03-16 03:20:47 +0100DataComputist(~lumeng@50.43.26.251)
2021-03-16 03:22:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-16 03:25:02 +0100 <qih> In terms of a package manager for a n00b, what is more friendly and has better documentation? Cabal or Stack?
2021-03-16 03:25:14 +0100 <koz> qih: ... they're not package managers?
2021-03-16 03:25:25 +0100 <koz> If you mean 'dependency manager', then it's extremely YMMV.
2021-03-16 03:25:30 +0100 <qih> koz: Misterm, whatever ...
2021-03-16 03:25:32 +0100 <qih> 8-)
2021-03-16 03:25:35 +0100 <qih> OK
2021-03-16 03:25:46 +0100 <koz> Stack has a whole bunch of its own eccentricities, as does Cabal, both have documentation issues out the wazoo.
2021-03-16 03:26:00 +0100 <qih> Are all the packages available on either of the Dependency Managers?
2021-03-16 03:26:02 +0100 <koz> I prefer Cabal because I find Stack unnecessary; others disagree for reasons I fail to understand.
2021-03-16 03:26:18 +0100 <koz> qih: Yes - anything from Hackage can be had on either one, and both support local and git-hosted repos.
2021-03-16 03:26:18 +0100esp32_prog(~esp32_pro@185.254.75.51) (Ping timeout: 245 seconds)
2021-03-16 03:26:24 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4)
2021-03-16 03:26:40 +0100Guest11557(~ccallahan@185.163.110.108)
2021-03-16 03:26:54 +0100 <qih> OK that's neat ...weeeeeell, I'll try Cabal this time. Hi btw, how's things *up* there?
2021-03-16 03:27:02 +0100_bin(~bin@2600:1700:10a1:38d0:a1bb:96d6:a6dd:43f2) (Ping timeout: 264 seconds)
2021-03-16 03:27:55 +0100 <Squarism> im looking for something to model "business processes" that has a mapping to a direct graph as an image. Like BPMN or Petri-nets. Anyone know if there is lib for this or other alternative that fullfills the requirement of having visual representation.
2021-03-16 03:28:12 +0100 <Squarism> diected graph*
2021-03-16 03:28:19 +0100 <koz> Squarism: Most graph-related libraries don't really deal with 'visual representations'.
2021-03-16 03:28:39 +0100_bin(~bin@75-54-107-59.lightspeed.hstntx.sbcglobal.net)
2021-03-16 03:28:57 +0100 <Squarism> i can roll that part on my own. I mainly want the non visual part working well.
2021-03-16 03:29:05 +0100 <koz> Since visual representations of graphs are a surprisingly hard problem in themselves (read the graphviz docs if you wanna see just how tricky it can be).
2021-03-16 03:29:09 +0100 <qih> koz: https://medium.com/@edmundnoble/cabal-or-stack-25886c0ac74f <- clear as mud 8-)
2021-03-16 03:29:34 +0100 <koz> If you want the _non_ visual part working well, there's a few options. I favour http://hackage.haskell.org/package/algebraic-graphs
2021-03-16 03:29:40 +0100 <koz> Whether it does the things you specifically want depends.
2021-03-16 03:29:42 +0100 <Squarism> koz, these wont be too complicated so I think graphviz would do for me.
2021-03-16 03:30:04 +0100 <koz> Squarism: graphvis is an executable that draws graphs.
2021-03-16 03:30:11 +0100 <Squarism> i know
2021-03-16 03:30:40 +0100 <koz> The point is, there's lots of heuristics for layout, and even with those, graphvis's own language needs some assistance often.
2021-03-16 03:31:13 +0100 <koz> qih: Basically, in 2021, I would argue 'just pick whichever one offends you less'.
2021-03-16 03:31:13 +0100 <Squarism> my graphs vill have max 12ish nodes.
2021-03-16 03:31:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4) (Ping timeout: 264 seconds)
2021-03-16 03:31:30 +0100 <koz> Squarism: Ah, well, in that case algebraic-graphs will be fine.
2021-03-16 03:32:05 +0100 <koz> I fall on the side of Cabal because you need to understand Cabal files either way; with Stack, you gotta learn about a lot of _other_ stuff too.
2021-03-16 03:32:14 +0100 <koz> (none of which IMHO is remotely relevant in 2021)
2021-03-16 03:32:33 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 245 seconds)
2021-03-16 03:33:08 +0100 <qih> koz: OK, Stack it is then for some other needs, but I'll RTFM on Cabal too.
2021-03-16 03:33:54 +0100urodna_(~urodna@unaffiliated/urodna) (Quit: urodna_)
2021-03-16 03:35:21 +0100tanner_(~tanner@216.106.138.184)
2021-03-16 03:38:05 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-03-16 03:39:55 +0100ezrakilty(~ezrakilty@97-113-58-224.tukw.qwest.net) (Remote host closed the connection)
2021-03-16 03:40:13 +0100 <qih> Using the GHCI REPL; :help shows help but how do you paginate it? :help | less does not work, nor 'more' or 'page'
2021-03-16 03:42:16 +0100alx741(~alx741@181.196.68.64) (Quit: alx741)
2021-03-16 03:42:52 +0100xff0x(~xff0x@2001:1a81:52b7:0:8b9f:ee81:7bdc:f7e8) (Ping timeout: 260 seconds)
2021-03-16 03:43:02 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-03-16 03:44:22 +0100xff0x(~xff0x@2001:1a81:52ee:e100:698d:4b25:a12b:af32)
2021-03-16 03:46:09 +0100jrqc(~rofl@96.78.87.197) (Ping timeout: 264 seconds)
2021-03-16 03:46:38 +0100mrus[m](mrusmatrix@gateway/shell/matrix.org/x-welevbbwwrngbnao)
2021-03-16 03:48:52 +0100jrqc(~rofl@96.78.87.197)
2021-03-16 03:51:52 +0100vicfred(vicfred@gateway/vpn/mullvad/vicfred) (Quit: Leaving)
2021-03-16 03:52:44 +0100augnun(~augnun@2804:14c:658b:41bb:2619:95b9:b021:720c) (Quit: WeeChat 3.1)
2021-03-16 03:55:22 +0100vgtw(~vgtw@gateway/tor-sasl/vgtw)
2021-03-16 03:55:34 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-03-16 03:57:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
2021-03-16 04:02:20 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 265 seconds)
2021-03-16 04:02:22 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving)
2021-03-16 04:02:43 +0100solidus-river(~mike@174.127.249.180)
2021-03-16 04:03:43 +0100 <solidus-river> hey all, i'm just starting to use haskell for real world things and i've come across something i think should be dead easy but has my brain in a twister
2021-03-16 04:04:08 +0100 <solidus-river> i'm looking to map putStrLn over a list of strings that i got from IO actions
2021-03-16 04:04:12 +0100 <solidus-river> some function like
2021-03-16 04:04:25 +0100 <solidus-river> (a -> IO ()) -> IO [a] -> IO ()
2021-03-16 04:05:17 +0100 <solidus-river> mapM_ was what i went to initially, I think i can write it in do syntax but that seems wrong for a line that should be a simple map or somthing similar
2021-03-16 04:05:59 +0100chrisdotcode(~chrisdotc@unaffiliated/chrisdotcode) (Quit: rip)
2021-03-16 04:06:35 +0100FinnElija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
2021-03-16 04:06:35 +0100finn_elijaGuest21269
2021-03-16 04:06:35 +0100FinnElijafinn_elija
2021-03-16 04:06:35 +0100 <siraben> solidus-river: mapM_ is what you want
2021-03-16 04:06:55 +0100 <solidus-river> i can't make the compiler happy with it :(
2021-03-16 04:06:56 +0100 <siraben> think of it like "for each"
2021-03-16 04:07:04 +0100DTZUZU_(~DTZUZO@207.81.119.43)
2021-03-16 04:07:07 +0100 <siraben> could you do a paste of your code?
2021-03-16 04:07:27 +0100 <siraben> if your have a lit of strings that you got from IO, then you may have to `fmap` it as well
2021-03-16 04:07:30 +0100 <siraben> or bind it first
2021-03-16 04:08:09 +0100qihdoes 'stack install hakyll' and cannot believe how much it is loading up an 8 Core AMD64 o_0
2021-03-16 04:08:50 +0100 <solidus-river> getting it, i'm using zmq so its a bit convoluted, getting a minimum paste up
2021-03-16 04:09:37 +0100Guest21269(~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds)
2021-03-16 04:09:40 +0100DTZUZU(~DTZUZO@205.ip-149-56-132.net) (Ping timeout: 256 seconds)
2021-03-16 04:10:52 +0100finn_elija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Remote host closed the connection)
2021-03-16 04:11:16 +0100FinnElija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
2021-03-16 04:11:16 +0100FinnElijafinn_elija
2021-03-16 04:11:41 +0100 <qih> Taking off your Capitals, alwys feels better, am I right?
2021-03-16 04:11:48 +0100 <solidus-river> https://paste.tomsmeding.com/Xzocy8WA
2021-03-16 04:13:02 +0100 <siraben> `logger logger = fmap (mapM_ putStrLn) (receiveMulti logger)`
2021-03-16 04:13:03 +0100 <siraben> should do it
2021-03-16 04:13:17 +0100 <siraben> also, using the same name for the function and argument is confusing
2021-03-16 04:13:28 +0100 <siraben> `logger l = mapM_ (unpack . putStrLn) (receiveMulti l)`
2021-03-16 04:14:12 +0100shachaf_shachaf
2021-03-16 04:15:03 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2021-03-16 04:15:17 +0100 <solidus-river> thanks! I had an error where unpack goes to [Char] not String but thats a different issue
2021-03-16 04:15:32 +0100 <siraben> do you need unpack?
2021-03-16 04:15:41 +0100 <solidus-river> i hope this gets more intuitive pretty quick, the fmap in front is a mental backflip for me but i can understand it after seeing it
2021-03-16 04:16:02 +0100 <solidus-river> I found ByteString has its own exported putStrLn funcs
2021-03-16 04:16:21 +0100 <siraben> Ah, but unpack is for turning a bytestring into text
2021-03-16 04:16:30 +0100 <siraben> `logger l = mapM_ B.putStrLn (receiveMulti l)`
2021-03-16 04:18:22 +0100 <siraben> bytestring into String*
2021-03-16 04:18:22 +0100 <solidus-river> aye, i put a forever on there too, this should collapse once i figure out conduit-zeromq4 to something more readable
2021-03-16 04:18:55 +0100 <solidus-river> never had more fun getting my hands dirty with a new project. :) its a scary, but fun leap into haskell land
2021-03-16 04:18:57 +0100 <siraben> solidus-river: also, [Char] = String in haskell
2021-03-16 04:19:07 +0100 <siraben> (that's why String is a bad string type)
2021-03-16 04:19:07 +0100 <solidus-river> i'm sure i'm really messing up some perf with the bytestring vs text vs String stuff
2021-03-16 04:19:28 +0100 <solidus-river> are packed ByteStrings from string literals null terminated in haskell?
2021-03-16 04:19:41 +0100 <siraben> you might want to see the criterion library to benchmark haskell programs, it was eye opening for me to see how slow String was
2021-03-16 04:19:44 +0100 <solidus-river> or where would i find things like that
2021-03-16 04:19:46 +0100tanner__(uid491848@gateway/web/irccloud.com/x-rtafqkufgdjftxay)
2021-03-16 04:19:52 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4)
2021-03-16 04:20:03 +0100 <siraben> I think the Storable instance for it results in a null-terminated string
2021-03-16 04:20:10 +0100 <siraben> Storable is used when converting it to a CStr
2021-03-16 04:20:21 +0100electricityZZZZ(~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
2021-03-16 04:20:31 +0100 <siraben> but null-termination may just be an implementation detail
2021-03-16 04:21:33 +0100 <solidus-river> I'm sending these over the wire to a c++ client and zmq doesn't try to be smart about messages
2021-03-16 04:22:11 +0100 <solidus-river> but i'll find out when the other side blows up or not :D
2021-03-16 04:22:27 +0100 <siraben> Ah if the library abstracts it away it should be fine
2021-03-16 04:22:29 +0100 <siraben> (I guess)
2021-03-16 04:25:40 +0100 <qih> All this compiling just so I can run a simple Github Pages site using Hakyll, should have just used the Github UI >8-/
2021-03-16 04:28:41 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-03-16 04:29:12 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 246 seconds)
2021-03-16 04:30:39 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-03-16 04:31:53 +0100theDon_(~td@94.134.91.151) (Ping timeout: 260 seconds)
2021-03-16 04:32:38 +0100conal(~conal@64.71.133.70)
2021-03-16 04:32:44 +0100tabemann(~travisb@2600:1700:7990:24e0:1282:ff43:20c2:7b5f) (Remote host closed the connection)
2021-03-16 04:32:59 +0100tabemann(~travisb@2600:1700:7990:24e0:101f:ae79:c83b:6c90)
2021-03-16 04:33:05 +0100theDon(~td@94.134.91.58)
2021-03-16 04:33:24 +0100tomku(~tomku@unaffiliated/tomku) (Ping timeout: 246 seconds)
2021-03-16 04:33:37 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 276 seconds)
2021-03-16 04:34:29 +0100tony__(~Username@185.30.81.111)
2021-03-16 04:34:59 +0100tony__(~Username@185.30.81.111) (Client Quit)
2021-03-16 04:39:10 +0100tomku(~tomku@unaffiliated/tomku)
2021-03-16 04:40:26 +0100 <koz> solidus-river: If you need C strings, there's specific stuff for that.
2021-03-16 04:40:33 +0100 <koz> (look up Haskell FFI, there's a few guides)
2021-03-16 04:40:45 +0100 <koz> ByteString _in itself_ isn't what you need there.
2021-03-16 04:50:12 +0100tomku(~tomku@unaffiliated/tomku) (Ping timeout: 246 seconds)
2021-03-16 04:53:10 +0100zebrag(~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-03-16 04:58:24 +0100ezrakilty(~ezrakilty@97-113-58-224.tukw.qwest.net)
2021-03-16 05:00:06 +0100minoru_shiraeesh(~shiraeesh@109.166.58.121) (Ping timeout: 256 seconds)
2021-03-16 05:00:59 +0100tomku(~tomku@unaffiliated/tomku)
2021-03-16 05:01:04 +0100elusive(~Jeanne-Ka@static-198-54-134-171.cust.tzulo.com)
2021-03-16 05:02:27 +0100slack1256(~slack1256@dvc-186-186-101-190.movil.vtr.net) (Remote host closed the connection)
2021-03-16 05:05:58 +0100frozenErebus(~frozenEre@94.128.82.20)
2021-03-16 05:06:54 +0100Volt_(~Volt_@c-73-145-164-70.hsd1.mi.comcast.net) (Quit: )
2021-03-16 05:07:23 +0100molehillish(~molehilli@2600:8800:8d06:1800:c9c1:cc0:ccd2:b4f) (Remote host closed the connection)
2021-03-16 05:08:15 +0100molehillish(~molehilli@2600:8800:8d06:1800:c9c1:cc0:ccd2:b4f)
2021-03-16 05:11:41 +0100loller_(uid358106@gateway/web/irccloud.com/x-cnpraiotvintahet)
2021-03-16 05:13:14 +0100molehillish(~molehilli@2600:8800:8d06:1800:c9c1:cc0:ccd2:b4f) (Ping timeout: 264 seconds)
2021-03-16 05:14:50 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 265 seconds)
2021-03-16 05:21:21 +0100 <charukiewicz> qih: If you're using stack, the good news is that you only need to do a big compilation once in a while, either when you clear your ~/.stack directory or bump the version of the Stackage LTS your project depends on.
2021-03-16 05:23:40 +0100forgottenone(~forgotten@176.42.16.24)
2021-03-16 05:23:47 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
2021-03-16 05:24:36 +0100 <koz> charukiewicz: The same is true of recent Cabals, which cache _more_ aggressively than Stack can sometimes.
2021-03-16 05:25:13 +0100 <koz> (well, cabal-installs I should say, to be clear)
2021-03-16 05:26:06 +0100ezrakilty(~ezrakilty@97-113-58-224.tukw.qwest.net) (Remote host closed the connection)
2021-03-16 05:30:54 +0100Jd007(~Jd007@162.156.11.151) (Quit: Jd007)
2021-03-16 05:31:02 +0100 <charukiewicz> koz: True, and that's a good feature of the newer versions of cabal. Though since dependencies aren't pinned system or project level stackage snapshot, I think you're a bit more likely to see compilations if you don't pin dependencies the same way in every project. Stackage simplifies this a bit, especially for a first timer.
2021-03-16 05:31:32 +0100 <koz> charukiewicz: Yeah, but you should be pinning properly anyway, especially if you're writing a library.
2021-03-16 05:31:45 +0100 <koz> I don't think relying on a resolver to magically fix this issue is a good idea.
2021-03-16 05:32:16 +0100 <charukiewicz> Indeed for a library, but qih is just using Hakyll, where again, for a beginner, I recommend just letting the resolver take over
2021-03-16 05:33:34 +0100 <koz> Even then, learning to pin properly is a good practice, and not even that hard. In fact, _not_ learning this sooner is a disservice to a beginner, not a help IMHO.
2021-03-16 05:34:19 +0100kozkoz_
2021-03-16 05:34:35 +0100 <koz_> Huh, didn't even notice my nick change, argh.
2021-03-16 05:35:59 +0100vicfred(vicfred@gateway/vpn/mullvad/vicfred)
2021-03-16 05:37:20 +0100 <charukiewicz> If you're using a pinned stackage LTS or nixpkgs commit, I don't really see a benefit of specifying tight version bounds in your cabal file (referring to applications, not libraries here). You're implicitly already pinning a particular version of every one of your dependencies through whatever snapshot/commit hash you pick.
2021-03-16 05:38:00 +0100 <koz_> Why drag in all the additional hassle of Stack when you can just use pins to do the exact same thing? It means learning _its_ undocumented messes as well as Cabal's.
2021-03-16 05:38:15 +0100tanner_(~tanner@216.106.138.184) (Quit: tanner_)
2021-03-16 05:38:25 +0100 <koz_> Literally, in my view, Stack adds nothing anymore to anything other than a false sense of convenience and a tonne of undocumented annoyances.
2021-03-16 05:38:37 +0100 <koz_> However, that is my view and I think I've documented it adequately, so I'll stop.
2021-03-16 05:38:43 +0100hidedagger(~nate@unaffiliated/hidedagger) (Quit: WeeChat 3.1)
2021-03-16 05:38:56 +0100tanner_(~tanner@216.106.138.184)
2021-03-16 05:40:02 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net) (Read error: Connection reset by peer)
2021-03-16 05:40:22 +0100kiweun(~kiweun@2607:fea8:2a62:9600:c98d:ec81:e94d:3657) ()
2021-03-16 05:40:40 +0100 <curiousgay> I thought stack is a modern replacement to cabal-install
2021-03-16 05:40:53 +0100 <koz_> curiousgay: Lol. That's not really accurate in any sense.
2021-03-16 05:41:09 +0100DTZUZU(~DTZUZO@205.ip-149-56-132.net)
2021-03-16 05:43:08 +0100 <charukiewicz> curiousgay: It's true that if you're using stack on a project, it's true that you probably don't need to use the cabal cli tool. That being said, it's not really a replacement. It layers additional machinery on top of cabal and tries to offer a better UX. Generally I think it is a better UX, despite not being my build tool of choice.
2021-03-16 05:43:23 +0100tanner_(~tanner@216.106.138.184) (Ping timeout: 245 seconds)
2021-03-16 05:43:34 +0100jamm_(~jamm@unaffiliated/jamm)
2021-03-16 05:43:48 +0100 <koz_> I think it has a few nice UX things - it's test output _is_ nicer by default, for example.
2021-03-16 05:43:50 +0100DTZUZU_(~DTZUZO@207.81.119.43) (Ping timeout: 265 seconds)
2021-03-16 05:44:04 +0100 <koz_> (you can get the same with cabal-install, just that the flag you need to pass is not memorable)
2021-03-16 05:44:32 +0100 <koz_> (and I keep having to look it up every time)
2021-03-16 05:44:35 +0100 <charukiewicz> I've found that no matter what tool you're using, you probably want to save off your build/repl/test commands in a Makefile
2021-03-16 05:45:07 +0100 <koz_> charukiewicz: The original 'build system' rofl.
2021-03-16 05:45:12 +0100swarmcollective(~joseph@cpe-24-208-140-96.insight.res.rr.com) (Quit: WeeChat 2.8)
2021-03-16 05:47:11 +0100 <curiousgay> koz_: that sounds like stack deliberately fragments community by not providing a tool that runs cabal-install behind the scenes, but instead creates its own ecosystem
2021-03-16 05:47:25 +0100 <koz_> curiousgay: Some people would make this argument.
2021-03-16 05:48:02 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2021-03-16 05:53:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-16 05:55:15 +0100bobweb(ac381148@172.56.17.72)
2021-03-16 05:55:29 +0100soulseeker_(~soulseeke@90.214.167.201)
2021-03-16 05:55:50 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 264 seconds)
2021-03-16 05:56:14 +0100lupulo(~lupulo@163.117.64.56) (Read error: Connection reset by peer)
2021-03-16 05:59:11 +0100 <bobweb> Hi. Please tell me how to code a Gen String that only returns strings composed of English letters (case insensitive). My basic approach is: stringGen :: Gen [Char]; stringGen = suchThat arbitrary (elem (['a'..'z'] ++ ['A'..'Z'])). Thanks.
2021-03-16 05:59:49 +0100 <koz_> suchThat arbitrary will run quite slowly.
2021-03-16 06:01:00 +0100 <bobweb> @koz Just working through a text trying to learn the basics right now...
2021-03-16 06:01:00 +0100 <lambdabot> Maybe you meant: yow do
2021-03-16 06:01:33 +0100 <koz_> You probably want something like 'liftArbitrary (elem (['a' .. 'z'] <> [
2021-03-16 06:01:37 +0100 <bobweb> @koz what to you recommend?
2021-03-16 06:01:37 +0100 <lambdabot> Maybe you meant: yow do
2021-03-16 06:01:38 +0100cobreadmonster(499efd7f@haskell/developer/breadmonster)
2021-03-16 06:01:41 +0100 <koz_> 'A' .. 'Z']))
2021-03-16 06:01:42 +0100 <koz_> '
2021-03-16 06:02:11 +0100 <koz_> Sorry about the line breaks.
2021-03-16 06:02:25 +0100 <bobweb> OK, lift is coming up in the next chapter or two.
2021-03-16 06:02:32 +0100 <bobweb> No worries.
2021-03-16 06:02:44 +0100 <koz_> It works because [] has the liftArbitrary method defined for it.
2021-03-16 06:02:55 +0100 <koz_> So if you have a Gen a, you can get Gen [a] using it.
2021-03-16 06:03:36 +0100 <bobweb> OK, is the '<>' code or a line break?
2021-03-16 06:03:41 +0100 <koz_> Code.
2021-03-16 06:03:52 +0100 <koz_> It's the same as (++) in this case.
2021-03-16 06:03:59 +0100 <koz_> So you can use that instead if you prefer.
2021-03-16 06:04:34 +0100 <bobweb> I see. OK, I'll try your recommendation. Thank you.
2021-03-16 06:05:10 +0100 <koz_> Generally, 'suchThat' isn't the best idea, because it's a pretty brute-force approach.
2021-03-16 06:05:18 +0100 <koz_> It's 'make whatever, then hope it fits, if not, try again'.
2021-03-16 06:05:23 +0100 <koz_> And you might be trying again _a lot_.
2021-03-16 06:05:54 +0100mixfix41(~user@unaffiliated/mixfix41) (Read error: Connection reset by peer)
2021-03-16 06:05:59 +0100drbean(~drbean@TC210-63-209-153.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
2021-03-16 06:06:12 +0100 <bobweb> LOL, OK. Yes, I want elegant and beautiful Haskell code for sure!
2021-03-16 06:10:40 +0100 <qih> charukiewicz: Thanks for the tip.
2021-03-16 06:11:15 +0100bobweb(ac381148@172.56.17.72) (Quit: Connection closed)
2021-03-16 06:12:38 +0100bobweb(ac3a17de@172.58.23.222)
2021-03-16 06:14:05 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2021-03-16 06:15:11 +0100teardown(~user@gateway/tor-sasl/mrush) (Remote host closed the connection)
2021-03-16 06:15:32 +0100teardown(~user@gateway/tor-sasl/mrush)
2021-03-16 06:15:37 +0100 <bobweb> @koz I put this: stringGen = liftArbitrary (elem (['a' .. 'z'] <> ['A'..'Z'])) and got this error: https://paste.tomsmeding.com/NtJgPlob I know it's something simple but I am unfamiliar with lifting...
2021-03-16 06:15:37 +0100 <lambdabot> Maybe you meant: yow do
2021-03-16 06:16:17 +0100 <koz_> Ah, yeah, that's probably because I used the wrong function. :P
2021-03-16 06:16:22 +0100 <koz_> It's got nothing to do with lifting.
2021-03-16 06:16:38 +0100 <bobweb> Ok
2021-03-16 06:16:58 +0100 <koz_> It should be 'elements', not 'elem'.
2021-03-16 06:17:42 +0100 <bobweb> Ah, right. I originally used elements and moved to elem when that didn't work. OK, thanks.
2021-03-16 06:19:34 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 276 seconds)
2021-03-16 06:20:42 +0100 <bobweb> @koz Yup, that works! Thank you.
2021-03-16 06:20:43 +0100 <lambdabot> Maybe you meant: yow do
2021-03-16 06:26:18 +0100remal(~remal@d24-57-234-201.home.cgocable.net) (Ping timeout: 245 seconds)
2021-03-16 06:27:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-03-16 06:29:03 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-03-16 06:33:27 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
2021-03-16 06:36:57 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-03-16 06:39:22 +0100bobweb(ac3a17de@172.58.23.222) (Ping timeout: 240 seconds)
2021-03-16 06:40:34 +0100molehillish(~molehilli@ip98-167-226-26.ph.ph.cox.net)
2021-03-16 06:42:13 +0100remal(~remal@d24-57-234-201.home.cgocable.net)
2021-03-16 06:42:58 +0100jlamothe(~jlamothe@198.251.55.207) (Ping timeout: 245 seconds)
2021-03-16 06:44:59 +0100aggin(~ecm@103.88.87.37)
2021-03-16 06:48:39 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-16 06:49:33 +0100farn(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Quit: farn)
2021-03-16 06:50:52 +0100ezrakilty(~ezrakilty@97-113-58-224.tukw.qwest.net)
2021-03-16 06:53:26 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2021-03-16 06:53:39 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-sowvivaeecbildoj) (Quit: Connection closed for inactivity)
2021-03-16 06:54:38 +0100tabemann(~travisb@2600:1700:7990:24e0:101f:ae79:c83b:6c90) (Ping timeout: 264 seconds)
2021-03-16 06:59:24 +0100idhugo_(~idhugo@87-49-147-45-mobile.dk.customer.tdc.net)
2021-03-16 06:59:40 +0100Wuzzy(~Wuzzy@p57a2ecf2.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-03-16 07:00:03 +0100cobreadmonster(499efd7f@haskell/developer/breadmonster) (Quit: Connection closed)
2021-03-16 07:01:30 +0100benkolera(uid285671@gateway/web/irccloud.com/x-dasgfjgzoqobrquc) (Quit: Connection closed for inactivity)
2021-03-16 07:04:38 +0100elusive(~Jeanne-Ka@static-198-54-134-171.cust.tzulo.com) (Ping timeout: 245 seconds)
2021-03-16 07:06:01 +0100travisb(~travisb@2600:1700:7990:24e0:101f:ae79:c83b:6c90)
2021-03-16 07:07:05 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-dbopwiciasztapdp) (Quit: Connection closed for inactivity)
2021-03-16 07:08:48 +0100ajc(~ajc@69.231.232.79) (Ping timeout: 246 seconds)
2021-03-16 07:09:47 +0100aggin(~ecm@103.88.87.37) (Quit: WeeChat 3.0.1)
2021-03-16 07:10:29 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-03-16 07:12:18 +0100carlomagno(~cararell@148.87.23.13) (Ping timeout: 246 seconds)
2021-03-16 07:16:08 +0100dave_uy(~david@108.61.193.26) (Quit: The Lounge - https://thelounge.chat)
2021-03-16 07:16:43 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-03-16 07:19:04 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-16 07:19:17 +0100dave_uy(~david@108.61.193.26)
2021-03-16 07:22:19 +0100echoreply(~echoreply@unaffiliated/echoreply) (Quit: WeeChat 1.9.1)
2021-03-16 07:22:50 +0100echoreply(~echoreply@unaffiliated/echoreply)
2021-03-16 07:24:14 +0100rickygee(~rickygee@236-53-74-65.gci.net) ()
2021-03-16 07:24:33 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-03-16 07:26:53 +0100guest316(~user@49.5.6.87)
2021-03-16 07:27:03 +0100sh9(~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8)
2021-03-16 07:31:00 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-03-16 07:31:34 +0100Guest11557(~ccallahan@185.163.110.108) (Remote host closed the connection)
2021-03-16 07:32:03 +0100malumore(~malumore@151.62.119.219)
2021-03-16 07:32:40 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2021-03-16 07:32:59 +0100molehillish(~molehilli@ip98-167-226-26.ph.ph.cox.net) (Remote host closed the connection)
2021-03-16 07:34:34 +0100klixto(~klixto@130.220.8.139) (Quit: WeeChat 3.0.1)
2021-03-16 07:34:55 +0100aki_(~aki_@185.204.1.185)
2021-03-16 07:35:09 +0100marinelli(~marinelli@gateway/tor-sasl/marinelli) (Quit: marinelli)
2021-03-16 07:35:56 +0100 <guest316> why fixed-point would create a loop?
2021-03-16 07:37:46 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
2021-03-16 07:40:04 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Quit: Leaving)
2021-03-16 07:40:34 +0100jayok(~jayok@cpc147358-belf12-2-0-cust581.2-1.cable.virginm.net)
2021-03-16 07:41:20 +0100 <olligobber> guest316, https://en.wikipedia.org/wiki/Fixed-point_combinator#Usage_in_programming
2021-03-16 07:42:45 +0100Varis(~Tadas@unaffiliated/varis)
2021-03-16 07:44:12 +0100 <olligobber> I guess a loop is something like `while check(state) { state <- update(state) }'
2021-03-16 07:45:02 +0100 <olligobber> which can be written recursively as `f state = if check state then f (update state) else state`
2021-03-16 07:45:08 +0100gaff(~user@49.207.217.94)
2021-03-16 07:45:41 +0100 <olligobber> which isn't a proper combinator because it contains f in the definition of f, so you use the fix point to write
2021-03-16 07:45:57 +0100 <gaff> hi -- is there a way to to point cabal to fetch packages from stackage lts in config file
2021-03-16 07:45:59 +0100 <gaff> ?
2021-03-16 07:46:08 +0100 <olligobber> `f = fix \g state -> if check state then g (update state) else state'
2021-03-16 07:47:11 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-03-16 07:47:15 +0100jayok(~jayok@cpc147358-belf12-2-0-cust581.2-1.cable.virginm.net) (Quit: Leaving)
2021-03-16 07:47:22 +0100 <gaff> appreciate any help
2021-03-16 07:48:12 +0100 <olligobber> gaff, I'm fairly new to cabal, but I think if your package relies on a package then it will automatically fetch it from stackage?
2021-03-16 07:48:37 +0100 <guest316> olligobber: call a fixed-point inside a Cont, why it would create a loop?
2021-03-16 07:48:54 +0100 <olligobber> guest316, what's a Cont?
2021-03-16 07:49:18 +0100 <guest316> olligobber: https://www.vex.net/~trebla/haskell/cont-monad.xhtml
2021-03-16 07:49:24 +0100 <guest316> olligobber: Cont Monad
2021-03-16 07:49:34 +0100 <gaff> i am not sure what you are saying. cabal, by default, pulls packages from hackage
2021-03-16 07:49:38 +0100 <guest316> that Setjmp
2021-03-16 07:49:53 +0100 <olligobber> gaff, oh, I'm wrong, someone else needs to help you
2021-03-16 07:50:05 +0100 <gaff> instead, i want cabal to pull packages from stackage LTS
2021-03-16 07:50:20 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2021-03-16 07:50:26 +0100 <guest316> setjmp is Cont action, which wrapped c's fixed-point
2021-03-16 07:50:42 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-03-16 07:50:50 +0100 <gaff> i tried putting stackage url in cabal config file, but that doesn't work.
2021-03-16 07:51:04 +0100 <guest316> call that c's fixed-point inside a Cont do-notaion, it creates a loop
2021-03-16 07:51:13 +0100 <guest316> that's confused me
2021-03-16 07:51:44 +0100 <sclv> stack uses packages from hackage ultimately too
2021-03-16 07:52:05 +0100 <sclv> the lts is just a file listing a subset of pckages and versions
2021-03-16 07:52:15 +0100 <sclv> its not a special package repo
2021-03-16 07:52:29 +0100jhrcek(~jhrcek@ip-89-103-183-101.net.upcbroadband.cz)
2021-03-16 07:52:32 +0100 <sclv> its additional data to hackage not a replacement
2021-03-16 07:52:36 +0100 <olligobber> guest316, are you talking about `setjmp = callCC (\c -> return (fix c))' ?
2021-03-16 07:52:39 +0100 <gaff> ok
2021-03-16 07:52:48 +0100jhrcek(~jhrcek@ip-89-103-183-101.net.upcbroadband.cz) (Client Quit)
2021-03-16 07:53:04 +0100jhrcek(~jhrcek@ip-89-103-183-101.net.upcbroadband.cz)
2021-03-16 07:53:28 +0100 <gaff> so how can you get a curated set of packages using cabal, just like the ones listed in stackage LTS?
2021-03-16 07:53:56 +0100 <sclv> stackage lets you download a freeze file.
2021-03-16 07:54:04 +0100 <sclv> but also, why?
2021-03-16 07:54:55 +0100 <gaff> just so that i can be sure that when cabal installs a package, i don't run into conflicts.
2021-03-16 07:55:07 +0100Lycurgus(~niemand@98.4.116.165)
2021-03-16 07:55:24 +0100 <sclv> just use cabal build and projects
2021-03-16 07:55:31 +0100 <sclv> and dont install libs directly
2021-03-16 07:55:35 +0100 <gaff> can you elaborate on the freeze file?
2021-03-16 07:55:43 +0100 <sclv> and the solver prevents this for you
2021-03-16 07:56:00 +0100 <sclv> im trying to find it - they hide it for some reason
2021-03-16 07:56:48 +0100aki_(~aki_@185.204.1.185) ()
2021-03-16 07:57:51 +0100 <gaff> ok, here is what i want -- i don't have any complex set up that requires multiple versions of a package or ghc. so all i want to do is have cabal install packages in ~/.cabal directory, but all installed packages must be compatible.
2021-03-16 07:58:04 +0100 <sclv> gaff: like this — curl https://www.stackage.org/lts-12.21/cabal.config > cabal.project.freeze
2021-03-16 07:58:21 +0100 <sclv> thats not the way to use cabal these days!
2021-03-16 07:58:30 +0100 <gaff> i see
2021-03-16 07:58:50 +0100 <sclv> with new build it just manages your deps for you. You never have to manually install a package at all
2021-03-16 07:59:23 +0100 <sclv> its described in the nix-style builds section of the cabal user guide iirc
2021-03-16 07:59:42 +0100 <gaff> ok
2021-03-16 07:59:59 +0100 <sclv> https://cabal.readthedocs.io/en/3.4/nix-local-build-overview.html
2021-03-16 08:00:31 +0100 <sclv> note that this is outdated in that you don’t need the v2 prefix anymore on a sufficiently recent cabal
2021-03-16 08:00:31 +0100 <gaff> so for each project, you just do a nix style build?
2021-03-16 08:00:36 +0100 <sclv> yep
2021-03-16 08:00:48 +0100 <sclv> which is now just named “build”
2021-03-16 08:00:56 +0100 <guest316> olligobber: yes
2021-03-16 08:01:07 +0100 <gaff> so default is nix style build
2021-03-16 08:01:09 +0100 <gaff> ?
2021-03-16 08:01:14 +0100 <sclv> Yes
2021-03-16 08:01:55 +0100 <gaff> i am using cabal 3.4, by the way
2021-03-16 08:02:02 +0100 <sclv> cool
2021-03-16 08:02:04 +0100 <gaff> and ghc 8.10.4
2021-03-16 08:02:23 +0100 <sclv> thats all good up to date stuff
2021-03-16 08:03:02 +0100shad0w_(67573b43@103.87.59.67)
2021-03-16 08:03:03 +0100idhugo_(~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) (Ping timeout: 246 seconds)
2021-03-16 08:04:35 +0100sh9(~sh9@softbank060116136158.bbtec.net)
2021-03-16 08:04:39 +0100 <gaff> also, i have a question -- what are the uses of hscolour, alex, and happy?
2021-03-16 08:04:56 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-03-16 08:05:39 +0100 <gaff> i am looking for creating local html documentation of packages pulled by cabal from hackage
2021-03-16 08:05:58 +0100 <sclv> the first produces pretty printed source, haddock uses it. The others are parser and lexer generators used by many packages
2021-03-16 08:06:20 +0100 <sclv> Cabal has flags to generate docs
2021-03-16 08:06:30 +0100 <sclv> Its in the guide
2021-03-16 08:06:49 +0100 <gaff> yeah, set documentation: True
2021-03-16 08:06:53 +0100dni53363(~dni46445@static-198-54-131-94.cust.tzulo.com)
2021-03-16 08:07:32 +0100dni53363(~dni46445@static-198-54-131-94.cust.tzulo.com) (Remote host closed the connection)
2021-03-16 08:07:51 +0100dni53363(~dni46445@static-198-54-131-94.cust.tzulo.com)
2021-03-16 08:07:58 +0100dni53363(~dni46445@static-198-54-131-94.cust.tzulo.com) (Max SendQ exceeded)
2021-03-16 08:08:21 +0100dni53363(~dni46445@static-198-54-131-94.cust.tzulo.com)
2021-03-16 08:09:09 +0100dni53363(~dni46445@static-198-54-131-94.cust.tzulo.com) (Max SendQ exceeded)
2021-03-16 08:09:14 +0100howdoi(uid224@gateway/web/irccloud.com/x-evlatajzqwspjogs) (Quit: Connection closed for inactivity)
2021-03-16 08:09:31 +0100dni53363(~dni46445@static-198-54-131-94.cust.tzulo.com)
2021-03-16 08:09:51 +0100dni53363(~dni46445@static-198-54-131-94.cust.tzulo.com) (Max SendQ exceeded)
2021-03-16 08:10:36 +0100dni53363(~dni46445@static-198-54-131-60.cust.tzulo.com)
2021-03-16 08:10:42 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-03-16 08:10:48 +0100dni53363(~dni46445@static-198-54-131-60.cust.tzulo.com) (Max SendQ exceeded)
2021-03-16 08:11:12 +0100dni53363(~dni46445@static-198-54-131-60.cust.tzulo.com)
2021-03-16 08:11:23 +0100dni53363(~dni46445@static-198-54-131-60.cust.tzulo.com) (Max SendQ exceeded)
2021-03-16 08:11:52 +0100dni53363(~dni46445@static-198-54-131-60.cust.tzulo.com)
2021-03-16 08:12:11 +0100dni53363(~dni46445@static-198-54-131-60.cust.tzulo.com) (Max SendQ exceeded)
2021-03-16 08:12:26 +0100poscat(~poscat@2408:8207:4825:c7c0::1)
2021-03-16 08:12:34 +0100dni53363(~dni46445@static-198-54-131-60.cust.tzulo.com)
2021-03-16 08:12:58 +0100dni53363(~dni46445@static-198-54-131-60.cust.tzulo.com) (Max SendQ exceeded)
2021-03-16 08:13:09 +0100sh9(~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8)
2021-03-16 08:13:10 +0100plutoniix(~q@ppp-223-24-63-1.revip6.asianet.co.th)
2021-03-16 08:13:19 +0100dni53363(~dni46445@static-198-54-131-60.cust.tzulo.com)
2021-03-16 08:13:25 +0100 <gaff> sclv: so i don't need to worry about installing hscolour, alex, or happy. cabal will download & install them if other packages need it. correct?
2021-03-16 08:13:43 +0100dni53363(~dni46445@static-198-54-131-60.cust.tzulo.com) (Max SendQ exceeded)
2021-03-16 08:15:42 +0100 <Uniaika> gaff: yep
2021-03-16 08:16:13 +0100 <gaff> sclv: thank you
2021-03-16 08:16:16 +0100dni53363(~dni46445@static-198-54-131-174.cust.tzulo.com)
2021-03-16 08:16:38 +0100dni53363(~dni46445@static-198-54-131-174.cust.tzulo.com) (Max SendQ exceeded)
2021-03-16 08:16:59 +0100dni53363(~dni46445@static-198-54-131-174.cust.tzulo.com)
2021-03-16 08:17:21 +0100dni53363(~dni46445@static-198-54-131-174.cust.tzulo.com) (Max SendQ exceeded)
2021-03-16 08:17:24 +0100 <gaff> sclv: unfortunately, the cabal documentation on nix build looks outdated. it still says v2 in build in cabal 3.4 documentation.
2021-03-16 08:17:43 +0100dni53363(~dni46445@static-198-54-131-174.cust.tzulo.com)
2021-03-16 08:17:50 +0100 <gaff> i wonder why they haven't updated this stuff.
2021-03-16 08:17:57 +0100dni53363(~dni46445@static-198-54-131-174.cust.tzulo.com) (Max SendQ exceeded)
2021-03-16 08:18:01 +0100 <sclv> yes. Other than that it’s correct
2021-03-16 08:18:13 +0100 <gaff> sclv: thnks
2021-03-16 08:18:16 +0100 <sclv> They’re working in new docs, but have limited resources
2021-03-16 08:18:19 +0100dni53363(~dni46445@static-198-54-131-174.cust.tzulo.com)
2021-03-16 08:18:24 +0100 <gaff> i see
2021-03-16 08:18:47 +0100dni53363(~dni46445@static-198-54-131-174.cust.tzulo.com) (Max SendQ exceeded)
2021-03-16 08:19:21 +0100dni53363(~dni46445@static-198-54-131-174.cust.tzulo.com)
2021-03-16 08:19:45 +0100dni53363(~dni46445@static-198-54-131-174.cust.tzulo.com) (Max SendQ exceeded)
2021-03-16 08:20:17 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-03-16 08:20:25 +0100 <gaff> juts want to confirm one more thing, since the docs are not updated. to fetch package html documentation through cabal, all i need is to set documentation: True in cabal config file (which is now in ~/.cabal folder)?
2021-03-16 08:20:37 +0100cfricke(~cfricke@unaffiliated/cfricke)
2021-03-16 08:20:49 +0100joncol(~jco@c188-150-101-195.bredband.comhem.se)
2021-03-16 08:20:53 +0100hackagehs-tags 0.1.5 - Create tag files (ctags and etags) for Haskell code. https://hackage.haskell.org/package/hs-tags-0.1.5 (AndreasAbel)
2021-03-16 08:21:41 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-03-16 08:22:13 +0100 <joncol> I'm trying out Cabal a bit in combination with Nix, is there an equivalent of `stack test --file-watch` that can be used with Cabal? I.e. something that watches the files for changes and automatically reruns the tests when this happens? Or should I be looking into using something like GHCID for this?
2021-03-16 08:23:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-16 08:24:13 +0100gaff(~user@49.207.217.94) (Quit: ERC (IRC client for Emacs 27.1))
2021-03-16 08:24:53 +0100graf_blutwurst(~user@2001:171b:226e:adc0:7d06:8763:7b6a:1565)
2021-03-16 08:25:26 +0100Sgeo_(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-03-16 08:25:52 +0100waleee-cl(uid373333@gateway/web/irccloud.com/x-nlbmdcqymwlgkesq) (Quit: Connection closed for inactivity)
2021-03-16 08:26:34 +0100benkolera(uid285671@gateway/web/irccloud.com/x-egzbqtucjdifvolv)
2021-03-16 08:26:41 +0100zanc(~user@103.154.230.130)
2021-03-16 08:26:52 +0100zanc(~user@103.154.230.130) (Client Quit)
2021-03-16 08:30:20 +0100forgottenone(~forgotten@176.42.16.24) (Quit: Konversation terminated!)
2021-03-16 08:30:35 +0100 <olligobber> ok, so Cont r a is roughly equal to (a -> r) -> r
2021-03-16 08:31:25 +0100 <olligobber> that means callCC :: ((a -> Cont r b) -> Cont r a) -> Cont r a
2021-03-16 08:31:27 +0100aforemny_aforemny
2021-03-16 08:31:44 +0100 <charukiewicz> joncol: Yes I'd recommend using ghcid. You can use it to invoke tests in a variety of ways. I have an example in the Makefile of a library I published: https://github.com/charukiewicz/hs-isbn/blob/master/Makefile#L10-L14
2021-03-16 08:32:24 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2021-03-16 08:32:25 +0100 <olligobber> is similar to ((a -> (b -> r) -> r) -> (a -> r) -> r) -> (a -> r) -> r
2021-03-16 08:32:36 +0100 <olligobber> wat
2021-03-16 08:32:38 +0100 <charukiewicz> joncol: If you don't want to use ghcid, you can probably also do it with the find and entr utilities, e.g. something like: find . -name *.hs | entr -s 'cabal test .....'
2021-03-16 08:32:42 +0100 <[exa]> olligobber: btw lambdabot can do something like @unmtl, you might want to play with that in the /query
2021-03-16 08:32:54 +0100forgottenone(~forgotten@176.42.16.24)
2021-03-16 08:35:09 +0100 <dminuoso> olligobber: Think of callCC as `catch` or perhaps `setjmp`
2021-03-16 08:35:25 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan)
2021-03-16 08:35:35 +0100 <olligobber> dminuoso, `setjmp = callCC (\c -> return (fix c))'
2021-03-16 08:35:37 +0100 <olligobber> -_-
2021-03-16 08:35:48 +0100 <dminuoso> heh
2021-03-16 08:35:57 +0100cods_cods
2021-03-16 08:35:57 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2021-03-16 08:36:02 +0100cods(~fred@82-65-232-44.subs.proxad.net) (Changing host)
2021-03-16 08:36:02 +0100cods(~fred@unaffiliated/cods)
2021-03-16 08:36:12 +0100 <dminuoso> Ah, I see there was some conversation before
2021-03-16 08:36:32 +0100 <olligobber> yeah, then I went for a walk to figure out why Cont r is even Applicative
2021-03-16 08:36:38 +0100ezrakilty(~ezrakilty@97-113-58-224.tukw.qwest.net) (Remote host closed the connection)
2021-03-16 08:38:08 +0100 <dminuoso> Back to figuring out why aesons rejectUnknownFields refuses to work right :(
2021-03-16 08:38:41 +0100 <koz_> olligobber: Yeah, Cont's instances involve some elaborate mind twisting.
2021-03-16 08:40:14 +0100 <koz_> Even the Functor instance is somewhat involved.
2021-03-16 08:41:26 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-03-16 08:41:47 +0100bitmagie(~Thunderbi@200116b806998b0058b04fa04645b802.dip.versatel-1u1.de)
2021-03-16 08:41:53 +0100 <olligobber> for some reason even the definition of pure took me a bit
2021-03-16 08:43:15 +0100 <koz_> Yeah, Cont is a pretty slippery one.
2021-03-16 08:43:27 +0100 <koz_> It's super-duper general, and can be used to do... well, basically anything.
2021-03-16 08:44:02 +0100Kmos(~Kmos@217.146.82.202)
2021-03-16 08:48:23 +0100 <olligobber> :t \f c -> f (\x _ -> c x) c
2021-03-16 08:48:25 +0100 <lambdabot> ((t1 -> p -> t2) -> (t1 -> t2) -> t3) -> (t1 -> t2) -> t3
2021-03-16 08:49:10 +0100 <olligobber> ok that looks like roughly the right type...
2021-03-16 08:49:38 +0100average(uid473595@gateway/web/irccloud.com/x-gpzntdlygmwptuws) (Quit: Connection closed for inactivity)
2021-03-16 08:50:25 +0100 <dminuoso> koz_: It cant do IO, though. So the people who claim Cont is the mother of all monads are wrong. :p
2021-03-16 08:50:39 +0100 <koz_> Yeah, lol.
2021-03-16 08:50:45 +0100 <olligobber> dminuoso, so ContT IO is the mother of all monads? :P
2021-03-16 08:51:01 +0100 <dminuoso> Mmm, what about STM?
2021-03-16 08:51:06 +0100 <koz_> @unmtl ContT r IO
2021-03-16 08:51:07 +0100 <lambdabot> err: `ContT r IO' is not applied to enough arguments, giving `/\A. (A -> IO r) -> IO r'
2021-03-16 08:51:10 +0100 <koz_> @unmtl ContT r IO a
2021-03-16 08:51:10 +0100 <lambdabot> (a -> IO r) -> IO r
2021-03-16 08:52:04 +0100Lycurgus(~niemand@98.4.116.165) (Quit: Exeunt)
2021-03-16 08:56:06 +0100 <olligobber> guest316, Cont is messing with my head, sorry I can't help more rn
2021-03-16 08:57:04 +0100 <koz_> Cont messes with your head, confirmed.
2021-03-16 08:57:40 +0100 <olligobber> I got as far as "callCC is similar to \f c -> f (\x _ -> c x) c"
2021-03-16 08:57:42 +0100Geekingfrog_Geekingfrog
2021-03-16 08:57:55 +0100 <olligobber> but the implications of that are too much
2021-03-16 08:57:58 +0100average(uid473595@gateway/web/irccloud.com/x-ywsfnraofofbenfj)
2021-03-16 08:57:58 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
2021-03-16 08:58:14 +0100idhugo_(~idhugo@87-49-147-45-mobile.dk.customer.tdc.net)
2021-03-16 08:58:37 +0100 <dminuoso> callCC f = ContT $ \ c -> runContT (f (\ x -> ContT $ \ _ -> c x)) c
2021-03-16 08:58:56 +0100 <olligobber> yeah, I got rid of the ContT and runContT to get that
2021-03-16 08:59:15 +0100 <dminuoso> olligobber: Im not sure getting rid of them is a useful thing to do, since that hides how <*> or =<< interact with that
2021-03-16 08:59:36 +0100 <olligobber> I'm just trying to figure out how callCC works
2021-03-16 08:59:45 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2021-03-16 08:59:50 +0100 <dminuoso> olligobber: Do you understand how to use it?
2021-03-16 08:59:54 +0100 <olligobber> nope
2021-03-16 08:59:58 +0100 <dminuoso> Start with that, maybe.
2021-03-16 09:00:00 +0100 <olligobber> some day I will
2021-03-16 09:00:02 +0100 <olligobber> but not today
2021-03-16 09:00:07 +0100 <dminuoso> It's rather easy to use, really
2021-03-16 09:00:29 +0100 <olligobber> *grits teeth* not ... today ...
2021-03-16 09:00:34 +0100 <olligobber> :P
2021-03-16 09:00:45 +0100 <dminuoso> Im just saying: If you wnat to understand how it works, its probably easier to understand how to use it first.
2021-03-16 09:00:46 +0100 <koz_> "What do we say to ContT?"
2021-03-16 09:00:51 +0100 <koz_> "Not today."
2021-03-16 09:00:52 +0100 <dminuoso> Since that will give you an intution
2021-03-16 09:00:57 +0100 <olligobber> probably
2021-03-16 09:00:58 +0100 <olligobber> but
2021-03-16 09:01:00 +0100 <olligobber> im pooped
2021-03-16 09:01:13 +0100DavidEichmann(~david@234.109.45.217.dyn.plus.net)
2021-03-16 09:01:24 +0100 <dminuoso> The probably confusing thing is, this is not just Cont, but *explicit* continuating passing style ontop too.
2021-03-16 09:01:29 +0100 <dminuoso> % :t callCC
2021-03-16 09:01:29 +0100 <yahb> dminuoso: MonadCont m => ((a -> m b) -> m a) -> m a
2021-03-16 09:03:08 +0100 <dminuoso> If you imagine how to call it, it needs one argument - a function. So you write `callCC $ \f -> ...` inside the body of that function you have your regular Cont. The callCC acts as a "catch" block, and you can call "f" at any time to "throw" to it.
2021-03-16 09:03:10 +0100 <dminuoso> Done
2021-03-16 09:03:35 +0100 <dminuoso> One could think of `catch` in IO as having the type":
2021-03-16 09:03:59 +0100 <dminuoso> catch :: ((a -> IO b) -> IO a) -> IO a
2021-03-16 09:04:09 +0100 <dminuoso> And suddenly it's the equivalent here
2021-03-16 09:04:14 +0100 <dminuoso> The type looks the same too
2021-03-16 09:04:50 +0100 <dminuoso> (this requires a bit of pretense, in reality catch cant work like that)
2021-03-16 09:05:02 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
2021-03-16 09:05:16 +0100 <dminuoso> or at least the type would be misleading, since if you used the provided "throw" function, there's no guarantee the `catch` will actually receive it. with callCC you have that guarantee
2021-03-16 09:07:45 +0100Varis(~Tadas@unaffiliated/varis)
2021-03-16 09:08:11 +0100 <olligobber> I guess IO isn't MonadCont
2021-03-16 09:08:48 +0100 <dminuoso> Yeah.
2021-03-16 09:08:52 +0100 <olligobber> also, no one has fixed the bug I found
2021-03-16 09:12:00 +0100frozenErebus(~frozenEre@94.128.82.20) (Ping timeout: 246 seconds)
2021-03-16 09:12:31 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:17e3:41cc:739d:497d)
2021-03-16 09:13:18 +0100xiinotulp(~q@ppp-27-55-80-13.revip3.asianet.co.th)
2021-03-16 09:13:24 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-03-16 09:16:00 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4) (Remote host closed the connection)
2021-03-16 09:16:32 +0100niko(~niko@freenode/staff/ubuntu.member.niko) (Quit: leaving)
2021-03-16 09:16:42 +0100plutoniix(~q@ppp-223-24-63-1.revip6.asianet.co.th) (Ping timeout: 260 seconds)
2021-03-16 09:17:20 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-03-16 09:18:16 +0100niko(~niko@freenode/staff/ubuntu.member.niko)
2021-03-16 09:19:51 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-16 09:19:58 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck)
2021-03-16 09:20:05 +0100hiroaki(~hiroaki@2a02:8108:8c40:2bb8:4aab:53fc:fe7e:1057) (Ping timeout: 265 seconds)
2021-03-16 09:21:15 +0100frozenErebus(~frozenEre@94.128.82.20)
2021-03-16 09:21:23 +0100hackageZ-Data 0.7.1.0 - Array, vector and text https://hackage.haskell.org/package/Z-Data-0.7.1.0 (winterland)
2021-03-16 09:22:08 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
2021-03-16 09:22:19 +0100asheshambasta(~user@ptr-e1lysavz4fnu38pr3di.18120a2.ip6.access.telenet.be)
2021-03-16 09:22:52 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2021-03-16 09:22:52 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2021-03-16 09:22:52 +0100mouseghost(~draco@wikipedia/desperek)
2021-03-16 09:24:43 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2021-03-16 09:25:09 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-03-16 09:26:28 +0100debugloo1debugloop
2021-03-16 09:26:30 +0100frozenErebus(~frozenEre@94.128.82.20) (Ping timeout: 260 seconds)
2021-03-16 09:27:20 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-hmvjhlnbprzcamlb)
2021-03-16 09:27:20 +0100idhugo__(~idhugo@80-62-116-180-mobile.dk.customer.tdc.net)
2021-03-16 09:27:51 +0100hiroaki(~hiroaki@2a02:8108:8c40:2bb8:cd42:97fd:be98:3cd9)
2021-03-16 09:29:30 +0100idhugo_(~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) (Ping timeout: 246 seconds)
2021-03-16 09:30:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-16 09:31:57 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it)
2021-03-16 09:32:02 +0100Sorna(~Sornaensi@79.142.232.102.static.router4.bolignet.dk)
2021-03-16 09:32:15 +0100Sornaensis(~Sornaensi@077213203030.dynamic.telenor.dk) (Disconnected by services)
2021-03-16 09:32:19 +0100SornaSornaensis
2021-03-16 09:32:24 +0100plutonux(~q@ppp-223-24-184-182.revip6.asianet.co.th)
2021-03-16 09:34:46 +0100LKoen(~LKoen@194.250.88.92.rev.sfr.net)
2021-03-16 09:35:13 +0100xiinotulp(~q@ppp-27-55-80-13.revip3.asianet.co.th) (Ping timeout: 260 seconds)
2021-03-16 09:35:51 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-03-16 09:36:04 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-kiyfxvthgbbyzfbg)
2021-03-16 09:38:52 +0100kuribas(~user@ptr-25vy0iaa19zfetqtyes.18120a2.ip6.access.telenet.be)
2021-03-16 09:41:58 +0100coot_(~coot@37.30.58.223.nat.umts.dynamic.t-mobile.pl)
2021-03-16 09:43:23 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 245 seconds)
2021-03-16 09:43:24 +0100coot_coot
2021-03-16 09:44:51 +0100Kaiepi(~Kaiepi@47.54.252.148)
2021-03-16 09:46:17 +0100int-e_int-e
2021-03-16 09:47:44 +0100kritzefitz(~kritzefit@fw-front.credativ.com)
2021-03-16 09:50:37 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-16 09:52:31 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan) (Remote host closed the connection)
2021-03-16 09:54:06 +0100kritzefitz(~kritzefit@fw-front.credativ.com) (Quit: Leaving)
2021-03-16 09:55:28 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 245 seconds)
2021-03-16 09:56:19 +0100acidjnk_new(~acidjnk@p200300d0c72b954785b86a8446f85480.dip0.t-ipconnect.de)
2021-03-16 09:58:14 +0100neiluj_(~jco@91-167-203-101.subs.proxad.net)
2021-03-16 10:01:02 +0100bahamas(~lucian@188.27.48.99)
2021-03-16 10:01:02 +0100bahamas(~lucian@188.27.48.99) (Changing host)
2021-03-16 10:01:02 +0100bahamas(~lucian@unaffiliated/bahamas)
2021-03-16 10:01:21 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan)
2021-03-16 10:01:33 +0100 <bahamas> what's the difference between unit and void?
2021-03-16 10:02:46 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan) (Remote host closed the connection)
2021-03-16 10:03:04 +0100 <int-e> bahamas: unit has a (non-bottom) value, void has none.
2021-03-16 10:03:07 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan)
2021-03-16 10:03:13 +0100 <Taneb> bahamas: there are zero values of type Void, but one value of type Unit (= ())
2021-03-16 10:03:40 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan) (Client Quit)
2021-03-16 10:04:00 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan)
2021-03-16 10:04:08 +0100 <int-e> you can think of it as data () = () {-invalid syntax, but note that there is a constructor-}; data Void {-note lack of constructors-}
2021-03-16 10:05:06 +0100coot(~coot@37.30.58.223.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-03-16 10:05:21 +0100 <bahamas> ah, I see. so with Void you just reference the type, while with unit you can also reference the value
2021-03-16 10:05:31 +0100 <int-e> It's kind of odd that people find uses for Void... but they do :)
2021-03-16 10:05:48 +0100remal(~remal@d24-57-234-201.home.cgocable.net) (Ping timeout: 265 seconds)
2021-03-16 10:05:52 +0100icebreaker(michalc@unaffiliated/icebreaker) (Quit: leaving)
2021-03-16 10:06:54 +0100 <bahamas> I'm still wrapping my head around the concept of types without values
2021-03-16 10:09:46 +0100minoru_shiraeesh(~shiraeesh@109.166.59.197)
2021-03-16 10:10:35 +0100fendor(~fendor@178.165.129.131.wireless.dyn.drei.com)
2021-03-16 10:11:23 +0100 <dminuoso> Well, Void has bottom as an element.
2021-03-16 10:11:23 +0100hackageZ-IO 0.7.1.0 - Simple and high performance IO toolkit for Haskell https://hackage.haskell.org/package/Z-IO-0.7.1.0 (winterland)
2021-03-16 10:11:33 +0100 <dminuoso> And that's sort of the point of it, in Haskell
2021-03-16 10:12:47 +0100 <dminuoso> Void can more clearly communicate that no value exists (for whatever). Consider
2021-03-16 10:12:49 +0100 <dminuoso> % :t forever
2021-03-16 10:12:49 +0100 <yahb> dminuoso: Applicative f => f a -> f b
2021-03-16 10:12:55 +0100 <dminuoso> We could also write it to have the type
2021-03-16 10:12:57 +0100 <guest316> dminuoso: why call fixed-point inside Cont, would create a loop?
2021-03-16 10:13:00 +0100 <dminuoso> forever :: Applicative f => f a -> f Void
2021-03-16 10:13:05 +0100 <guest316> dminuoso: that Setjmp
2021-03-16 10:13:25 +0100 <guest316> from https://www.vex.net/~trebla/haskell/cont-monad.xhtml
2021-03-16 10:13:27 +0100ADG1089__(~aditya@106.214.253.186)
2021-03-16 10:13:32 +0100 <guest316> setjmp = callCC (\c -> return (fix c))
2021-03-16 10:13:45 +0100 <bahamas> dminuoso: the fact that you mentioned that reminded me of the context in which Void is used: when a branch of execution should never be reached
2021-03-16 10:13:50 +0100 <guest316> setjmp is Cont action, which wrapped c's fixed-point
2021-03-16 10:14:07 +0100 <bahamas> if it is, there should be an error. the fact that Void is populated by bottom does that
2021-03-16 10:14:21 +0100 <guest316> do { l <- setjmp ; modify (+ 1) ; s <- get ; if s == 5 then return s else l } this l is c, right?
2021-03-16 10:14:22 +0100 <int-e> dminuoso: hmm, what do you think of... absurd :: Void -> a; absurd = unsafeCoerce
2021-03-16 10:14:26 +0100 <guest316> c's fixed-point
2021-03-16 10:14:30 +0100int-eruns
2021-03-16 10:14:40 +0100 <guest316> why call c's fixed-point would jump back?
2021-03-16 10:15:06 +0100 <merijn> bahamas: Another use is that I had "data AST a" where 'a' was the type of unbound variables, so "AST Void" proved all variables were resolved
2021-03-16 10:15:37 +0100 <guest316> I think that setjmp = cont $ \k -> k (fix c)
2021-03-16 10:16:05 +0100 <guest316> that l = fix c, right?
2021-03-16 10:16:27 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4)
2021-03-16 10:16:29 +0100icebreaker(michalc@unaffiliated/icebreaker)
2021-03-16 10:17:59 +0100tafa(~tafa@vps-83a5c612.vps.ovh.net) (Quit: ZNC - https://znc.in)
2021-03-16 10:19:03 +0100 <bahamas> merijn: I feel like saying that Void represents 0 at the type level. I don't know if that's right though
2021-03-16 10:19:04 +0100 <dminuoso> 10:13:50 guest316 | setjmp is Cont action, which wrapped c's fixed-point
2021-03-16 10:19:07 +0100 <dminuoso> You are missing the callCC there.
2021-03-16 10:19:22 +0100 <dminuoso> The setjmp magic is encapsulated by callCC.
2021-03-16 10:20:46 +0100kam1(~kam1@83.123.167.219)
2021-03-16 10:21:08 +0100kam1(~kam1@83.123.167.219) (Read error: Connection reset by peer)
2021-03-16 10:21:17 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4) (Ping timeout: 260 seconds)
2021-03-16 10:23:57 +0100esp32_prog(~esp32_pro@185.254.75.51)
2021-03-16 10:29:29 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck) (Ping timeout: 268 seconds)
2021-03-16 10:30:31 +0100asheshambasta(~user@ptr-e1lysavz4fnu38pr3di.18120a2.ip6.access.telenet.be) ("ERC (IRC client for Emacs 28.0.50)")
2021-03-16 10:32:05 +0100jhrcek(~jhrcek@ip-89-103-183-101.net.upcbroadband.cz) (Quit: Leaving)
2021-03-16 10:35:12 +0100vicfred(vicfred@gateway/vpn/mullvad/vicfred) (Quit: Leaving)
2021-03-16 10:36:08 +0100Paks(~paks@c-69-136-183-189.hsd1.il.comcast.net) (Ping timeout: 256 seconds)
2021-03-16 10:37:35 +0100Paks(~paks@c-69-136-183-189.hsd1.il.comcast.net)
2021-03-16 10:42:36 +0100plutonux(~q@ppp-223-24-184-182.revip6.asianet.co.th) (Read error: Connection reset by peer)
2021-03-16 10:42:47 +0100kam1(~kam1@83.123.167.219)
2021-03-16 10:42:55 +0100dftxbs3e(~dftxbs3e@unaffiliated/dftxbs3e)
2021-03-16 10:43:12 +0100kam1(~kam1@83.123.167.219) (Read error: Connection reset by peer)
2021-03-16 10:46:33 +0100 <joncol> charukiewicz: Thanks!
2021-03-16 10:47:21 +0100 <guest316> dminuoso: but callCC x :: Cont r a
2021-03-16 10:47:35 +0100 <guest316> dminuoso: right?
2021-03-16 10:47:40 +0100 <guest316> :t callCC
2021-03-16 10:47:41 +0100 <lambdabot> MonadCont m => ((a -> m b) -> m a) -> m a
2021-03-16 10:48:18 +0100 <dminuoso> guest316: Try to go back one excercise.
2021-03-16 10:48:46 +0100 <dminuoso> Conceptually callCC already is a "setjmp", and it provides "longjmp" as an argument to its function.
2021-03-16 10:49:41 +0100 <dminuoso> Except it's a scoped setjmp, with the trick in the excercise you are looking at, you're leaking the jump target to outside callCC.
2021-03-16 10:52:00 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-03-16 10:53:41 +0100frozenErebus(~frozenEre@94.128.82.20)
2021-03-16 10:54:11 +0100 <guest316> dminuoso: I don't get it, "leaking the jump target to outside callCC."
2021-03-16 10:54:45 +0100 <guest316> dminuoso: so the jump back trick isn't related to fixed-point, but related to callCC?
2021-03-16 10:55:11 +0100sz0(uid110435@gateway/web/irccloud.com/x-tawqhplyvvjuqusl) (Quit: Connection closed for inactivity)
2021-03-16 10:56:13 +0100 <dminuoso> Yes.
2021-03-16 10:56:16 +0100thc202(~thc202@unaffiliated/thc202)
2021-03-16 10:56:28 +0100 <dminuoso> Not just related, that's the entire point of callCC
2021-03-16 10:56:42 +0100 <dminuoso> Think of `callCC` as setting up a catch frame, and providing you with a jump
2021-03-16 10:56:50 +0100 <dminuoso> callCC $ \jumpBack -> ...
2021-03-16 10:57:31 +0100kuribas(~user@ptr-25vy0iaa19zfetqtyes.18120a2.ip6.access.telenet.be) (Read error: Connection reset by peer)
2021-03-16 10:58:48 +0100frozenErebus(~frozenEre@94.128.82.20) (Ping timeout: 256 seconds)
2021-03-16 10:58:54 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck)
2021-03-16 10:59:02 +0100shad0w_(67573b43@103.87.59.67) (Quit: Connection closed)
2021-03-16 10:59:04 +0100 <guest316> dminuoso: without fixed-point, could callCC jump inside Cont do-notation?
2021-03-16 10:59:11 +0100 <dminuoso> yes
2021-03-16 10:59:18 +0100 <guest316> dminuoso: example code?
2021-03-16 10:59:23 +0100ADG1089__(~aditya@106.214.253.186) (Remote host closed the connection)
2021-03-16 10:59:27 +0100 <dminuoso> e.g.: g = callCC $ \throw -> do { n <- getSomeNumber; when (n > 10) (throw 100); m <- getAnotherNumber; pure (n + m) }
2021-03-16 11:00:23 +0100 <dminuoso> Here `throw` can shortcircuit the rest of the inner block. It essentially jumps to the outer callCC back, and resumes with the provided answer.
2021-03-16 11:00:45 +0100 <guest316> dminuoso: could we change `when' to if-then-else?
2021-03-16 11:00:49 +0100 <dminuoso> Sure
2021-03-16 11:00:58 +0100 <dminuoso> Note this "throw" handle is what callCC provides you with.
2021-03-16 11:01:06 +0100 <guest316> I'm not familiar with `when` or `until'
2021-03-16 11:01:10 +0100 <dminuoso> Inside callCC, you can use it at any time to just abort the rest
2021-03-16 11:01:36 +0100 <dminuoso> guest316: Are you familiar with regular exceptions in say IO?
2021-03-16 11:01:43 +0100 <guest316> dminuoso: yes
2021-03-16 11:01:52 +0100 <dminuoso> Imagine catch had the following type signature
2021-03-16 11:01:57 +0100 <dminuoso> catch :: ((a -> IO b) -> IO a) -> IO a
2021-03-16 11:03:10 +0100 <dminuoso> Then you could do something like: `catch $ \abort -> do { n <- getFromDatabase; when (badUser n) (abort Nothing); someMoreCode }`
2021-03-16 11:03:43 +0100 <dminuoso> (Note, this primitive wouldnt behave very well in certain situations, but lets glance over that)
2021-03-16 11:04:00 +0100 <dminuoso> Here, abort would just shortcircuit someMoreCode, and instantly provide an answer
2021-03-16 11:04:10 +0100Wafelack(~Wafelack@2a01:cb16:6:9385:66f3:f20f:c394:340b)
2021-03-16 11:04:14 +0100aarvar(~foewfoiew@2601:602:a080:fa0:1175:1d12:3f7a:f4b9) (Ping timeout: 264 seconds)
2021-03-16 11:04:25 +0100 <dminuoso> Perhaps say via an exception that `catch` instantly catches, and reinserts as a value
2021-03-16 11:04:26 +0100Wafelack(~Wafelack@2a01:cb16:6:9385:66f3:f20f:c394:340b) (Client Quit)
2021-03-16 11:04:34 +0100 <dminuoso> And that's exactly what callCC does
2021-03-16 11:04:57 +0100 <guest316> dminuoso: wait a sec, g :: Cont r a?
2021-03-16 11:05:08 +0100 <dminuoso> What is g?
2021-03-16 11:05:21 +0100 <guest316> <dminuoso> e.g.: g = callCC $ \throw -> do { n <- getSomeNumber; when (n > 10) (throw 100); m <- getAnotherNumber; pure (n + m) }
2021-03-16 11:05:25 +0100 <dminuoso> Perhaps, you could think of `callCC` as giving you a proper "return" from imperative languages.
2021-03-16 11:05:40 +0100 <dminuoso> guest316: Ah, it would be `g :: Cont r Int` perhaps
2021-03-16 11:06:04 +0100 <guest316> dminuoso: now I know inside callCC can do abort earlier
2021-03-16 11:06:13 +0100 <dminuoso> But callCC doesnt just give you a `return`, but it gives you `return` as a first class value, that you can pass around..
2021-03-16 11:06:39 +0100 <dminuoso> (Note when I say `return`, I mean it in the sense of say C++ or Java)
2021-03-16 11:07:01 +0100 <guest316> dminuoso: would callCC would care what g would take?
2021-03-16 11:07:10 +0100 <dminuoso> "what g would take"?
2021-03-16 11:07:32 +0100 <guest316> g :: Cont r a, so g would take a continuation to extract r
2021-03-16 11:07:56 +0100 <guest316> g = cons $ \k -> k x
2021-03-16 11:08:07 +0100 <dminuoso> Not extract, but produce
2021-03-16 11:09:22 +0100 <dminuoso> The broad idea is, that rather than `I have an Int`, this says `If you give me a function that knows how to proceed from an Int, I will provide you with an Int`
2021-03-16 11:09:36 +0100 <dminuoso> Turning `Int` into `(Int -> a) -> a`
2021-03-16 11:09:49 +0100aarvar(~foewfoiew@2601:602:a080:fa0:1175:1d12:3f7a:f4b9)
2021-03-16 11:11:00 +0100Alleria__(~textual@2603-7000-3040-0000-3133-bb30-065f-83b3.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-03-16 11:11:35 +0100 <guest316> dminuoso: so what g take would do something to callCC?
2021-03-16 11:12:04 +0100minoru_shiraeesh(~shiraeesh@109.166.59.197) (Ping timeout: 276 seconds)
2021-03-16 11:12:23 +0100 <guest316> g :: (a->r) -> r, would take (a->r)
2021-03-16 11:12:40 +0100 <dminuoso> I dont understand the question
2021-03-16 11:13:09 +0100 <guest316> g = callCC ... :: Cont r a, right?
2021-03-16 11:13:12 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2021-03-16 11:13:25 +0100__monty__(~toonn@unaffiliated/toonn)
2021-03-16 11:13:40 +0100 <guest316> and g would take x:: (a->r) , so g x :: r, right?
2021-03-16 11:14:14 +0100loller_(uid358106@gateway/web/irccloud.com/x-cnpraiotvintahet) (Quit: Connection closed for inactivity)
2021-03-16 11:14:21 +0100 <dminuoso> Lets pick my previous example
2021-03-16 11:14:32 +0100 <dminuoso> g :: Cont r Int; g = callCC $ \throw -> do { n <- getSomeNumber; when (n > 10) (throw 100); m <- getAnotherNumber; pure (n + m) }
2021-03-16 11:14:35 +0100 <guest316> so g x :: r, would be (callCC \abort -> ...) x
2021-03-16 11:14:40 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-03-16 11:14:52 +0100 <dminuoso> g does not take anything, as its not a function
2021-03-16 11:15:10 +0100 <dminuoso> (well, strictly speaking intensionally it contains a function, but that's not as important here)
2021-03-16 11:16:14 +0100 <guest316> dminuoso: (runCont g) x
2021-03-16 11:16:57 +0100 <guest316> dminuoso: data types or functions just wrap and unwrap
2021-03-16 11:17:07 +0100 <dminuoso> Yes, but lets not gloss over having to unrap them first.
2021-03-16 11:17:29 +0100 <dminuoso> It makes a huge difference whether you write `(runCont g) x` or `(g x`
2021-03-16 11:17:47 +0100 <dminuoso> Or rather `runCont g x` or `g x`
2021-03-16 11:17:58 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 245 seconds)
2021-03-16 11:18:04 +0100 <dminuoso> In my example, the type of `g` is `Cont r Int`, though
2021-03-16 11:18:22 +0100 <dminuoso> So that's isomorphic to `(Int -> r) -> r`
2021-03-16 11:18:30 +0100 <dminuoso> that is, `runCont g :: (Int -> r) -> r`
2021-03-16 11:18:44 +0100son0p(~son0p@181.58.39.182)
2021-03-16 11:19:20 +0100jhrcek(~jhrcek@ip-89-103-183-101.net.upcbroadband.cz)
2021-03-16 11:21:05 +0100 <guest316> dminuoso: right
2021-03-16 11:21:38 +0100 <guest316> dminuoso: so runCont g $ x :: r, would callCC take x?
2021-03-16 11:22:32 +0100 <guest316> runCont (callCC $ \throw -> ...) x
2021-03-16 11:22:39 +0100Major_Biscuit(~Major_Bis@wlan-145-94-219-47.wlan.tudelft.nl)
2021-03-16 11:22:43 +0100 <guest316> would this x will be inside callCC?
2021-03-16 11:27:38 +0100ymherklotz(~ymherklot@2a0c:5bc0:40:107b:fdfc:4d2d:898a:f9f5) (Ping timeout: 264 seconds)
2021-03-16 11:27:50 +0100Kaiepi(~Kaiepi@47.54.252.148) (Remote host closed the connection)
2021-03-16 11:28:47 +0100neiluj(~jco@unaffiliated/neiluj) (Remote host closed the connection)
2021-03-16 11:28:47 +0100neiluj_(~jco@91-167-203-101.subs.proxad.net) (Remote host closed the connection)
2021-03-16 11:30:59 +0100 <dminuoso> No, of course not.
2021-03-16 11:31:21 +0100 <dminuoso> Given `runCont expr g`, then `g` is the continuation for whatever expr produces.
2021-03-16 11:37:19 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 268 seconds)
2021-03-16 11:38:20 +0100kuribas(~user@ptr-25vy0iaa19zfetqtyes.18120a2.ip6.access.telenet.be)
2021-03-16 11:38:34 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2021-03-16 11:38:34 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Changing host)
2021-03-16 11:38:34 +0100neiluj(~jco@unaffiliated/neiluj)
2021-03-16 11:39:05 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-03-16 11:39:08 +0100dhil(~dhil@80.208.56.181)
2021-03-16 11:41:24 +0100frozenErebus(~frozenEre@94.128.82.20)
2021-03-16 11:42:15 +0100kiweun(~kiweun@2607:fea8:2a62:9600:f047:e119:fc45:ad77)
2021-03-16 11:43:09 +0100kiweun(~kiweun@2607:fea8:2a62:9600:f047:e119:fc45:ad77) (Client Quit)
2021-03-16 11:46:10 +0100aforemnyaforemny_
2021-03-16 11:46:39 +0100aforemny_aforemny
2021-03-16 11:48:02 +0100aarvar(~foewfoiew@2601:602:a080:fa0:1175:1d12:3f7a:f4b9) (Ping timeout: 264 seconds)
2021-03-16 11:53:02 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-03-16 11:53:43 +0100ukari(~ukari@unaffiliated/ukari)
2021-03-16 12:00:01 +0100Alleria(~textual@69.202.254.168)
2021-03-16 12:00:26 +0100AlleriaGuest22380
2021-03-16 12:03:51 +0100aarvar(~foewfoiew@2607:fb90:f25:37c:1175:1d12:3f7a:f4b9)
2021-03-16 12:04:32 +0100Guest22380(~textual@69.202.254.168) (Ping timeout: 256 seconds)
2021-03-16 12:06:36 +0100CoconutCrab(~Cua@unaffiliated/coconutcrab)
2021-03-16 12:06:36 +0100curiousgayfinished reading "9.3 Using Monads" in Gentle Introduction to Haskell
2021-03-16 12:06:49 +0100 <curiousgay> I guess I'll understand that only in practice
2021-03-16 12:06:51 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-hmvjhlnbprzcamlb) (Quit: Connection closed for inactivity)
2021-03-16 12:07:19 +0100 <dminuoso> Yes.
2021-03-16 12:07:28 +0100 <dminuoso> To be fair, the gentle introduction is anything *but* gentle. :)
2021-03-16 12:07:44 +0100 <curiousgay> Go - reflection is never clear; Haskell - monads are never clear :)
2021-03-16 12:09:11 +0100 <kuribas> curiousgay: that's the worst introduction to monads ever
2021-03-16 12:09:13 +0100Major_Biscuit(~Major_Bis@wlan-145-94-219-47.wlan.tudelft.nl) (Ping timeout: 245 seconds)
2021-03-16 12:10:14 +0100aarvar(~foewfoiew@2607:fb90:f25:37c:1175:1d12:3f7a:f4b9) (Ping timeout: 264 seconds)
2021-03-16 12:11:17 +0100 <kuribas> I remember it starting with the monad laws.
2021-03-16 12:11:24 +0100 <curiousgay> yes
2021-03-16 12:11:32 +0100 <kuribas> that's like teaching aritmetic by starting with the associative and commutative laws.
2021-03-16 12:11:45 +0100usr25(~usr25@unaffiliated/usr25)
2021-03-16 12:12:14 +0100 <curiousgay> it took some time ti understand: xs >>= return . f = fmap f xs
2021-03-16 12:12:22 +0100 <curiousgay> s/ti/to/
2021-03-16 12:12:22 +0100 <kuribas> "hello kids, so number form a group is a set equipped with a binary operation that combines any two elements to form a third element in such a way that three conditions called group axioms are satisfied, namely associativity, identity and invertibility. "
2021-03-16 12:12:26 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-03-16 12:13:50 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-16 12:14:03 +0100 <kuribas> curiousgay: don't bother with the laws, try to get some intuition for do notation and the bind function first.
2021-03-16 12:15:11 +0100 <Logio> they used to teach set theory as the first maths back in the day, had a professor who said it was the best thing that could've happened to him (and his colleague who added "and for no one else")
2021-03-16 12:15:25 +0100 <pjb> kuribas: multiple groups, or other structures, and you can pile on new ones.
2021-03-16 12:15:34 +0100 <kuribas> Logio: first math for kids, or for university students?
2021-03-16 12:15:39 +0100 <Logio> kuribas: for kids
2021-03-16 12:15:44 +0100curiousgay(~gay@178.217.208.8) (Read error: Connection reset by peer)
2021-03-16 12:15:55 +0100 <olligobber> set theory for kids? like how young?
2021-03-16 12:16:10 +0100 <kuribas> we did learn set theory, but that's long after learning arithmetic.
2021-03-16 12:16:39 +0100 <Logio> I'm not sure what grade it was back then, but between 8-11 year olds I'd wager
2021-03-16 12:17:00 +0100 <pjb> kuribas: when you pile 2 groups, you get a field ;-)
2021-03-16 12:17:01 +0100 <kuribas> Logio: but surely at that time they knew how to add numbers?
2021-03-16 12:17:17 +0100 <pjb> olligobber: you can start very young. I did…
2021-03-16 12:17:35 +0100 <Logio> kuribas: no, not necessarily
2021-03-16 12:17:40 +0100 <pjb> But granted, perhaps not for everybody.
2021-03-16 12:18:00 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4)
2021-03-16 12:18:03 +0100 <pjb> and indeed, there are prerequisites.
2021-03-16 12:18:11 +0100 <Logio> but you don't need arithmetic for building sets of (physical) things
2021-03-16 12:18:24 +0100 <Logio> which I guess was partly the point
2021-03-16 12:18:33 +0100kam1(~kam1@83.123.167.219)
2021-03-16 12:18:50 +0100 <pjb> Definitely. I started in kindergarden with blocks triangles, rectangles, squares, disks, in red, yellow and blue. We could do all kinds of sets and intersections and unions!
2021-03-16 12:18:58 +0100 <Logio> someone said that they still teach it like that in Hungary
2021-03-16 12:18:58 +0100kam1(~kam1@83.123.167.219) (Read error: Connection reset by peer)
2021-03-16 12:19:12 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-03-16 12:19:23 +0100 <pjb> Well, this is real school, vs. nursery…
2021-03-16 12:19:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-16 12:19:51 +0100 <pjb> But again, you probably cannot do that with everybody, at least from the same age.
2021-03-16 12:20:18 +0100 <pjb> This is the main problem with education, it is not discriminating and differentiating enough the pupils.
2021-03-16 12:22:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4) (Ping timeout: 264 seconds)
2021-03-16 12:24:50 +0100caro(~caro@212.83.144.58)
2021-03-16 12:24:52 +0100jrqc(~rofl@96.78.87.197) (Ping timeout: 276 seconds)
2021-03-16 12:25:00 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-03-16 12:25:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-16 12:25:48 +0100aarvar(~foewfoiew@2607:fb90:f33:157e:1175:1d12:3f7a:f4b9)
2021-03-16 12:28:16 +0100jrqc(~rofl@96.78.87.197)
2021-03-16 12:28:40 +0100Alleria__(~textual@zrcout.mskcc.org)
2021-03-16 12:28:59 +0100curiousgay(~gay@178.217.208.8)
2021-03-16 12:29:46 +0100hpc_hpc
2021-03-16 12:29:50 +0100 <kuribas> pjb: not everyone is a genius like you
2021-03-16 12:30:54 +0100 <curiousgay> kuribas: well, I'll need to think of useage of (>>=) outside of (>>) :) (someone playing with electricity in my town)
2021-03-16 12:31:23 +0100bahamas(~lucian@unaffiliated/bahamas) (Ping timeout: 260 seconds)
2021-03-16 12:31:46 +0100 <kuribas> curiousgay: I can recommen cis194: https://www.seas.upenn.edu/~cis194/fall16/
2021-03-16 12:36:06 +0100 <curiousgay> kuribas: ah, right, it binds to a variable, thanks
2021-03-16 12:38:40 +0100geekosaur(ac3a3b4d@172.58.59.77)
2021-03-16 12:45:03 +0100toughLuck(~Seo@84-112-54-174.cable.dynamic.surfer.at)
2021-03-16 12:46:03 +0100hvr_(~hvr@haskell/developer/hvr) (Remote host closed the connection)
2021-03-16 12:46:44 +0100hvr(~hvr@haskell/developer/hvr)
2021-03-16 12:46:53 +0100toughLuck(~Seo@84-112-54-174.cable.dynamic.surfer.at) (Client Quit)
2021-03-16 12:47:14 +0100toughLuck(~Seo@84-112-54-174.cable.dynamic.surfer.at)
2021-03-16 12:47:20 +0100tougherLuck(~Seo@84-112-54-174.cable.dynamic.surfer.at)
2021-03-16 12:48:11 +0100sm2n_sm2n
2021-03-16 12:48:25 +0100toughLuck(~Seo@84-112-54-174.cable.dynamic.surfer.at) (Client Quit)
2021-03-16 12:48:25 +0100tougherLuck(~Seo@84-112-54-174.cable.dynamic.surfer.at) (Client Quit)
2021-03-16 12:48:45 +0100toughLuck(~Seo@84-112-54-174.cable.dynamic.surfer.at)
2021-03-16 12:48:51 +0100toughLuck(~Seo@84-112-54-174.cable.dynamic.surfer.at) (Client Quit)
2021-03-16 12:49:17 +0100idhugo_(~idhugo@87-49-147-45-mobile.dk.customer.tdc.net)
2021-03-16 12:49:28 +0100 <pjb> kuribas: I wasn't special, this was the program for all pupils in 1968-1974 in France…
2021-03-16 12:49:54 +0100 <pjb> kuribas: so you can realize how low the education system has fallen since then!
2021-03-16 12:50:17 +0100 <pjb> thanks for the cis194 link!
2021-03-16 12:50:43 +0100nhs_(~nhs@70.113.67.118)
2021-03-16 12:51:35 +0100bahamas(~lucian@unaffiliated/bahamas)
2021-03-16 12:51:36 +0100 <dminuoso> :t traverseA
2021-03-16 12:51:38 +0100 <lambdabot> error:
2021-03-16 12:51:38 +0100 <lambdabot> • Variable not in scope: traverseA
2021-03-16 12:51:38 +0100 <lambdabot> • Perhaps you meant one of these:
2021-03-16 12:51:50 +0100Kaiepi(~Kaiepi@47.54.252.148)
2021-03-16 12:51:55 +0100 <kuribas> dminuoso: traverse?
2021-03-16 12:51:59 +0100 <kuribas> :t traverse
2021-03-16 12:52:00 +0100 <lambdabot> (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
2021-03-16 12:52:07 +0100 <Uniaika> :t sequenceA
2021-03-16 12:52:08 +0100 <lambdabot> (Traversable t, Applicative f) => t (f a) -> f (t a)
2021-03-16 12:52:08 +0100idhugo__(~idhugo@80-62-116-180-mobile.dk.customer.tdc.net) (Ping timeout: 256 seconds)
2021-03-16 12:52:15 +0100LKoen(~LKoen@194.250.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2021-03-16 12:52:20 +0100 <mouseghost> pjb, "we dont need no category theory to buy apples at the store"
2021-03-16 12:52:24 +0100 <hpc> pjb: sounds nice, i definitely would have liked to have built an intuition for fields in school
2021-03-16 12:52:41 +0100cr4zsci(b07a57f1@176.122.87.241)
2021-03-16 12:53:02 +0100 <kuribas> pjb: teaching sets in a playful way is different from teaching arithmetic using abstract algebra...
2021-03-16 12:53:10 +0100 <cr4zsci> good day
2021-03-16 12:53:31 +0100nhs(~nhs@cpe-70-113-67-118.austin.res.rr.com) (Ping timeout: 265 seconds)
2021-03-16 12:53:32 +0100 <pjb> kuribas: of course, but it gives a good basis in kinder garden, to teach more abstract things later.
2021-03-16 12:53:45 +0100 <cr4zsci> can I ask newbies here?
2021-03-16 12:53:48 +0100Major_Biscuit(~Major_Bis@wlan-145-94-219-47.wlan.tudelft.nl)
2021-03-16 12:54:04 +0100 <dminuoso> Uniaika: ah yeah that
2021-03-16 12:54:06 +0100 <hpc> @where asktoask
2021-03-16 12:54:06 +0100 <lambdabot> I know nothing about asktoask.
2021-03-16 12:54:09 +0100 <hpc> blah
2021-03-16 12:54:09 +0100 <dminuoso> Uniaika: Im just annoyed that
2021-03-16 12:54:11 +0100 <dminuoso> % :t sequenceA
2021-03-16 12:54:11 +0100 <yahb> dminuoso: (Traversable t, Applicative f) => t (f a) -> f (t a)
2021-03-16 12:54:13 +0100psygate(~psygate@unaffiliated/psygate)
2021-03-16 12:54:14 +0100 <hpc> cr4zsci: don't ask to ask, just ask ;)
2021-03-16 12:54:16 +0100 <dminuoso> % :t replicateM
2021-03-16 12:54:16 +0100 <yahb> dminuoso: Applicative m => Int -> m a -> m [a]
2021-03-16 12:54:21 +0100 <dminuoso> This is so inconsistent.
2021-03-16 12:55:03 +0100 <pjb> kuribas: the main complain of pupils and students, is to understand how abstrations are useful and can be applied to real situations. This is why it's important to teach concrete things first ("bathtub problems", but it can also be concrete programming problems ;-) ), and then later teach the theory.
2021-03-16 12:55:25 +0100 <kuribas> pjb: exactly my point :)
2021-03-16 12:57:41 +0100 <hpc> i see it the other way, earlier math classes are so specific/concrete for so long that you don't even realize what math is until you're in college
2021-03-16 12:57:45 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-03-16 12:57:46 +0100toorevitimirp(~tooreviti@117.182.182.40) (Remote host closed the connection)
2021-03-16 12:59:31 +0100psygate(~psygate@unaffiliated/psygate) (Quit: Leaving)
2021-03-16 12:59:55 +0100psygate(~psygate@unaffiliated/psygate)
2021-03-16 13:00:13 +0100 <kuribas> hpc: you don't need to exclude abstract stuff, just teach it after the specifics are known.
2021-03-16 13:00:48 +0100 <merijn> kuribas: I'm reminded of the usual "teaching math" quote I bust out wrt Haskell
2021-03-16 13:00:49 +0100 <cr4zsci> f :: (Ord a, Num b) => a -> b -> a    f 1 2 :: (Ord a, Num a) => a    How does the compiler determine that a must be a type that implements both Ord and Num?
2021-03-16 13:01:22 +0100 <hpc> i would like to have at least seen it interleaved
2021-03-16 13:01:32 +0100 <merijn> "Suppose that you want to teach the 'cat' concept to a very young child. Do you explain that a cat is a relatively small, primarily carnivorous mammal with retractible claws, a distinctive sonic output, etc.? I'll bet not. You probably show the kid a lot of different cats, saying 'kitty' each time, until it gets the idea. To put it more generally, generalizations are best made by abstraction from
2021-03-16 13:01:38 +0100 <cr4zsci> * :t f 1 2 :: (Ord a, Num a) => a
2021-03-16 13:01:38 +0100 <merijn> experience."
2021-03-16 13:01:41 +0100 <merijn> - R. P. Boas (Can we make mathematics intelligible?, American Mathematical Monthly 88 (1981), pp. 727-731)
2021-03-16 13:01:49 +0100 <hpc> i had to explain to a coworker that "you know math, you just don't realize it"
2021-03-16 13:02:11 +0100 <hpc> he didn't realize that real algebra and boolean algebra are the same thing
2021-03-16 13:02:42 +0100 <merijn> cr4zsci: That depends on what 'f' is
2021-03-16 13:03:23 +0100hackagedyre 0.9.1 - Dynamic reconfiguration in Haskell https://hackage.haskell.org/package/dyre-0.9.1 (frasertweedale)
2021-03-16 13:03:31 +0100cur8or(~cur8or@72canterbury.cybersmart.co.za)
2021-03-16 13:03:32 +0100 <merijn> cr4zsci: Ah, wait
2021-03-16 13:03:44 +0100 <kuribas> cr4zsci: the type inference algorithm infers the constraints from the context.
2021-03-16 13:03:51 +0100 <merijn> cr4zsci: Are you asking why 'a' has to be Ord and Num, despite the type of 'f' only requiring Ord?
2021-03-16 13:04:14 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
2021-03-16 13:04:28 +0100 <cr4zsci> Yes
2021-03-16 13:04:36 +0100 <merijn> cr4zsci: That's fairly straightforward
2021-03-16 13:04:36 +0100coot(~coot@37.30.58.223.nat.umts.dynamic.t-mobile.pl)
2021-03-16 13:04:37 +0100 <merijn> :t 1
2021-03-16 13:04:39 +0100 <lambdabot> Num p => p
2021-03-16 13:04:55 +0100 <merijn> cr4zsci: Numeric literals are polymorphic (i.e. can be any type that is an instance of Num)
2021-03-16 13:05:00 +0100 <merijn> > 1 :: Int
2021-03-16 13:05:03 +0100 <lambdabot> 1
2021-03-16 13:05:03 +0100 <merijn> > 1 :: Double
2021-03-16 13:05:06 +0100 <lambdabot> 1.0
2021-03-16 13:05:06 +0100 <merijn> > 1 :: Rational
2021-03-16 13:05:09 +0100 <lambdabot> 1 % 1
2021-03-16 13:05:40 +0100 <merijn> cr4zsci: So the compiler knows: 1) first argument of 'f' must be an instance of Ord, and 2) 1 must be an instance of Num
2021-03-16 13:06:15 +0100 <merijn> So, if 1 is the first argument to 'f', we can conclude that whatever 'a' is, it *must* be both an instance of Ord (because of 'f') and Num (because of 1)
2021-03-16 13:07:30 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2021-03-16 13:07:52 +0100 <merijn> cr4zsci: if you do ":t f 'c' 2" you'd just get back Char (because 'c' is not polymorphic, but type Char)
2021-03-16 13:08:02 +0100geekosaur(ac3a3b4d@172.58.59.77) (Ping timeout: 240 seconds)
2021-03-16 13:08:03 +0100 <cr4zsci> I understood! Many thanks
2021-03-16 13:08:11 +0100 <olligobber> > 1 :: Sum Int
2021-03-16 13:08:13 +0100 <lambdabot> Sum {getSum = 1}
2021-03-16 13:11:16 +0100peanut_(~peanut@2a02:8388:a101:2600:2ba8:dc0d:2e25:a003)
2021-03-16 13:12:18 +0100 <curiousgay> I wonder if it makes any sense if type classes were called type sets where in inheritance parents are subsets (as opposed to superclass) and children are supersets (as opposed to subclass)
2021-03-16 13:12:51 +0100 <olligobber> isn't there already a thing called type sets
2021-03-16 13:12:55 +0100 <cr4zsci> type is taken from parameter and most generic type from argument
2021-03-16 13:12:59 +0100 <olligobber> like, sets of types
2021-03-16 13:14:10 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2021-03-16 13:15:09 +0100 <olligobber> https://hackage.haskell.org/package/type-level-sets-0.8.9.0/docs/Data-Type-Set.html
2021-03-16 13:15:41 +0100urodna(~urodna@unaffiliated/urodna)
2021-03-16 13:15:50 +0100bitmagie(~Thunderbi@200116b806998b0058b04fa04645b802.dip.versatel-1u1.de) (Quit: bitmagie)
2021-03-16 13:16:11 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-03-16 13:17:09 +0100ukari(~ukari@unaffiliated/ukari)
2021-03-16 13:18:13 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
2021-03-16 13:18:48 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 245 seconds)
2021-03-16 13:18:59 +0100 <curiousgay> olligobber: that's a container called Set
2021-03-16 13:19:16 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4)
2021-03-16 13:19:28 +0100 <merijn> curiousgay: Set is a common name for what we in Haskell call "types" in type theory
2021-03-16 13:19:42 +0100 <merijn> (or was Set for kinds? I forget)
2021-03-16 13:19:55 +0100 <merijn> Anyway, Set is rather ambiguous
2021-03-16 13:20:27 +0100 <curiousgay> merijn: so in type theory a type class can be considered a set class?
2021-03-16 13:20:59 +0100molehillish(~molehilli@ip98-167-226-26.ph.ph.cox.net)
2021-03-16 13:21:24 +0100 <merijn> I don't think anyone would recognise/understand that term
2021-03-16 13:21:38 +0100aarvar(~foewfoiew@2607:fb90:f33:157e:1175:1d12:3f7a:f4b9) (Ping timeout: 264 seconds)
2021-03-16 13:21:55 +0100 <merijn> So..."no"?
2021-03-16 13:23:22 +0100 <curiousgay> hm, set is actually a mathetical term for types, where function takes a value in set A and produces a value in set B
2021-03-16 13:24:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4) (Ping timeout: 264 seconds)
2021-03-16 13:24:25 +0100 <hpc> sort of
2021-03-16 13:24:38 +0100 <hpc> something like natural numbers is a set, but then there's also power sets and other weird things
2021-03-16 13:26:29 +0100codygman`(~user@47.186.207.161)
2021-03-16 13:26:35 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2021-03-16 13:26:51 +0100zebrag(~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr)
2021-03-16 13:26:58 +0100 <curiousgay> I thought that "set" instead of "class" would sound more mathematical and less object-oriented
2021-03-16 13:27:18 +0100 <merijn> What makes "class" object oriented?
2021-03-16 13:27:52 +0100 <merijn> Besides bias from people who learned OO first
2021-03-16 13:28:40 +0100Sorna(~Sornaensi@077213203030.dynamic.telenor.dk)
2021-03-16 13:28:46 +0100 <merijn> "class" as word describing "a collection of things matching some common characteristics" is hardly an OO invention
2021-03-16 13:29:13 +0100 <dminuoso> curiousgay: Also, "instance" should have been "member" instead. ;)
2021-03-16 13:29:24 +0100 <dminuoso> `member Functor [] where ...`
2021-03-16 13:29:31 +0100 <ocharles> Is there anyway to force cabal to "keep going" when building a multi-component project? It's weird, if one component fails to build, that'll usually stop cabal, but restarting cabal will try at least one more thing. Constantly re-running cabal gets me to a fixed point where only one thing is failing, but it's annoying to keep having to up-enter
2021-03-16 13:29:35 +0100 <curiousgay> merijn: but that's also a definition of set
2021-03-16 13:29:39 +0100zar(~zar@fw1.ciirc.cvut.cz)
2021-03-16 13:29:45 +0100 <merijn> There's a reason why people use terms like "class" when describing, say, "a class of ships"
2021-03-16 13:29:50 +0100 <Logio> class is also a mathematical term, when considering set-like things that cannot be sets
2021-03-16 13:30:11 +0100Sorny(~Sornaensi@79.142.232.102.static.router4.bolignet.dk)
2021-03-16 13:30:11 +0100 <dminuoso> isnt `type` yet another synonym for `set` too?
2021-03-16 13:30:25 +0100 <curiousgay> it is
2021-03-16 13:30:34 +0100 <Logio> types have different axioms, going to fundamentals
2021-03-16 13:31:04 +0100 <Logio> intuitively they are similar
2021-03-16 13:31:22 +0100 <Uniaika> ocharles: not that I know of :/ But if it's not in the Cabal guide, could you please open a ticket asking to fix this?
2021-03-16 13:31:24 +0100 <Taneb> dminuoso: you can do different things with types and sets! You can't take the intersection of two types, for example
2021-03-16 13:31:28 +0100 <Uniaika> we ought to have more How-Tos
2021-03-16 13:31:28 +0100 <curiousgay> dminuoso: when I was learning OO, "instance" was the variable holding a value of some type
2021-03-16 13:31:38 +0100 <merijn> ocharles: afaik there isn't
2021-03-16 13:31:44 +0100 <dminuoso> Taneb: Sure I can. It's by definition always Void! :P
2021-03-16 13:31:49 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 276 seconds)
2021-03-16 13:31:53 +0100 <ocharles> Uniaika: I don't think there's a how to if it can't be done :) I think I'll raise an issue. Might as well add to the pile of 1000 ;)
2021-03-16 13:32:17 +0100 <ocharles> also, hi!
2021-03-16 13:32:23 +0100 <merijn> ocharles: Per component builds aren't that well sorted out yet, tbh
2021-03-16 13:32:40 +0100Sornaensis(~Sornaensi@79.142.232.102.static.router4.bolignet.dk) (Ping timeout: 265 seconds)
2021-03-16 13:32:48 +0100 <codygman`> Merijn the 'query in progress issue' for postgres with persistent/Data.Pool was because of an imprecise exception we found out: https://github.com/yesodweb/persistent/issues/1199#issuecomment-799803365
2021-03-16 13:33:10 +0100 <curiousgay> Taneb: fair enough :)
2021-03-16 13:33:16 +0100 <Logio> dminuoso: by what definition though?
2021-03-16 13:33:46 +0100Sorna(~Sornaensi@077213203030.dynamic.telenor.dk) (Ping timeout: 276 seconds)
2021-03-16 13:34:14 +0100 <dminuoso> Logio: If I consider a type to be a collection of values, then they dont intersect since each value has a unique type.
2021-03-16 13:34:15 +0100 <merijn> codygman`: Spidey sense...tingling
2021-03-16 13:34:24 +0100 <dminuoso> Though, with polymorphic values, this gets more interesting I suppose.
2021-03-16 13:34:36 +0100 <dminuoso> (Is a polymorphic value an intersection between types?)
2021-03-16 13:35:08 +0100 <Logio> dminuoso: you haven't defined intersection, so you can't say that they do not intersect
2021-03-16 13:35:12 +0100 <dminuoso> I suppose
2021-03-16 13:35:42 +0100cr4zsci(b07a57f1@176.122.87.241) (Quit: Connection closed)
2021-03-16 13:35:48 +0100 <curiousgay> even if intersection between types was possible, it doesn't sound practical at all
2021-03-16 13:35:49 +0100 <dminuoso> I was just implicitly burrowing the set theoretic notion of intersection.
2021-03-16 13:36:04 +0100 <Logio> dminuoso: burrowing indeed :)
2021-03-16 13:36:24 +0100 <Logio> burying definitions is what leads to ambiguity
2021-03-16 13:36:24 +0100 <curiousgay> s/types/types or type classes/
2021-03-16 13:37:33 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 245 seconds)
2021-03-16 13:37:58 +0100 <merijn> codygman`: there's a whole bunch of unsafe foreign imports in in postgresql-libpq, now I'm wondering it that's messing with exceptions
2021-03-16 13:38:04 +0100 <lortabac> I am pretty sure I have seen type systems in which intersection is possible
2021-03-16 13:39:07 +0100 <codygman`> merijn: I was reading that section in Parallel and Concurrent programming and that made me think the same. It doesn't help that running PQ.finish, PQ.cancel, PQ.flush etc all seemingly have no effect when the connection is busy.
2021-03-16 13:40:31 +0100 <merijn> codygman`: unsafe foreign imports make me worried, because I don't trust anyone to be sufficiently paranoid about them :p
2021-03-16 13:40:45 +0100 <codygman`> I will remind you though that I wasn't able to reproduce the same issue with postgresql-simple and Data.Pool... but 1) I might have not made them perfectly equivalent and 2) unsafe foreign import could be it and could be some interaction that only happens between libpq and persistent for... reasons
2021-03-16 13:41:29 +0100 <lortabac> if I remember correctly, there was a type system for Erlang where each type was a sum of possible constructors, so you could have for example the type true+false and the type true+false+maybe
2021-03-16 13:41:30 +0100 <merijn> I mean, it could be a bug in postgresql-simple too :p
2021-03-16 13:41:55 +0100 <codygman`> I also found a use of atomicModifyIORef that didn't have a seq soon after in persistent... but I think that would only affect performance?
2021-03-16 13:42:49 +0100 <merijn> I mean, what if postgresql-simple assumes something is threadsafe, but it isn't?
2021-03-16 13:43:08 +0100geowiesnot_bis(~user@87-89-181-157.abo.bbox.fr)
2021-03-16 13:43:40 +0100 <merijn> codygman`: Or, what if postgres uses thread local storage, meaning operations on a connection should always be from the same thread or...
2021-03-16 13:43:55 +0100geekosaur(82650c7a@130.101.12.122)
2021-03-16 13:44:34 +0100mouseghost(~draco@wikipedia/desperek) (Read error: Connection reset by peer)
2021-03-16 13:44:36 +0100 <codygman`> I did at least try using withAsyncBound for that last problem... There could have been confounding factors though.
2021-03-16 13:44:39 +0100berberman(~berberman@unaffiliated/berberman)
2021-03-16 13:44:42 +0100coot(~coot@37.30.58.223.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-03-16 13:44:51 +0100 <codygman`> This might corroborate your suspicions of postgresql-simple: https://github.com/lpsmith/postgresql-simple/issues/177#issuecomment-229001308
2021-03-16 13:44:57 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds)
2021-03-16 13:45:06 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2021-03-16 13:45:06 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2021-03-16 13:45:06 +0100mouseghost(~draco@wikipedia/desperek)
2021-03-16 13:45:55 +0100 <merijn> codygman`: oh!
2021-03-16 13:46:14 +0100 <merijn> codygman`: I wonder if somewhere deep down that calls a foreign import that's marked as interruptible
2021-03-16 13:46:37 +0100 <merijn> codygman`: Leading the RTS to interrupt it with a signal, causing libpq to report an error
2021-03-16 13:47:21 +0100 <merijn> codygman`: Because timeout shouldn't work on code blocked in a foreign call
2021-03-16 13:47:27 +0100 <merijn> Unless it's marked interruptible
2021-03-16 13:47:48 +0100 <merijn> but, tbh, nobody should be using interruptible, because the state of GHC signal handling is a clusterfuck
2021-03-16 13:48:39 +0100 <codygman`> I just searched postgresql-simple and see no uninterruptible: https://github.com/haskellari/postgresql-simple/search?q=uninterruptible
2021-03-16 13:48:42 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-03-16 13:49:02 +0100 <merijn> interruptible, not uninterruptible :p
2021-03-16 13:49:17 +0100 <codygman`> :D None for that one either
2021-03-16 13:49:18 +0100 <merijn> codygman`: foreign calls are uninterruptible by default
2021-03-16 13:51:48 +0100 <codygman`> Hm it sounds like PG.rollback doesn't block either: https://github.com/lpsmith/postgresql-simple/issues/177#issuecomment-229089849
2021-03-16 13:52:11 +0100 <merijn> Rule 1 of multi-threaded/concurrent programming
2021-03-16 13:52:15 +0100 <merijn> Trust no one
2021-03-16 13:52:29 +0100 <merijn> I don't trust myself, but I *especially* don't trust anyone else
2021-03-16 13:54:36 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2021-03-16 13:54:47 +0100 <codygman`> Is there a way to see if the RTS is sending a signal? Any recommendation to debug that or ideas to chase that theory down?
2021-03-16 13:55:05 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-03-16 13:55:12 +0100 <codygman`> Yeah, I lose trust the more I debug these concurrent issues :)
2021-03-16 13:55:43 +0100ukari(~ukari@unaffiliated/ukari)
2021-03-16 13:56:32 +0100 <codygman`> That mistrust was why I went down to the level of "hold on, is Data.Pool even doing the right thing here" in: https://mail.haskell.org/pipermail/haskell-cafe/2021-March/133613.html
2021-03-16 13:56:33 +0100frozenErebus(~frozenEre@94.128.82.20) (Ping timeout: 246 seconds)
2021-03-16 13:56:33 +0100jespada(~jespada@90.254.243.187) (Ping timeout: 260 seconds)
2021-03-16 13:56:37 +0100maroloccio(~marolocci@pousada3ja.mma.com.br)
2021-03-16 13:57:04 +0100 <merijn> codygman`: Seeing if the RTS is sending a signal is fairly easy
2021-03-16 13:57:08 +0100 <codygman`> The response says it seems expected though and I've not yet had time to look at it again.
2021-03-16 13:57:19 +0100 <merijn> codygman`: Just compile with -debug and run inside gdb
2021-03-16 13:58:28 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2021-03-16 13:59:38 +0100esp32_prog(~esp32_pro@185.254.75.51) (Ping timeout: 245 seconds)
2021-03-16 13:59:40 +0100jespada(~jespada@90.254.243.187)
2021-03-16 14:00:20 +0100Deide(~Deide@217.155.19.23)
2021-03-16 14:00:44 +0100Tario(~Tario@201.192.165.173)
2021-03-16 14:01:50 +0100usr25(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-03-16 14:03:57 +0100 <codygman`> Alright, thanks!
2021-03-16 14:04:26 +0100Lycurgus(~niemand@98.4.116.165)
2021-03-16 14:04:35 +0100jonathanx_(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-03-16 14:05:15 +0100frozenErebus(~frozenEre@94.128.82.20)
2021-03-16 14:05:26 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Read error: No route to host)
2021-03-16 14:06:11 +0100 <curiousgay> I wonder if it's necessary to provide "+RTS -N" flags, like it can't figure that out from the amount of CPU cores?
2021-03-16 14:06:33 +0100hexfive(~hexfive@50.35.83.177) (Quit: i must go. my people need me.)
2021-03-16 14:06:46 +0100 <merijn> curiousgay: Because using 1 capability per existing core is far from optimal
2021-03-16 14:06:48 +0100 <codygman`> Yesterday I learned `-N` includes hyperthreads btw and isn't NUMCPU
2021-03-16 14:07:20 +0100 <merijn> On machines with a large number of cores you almost certainly don't want 1 thread per core
2021-03-16 14:07:44 +0100 <curiousgay> merijn: eh? doesn't runtime has M:N strategy?
2021-03-16 14:07:47 +0100niko(~niko@freenode/staff/ubuntu.member.niko) ()
2021-03-16 14:08:09 +0100 <curiousgay> s/has/have/
2021-03-16 14:08:10 +0100 <merijn> Additionally, it's very likely that a program isn't, you know, the only thing running on a machine, so you don't wanna claim all cores
2021-03-16 14:08:24 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan) (Remote host closed the connection)
2021-03-16 14:08:31 +0100 <merijn> curiousgay: It does, but I don't see how that relates to your question?
2021-03-16 14:08:48 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan)
2021-03-16 14:09:12 +0100 <curiousgay> merijn: because I don't understand why it can't create threads without "+RTS -N" flags?
2021-03-16 14:09:36 +0100 <merijn> curiousgay: -N says you want 1 OS thread per core to run stuff on
2021-03-16 14:09:53 +0100 <merijn> curiousgay: Haskell threads don't need any commandline arguments
2021-03-16 14:09:57 +0100SornySornaensis
2021-03-16 14:10:20 +0100 <merijn> curiousgay: forkIO will create new threads, regardless of how many OS threads you're specifying with -N
2021-03-16 14:10:23 +0100 <curiousgay> then I don't understand why those command line arguments are even mentioned in tutorials
2021-03-16 14:10:47 +0100 <merijn> curiousgay: Because lots of clueless people also write tutorials and there's no way to stop them
2021-03-16 14:11:01 +0100 <merijn> See: 90% of all writing on programming online
2021-03-16 14:11:08 +0100Rudd0^(~Rudd0@185.189.115.103) (Ping timeout: 260 seconds)
2021-03-16 14:11:38 +0100maroloccio(~marolocci@pousada3ja.mma.com.br) (Read error: Connection reset by peer)
2021-03-16 14:11:42 +0100 <siraben> Which tutorial is this?
2021-03-16 14:12:00 +0100 <curiousgay> merijn: well, such kinds of people could be not mentioned on https://www.haskell.org/documentation/
2021-03-16 14:12:15 +0100 <merijn> curiousgay: In GHC parlance "a capability" is "an OS thread that's running Haskell code" (the RTS may use some more OS threads for, say, running an epoll event loop, foreign calls, etc.), -N controls the number of capabilities the RTS creates
2021-03-16 14:12:53 +0100 <merijn> curiousgay: This can also be controlled from code at runtime, via setNumCapabilities
2021-03-16 14:13:15 +0100 <curiousgay> siraben: "What I Wish I Knew When Learning Haskell" book and "Haskell in 5 steps" on Haskell wiki
2021-03-16 14:13:15 +0100Lycurgus(~niemand@98.4.116.165) ("Deus Ex")
2021-03-16 14:13:17 +0100maroloccio(~marolocci@pousada3ja.mma.com.br)
2021-03-16 14:13:18 +0100ADG1089__(~aditya@106.214.253.186)
2021-03-16 14:13:20 +0100caroakhesacaro
2021-03-16 14:13:36 +0100 <merijn> curiousgay: The number of *Haskell* threads concurrently on the capabilities is always unbounded (well, it's bounded by machine resources)
2021-03-16 14:14:15 +0100 <siraben> oof WIWIKWLH has a lot of incorrect info
2021-03-16 14:14:25 +0100 <merijn> siraben: It doesn't actually mention -N
2021-03-16 14:14:30 +0100 <curiousgay> thanks
2021-03-16 14:14:31 +0100 <merijn> siraben: Only -N with an actual number
2021-03-16 14:14:37 +0100zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2021-03-16 14:14:47 +0100 <merijn> siraben: At least, according to a quick search
2021-03-16 14:15:10 +0100 <geekosaur> -N without a number is relatively new
2021-03-16 14:15:25 +0100 <curiousgay> merijn: it does at page 296
2021-03-16 14:16:03 +0100 <merijn> I'm not sure what "page 296" is on an unnumbered website
2021-03-16 14:16:23 +0100zaquest(~notzaques@5.128.210.178)
2021-03-16 14:16:52 +0100 <curiousgay> you need to get it from there as PDF file
2021-03-16 14:17:05 +0100 <curiousgay> click "Screen PDF"
2021-03-16 14:17:12 +0100DirefulSalt(~DirefulSa@109.201.152.181) (Remote host closed the connection)
2021-03-16 14:17:27 +0100 <merijn> The PDF doesn't mention -N without a number either
2021-03-16 14:17:40 +0100DirefulSalt(~DirefulSa@109.201.152.168)
2021-03-16 14:17:52 +0100 <merijn> http://dev.stephendiehl.com/hask/tutorial.pdf
2021-03-16 14:18:04 +0100 <curiousgay> I know, I didn't mean to use -N without a number
2021-03-16 14:18:28 +0100 <merijn> -N8 or -N4 are perfectly fine, though
2021-03-16 14:18:32 +0100 <curiousgay> just didn't want to insert random number
2021-03-16 14:18:49 +0100 <merijn> "Additionally the program itself can be specified to take runtime options with -rtsopts such as the number of cores to"
2021-03-16 14:18:52 +0100 <merijn> use.
2021-03-16 14:18:56 +0100 <merijn> I mean, that's not incorrect
2021-03-16 14:19:14 +0100Benzi-Junior(~BenziJuni@dsl-149-67-143.hive.is) (Ping timeout: 264 seconds)
2021-03-16 14:19:17 +0100 <merijn> Without -N it will default to 1 capability = 1 OS thread running Haskell code = using only 1 core
2021-03-16 14:19:42 +0100 <merijn> It even goes into that later
2021-03-16 14:20:11 +0100maroloccio(~marolocci@pousada3ja.mma.com.br) (Quit: WeeChat 2.3)
2021-03-16 14:20:27 +0100LKoen(~LKoen@194.250.88.92.rev.sfr.net)
2021-03-16 14:20:34 +0100alx741(~alx741@181.196.68.64)
2021-03-16 14:20:41 +0100 <curiousgay> if it goes later to that it's impossible to notice by someone who wants to see examples of concurrent code :)
2021-03-16 14:20:46 +0100 <merijn> curiousgay: It doesn't say you can't create threads without -N. It's just saying they won't run on multiple cores
2021-03-16 14:20:55 +0100 <merijn> Which is true
2021-03-16 14:21:09 +0100 <merijn> curiousgay: "later" as in "the very next page"
2021-03-16 14:21:20 +0100 <curiousgay> ah
2021-03-16 14:23:06 +0100 <curiousgay> well, 1 OS thread is definetely not the behavior I want, but I'd like it to automatically figure out how many OS threads need to be created just like Go runtime does that
2021-03-16 14:27:25 +0100 <yushyin> curiousgay: 'Omitting ⟨x⟩, i.e. +RTS -N -RTS, lets the runtime choose the value of ⟨x⟩ itself based on how many processors are in your machine.' https://ghc.gitlab.haskell.org/ghc/doc/users_guide/using-concurrent.html#rts-flag--N
2021-03-16 14:27:26 +0100molehillish(~molehilli@ip98-167-226-26.ph.ph.cox.net) (Remote host closed the connection)
2021-03-16 14:28:27 +0100 <yushyin> also 'Omitting -N⟨x⟩ entirely means -N1'
2021-03-16 14:28:56 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
2021-03-16 14:29:24 +0100thc202(~thc202@unaffiliated/thc202)
2021-03-16 14:30:21 +0100bahamas(~lucian@unaffiliated/bahamas) (Quit: leaving)
2021-03-16 14:30:22 +0100geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-03-16 14:30:27 +0100Kmos(~Kmos@217.146.82.202) (Remote host closed the connection)
2021-03-16 14:31:23 +0100son0p(~son0p@181.58.39.182) (Quit: leaving)
2021-03-16 14:31:46 +0100 <curiousgay> yushyin: I mean the behavior without "+RTS" and flags following it, but I guess I simply have to create a 2-line shell script because there is nothing I can do about decisions behind GHC
2021-03-16 14:32:27 +0100hiroaki1(~hiroaki@2a02:8108:8c40:2bb8:45f7:66d:ca9:84) (Ping timeout: 272 seconds)
2021-03-16 14:32:40 +0100 <yushyin> there is a reason we use build tools like cabal
2021-03-16 14:33:15 +0100hiroaki1(~hiroaki@2a02:8108:8c40:2bb8:7b72:cc15:1305:937f)
2021-03-16 14:33:34 +0100lkurusa(~lkurusa@fedora/Levex) (Ping timeout: 276 seconds)
2021-03-16 14:34:06 +0100 <curiousgay> you mean cabal and stack build binaries in a way "+RTS" opts are not needed for multiple OS threads?
2021-03-16 14:34:06 +0100 <yushyin> curiousgay: maybe you are missing, that you can set rtsopts at compile time?
2021-03-16 14:34:49 +0100 <yushyin> curiousgay: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/phases.html#ghc-flag--with-rtsopts=%E2%9F%A8opt…
2021-03-16 14:34:53 +0100Otoo(590cde70@dynamic-089-012-222-112.89.12.pool.telefonica.de)
2021-03-16 14:35:05 +0100 <merijn> curiousgay: "automatically figuring out how many OS threads need to be created" is an unsolved problem
2021-03-16 14:35:29 +0100 <Otoo> Hello
2021-03-16 14:35:34 +0100 <Otoo> crap I spelt my name wrong
2021-03-16 14:35:57 +0100 <curiousgay> yushyin: thanks :)
2021-03-16 14:36:11 +0100Otoo(590cde70@dynamic-089-012-222-112.89.12.pool.telefonica.de) (Client Quit)
2021-03-16 14:37:43 +0100rj_(~x@gateway/tor-sasl/rj)
2021-03-16 14:37:51 +0100coot(~coot@37.30.58.223.nat.umts.dynamic.t-mobile.pl)
2021-03-16 14:38:23 +0100 <curiousgay> merijn: I guess "what do other projects (like Go) do?" doesn't provide contructive answer
2021-03-16 14:38:45 +0100hexreel(~hr@2600:1700:28e2:14d0:cef:c525:4834:4938)
2021-03-16 14:38:47 +0100 <merijn> curiousgay: "whatever works as default for Google"
2021-03-16 14:38:56 +0100hexreel(~hr@2600:1700:28e2:14d0:cef:c525:4834:4938) ()
2021-03-16 14:39:16 +0100 <merijn> curiousgay: I mean, you can hard code something like max(8, num_cores-1) or something and use that
2021-03-16 14:39:42 +0100 <merijn> curiousgay: But there isn't really a good way to determine "a good number of OS threads for a problem" automatically
2021-03-16 14:42:38 +0100cur8or(~cur8or@72canterbury.cybersmart.co.za) (Ping timeout: 256 seconds)
2021-03-16 14:43:47 +0100geekosaur(82650c7a@130.101.12.122)
2021-03-16 14:46:38 +0100rj_(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-03-16 14:50:07 +0100rj_(~x@gateway/tor-sasl/rj)
2021-03-16 14:50:09 +0100molehillish(~molehilli@ip98-167-226-26.ph.ph.cox.net)
2021-03-16 14:50:35 +0100jonathanx_(~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-03-16 14:52:23 +0100sajith_sajith
2021-03-16 14:52:25 +0100molehillish(~molehilli@ip98-167-226-26.ph.ph.cox.net) (Remote host closed the connection)
2021-03-16 14:52:26 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-03-16 14:53:40 +0100molehillish(~molehilli@2600:8800:8d06:1800:6cd8:b958:caec:b1dc)
2021-03-16 14:53:46 +0100tinhatcat(~tsranso@108-91-101-161.lightspeed.gnvlsc.sbcglobal.net)
2021-03-16 14:54:22 +0100Jd007(~Jd007@162.156.11.151)
2021-03-16 14:55:42 +0100tinhatcat(~tsranso@108-91-101-161.lightspeed.gnvlsc.sbcglobal.net) (Client Quit)
2021-03-16 14:56:30 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-03-16 14:57:00 +0100howdoi(uid224@gateway/web/irccloud.com/x-cnfnotqfqspqvzjj)
2021-03-16 14:57:56 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-03-16 14:59:20 +0100emetrusky(561e1a8f@cpc152439-cosh18-2-0-cust142.6-1.cable.virginm.net)
2021-03-16 14:59:37 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2021-03-16 15:00:40 +0100Wuzzy(~Wuzzy@p57a2ecf2.dip0.t-ipconnect.de)
2021-03-16 15:04:34 +0100aldum_(~vishera@aldum.pw) (Quit: leaving)
2021-03-16 15:05:36 +0100aldum(~vishera@aldum.pw)
2021-03-16 15:06:20 +0100 <emetrusky> Write a function:
2021-03-16 15:06:21 +0100 <emetrusky> sumDifference :: Int -> Int -> (Int,Int)
2021-03-16 15:06:21 +0100 <emetrusky> which returns both the sum and the difference between the first and second arguments.
2021-03-16 15:06:22 +0100 <emetrusky> For example, sumDifference 3 7 = (10,-4).
2021-03-16 15:06:22 +0100 <emetrusky> How would i do this?
2021-03-16 15:07:29 +0100LKoen(~LKoen@194.250.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2021-03-16 15:09:20 +0100 <dminuoso> What have you tried?
2021-03-16 15:09:30 +0100 <kuribas> :t (+) &&& (-)
2021-03-16 15:09:32 +0100 <lambdabot> Num b => b -> (b -> b, b -> b)
2021-03-16 15:09:47 +0100 <emetrusky> sumDifference :: Int -> Int -> (Int,Int)
2021-03-16 15:09:47 +0100 <emetrusky> sumDifference x y
2021-03-16 15:09:48 +0100 <emetrusky> sumDifference x + y | x - y = (x,y)
2021-03-16 15:10:25 +0100 <dminuoso> Mmm. That syntax looks weirdly wrong.
2021-03-16 15:10:34 +0100 <dminuoso> Can you, with your own words, explain what you think that code even means?
2021-03-16 15:10:46 +0100pehjota(~pehjota@217.146.82.202)
2021-03-16 15:11:19 +0100 <emetrusky> so it takes in two numbers and then adds them up and then will do the difference between them and spit out the results in a list
2021-03-16 15:11:45 +0100 <dminuoso> Really curious about how you envision your code does that.
2021-03-16 15:11:48 +0100 <kuribas> :t curry $ (,) <$> uncurry (+) <*> uncurry (-)
2021-03-16 15:11:50 +0100 <lambdabot> Num a => a -> a -> (a, a)
2021-03-16 15:12:09 +0100 <dminuoso> emetrusky: Other than "that definition is not even remotely valid haskell" Im not sure what to tell you.
2021-03-16 15:12:33 +0100 <dminuoso> emetrusky: Let me give you a starting point. Start the definition as follows:
2021-03-16 15:12:41 +0100 <dminuoso> sumDifference x y = ...
2021-03-16 15:12:47 +0100 <dminuoso> Where `...` is some expression
2021-03-16 15:12:47 +0100 <dolio> Also, what text have you been following?
2021-03-16 15:12:58 +0100 <kuribas> emetrusky: why do you even have a guard?
2021-03-16 15:13:16 +0100 <dminuoso> kuribas: Its not a guard, it's something they believe does something that doesnt work like that in Haskell
2021-03-16 15:13:26 +0100 <dminuoso> Perhaps transferring some code style from some other cryptic programming language
2021-03-16 15:13:28 +0100 <kuribas> > (curry $ (,) <$> uncurry (+) <*> uncurry (-)) 3 7
2021-03-16 15:13:31 +0100 <lambdabot> (10,-4)
2021-03-16 15:14:05 +0100 <emetrusky> ye so i give in two number like 3  and 7 and gives out (10,-4) as a tuple
2021-03-16 15:15:12 +0100 <dminuoso> Oh I understand what the intended result it.
2021-03-16 15:16:08 +0100 <dolio> The only thing I can think of is that this is somehow borrowed from Agda, but that seems impossible. :)
2021-03-16 15:16:26 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
2021-03-16 15:16:44 +0100 <tomsmeding> dolio: it kind of looks like that, but also not
2021-03-16 15:17:09 +0100 <kuribas> emetrusky: for example, you cannot have a declaration without '=' (disregarding template haskell), like your first clause.
2021-03-16 15:17:22 +0100geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-03-16 15:17:35 +0100peanut_(~peanut@2a02:8388:a101:2600:2ba8:dc0d:2e25:a003) (Quit: Leaving)
2021-03-16 15:18:52 +0100coot(~coot@37.30.58.223.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-03-16 15:19:19 +0100 <emetrusky> sumDifference :: Int -> Int -> (Int,Int)
2021-03-16 15:19:19 +0100 <emetrusky> sumDifference x y = let sum = x + y | let difference = x - y = (sum,difference)
2021-03-16 15:19:20 +0100 <emetrusky> so i got this far but it says parse error on '|'
2021-03-16 15:20:32 +0100 <tomsmeding> emetrusky: what tells you that '|' should be valid?
2021-03-16 15:20:39 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4)
2021-03-16 15:20:44 +0100kam1(~kam1@83.123.167.219)
2021-03-16 15:21:06 +0100 <emetrusky> idk thought that would act like a guard
2021-03-16 15:21:09 +0100kam1(~kam1@83.123.167.219) (Read error: Connection reset by peer)
2021-03-16 15:21:16 +0100 <tomsmeding> why do you think you need guards here?
2021-03-16 15:21:20 +0100 <tomsmeding> (you don't :) )
2021-03-16 15:22:28 +0100 <emetrusky> sumDifference :: Int -> Int -> (Int,Int)
2021-03-16 15:22:29 +0100 <emetrusky> sumDifference x y = (x+y,x-y)
2021-03-16 15:22:31 +0100 <emetrusky> got it
2021-03-16 15:22:43 +0100 <tomsmeding> indeed, that should work well
2021-03-16 15:22:44 +0100mouseghost(~draco@wikipedia/desperek)
2021-03-16 15:23:03 +0100 <tomsmeding> emetrusky: I (and I suppose others here) would still be curious where you got the idea to try your other variants
2021-03-16 15:23:20 +0100 <tomsmeding> not as a comment to you, but just to satisfy our curiosity
2021-03-16 15:23:33 +0100 <dminuoso> tomsmeding: They are not supposed to be guards.
2021-03-16 15:23:35 +0100 <emetrusky> that there is a long story of what uni used in practice marterial
2021-03-16 15:23:50 +0100 <dminuoso> tomsmeding: Dont interpret them as guards, interpret them as "a wild guess at what a vertical bar could mean in the language"
2021-03-16 15:23:51 +0100 <tomsmeding> different programming language with different syntax?
2021-03-16 15:23:52 +0100 <dminuoso> :p
2021-03-16 15:24:04 +0100 <tomsmeding> dminuoso: they said "thought that would act like a guard" :)
2021-03-16 15:24:17 +0100 <emetrusky> this is my first time doing functional programming
2021-03-16 15:24:29 +0100 <tomsmeding> welcome :)
2021-03-16 15:24:35 +0100 <emetrusky> its v hard
2021-03-16 15:24:52 +0100 <tomsmeding> but can also be rewarding
2021-03-16 15:24:58 +0100 <tomsmeding> if you like the ideas
2021-03-16 15:25:10 +0100 <tomsmeding> most people here do
2021-03-16 15:25:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4) (Ping timeout: 264 seconds)
2021-03-16 15:25:51 +0100 <dminuoso> tomsmeding: I think they might not understand what a guard even is.
2021-03-16 15:26:00 +0100 <tomsmeding> dminuoso: which is why I was asking :p
2021-03-16 15:26:02 +0100 <dminuoso> Ah
2021-03-16 15:26:07 +0100 <emetrusky> do what is guard lads?
2021-03-16 15:26:16 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-03-16 15:26:20 +0100 <dminuoso> emetrusky: are you familiar with functions in math defined as
2021-03-16 15:26:24 +0100 <emetrusky> yes
2021-03-16 15:27:01 +0100 <dminuoso> f(x) = x | x > 10
2021-03-16 15:27:02 +0100 <dminuoso> 2*x | otherwise
2021-03-16 15:27:04 +0100 <dminuoso> Like this?
2021-03-16 15:27:16 +0100idhugo__(~idhugo@130.225.16.16)
2021-03-16 15:27:25 +0100 <dminuoso> Perhaps in your country it might look a bit different. But this is a step-wise defined function.
2021-03-16 15:27:30 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2021-03-16 15:27:37 +0100 <dminuoso> The pipe plus the thing to the right, that's what we'd call a guard in Haskell
2021-03-16 15:27:51 +0100 <dminuoso> i.e. the `| x > 10` sort of "condition" is what we call a guard
2021-03-16 15:28:05 +0100 <emetrusky> so a guard is like an if statement
2021-03-16 15:28:19 +0100 <dminuoso> It's kind of related, I guess
2021-03-16 15:28:23 +0100 <tomsmeding> Different notation:
2021-03-16 15:28:23 +0100 <tomsmeding> f(x) = / x, x > 10,
2021-03-16 15:28:23 +0100 <tomsmeding> \ 2*x, otherwise
2021-03-16 15:28:33 +0100 <tomsmeding> oh bummer alignment fails
2021-03-16 15:28:46 +0100 <tomsmeding> anyway multiple lines preceded by a large {
2021-03-16 15:29:42 +0100 <dminuoso> emetrusky: In Haskell, however, we place the guard on the left side of the equals sign.
2021-03-16 15:29:46 +0100 <dminuoso> So the Haskell equivalent of the above is:
2021-03-16 15:29:50 +0100 <dminuoso> f x | x > 10 = x
2021-03-16 15:29:52 +0100 <dminuoso> | otherwise = 2 * x
2021-03-16 15:29:57 +0100idhugo_(~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) (Ping timeout: 264 seconds)
2021-03-16 15:30:09 +0100 <tomsmeding> which can also be written using an if-then-else expression as: f x = if x > 10 then x else 2 * x
2021-03-16 15:30:24 +0100 <emetrusky> oh ok thanks very much i think i have got a bit better understanding
2021-03-16 15:30:35 +0100 <dminuoso> So these are sort of separate "branches" a function can take. When the function is applied, each guard is tested from top to bottom, the first definition where the guard evaluates to True in the guard is then taken
2021-03-16 15:30:57 +0100 <ADG1089__> can anyone help with https://github.com/haskell/cabal/issues/7325
2021-03-16 15:31:02 +0100rj_(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-03-16 15:31:06 +0100 <dminuoso> (If you read this carefully, you might notice that this implies that `otherwise` must evaluate to True
2021-03-16 15:31:18 +0100 <dminuoso> And it turns out, we just have this definition in our Prelude `otherwise = True`.
2021-03-16 15:31:32 +0100 <emetrusky> yep understand that
2021-03-16 15:31:55 +0100 <emetrusky> if everything fails then it will go to otherwise as that will be true
2021-03-16 15:32:16 +0100geekosaur(82650c7a@130.101.12.122)
2021-03-16 15:32:26 +0100 <dminuoso> Sure. I was just emphasizing that `otherwise` is, unlike say in math, not a specially defined keyword.
2021-03-16 15:32:29 +0100 <dminuoso> You could have also written this as:
2021-03-16 15:32:42 +0100 <dminuoso> f x | x > 10 = x
2021-03-16 15:32:44 +0100 <dminuoso> | True = 2 * x
2021-03-16 15:33:01 +0100Mrbuck(~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 2.8)
2021-03-16 15:35:49 +0100rj_(~x@gateway/tor-sasl/rj)
2021-03-16 15:36:06 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com) (Ping timeout: 260 seconds)
2021-03-16 15:36:07 +0100 <teddyc> reading through the prelude actually removed a lot of the magic for me. Just seeing how functions like map and filer where not different to what I would implement myself.
2021-03-16 15:36:16 +0100 <teddyc> discovere otherwise=True this way
2021-03-16 15:36:24 +0100 <teddyc> *discovered
2021-03-16 15:37:26 +0100emetrusky(561e1a8f@cpc152439-cosh18-2-0-cust142.6-1.cable.virginm.net) (Quit: Connection closed)
2021-03-16 15:37:26 +0100 <dminuoso> teddyc: Would you also be surprised to learn that `data Bool = True | False`? :)
2021-03-16 15:38:10 +0100epstein(dwsjeid911@gateway/vpn/mullvad/dwsjeid911)
2021-03-16 15:38:12 +0100epstein(dwsjeid911@gateway/vpn/mullvad/dwsjeid911) (K-Lined)
2021-03-16 15:38:24 +0100 <teddyc> i was sort of surprised when I read that, but I dont know why. I always think that things "included" in a language is super complex, when in many cases its not
2021-03-16 15:39:18 +0100roconnor(~roconnor@host-45-58-230-226.dyn.295.ca) (Ping timeout: 256 seconds)
2021-03-16 15:39:23 +0100 <tomsmeding> ADG1089__: I don't have LLVM 9 so I removed -fllvm from the flags, but both the 'cabal install' command and the 'cabal run --enable-profiling' command run ghc using -O2 for me
2021-03-16 15:39:39 +0100 <tomsmeding> though indeed 'cabal install' compiles all executables
2021-03-16 15:39:59 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-03-16 15:40:56 +0100idhugo__(~idhugo@130.225.16.16) (Read error: Connection reset by peer)
2021-03-16 15:41:18 +0100 <dminuoso> teddyc: To be fair, things like Text have some really complicated internals. But, interestingly, even Text is implement in pure Haskell.
2021-03-16 15:41:34 +0100 <dminuoso> Well. pure GHC haskell, since text makes liberal use of highly dangerous internal GHC primitives
2021-03-16 15:41:43 +0100 <merijn> dminuoso: Depends how you define "pure" Haskell ;)
2021-03-16 15:41:53 +0100 <dminuoso> I just corrected myself :)
2021-03-16 15:42:21 +0100 <merijn> teddyc: Well, there's a bunch of rewrite rules for stuff in Prelude for things like list fusion
2021-03-16 15:42:39 +0100 <merijn> teddyc: But that doesn't (well, shouldn't!) affect the behaviour, only performance :p
2021-03-16 15:42:45 +0100idhugo__(~idhugo@80-62-116-180-mobile.dk.customer.tdc.net)
2021-03-16 15:42:57 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-03-16 15:43:19 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-03-16 15:43:25 +0100 <geekosaur> the Report Prelude is probably better for reading to see how Haskell works
2021-03-16 15:43:37 +0100 <teddyc> yeah, most of it is greek to me
2021-03-16 15:43:45 +0100 <geekosaur> ghc's Prelude shows how to make it fast :)
2021-03-16 15:44:02 +0100 <geekosaur> (and overly general, cf. Foldable)
2021-03-16 15:44:20 +0100 <tomsmeding> teddyc: haskell allows unicode in variable names, so you can actually make it greek :)
2021-03-16 15:44:35 +0100 <teddyc> hoho, nice
2021-03-16 15:44:43 +0100 <dminuoso> teddyc: Now imagine, what if even numbers were defined in plain Haskell
2021-03-16 15:44:43 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Read error: Connection reset by peer)
2021-03-16 15:44:50 +0100 <dminuoso> Like `data Nat = Nil | Succ Nat`
2021-03-16 15:45:10 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-03-16 15:45:22 +0100 <tomsmeding> (raising the bar quite a bit on the difference between semantics and performance)
2021-03-16 15:45:44 +0100 <dminuoso> And it turns out, in Idris its done exactly like that (with some tricks to regain performance)
2021-03-16 15:45:52 +0100 <teddyc> hmm interesting
2021-03-16 15:45:55 +0100 <dminuoso> data Nat : Type where Z : Nat; S : Nat -> Nat
2021-03-16 15:46:28 +0100 <curiousgay> merijn: actually how Go manages threads is very complicated, it tries to optimize thread usage per CPU cores and at the same time it increments the amount of OS threads dynamically where you can have thousands of OS threads on 4 core CPU (default limit is 10000), don't ask me what are the conditions to increment the amount of OS threads
2021-03-16 15:47:03 +0100 <dminuoso> Or you could have made lists yourself too. The *only* reason its not a real Haskell definition, is because they use characters not admissable for constructors.
2021-03-16 15:47:25 +0100 <dminuoso> Somewhere in `base` you find `data [] a = a : [a] | []` I think
2021-03-16 15:48:13 +0100 <dminuoso> But `data List a = Nil | Cons a (List a)` is equivalent. In fact, you can even unsafeCoerce between `List a` and `[a]` and it will work mostly. :P
2021-03-16 15:48:17 +0100 <dminuoso> So not even lists are magic
2021-03-16 15:48:18 +0100 <tomsmeding> (in that vein: https://hackage.haskell.org/package/ghc-prim-0.4.0.0/docs/src/GHC-Tuple.html )
2021-03-16 15:48:46 +0100idhugo_(~idhugo@87-49-147-45-mobile.dk.customer.tdc.net)
2021-03-16 15:48:48 +0100sepples_(~sepples@67.205.168.224) (Ping timeout: 245 seconds)
2021-03-16 15:49:12 +0100thc202(~thc202@unaffiliated/thc202)
2021-03-16 15:49:17 +0100 <dminuoso> To me, the ability to just bootstrap efficient data primitives is what makes Haskell an enjoyable language. If you cant even model lists yourself, how are you expected to model more complicated data structures?
2021-03-16 15:49:27 +0100Feuermagier(~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) (Remote host closed the connection)
2021-03-16 15:49:38 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-rdlxtdjjstsfznpl)
2021-03-16 15:51:28 +0100frozenErebus(~frozenEre@94.128.82.20) (Ping timeout: 260 seconds)
2021-03-16 15:51:30 +0100idhugo__(~idhugo@80-62-116-180-mobile.dk.customer.tdc.net) (Ping timeout: 260 seconds)
2021-03-16 15:53:49 +0100puke(~vroom@217.138.252.202) (Read error: Connection reset by peer)
2021-03-16 15:54:39 +0100puke(~vroom@217.138.252.202)
2021-03-16 15:55:36 +0100 <teddyc> Agree, it took me some time to understand that lists are just a simple data structure with fancy syntatic sugar.
2021-03-16 15:56:52 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Read error: Connection reset by peer)
2021-03-16 15:57:06 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-03-16 15:57:07 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
2021-03-16 15:59:24 +0100specdrake(~anurag@103.209.223.76)
2021-03-16 15:59:36 +0100seven_three(~user@2601:18d:c180:4060::2829)
2021-03-16 16:02:18 +0100seven_three(~user@2601:18d:c180:4060::2829) ()
2021-03-16 16:02:22 +0100 <mouseghost> o-o
2021-03-16 16:02:46 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-03-16 16:02:49 +0100LKoen(~LKoen@194.250.88.92.rev.sfr.net)
2021-03-16 16:03:36 +0100conal(~conal@64.71.133.70) (Ping timeout: 246 seconds)
2021-03-16 16:05:00 +0100jlamothe(~jlamothe@198.251.55.207)
2021-03-16 16:06:20 +0100frozenErebus(~frozenEre@94.128.82.20)
2021-03-16 16:06:58 +0100minoru_shiraeesh(~shiraeesh@109.166.59.197)
2021-03-16 16:08:35 +0100jlamothe(~jlamothe@198.251.55.207) (Client Quit)
2021-03-16 16:09:55 +0100plutoniix(~q@node-un3.pool-125-24.dynamic.totinternet.net)
2021-03-16 16:10:42 +0100acidjnk_new(~acidjnk@p200300d0c72b954785b86a8446f85480.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-03-16 16:10:54 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2021-03-16 16:11:59 +0100jespada(~jespada@90.254.243.187) (Quit: Leaving)
2021-03-16 16:12:26 +0100jespada(~jespada@90.254.243.187)
2021-03-16 16:15:26 +0100rj_(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-03-16 16:16:19 +0100carlomagno(~cararell@148.87.23.5)
2021-03-16 16:16:32 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
2021-03-16 16:18:38 +0100LKoen(~LKoen@194.250.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2021-03-16 16:18:53 +0100jhrcek(~jhrcek@ip-89-103-183-101.net.upcbroadband.cz) (Quit: Leaving)
2021-03-16 16:19:15 +0100rj_(~x@gateway/tor-sasl/rj)
2021-03-16 16:19:21 +0100minoru_shiraeesh(~shiraeesh@109.166.59.197) (Ping timeout: 246 seconds)
2021-03-16 16:20:06 +0100conal(~conal@64.71.133.70)
2021-03-16 16:21:22 +0100geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-03-16 16:21:31 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4)
2021-03-16 16:23:01 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-03-16 16:23:09 +0100plutoniix(~q@node-un3.pool-125-24.dynamic.totinternet.net) (Quit: Leaving)
2021-03-16 16:24:16 +0100plutoniix(~q@node-un3.pool-125-24.dynamic.totinternet.net)
2021-03-16 16:26:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4) (Ping timeout: 264 seconds)
2021-03-16 16:26:36 +0100LKoen(~LKoen@194.250.88.92.rev.sfr.net)
2021-03-16 16:27:12 +0100asheshambasta(~user@ptr-e1lysawivss4sgbwwfc.18120a2.ip6.access.telenet.be)
2021-03-16 16:28:27 +0100 <yushyin> curiousgay: same is true for ghc, -N sets the capabilities (virtual cpus) not the number of os threads.
2021-03-16 16:29:34 +0100minoru_shiraeesh(~shiraeesh@109.166.59.197)
2021-03-16 16:29:43 +0100Stanley|00(~stanley00@unaffiliated/stanley00)
2021-03-16 16:30:32 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 265 seconds)
2021-03-16 16:30:51 +0100DataComputist(~lumeng@50.43.26.251) (Quit: Leaving...)
2021-03-16 16:31:07 +0100xff0x(~xff0x@2001:1a81:52ee:e100:698d:4b25:a12b:af32) (Ping timeout: 260 seconds)
2021-03-16 16:31:46 +0100xff0x(~xff0x@2001:1a81:52ee:e100:ed20:88c:e6f5:e319)
2021-03-16 16:31:53 +0100Stanley|00(~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
2021-03-16 16:31:57 +0100z0k(~user@115-186-141-88.nayatel.pk)
2021-03-16 16:32:27 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-03-16 16:34:08 +0100Stanley|00(~stanley00@unaffiliated/stanley00)
2021-03-16 16:34:14 +0100carlomagno1(~cararell@148.87.23.5)
2021-03-16 16:34:28 +0100Stanley|00(~stanley00@unaffiliated/stanley00) (Read error: Connection reset by peer)
2021-03-16 16:34:58 +0100Stanley|00(~stanley00@unaffiliated/stanley00)
2021-03-16 16:35:46 +0100jespada(~jespada@90.254.243.187) (Read error: Connection timed out)
2021-03-16 16:36:19 +0100jlamothe(~jlamothe@198.251.55.207)
2021-03-16 16:36:42 +0100asheshambasta(~user@ptr-e1lysawivss4sgbwwfc.18120a2.ip6.access.telenet.be) (Ping timeout: 258 seconds)
2021-03-16 16:36:56 +0100 <Aquazi> are there good file system libs out there?
2021-03-16 16:37:18 +0100 <Aquazi> I have only found System.Directory which I'm not fond of api-wise
2021-03-16 16:37:42 +0100carlomagno(~cararell@148.87.23.5) (Ping timeout: 260 seconds)
2021-03-16 16:37:49 +0100 <[exa]> Aquazi: well, what API would you like?
2021-03-16 16:38:19 +0100Stanley|00(~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
2021-03-16 16:38:19 +0100 <Aquazi> one that treats errors as first class data rather than having IOErrors
2021-03-16 16:38:22 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 276 seconds)
2021-03-16 16:38:49 +0100 <Aquazi> a Result, or Either type of sensible api rather than this ugliness
2021-03-16 16:38:59 +0100stevenxl(uid133530@gateway/web/irccloud.com/x-ugkyksdwpgkpdwuw)
2021-03-16 16:39:14 +0100geowiesnot_bis(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 265 seconds)
2021-03-16 16:39:22 +0100frozenErebus(~frozenEre@94.128.82.20) (Ping timeout: 256 seconds)
2021-03-16 16:40:09 +0100frozenErebus(~frozenEre@37.231.243.22)
2021-03-16 16:41:02 +0100jespada(~jespada@90.254.243.187)
2021-03-16 16:42:20 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4)
2021-03-16 16:43:47 +0100ep1ctetus(~epictetus@ip72-194-215-136.sb.sd.cox.net)
2021-03-16 16:46:03 +0100 <[exa]> Aquazi: ah so, that may be complicated because the underlying OS functions may actually produce the IO errors
2021-03-16 16:46:08 +0100 <dminuoso> One persons ugliness is another persons blessing.
2021-03-16 16:46:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4) (Ping timeout: 264 seconds)
2021-03-16 16:47:04 +0100ajc(~ajc@69.231.232.79)
2021-03-16 16:47:04 +0100 <Aquazi> blessed with poor error handling experience...?
2021-03-16 16:48:40 +0100 <dminuoso> Try writing Go for a while. Manual error passing can be really cumbersome to work with. :)
2021-03-16 16:51:35 +0100 <Aquazi> i never mentioned error passing? I'm merely saying I wanted to know if there are libraries that have a more explicit encoding of errors and better dx than io/ioerror
2021-03-16 16:51:41 +0100graf_blutwurst(~user@2001:171b:226e:adc0:7d06:8763:7b6a:1565) (Remote host closed the connection)
2021-03-16 16:51:41 +0100 <dminuoso> Also, you rather quickly begin asking for row types if you want to propagate errors upwards.
2021-03-16 16:51:52 +0100 <dminuoso> Hiding them inside IO avoids that
2021-03-16 16:52:04 +0100 <dminuoso> Ah.
2021-03-16 16:52:08 +0100 <Aquazi> that's the point, I want to handle them not hide them
2021-03-16 16:52:21 +0100 <dminuoso> Welcome to the effect system game.
2021-03-16 16:52:22 +0100 <Aquazi> IOError doesn't offer a great dx for that
2021-03-16 16:52:26 +0100 <dminuoso> Well
2021-03-16 16:52:44 +0100 <dminuoso> Strictly speaking we have good ergonomics with exceptions, *if* you use exception hierarchies
2021-03-16 16:53:05 +0100 <dminuoso> In the sense of https://simonmar.github.io/bib/papers/ext-exceptions.pdf
2021-03-16 16:53:15 +0100minoru_shiraeesh(~shiraeesh@109.166.59.197) (Ping timeout: 265 seconds)
2021-03-16 16:53:47 +0100frozenErebus(~frozenEre@37.231.243.22) (Quit: leaving)
2021-03-16 16:53:58 +0100 <dminuoso> But you still have to document possible exceptions outside Haskell. If you want these to reside in the type system, you likely end up in the effect system game.
2021-03-16 16:54:53 +0100hackageboomerang 1.4.7 - Library for invertible parsing and printing https://hackage.haskell.org/package/boomerang-1.4.7 (JeremyShaw)
2021-03-16 16:55:43 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2021-03-16 16:57:30 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-03-16 17:00:02 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
2021-03-16 17:00:03 +0100pineapples[m](pineapples@gateway/shell/matrix.org/x-cruihamqujucfumq) (Quit: Idle for 30+ days)
2021-03-16 17:00:14 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-16 17:00:27 +0100rj_(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-03-16 17:00:33 +0100zar(~zar@fw1.ciirc.cvut.cz) (Quit: Leaving)
2021-03-16 17:01:17 +0100Rudd0(~Rudd0@185.189.115.108)
2021-03-16 17:02:55 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-03-16 17:03:07 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4)
2021-03-16 17:03:43 +0100usr25(~usr25@unaffiliated/usr25)
2021-03-16 17:03:50 +0100rj_(~x@gateway/tor-sasl/rj)
2021-03-16 17:05:26 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds)
2021-03-16 17:05:52 +0100thc202(~thc202@unaffiliated/thc202)
2021-03-16 17:07:18 +0100barnowl_(~barnowl@gateway/tor-sasl/barnowl) (Remote host closed the connection)
2021-03-16 17:07:39 +0100barnowl_(~barnowl@gateway/tor-sasl/barnowl)
2021-03-16 17:07:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4) (Ping timeout: 264 seconds)
2021-03-16 17:08:04 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-03-16 17:09:23 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-luczsnoowjqghapa)
2021-03-16 17:09:30 +0100gitgooodgitgood
2021-03-16 17:09:45 +0100crobbins(~crobbins@2600:1700:48eb:8490:b577:6e36:e383:a1d9)
2021-03-16 17:09:52 +0100 <curiousgay> yushyin: well then default to amount of CPU cores is good enough
2021-03-16 17:13:37 +0100geekosaur(82650c7a@130.101.12.122)
2021-03-16 17:13:47 +0100 <codygman`> Isn't resource finalization in effect systems still an unsolved issue as well? I recall at least a tricky issue on that subject with Eff.
2021-03-16 17:14:53 +0100hackageapi-tools 0.9.0.0 - DSL for generating API boilerplate and docs https://hackage.haskell.org/package/api-tools-0.9.0.0 (AdamGundry)
2021-03-16 17:15:15 +0100molehillish(~molehilli@2600:8800:8d06:1800:6cd8:b958:caec:b1dc) (Remote host closed the connection)
2021-03-16 17:15:36 +0100zopsi_(zopsi@2600:3c00::f03c:91ff:fe14:551f) ("Leaving")
2021-03-16 17:15:50 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-03-16 17:16:15 +0100 <yushyin> curiousgay: and the go runtime does a similar thing 'The GOMAXPROCS variable limits the number of operating system threads that can execute user-level Go code simultaneously.' where the default value is the number of logical CPUs reported by the OS.
2021-03-16 17:16:32 +0100 <yushyin> curiousgay: this is very similar to capabilities, if you ask me.
2021-03-16 17:17:48 +0100Feuermagier(~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6)
2021-03-16 17:17:55 +0100 <curiousgay> yushyin: huh, I've seen discussion between Go developers in 2012 where GOMAXPROCS is the limit to OS threads, defaulted to 10000, because blocking code in CGo caused spawning thousands of OS threads
2021-03-16 17:19:18 +0100Benzi-Junior(~BenziJuni@88-149-67-143.du.xdsl.is)
2021-03-16 17:19:25 +0100 <curiousgay> never mind
2021-03-16 17:19:38 +0100idhugo_(~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) (Ping timeout: 245 seconds)
2021-03-16 17:19:43 +0100zopsi(zopsi@2600:3c00::f03c:91ff:fe14:551f)
2021-03-16 17:20:37 +0100idhugo(~idhugo@87-49-147-45-mobile.dk.customer.tdc.net)
2021-03-16 17:21:00 +0100martin02(silas@hund.fs.lmu.de) (Ping timeout: 265 seconds)
2021-03-16 17:21:12 +0100toorevitimirp(~tooreviti@117.182.180.1)
2021-03-16 17:21:15 +0100 <curiousgay> yushyin: well, the difference is that GOMAXPROCS is an environment variable and doesn't require user to manually pass something like "-rtsopts=-N" to compiler
2021-03-16 17:21:16 +0100 <yushyin> you can still have many many blocking OS threads, GOMAXPROCS is more similar to the virtual CPUs/capabilities
2021-03-16 17:21:52 +0100 <loyon> TIL, you can run the editor in the web browser, pretty awesome: https://godotengine.org/editor/latest/godot.tools.html
2021-03-16 17:22:06 +0100 <yushyin> curiousgay: yes, GOMAXPROCS has a different default, but as I linked you earlier you can set a different default at compile time
2021-03-16 17:22:30 +0100codygman`(~user@47.186.207.161) (Ping timeout: 260 seconds)
2021-03-16 17:22:37 +0100 <yushyin> so no harm done?
2021-03-16 17:22:39 +0100hiredman_hiredman
2021-03-16 17:23:12 +0100 <curiousgay> yeah, I'll need a separate file to not repeat typing the same option again
2021-03-16 17:24:37 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Remote host closed the connection)
2021-03-16 17:24:38 +0100 <curiousgay> because there is no way GHC devs will change their default from "-N1" to "-N"
2021-03-16 17:25:04 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2021-03-16 17:25:31 +0100toorevitimirp(~tooreviti@117.182.180.1) (Remote host closed the connection)
2021-03-16 17:25:37 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-03-16 17:26:28 +0100CoconutCrab(~Cua@unaffiliated/coconutcrab) (Ping timeout: 276 seconds)
2021-03-16 17:27:55 +0100conal(~conal@64.71.133.70)
2021-03-16 17:28:56 +0100ADG1089__(~aditya@106.214.253.186) (Remote host closed the connection)
2021-03-16 17:28:58 +0100 <dolio> The program can be set to use -N when compiling it.
2021-03-16 17:29:09 +0100tanner_(~tanner@216.106.138.184)
2021-03-16 17:29:51 +0100 <merijn> curiousgay: But GHC doesn't need to spawn 1 OS thread per blocking IO thing, so there's no reason to have a limit that high
2021-03-16 17:30:03 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 260 seconds)
2021-03-16 17:30:31 +0100dbmikus(~dbmikus@cpe-76-167-86-219.natsow.res.rr.com)
2021-03-16 17:30:50 +0100 <merijn> curiousgay: GHC's RTS uses an epoll/kqueue/whatever the windows variant is based event loop that blocks/unblocks Haskell threads as needed
2021-03-16 17:32:24 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 265 seconds)
2021-03-16 17:33:02 +0100 <curiousgay> merijn: Go does the same thing, the problem with CGo is that it's basically an FFI problem
2021-03-16 17:33:16 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-03-16 17:33:45 +0100conal(~conal@64.71.133.70)
2021-03-16 17:34:08 +0100molehillish(~molehilli@2600:8800:8d06:1800:6cd8:b958:caec:b1dc)
2021-03-16 17:35:09 +0100 <dolio> Was there an actual observed problem at some point, or is this whole conversation about how GHC doesn't do whatever Go does?
2021-03-16 17:36:04 +0100 <curiousgay> dolio: never mind, it's just me being puzzled about GHC binaries not using more than 1 capability if I don't pass them "-N" flag
2021-03-16 17:36:17 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2021-03-16 17:37:10 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4)
2021-03-16 17:38:18 +0100conal(~conal@64.71.133.70) (Ping timeout: 256 seconds)
2021-03-16 17:41:52 +0100vnz(~vnz@unaffiliated/vnz) (Quit: ZNC - http://znc.in)
2021-03-16 17:42:02 +0100vnz(~vnz@51.15.143.225)
2021-03-16 17:42:02 +0100vnz(~vnz@51.15.143.225) (Changing host)
2021-03-16 17:42:02 +0100vnz(~vnz@unaffiliated/vnz)
2021-03-16 17:42:25 +0100Tristan(~tristan@luna.whatbox.ca)
2021-03-16 17:42:48 +0100bonz060_(~quassel@2001:bc8:47a4:a23::1) (Remote host closed the connection)
2021-03-16 17:42:49 +0100TristanGuest29917
2021-03-16 17:43:11 +0100bonz060(~quassel@2001:bc8:47a4:a23::1)
2021-03-16 17:44:03 +0100Guest41116(~tristan@luna.whatbox.ca) (Read error: Connection reset by peer)
2021-03-16 17:44:37 +0100Guest41046(~melkor@2a02:2b88:2:1::5b34:1) (Ping timeout: 260 seconds)
2021-03-16 17:44:51 +0100rj_(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-03-16 17:44:54 +0100Guest41046(~melkor@31.31.76.126)
2021-03-16 17:46:26 +0100 <yushyin> curiousgay: is it really that of a problem to pass an additional flag at compile time? Maybe the defaults will change in the feature but until then just add the compile-time flag?
2021-03-16 17:48:44 +0100rj_(~x@gateway/tor-sasl/rj)
2021-03-16 17:50:28 +0100nfd(~nfd9001@2601:602:77f:1820:ad30:5ebc:6324:c6c5)
2021-03-16 17:52:06 +0100 <curiousgay> yushyin: already done in shell script: stack ghc -- -threaded -rtsopts -with-rtsopts=-N $@
2021-03-16 17:52:32 +0100 <xsperry> you can also add it in cabal file
2021-03-16 17:52:55 +0100kam1(~kam1@83.123.167.219)
2021-03-16 17:54:31 +0100kam1(~kam1@83.123.167.219) (Read error: Connection reset by peer)
2021-03-16 17:56:36 +0100kam1(~kam1@83.123.167.219)
2021-03-16 17:57:38 +0100Major_Biscuit(~Major_Bis@wlan-145-94-219-47.wlan.tudelft.nl) (Ping timeout: 264 seconds)
2021-03-16 17:59:04 +0100stree(~stree@68.36.8.116) (Quit: Caught exception)
2021-03-16 17:59:31 +0100stree(~stree@68.36.8.116)
2021-03-16 17:59:42 +0100conal(~conal@64.71.133.70)
2021-03-16 18:00:26 +0100 <merijn> -N without disabling parallel GC is a great way to make your code super slow, btw
2021-03-16 18:00:58 +0100conal(~conal@64.71.133.70) (Client Quit)
2021-03-16 18:01:25 +0100heatsink(~heatsink@2600:1700:bef1:5e10:7c0e:3b57:dfb:2cb4) (Remote host closed the connection)
2021-03-16 18:01:59 +0100heatsink(~heatsink@2600:1700:bef1:5e10:f837:3533:97b:1f44)
2021-03-16 18:03:19 +0100 <yushyin> if you really want to you can set -with-rtsopts=-N in a global stack/cabal config file
2021-03-16 18:04:05 +0100polxy(~polxy@2001:b07:a15:ec0c:14d1:ef73:1822:ceed)
2021-03-16 18:05:19 +0100jw4(~jw4@unaffiliated/jw4)
2021-03-16 18:05:52 +0100michalz(~user@185.246.204.47)
2021-03-16 18:06:14 +0100polxy(~polxy@2001:b07:a15:ec0c:14d1:ef73:1822:ceed) (Excess Flood)
2021-03-16 18:06:25 +0100polxy(~polxy@2001:b07:a15:ec0c:14d1:ef73:1822:ceed)
2021-03-16 18:06:27 +0100 <koz_> merijn: What's the flag for turning off parallel GC again?
2021-03-16 18:08:40 +0100 <merijn> -qg
2021-03-16 18:08:49 +0100 <koz_> Thanks!
2021-03-16 18:09:05 +0100 <merijn> or -gq one of the two :p
2021-03-16 18:09:20 +0100 <geekosaur> -qg
2021-03-16 18:09:24 +0100 <curiousgay> parallel GC - slower, but on by default
2021-03-16 18:09:34 +0100 <geekosaur> for the moment
2021-03-16 18:09:50 +0100 <geekosaur> it's getting turned off by default in an upcoming ghc release
2021-03-16 18:10:09 +0100polxy(~polxy@2001:b07:a15:ec0c:14d1:ef73:1822:ceed) (Client Quit)
2021-03-16 18:10:16 +0100 <curiousgay> btw, I was taking a look at haddock's dependencies
2021-03-16 18:10:34 +0100 <curiousgay> it always depends on specific GHC x series
2021-03-16 18:10:38 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2021-03-16 18:10:40 +0100 <merijn> Well, yes
2021-03-16 18:11:09 +0100 <curiousgay> does that mean GHC frequently breaks compatibility?
2021-03-16 18:11:13 +0100 <merijn> It uses GHC to parse code, how could it not
2021-03-16 18:11:17 +0100 <koz_> geekosaur: Is that change gonna get backported?
2021-03-16 18:11:30 +0100 <merijn> curiousgay: Define "compatibility"\
2021-03-16 18:12:50 +0100conal(~conal@64.71.133.70)
2021-03-16 18:13:37 +0100 <curiousgay> merijn: haddock 2.25.0 strictly depends on GHC 9.0.x, so it won't build with GHC 9.1.x, haddock 2.24.x depend on GHC 8.10.x and won't build on any GHC 9
2021-03-16 18:13:38 +0100Lycurgus(~niemand@98.4.116.165)
2021-03-16 18:13:42 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-03-16 18:13:49 +0100 <curiousgay> s/on/with/
2021-03-16 18:13:56 +0100banjiewen__(sid115913@gateway/web/irccloud.com/x-rsmfwpptfrqcdppn) ()
2021-03-16 18:13:59 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2021-03-16 18:14:12 +0100b20n(sid115913@gateway/web/irccloud.com/x-lczkliukjfykdgvl)
2021-03-16 18:14:19 +0100Morrow_(~MorrowM_@147.161.13.246)
2021-03-16 18:14:40 +0100 <merijn> curiousgay: Because haddock uses GHC as library and therefore depends on GHC internals
2021-03-16 18:14:45 +0100Sorna(~Sornaensi@79.142.232.102.static.router4.bolignet.dk)
2021-03-16 18:15:10 +0100Sornaensis(~Sornaensi@79.142.232.102.static.router4.bolignet.dk) (Read error: Connection reset by peer)
2021-03-16 18:15:40 +0100MorrowM(~MorrowM_@147.161.13.246)
2021-03-16 18:15:54 +0100jlamothe(~jlamothe@198.251.55.207) (Ping timeout: 246 seconds)
2021-03-16 18:17:42 +0100 <geekosaur> sorry, I don't know
2021-03-16 18:18:08 +0100marinelli(~marinelli@gateway/tor-sasl/marinelli)
2021-03-16 18:18:31 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-03-16 18:18:51 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-03-16 18:19:11 +0100stree(~stree@68.36.8.116) (Quit: Caught exception)
2021-03-16 18:19:38 +0100stree(~stree@68.36.8.116)
2021-03-16 18:19:44 +0100 <monochrom> haddock comes with GHC anyway. You are not supposed to build haddock yourself. (Apart from building GHC yourself.)
2021-03-16 18:20:09 +0100nhs_(~nhs@70.113.67.118) (Read error: Connection reset by peer)
2021-03-16 18:20:45 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1)
2021-03-16 18:22:51 +0100jlamothe(~jlamothe@198.251.55.207)
2021-03-16 18:23:50 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds)
2021-03-16 18:25:36 +0100Sorny(~Sornaensi@077213203030.dynamic.telenor.dk)
2021-03-16 18:25:52 +0100 <tomsmeding> (which you're also not supposed to do if you're not hacking on GHC)
2021-03-16 18:26:41 +0100 <dolio> I build every version of GHC from source, but I don't hack on it.
2021-03-16 18:26:59 +0100 <tomsmeding> okay sure, and also unless you want it for a specific reason that most people don't have :p
2021-03-16 18:27:38 +0100 <tomsmeding> dolio: for my curiosity, why do you build ghc yourself? Custom optimisation flags?
2021-03-16 18:27:54 +0100 <merijn> masochism :p
2021-03-16 18:28:01 +0100rj_(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-03-16 18:28:03 +0100landonf_landonf
2021-03-16 18:28:19 +0100 <dolio> No, I have many versions of GHC installed in /opt/ghc.
2021-03-16 18:28:40 +0100 <merijn> dolio: That seems unrelated to building GHC from source, though?
2021-03-16 18:28:48 +0100Sorna(~Sornaensi@79.142.232.102.static.router4.bolignet.dk) (Ping timeout: 245 seconds)
2021-03-16 18:28:56 +0100 <dolio> Well, I use the previous version to build the next one.
2021-03-16 18:29:20 +0100 <tomsmeding> to help prevent the Thompson problem?
2021-03-16 18:30:29 +0100rj_(~x@gateway/tor-sasl/rj)
2021-03-16 18:30:31 +0100 <dolio> I guess another reason is that it ensures they're built against the right library versions on my system, although it's uncommon for that to be a problem.
2021-03-16 18:30:42 +0100 <dolio> I think it was a problem around the time I started.
2021-03-16 18:32:17 +0100 <dolio> I needed to use the Fedora-distributed ghc to begin the process, because the ghc homepage one was built on Debian or something, and they disagreed on glibc or something.
2021-03-16 18:32:55 +0100 <monochrom> I did that for a little while, around the time of 7.6. It was the infamous libgmp versioning problem.
2021-03-16 18:33:11 +0100 <dolio> Oh, maybe that's what itw as.
2021-03-16 18:33:43 +0100 <dolio> 7.6 is the earliest version I have, I think.
2021-03-16 18:34:07 +0100electricityZZZZ(~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net)
2021-03-16 18:34:35 +0100Lycurgus(~niemand@98.4.116.165) (Quit: Exeunt)
2021-03-16 18:35:16 +0100 <monochrom> http://www.vex.net/~trebla/haskell/I-built-GHC.xhtml
2021-03-16 18:35:29 +0100 <monochrom> "Give a man a fire, and he is warm for a day. Show him how to build GHC, and he is warm for life."
2021-03-16 18:35:31 +0100 <edwardk> i was staring at https://hackage.haskell.org/package/recover-rtti and wishing i could register custom handlers for my own types. then i realized there might be a way to make an extensible version of that scheme, but its super baroque.
2021-03-16 18:35:47 +0100 <LKoen> are you saying GHC will overheat the computer?
2021-03-16 18:36:56 +0100 <dolio> Anyhow, it doesn't take a significant amount of effort at this point. Just time.
2021-03-16 18:37:03 +0100 <edwardk> haskell doesn't really give me hooks that let me in separate files tell a function it should also consider another case.. but c++ does. i can register a top level definition of a class and have it hook itself on a global list of such objects in its static initializer. libraries that parse command lines, etc. tend to do this in c++ all the time.
2021-03-16 18:37:07 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:17e3:41cc:739d:497d) (Ping timeout: 260 seconds)
2021-03-16 18:37:24 +0100 <edwardk> and we have inline-c-cpp which can use template haskell to spew out a bit of c++ and link it into the program you are writing
2021-03-16 18:38:07 +0100 <dolio> I think the biggest snag I've hit was that I unrelatedly installed some of the dependencies needed to build the docs on the latest version, so GHC thought it should try to build them, but wasn't able to.
2021-03-16 18:38:18 +0100 <edwardk> so in theory one could install a c++-side list of all the handlers you want, then haskell side use a template haskell splice to register a new handler for a new type, and then extend the scheme offered by something like recover-rtti to new types you made up after the library was coined.
2021-03-16 18:39:11 +0100 <edwardk> the main difference would be that classifier would become a data family and some other things like that would change, but overall i think you could keep the feel of the library
2021-03-16 18:39:36 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-03-16 18:47:37 +0100seven_three(~user@2601:18d:c180:4060::2829)
2021-03-16 18:48:30 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com) (Quit: ZNC 1.8.2 - https://znc.in)
2021-03-16 18:48:49 +0100shad0w_(67573b43@103.87.59.67)
2021-03-16 18:49:38 +0100average(uid473595@gateway/web/irccloud.com/x-ywsfnraofofbenfj) (Quit: Connection closed for inactivity)
2021-03-16 18:50:19 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2021-03-16 18:50:41 +0100 <hyiltiz> What's the lens for [[Maybe Bool]], i.e. I'd like to view, (also set and over) the Bool nested inside the Maybe inside the list inside a list, and
2021-03-16 18:50:41 +0100 <seven_three> would you say that parser combinators have an advantage over regexps in terms of creating recursive expression parsers? For example data with a structure like `(4 + (4 + (4 * (2 + 1))))`?
2021-03-16 18:50:50 +0100denisse(~spaceCat@gateway/tor-sasl/alephzer0) (Ping timeout: 268 seconds)
2021-03-16 18:51:27 +0100denisse(~spaceCat@gateway/tor-sasl/alephzer0)
2021-03-16 18:51:27 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2021-03-16 18:51:53 +0100 <hyiltiz> I could do `fromJust $ x !! m !! n` but returning the whole stuff with only a single element changed (aka set) is more clunky
2021-03-16 18:52:03 +0100 <dolio> Yes, regular expressions are only suitable for very simple languages.
2021-03-16 18:52:53 +0100hackagehaskoin-store 0.50.2 - Storage and index for Bitcoin and Bitcoin Cash https://hackage.haskell.org/package/haskoin-store-0.50.2 (jprupp)
2021-03-16 18:52:58 +0100 <dolio> Like, tokenizing at most, really.
2021-03-16 18:54:22 +0100 <edmundnoble> Yeah regular expressions are really not about "nesting", they're more "linear"
2021-03-16 18:54:29 +0100 <seven_three> dolio: Yes I am finding it unnatural currently
2021-03-16 18:54:48 +0100 <dminuoso> % [[Just True, Just False], [Just True]] ^.. each . each . _Just -- hyiltiz
2021-03-16 18:54:48 +0100 <yahb> dminuoso: [True,False,True]
2021-03-16 18:56:38 +0100 <seven_three> I see how that works. You could quickly get into making really big parsers that you can just call like that. And then easily use those blocks to make a grammar.
2021-03-16 18:57:46 +0100conal(~conal@64.71.133.70)
2021-03-16 18:58:05 +0100 <hyiltiz> domenkozar[m]: thx! Now can I define ^..each.each._Just myself (it is fine if it only works for [[Maybe Bool]] so I do not have to pull in a dependency?
2021-03-16 18:58:12 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-03-16 18:58:29 +0100 <seven_three> Thats what I am trying to do now with my regexs but it is more about program structure then the regexs themselves
2021-03-16 18:58:34 +0100zebrag(~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-03-16 18:58:45 +0100stevenxl(uid133530@gateway/web/irccloud.com/x-ugkyksdwpgkpdwuw) (Quit: Connection closed for inactivity)
2021-03-16 18:58:56 +0100zebrag(~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr)
2021-03-16 18:59:02 +0100geekosaur(82650c7a@130.101.12.122) (Ping timeout: 240 seconds)
2021-03-16 19:00:55 +0100kam1(~kam1@83.123.167.219) (Read error: Connection reset by peer)
2021-03-16 19:01:13 +0100 <hyiltiz> also I am not doing each though, I have the coordinates (m,n) for the 2D list [[]] that I'd like to view and edit (it is a grid)
2021-03-16 19:02:44 +0100conal(~conal@64.71.133.70) (Ping timeout: 256 seconds)
2021-03-16 19:02:47 +0100Deide(~Deide@217.155.19.23)
2021-03-16 19:03:54 +0100rajivr(uid269651@gateway/web/irccloud.com/x-jiwetompintgtwib) (Quit: Connection closed for inactivity)
2021-03-16 19:06:31 +0100conal(~conal@192.145.118.119)
2021-03-16 19:07:28 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com) (Read error: Connection reset by peer)
2021-03-16 19:09:11 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2021-03-16 19:10:34 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan) (Ping timeout: 268 seconds)
2021-03-16 19:11:36 +0100usr25(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-03-16 19:12:07 +0100plutoniix(~q@node-un3.pool-125-24.dynamic.totinternet.net) (Quit: Leaving)
2021-03-16 19:12:25 +0100jrqc(~rofl@96.78.87.197) (Ping timeout: 276 seconds)
2021-03-16 19:13:02 +0100rj_(~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds)
2021-03-16 19:13:53 +0100nisstyre(wes@python-zero/conduct-committee/nisstyre) (Ping timeout: 260 seconds)
2021-03-16 19:14:56 +0100jrqc(~rofl@96.78.87.197)
2021-03-16 19:15:08 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan)
2021-03-16 19:16:02 +0100nisstyre(wes@python-zero/conduct-committee/nisstyre)
2021-03-16 19:16:18 +0100geekosaur(82650c7a@130.101.12.122)
2021-03-16 19:16:55 +0100rj_(~x@gateway/tor-sasl/rj)
2021-03-16 19:18:12 +0100gentauro(~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer)
2021-03-16 19:18:14 +0100jakalx(~jakalx@base.jakalx.net) ("Error from remote client")
2021-03-16 19:18:29 +0100gentauro(~gentauro@unaffiliated/gentauro)
2021-03-16 19:19:13 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 245 seconds)
2021-03-16 19:20:44 +0100jakalx(~jakalx@base.jakalx.net)
2021-03-16 19:22:50 +0100 <edwardk> hyiltiz: traverse.traverse.traverse
2021-03-16 19:23:22 +0100 <dolio> That won't set. But it's somewhat unclear what setting means.
2021-03-16 19:24:05 +0100 <dolio> At least, if it's supposed to be based on index.
2021-03-16 19:24:29 +0100ADG1089__(~aditya@106.214.253.186)
2021-03-16 19:25:21 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-16 19:25:25 +0100wickedjargon(~ff@2607:9880:2198:4e:fd0d:cbfa:ce9e:8708) (Remote host closed the connection)
2021-03-16 19:25:52 +0100dfeuer(~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net)
2021-03-16 19:27:31 +0100jdt_jdt
2021-03-16 19:27:34 +0100motherfsck(~motherfsc@unaffiliated/motherfsck) (Quit: quit)
2021-03-16 19:27:55 +0100idhugo(~idhugo@87-49-147-45-mobile.dk.customer.tdc.net) (Ping timeout: 265 seconds)
2021-03-16 19:29:06 +0100waleee-cl(uid373333@gateway/web/irccloud.com/x-trkstrvybvcbmzax)
2021-03-16 19:30:31 +0100heatsink(~heatsink@2600:1700:bef1:5e10:f837:3533:97b:1f44) (Remote host closed the connection)
2021-03-16 19:30:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 244 seconds)
2021-03-16 19:30:37 +0100elliott_(~elliott_@170.121.246.234)
2021-03-16 19:31:14 +0100xff0x(~xff0x@2001:1a81:52ee:e100:ed20:88c:e6f5:e319) (Ping timeout: 264 seconds)
2021-03-16 19:31:49 +0100 <tomsmeding> hyiltiz: also random writes in a list are kind of slow
2021-03-16 19:31:59 +0100xff0x(~xff0x@2001:1a81:52ee:e100:2c5:e186:20dd:e6dd)
2021-03-16 19:32:02 +0100 <tomsmeding> so depends on how often, how large, and how serious :p
2021-03-16 19:32:16 +0100stevenxl(uid133530@gateway/web/irccloud.com/x-lcskfaqclhmjmrbi)
2021-03-16 19:32:44 +0100elliott_(~elliott_@170.121.246.234) (Read error: Connection reset by peer)
2021-03-16 19:33:46 +0100elliott_(~elliott_@170.121.246.234)
2021-03-16 19:35:47 +0100elliott_(~elliott_@170.121.246.234) (Read error: Connection reset by peer)
2021-03-16 19:36:05 +0100elliott_(~elliott_@170.121.246.234)
2021-03-16 19:36:20 +0100geowiesnot_bis(~user@87-89-181-157.abo.bbox.fr)
2021-03-16 19:36:39 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-03-16 19:36:59 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-03-16 19:37:13 +0100elliott_(~elliott_@170.121.246.234) (Read error: Connection reset by peer)
2021-03-16 19:37:45 +0100elliott_(~elliott_@170.121.246.234)
2021-03-16 19:38:52 +0100elliott_(~elliott_@170.121.246.234) (Read error: Connection reset by peer)
2021-03-16 19:39:17 +0100elliott_(~elliott_@170.121.246.234)
2021-03-16 19:39:19 +0100 <hyiltiz> it is always 3x3
2021-03-16 19:39:19 +0100 <hyiltiz> at most 9 times :D
2021-03-16 19:39:19 +0100 <hyiltiz> so performance is not concern
2021-03-16 19:40:05 +0100Chousuke_(oranenj@coffee.modeemi.fi) (Remote host closed the connection)
2021-03-16 19:40:39 +0100Chousuke(oranenj@coffee.modeemi.fi)
2021-03-16 19:40:50 +0100joncol(~jco@c188-150-101-195.bredband.comhem.se) (Remote host closed the connection)
2021-03-16 19:42:10 +0100neiluj(~jco@unaffiliated/neiluj) (Remote host closed the connection)
2021-03-16 19:43:19 +0100elliott_(~elliott_@170.121.246.234) (Read error: Connection reset by peer)
2021-03-16 19:43:58 +0100 <hyiltiz> assuming the baord is b, setting means b[m][n]=Just newVal in psudocode
2021-03-16 19:44:23 +0100 <hyiltiz> [[Maybe Bool]] is a 2D grid/borad
2021-03-16 19:45:18 +0100elliott_(~elliott_@170.121.246.234)
2021-03-16 19:48:09 +0100jdt(~jdt@38.77.195.50) ("ERC (IRC client for Emacs 26.3)")
2021-03-16 19:48:11 +0100cfricke(~cfricke@unaffiliated/cfricke)
2021-03-16 19:48:37 +0100tinhatcat(~tsranso@108-91-101-161.lightspeed.gnvlsc.sbcglobal.net)
2021-03-16 19:48:44 +0100heatsink(~heatsink@2600:1700:bef1:5e10:f837:3533:97b:1f44)
2021-03-16 19:49:21 +0100elliott_(~elliott_@170.121.246.234) (Ping timeout: 246 seconds)
2021-03-16 19:50:21 +0100cfricke(~cfricke@unaffiliated/cfricke) (Client Quit)
2021-03-16 19:50:22 +0100tinhatcat(~tsranso@108-91-101-161.lightspeed.gnvlsc.sbcglobal.net) (Client Quit)
2021-03-16 19:52:17 +0100geowiesnot_bis(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 265 seconds)
2021-03-16 19:55:14 +0100nfd(~nfd9001@2601:602:77f:1820:ad30:5ebc:6324:c6c5) (Ping timeout: 264 seconds)
2021-03-16 19:57:11 +0100mikoto-chan(~anass@gateway/tor-sasl/mikoto-chan) (Quit: mikoto-chan)
2021-03-16 19:58:10 +0100deviantfero(~deviantfe@190.150.27.58)
2021-03-16 19:58:12 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-03-16 19:58:34 +0100zebrag(~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-03-16 19:58:58 +0100zebrag(~inkbottle@aaubervilliers-654-1-101-29.w86-212.abo.wanadoo.fr)
2021-03-16 19:59:00 +0100Tario(~Tario@201.192.165.173)
2021-03-16 19:59:38 +0100coot(~coot@37.30.58.223.nat.umts.dynamic.t-mobile.pl)
2021-03-16 20:02:46 +0100roconnor(~roconnor@host-45-58-230-226.dyn.295.ca)
2021-03-16 20:03:33 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 264 seconds)
2021-03-16 20:03:54 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-luczsnoowjqghapa) (Quit: Connection closed for inactivity)
2021-03-16 20:05:13 +0100elliott_(~elliott_@170.121.246.234)
2021-03-16 20:05:50 +0100deviantfero(~deviantfe@190.150.27.58) (Ping timeout: 260 seconds)
2021-03-16 20:08:54 +0100shad0w_(67573b43@103.87.59.67) (Quit: Connection closed)
2021-03-16 20:09:21 +0100xff0x(~xff0x@2001:1a81:52ee:e100:2c5:e186:20dd:e6dd) (Ping timeout: 244 seconds)
2021-03-16 20:10:13 +0100xff0x(~xff0x@2001:1a81:52ee:e100:f577:1f30:738f:e56)
2021-03-16 20:10:41 +0100codygman`(~user@47.186.207.161)
2021-03-16 20:11:45 +0100elliott_(~elliott_@170.121.246.234) (Read error: Connection reset by peer)
2021-03-16 20:15:34 +0100elliott_(~elliott_@170.121.246.234)
2021-03-16 20:17:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-16 20:18:04 +0100seven_three(~user@2601:18d:c180:4060::2829) ("ERC (IRC client for Emacs 27.1)")
2021-03-16 20:19:41 +0100elliott_(~elliott_@170.121.246.234) (Ping timeout: 244 seconds)
2021-03-16 20:21:13 +0100 <Unhammer> I wonder how much work it'd be to hack lsp-mode into changing the message "Occurs check: cannot construct the infinite type" into "You've got your arguments ass-backwards again"
2021-03-16 20:21:15 +0100elliott_(~elliott_@170.121.246.234)
2021-03-16 20:22:54 +0100elliott_(~elliott_@170.121.246.234) (Read error: Connection reset by peer)
2021-03-16 20:24:00 +0100elliott_(~elliott_@170.121.246.234)
2021-03-16 20:26:18 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Remote host closed the connection)
2021-03-16 20:26:27 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 246 seconds)
2021-03-16 20:27:10 +0100whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-03-16 20:27:32 +0100cheater(~user@unaffiliated/cheater)
2021-03-16 20:28:11 +0100whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-03-16 20:28:43 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Quit: WeeChat 2.9)
2021-03-16 20:29:50 +0100elliott_(~elliott_@170.121.246.234) (Read error: Connection reset by peer)
2021-03-16 20:30:05 +0100whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-03-16 20:30:15 +0100elliott_(~elliott_@170.121.246.234)
2021-03-16 20:31:11 +0100whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-03-16 20:31:34 +0100elliott_(~elliott_@170.121.246.234) (Read error: Connection reset by peer)
2021-03-16 20:31:41 +0100metadave(sid28102@gateway/web/irccloud.com/x-ojtbvqwfgtmjogse) ()
2021-03-16 20:32:30 +0100elliott_(~elliott_@170.121.246.234)
2021-03-16 20:34:48 +0100ajc(~ajc@69.231.232.79) (Remote host closed the connection)
2021-03-16 20:35:16 +0100ajc(~ajc@69.231.232.79)
2021-03-16 20:35:47 +0100supercoven(~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi)
2021-03-16 20:36:11 +0100elliott_(~elliott_@170.121.246.234) (Read error: Connection reset by peer)
2021-03-16 20:39:14 +0100hwataday(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-03-16 20:39:17 +0100whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-03-16 20:41:05 +0100hwataday(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2021-03-16 20:41:49 +0100my_name_is_not_j(mynameisno@gateway/shell/matrix.org/x-gktbydycwnuqcokz)
2021-03-16 20:41:55 +0100weechat3(~mingc@2400:8902::f03c:91ff:feb7:8e82) (Ping timeout: 240 seconds)
2021-03-16 20:42:00 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-03-16 20:43:36 +0100Franciman(~francesco@host-82-49-79-189.retail.telecomitalia.it) (Ping timeout: 256 seconds)
2021-03-16 20:44:00 +0100cur8or(~cur8or@72canterbury.cybersmart.co.za)
2021-03-16 20:44:16 +0100 <shapr> Unhammer: I recently saw https://doisinkidney.com/posts/2021-03-14-hyperfunctions.html which mentions the "infinite type" can be used for good
2021-03-16 20:44:49 +0100 <shapr> I'm trying to write a basic slackbot with https://hackage.haskell.org/package/slack-web and https://hackage.haskell.org/package/weeder
2021-03-16 20:45:03 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-03-16 20:45:13 +0100heatsink(~heatsink@2600:1700:bef1:5e10:f837:3533:97b:1f44) (Remote host closed the connection)
2021-03-16 20:45:16 +0100 <shapr> hyvää huomenta Tuplanolla
2021-03-16 20:46:01 +0100kam1(~kam1@83.123.167.219)
2021-03-16 20:46:06 +0100 <Tuplanolla> Thanks, shapr, although it's evening and my system just crashed after 400 days up.
2021-03-16 20:46:14 +0100 <shapr> aw :-(
2021-03-16 20:46:46 +0100kam1(~kam1@83.123.167.219) (Read error: Connection reset by peer)
2021-03-16 20:46:49 +0100Franciman(~francesco@host-79-53-62-46.retail.telecomitalia.it)
2021-03-16 20:47:02 +0100 <Tuplanolla> That's a decent run.
2021-03-16 20:47:53 +0100hackagewraxml 0.4.4.2 - Lazy wrapper to HaXML, HXT, TagSoup via custom XML tree structure https://hackage.haskell.org/package/wraxml-0.4.4.2 (HenningThielemann)
2021-03-16 20:49:14 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 268 seconds)
2021-03-16 20:51:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-03-16 20:51:34 +0100weechat3(~mingc@li1683-39.members.linode.com)
2021-03-16 20:52:21 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-03-16 20:53:38 +0100aarvar(~foewfoiew@2601:602:a080:fa0:1175:1d12:3f7a:f4b9)
2021-03-16 20:54:21 +0100specdrake(~anurag@103.209.223.76) (Remote host closed the connection)
2021-03-16 20:54:53 +0100ptrcmd_(~ptrcmd@unaffiliated/petercommand) (Ping timeout: 256 seconds)
2021-03-16 20:55:01 +0100ptrcmd(~ptrcmd@unaffiliated/petercommand)
2021-03-16 20:55:14 +0100vicfred(~vicfred@unaffiliated/vicfred)
2021-03-16 20:55:25 +0100nfd(~nfd9001@c-73-225-42-170.hsd1.wa.comcast.net)
2021-03-16 20:55:51 +0100Morrow_(~MorrowM_@147.161.13.246) (Ping timeout: 246 seconds)
2021-03-16 20:56:25 +0100MorrowM(~MorrowM_@147.161.13.246) (Ping timeout: 276 seconds)
2021-03-16 20:57:30 +0100MorrowM(~MorrowM_@147.161.13.246)
2021-03-16 20:57:30 +0100Morrow_(~MorrowM_@147.161.13.246)
2021-03-16 20:58:00 +0100 <shapr> Has anyone built a slackbot with slack-web?
2021-03-16 20:58:15 +0100 <shapr> I should probably just read more docs about the Slack API
2021-03-16 20:58:19 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-03-16 21:04:27 +0100whataday(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2021-03-16 21:04:57 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 246 seconds)
2021-03-16 21:05:12 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-03-16 21:07:09 +0100petersen(~petersen@redhat/juhp)
2021-03-16 21:08:16 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta)
2021-03-16 21:08:53 +0100hackagemohws 0.2.1.7 - Modular Haskell Web Server https://hackage.haskell.org/package/mohws-0.2.1.7 (HenningThielemann)
2021-03-16 21:09:00 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2021-03-16 21:10:07 +0100kam1(~kam1@83.123.167.219)
2021-03-16 21:10:11 +0100molehillish(~molehilli@2600:8800:8d06:1800:6cd8:b958:caec:b1dc) (Remote host closed the connection)
2021-03-16 21:10:42 +0100kam1(~kam1@83.123.167.219) (Read error: Connection reset by peer)
2021-03-16 21:13:02 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2021-03-16 21:15:49 +0100Sornaensis(~Sornaensi@45.56.183.30)
2021-03-16 21:16:24 +0100son0p(~son0p@181.58.39.182)
2021-03-16 21:17:30 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-03-16 21:17:56 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-03-16 21:19:17 +0100Sorny(~Sornaensi@077213203030.dynamic.telenor.dk) (Ping timeout: 265 seconds)
2021-03-16 21:21:42 +0100cur8or(~cur8or@72canterbury.cybersmart.co.za) (Ping timeout: 265 seconds)
2021-03-16 21:22:52 +0100coot(~coot@37.30.58.223.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-03-16 21:24:41 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-16 21:25:09 +0100ddellacosta(ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection)
2021-03-16 21:25:51 +0100malumore(~malumore@151.62.119.219) (Ping timeout: 265 seconds)
2021-03-16 21:27:42 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Quit: WeeChat 2.9)
2021-03-16 21:29:01 +0100average(uid473595@gateway/web/irccloud.com/x-fgnpvzuoluocxrze)
2021-03-16 21:29:21 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-03-16 21:30:33 +0100ADG1089__(~aditya@106.214.253.186) (Quit: Konversation terminated!)
2021-03-16 21:37:22 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-03-16 21:38:43 +0100geekosaur(82650c7a@130.101.12.122) (Quit: Connection closed)
2021-03-16 21:38:50 +0100jneira(501e6406@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.6)
2021-03-16 21:39:47 +0100kam1(~kam1@83.123.167.219)
2021-03-16 21:39:52 +0100kuribas(~user@ptr-25vy0iaa19zfetqtyes.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2021-03-16 21:40:39 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2021-03-16 21:45:08 +0100kam1(~kam1@83.123.167.219) (Read error: Connection reset by peer)
2021-03-16 21:45:10 +0100conal(~conal@192.145.118.119) (Quit: Computer has gone to sleep.)
2021-03-16 21:45:37 +0100heatsink(~heatsink@2600:1700:bef1:5e10:f837:3533:97b:1f44)
2021-03-16 21:45:56 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-03-16 21:45:58 +0100roconnor(~roconnor@host-45-58-230-226.dyn.295.ca) (Ping timeout: 244 seconds)
2021-03-16 21:46:12 +0100Sathiana(~kath@185-113-98-38.cust.bredband2.com)
2021-03-16 21:46:35 +0100roconnor(~roconnor@host-45-58-230-226.dyn.295.ca)
2021-03-16 21:48:32 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-03-16 21:48:58 +0100 <hololeap> @djinn t m (m a) -> t m a
2021-03-16 21:48:58 +0100 <lambdabot> -- f cannot be realized.
2021-03-16 21:49:21 +0100 <hololeap> @djinn (MonadTrans t, Monad (t m), Monad m) => t m (m a) -> t m a
2021-03-16 21:49:21 +0100 <lambdabot> Error: Class not found: MonadTrans
2021-03-16 21:50:26 +0100heatsink(~heatsink@2600:1700:bef1:5e10:f837:3533:97b:1f44) (Ping timeout: 264 seconds)
2021-03-16 21:50:33 +0100roconnor(~roconnor@host-45-58-230-226.dyn.295.ca) (Client Quit)
2021-03-16 21:50:51 +0100 <Taneb> :t join . fmap lift
2021-03-16 21:50:53 +0100 <lambdabot> (MonadTrans t, Monad m, Monad (t m)) => t m (m a) -> t m a
2021-03-16 21:51:06 +0100 <hololeap> sweet, thanks Taneb
2021-03-16 21:51:29 +0100 <Taneb> :t (>>= lift)
2021-03-16 21:51:31 +0100 <lambdabot> (MonadTrans t, Monad m, Monad (t m)) => t m (m b) -> t m b
2021-03-16 21:51:42 +0100conal(~conal@192.145.118.119)
2021-03-16 21:53:16 +0100kam1(~kam1@83.123.167.219)
2021-03-16 21:58:57 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 260 seconds)
2021-03-16 21:59:55 +0100cawfee(chiya@2406:3003:2077:2341::babe) (Ping timeout: 240 seconds)
2021-03-16 22:00:13 +0100hiroaki(~hiroaki@2a02:8108:8c40:2bb8:cd42:97fd:be98:3cd9) (Ping timeout: 272 seconds)
2021-03-16 22:01:20 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-03-16 22:01:55 +0100stevenxl(uid133530@gateway/web/irccloud.com/x-lcskfaqclhmjmrbi) (Quit: Connection closed for inactivity)
2021-03-16 22:01:58 +0100kam1(~kam1@83.123.167.219) (Read error: Connection reset by peer)
2021-03-16 22:02:05 +0100hrdl_hrdl
2021-03-16 22:03:58 +0100coot(~coot@37.30.58.223.nat.umts.dynamic.t-mobile.pl)
2021-03-16 22:04:43 +0100Sathiana(~kath@185-113-98-38.cust.bredband2.com) (Quit: WeeChat 3.0)
2021-03-16 22:05:31 +0100Sathiana(~kath@185-113-98-38.cust.bredband2.com)
2021-03-16 22:06:07 +0100cawfee(chiya@2406:3003:2077:2341::babe)
2021-03-16 22:06:33 +0100Sathiana(~kath@185-113-98-38.cust.bredband2.com) (Client Quit)
2021-03-16 22:08:32 +0100qih_(~pi@210-54-120-166.adsl.xtra.co.nz)
2021-03-16 22:09:01 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-16 22:10:34 +0100Not-Morgan(~mason@2620:101:c040:860:7483:49e5:8f17:9887)
2021-03-16 22:10:48 +0100Alleria__(~textual@zrcout.mskcc.org) (Ping timeout: 265 seconds)
2021-03-16 22:11:05 +0100malumore(~malumore@151.62.119.219)
2021-03-16 22:11:21 +0100heatsink(~heatsink@2600:1700:bef1:5e10:f837:3533:97b:1f44)
2021-03-16 22:11:48 +0100qih(~pi@210-54-120-166.adsl.xtra.co.nz) (Ping timeout: 260 seconds)
2021-03-16 22:12:29 +0100hiroaki(~hiroaki@2a02:8108:8c40:2bb8:e09e:eb7a:70f9:6a37)
2021-03-16 22:13:36 +0100Not-Morgan(~mason@2620:101:c040:860:7483:49e5:8f17:9887) ()
2021-03-16 22:14:23 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-03-16 22:15:45 +0100cuz(~user@38.140.58.234)
2021-03-16 22:15:48 +0100Not-Morgan(~mason@2620:101:c040:860:7483:49e5:8f17:9887)
2021-03-16 22:16:09 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 264 seconds)
2021-03-16 22:17:47 +0100Not-Morgan(~mason@2620:101:c040:860:7483:49e5:8f17:9887) ()
2021-03-16 22:19:25 +0100qih_(~pi@210-54-120-166.adsl.xtra.co.nz) (Quit: leaving)
2021-03-16 22:20:11 +0100Not-Morg1n(~Not-Morga@nat-5-156.uws.ualberta.ca)
2021-03-16 22:20:35 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-03-16 22:20:54 +0100Not-Morg1n(~Not-Morga@nat-5-156.uws.ualberta.ca) (Client Quit)
2021-03-16 22:22:34 +0100molehillish(~molehilli@2600:8800:8d06:1800:2195:2964:ee:f10b)
2021-03-16 22:23:02 +0100nfd(~nfd9001@c-73-225-42-170.hsd1.wa.comcast.net) (Ping timeout: 260 seconds)
2021-03-16 22:23:09 +0100jonathanx(~jonathan@h-176-109.A357.priv.bahnhof.se)
2021-03-16 22:23:28 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2021-03-16 22:28:51 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 244 seconds)
2021-03-16 22:29:18 +0100lawid_(~quassel@dslb-090-186-208-048.090.186.pools.vodafone-ip.de) (Quit: lawid_)
2021-03-16 22:30:34 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2021-03-16 22:31:23 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2021-03-16 22:31:25 +0100lawid(~quassel@dslb-090-186-208-048.090.186.pools.vodafone-ip.de)
2021-03-16 22:32:26 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 264 seconds)
2021-03-16 22:36:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-03-16 22:39:02 +0100molehillish(~molehilli@2600:8800:8d06:1800:2195:2964:ee:f10b) (Read error: Connection reset by peer)
2021-03-16 22:39:46 +0100molehillish(~molehilli@2600:8800:8d06:1800:2195:2964:ee:f10b)
2021-03-16 22:41:08 +0100marinelli(~marinelli@gateway/tor-sasl/marinelli) (Remote host closed the connection)
2021-03-16 22:41:28 +0100marinelli(~marinelli@gateway/tor-sasl/marinelli)
2021-03-16 22:41:53 +0100Sgeo_(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-03-16 22:42:32 +0100minoru_shiraeesh(~shiraeesh@46.34.206.65)
2021-03-16 22:42:36 +0100Not_Morgan(~Not_Morga@nat-5-156.uws.ualberta.ca)
2021-03-16 22:42:48 +0100Not_Morgan(~Not_Morga@nat-5-156.uws.ualberta.ca) ()
2021-03-16 22:43:29 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-03-16 22:43:36 +0100marinelli(~marinelli@gateway/tor-sasl/marinelli) (Client Quit)
2021-03-16 22:44:25 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-03-16 22:44:28 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Ping timeout: 260 seconds)
2021-03-16 22:47:32 +0100michalz(~user@185.246.204.47) (Remote host closed the connection)
2021-03-16 22:48:10 +0100molehillish(~molehilli@2600:8800:8d06:1800:2195:2964:ee:f10b) (Remote host closed the connection)
2021-03-16 22:49:23 +0100hackagespacecookie 1.0.0.0 - Gopher server library and daemon https://hackage.haskell.org/package/spacecookie-1.0.0.0 (sternenseemann)
2021-03-16 22:49:45 +0100molehillish(~molehilli@2600:8800:8d06:1800:2195:2964:ee:f10b)
2021-03-16 22:51:06 +0100Codaraxis(Codaraxis@gateway/vpn/mullvad/codaraxis)
2021-03-16 22:54:10 +0100molehillish(~molehilli@2600:8800:8d06:1800:2195:2964:ee:f10b) (Ping timeout: 244 seconds)
2021-03-16 22:54:18 +0100alx741(~alx741@181.196.68.64) (Ping timeout: 265 seconds)
2021-03-16 23:01:28 +0100Hi-Angel(~constanti@broadband-188-32-15-112.ip.moscow.rt.ru)
2021-03-16 23:04:08 +0100Moyst(~moyst@212-149-213-144.bb.dnainternet.fi) (Ping timeout: 256 seconds)
2021-03-16 23:06:15 +0100fendor(~fendor@178.165.129.131.wireless.dyn.drei.com) (Remote host closed the connection)
2021-03-16 23:06:42 +0100alx741(~alx741@186.178.109.138)
2021-03-16 23:07:16 +0100Tops2(~Tobias@dyndsl-095-033-026-078.ewe-ip-backbone.de)
2021-03-16 23:08:31 +0100hiroaki(~hiroaki@2a02:8108:8c40:2bb8:e09e:eb7a:70f9:6a37) (Ping timeout: 265 seconds)
2021-03-16 23:08:36 +0100Not_Morgan(~Not_Morga@nat-5-156.uws.ualberta.ca)
2021-03-16 23:09:53 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
2021-03-16 23:10:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-03-16 23:10:32 +0100berberman(~berberman@unaffiliated/berberman)
2021-03-16 23:12:05 +0100Franciman(~francesco@host-79-53-62-46.retail.telecomitalia.it) (Quit: Leaving)
2021-03-16 23:12:28 +0100Moyst(~moyst@212-149-213-144.bb.dnainternet.fi)
2021-03-16 23:13:22 +0100 <hololeap> is there any way to rename a pakage once it's been uploaded?
2021-03-16 23:13:25 +0100 <hololeap> to hackage
2021-03-16 23:14:14 +0100crobbins(~crobbins@2600:1700:48eb:8490:b577:6e36:e383:a1d9) (Remote host closed the connection)
2021-03-16 23:15:27 +0100usr25(~usr25@unaffiliated/usr25)
2021-03-16 23:16:08 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0)
2021-03-16 23:16:18 +0100pavonia(~user@unaffiliated/siracusa)
2021-03-16 23:17:51 +0100Thra11(~Thra11@5.1.169.217.in-addr.arpa)
2021-03-16 23:19:20 +0100molehillish(~molehilli@2600:8800:8d06:1800:2195:2964:ee:f10b)
2021-03-16 23:19:33 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-03-16 23:19:33 +0100 <Thra11> As far as cabal is concerned, does Cabal-2.2.0.1 satisfy the requirement `Cabal > 2.2`?
2021-03-16 23:21:22 +0100hiroaki(~hiroaki@2a02:8108:8c40:2bb8:3347:96de:66cc:cf9e)
2021-03-16 23:21:38 +0100 <monochrom> I think yes.
2021-03-16 23:24:02 +0100molehillish(~molehilli@2600:8800:8d06:1800:2195:2964:ee:f10b) (Ping timeout: 264 seconds)
2021-03-16 23:27:07 +0100 <Thra11> `Cabal > 2.2` seems like a slightly odd thing to specify in that case. "I don't want Cabal-2.2.0.0, but if it's got even the most insignificant change afterwards, it's fine". I suppose if you know there's a required bug fix in 2.2.0.1 it might make sense.
2021-03-16 23:27:51 +0100pavonia_(~user@unaffiliated/siracusa)
2021-03-16 23:28:07 +0100vnz_(~vnz@2001:bc8:604:94f::1)
2021-03-16 23:28:50 +0100fissureman(~quassel@c-73-201-159-163.hsd1.dc.comcast.net)
2021-03-16 23:29:36 +0100lawid_(~quassel@dslb-090-186-208-048.090.186.pools.vodafone-ip.de)
2021-03-16 23:29:42 +0100recon_-(~quassel@2602:febc:0:b6::6ca2) (Quit: No Ping reply in 180 seconds.)
2021-03-16 23:30:25 +0100son0p_(~son0p@181.58.39.182)
2021-03-16 23:30:27 +0100 <hololeap> yeah, Cabal >= 2.2 makes more sense
2021-03-16 23:30:56 +0100icebreak1r(michalc@freeshell.de)
2021-03-16 23:30:57 +0100cole-h_(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-03-16 23:31:06 +0100 <hololeap> 'package > num' is usually a typo
2021-03-16 23:31:09 +0100recon_-(~quassel@2602:febc:0:b6::6ca2)
2021-03-16 23:31:31 +0100weechat_4(~mingc@2400:8902::f03c:91ff:feb7:8e82)
2021-03-16 23:31:43 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 245 seconds)
2021-03-16 23:32:02 +0100 <monochrom> If the bug fix in 2.2.0.1 is desired, >= 2.2.0.1 is much clearer.
2021-03-16 23:34:19 +0100lemmih(~lemmih@2406:3003:2072:44:5ef0:b049:fd85:f050) (Remote host closed the connection)
2021-03-16 23:34:40 +0100lemmih(~lemmih@2406:3003:2072:44:ae54:3bb1:1680:3911)
2021-03-16 23:35:25 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (*.net *.split)
2021-03-16 23:35:25 +0100pavonia(~user@unaffiliated/siracusa) (*.net *.split)
2021-03-16 23:35:25 +0100Hi-Angel(~constanti@broadband-188-32-15-112.ip.moscow.rt.ru) (*.net *.split)
2021-03-16 23:35:25 +0100lawid(~quassel@dslb-090-186-208-048.090.186.pools.vodafone-ip.de) (*.net *.split)
2021-03-16 23:35:25 +0100jneira(501e6406@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.6) (*.net *.split)
2021-03-16 23:35:25 +0100son0p(~son0p@181.58.39.182) (*.net *.split)
2021-03-16 23:35:25 +0100ptrcmd(~ptrcmd@unaffiliated/petercommand) (*.net *.split)
2021-03-16 23:35:25 +0100weechat3(~mingc@li1683-39.members.linode.com) (*.net *.split)
2021-03-16 23:35:25 +0100vnz(~vnz@unaffiliated/vnz) (*.net *.split)
2021-03-16 23:35:25 +0100tanner_(~tanner@216.106.138.184) (*.net *.split)
2021-03-16 23:35:25 +0100carlomagno1(~cararell@148.87.23.5) (*.net *.split)
2021-03-16 23:35:25 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (*.net *.split)
2021-03-16 23:35:25 +0100pehjota(~pehjota@217.146.82.202) (*.net *.split)
2021-03-16 23:35:25 +0100ukari(~ukari@unaffiliated/ukari) (*.net *.split)
2021-03-16 23:35:25 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (*.net *.split)
2021-03-16 23:35:25 +0100icebreaker(michalc@unaffiliated/icebreaker) (*.net *.split)
2021-03-16 23:35:26 +0100echoreply(~echoreply@unaffiliated/echoreply) (*.net *.split)
2021-03-16 23:35:26 +0100vnz_vnz
2021-03-16 23:35:26 +0100vnz(~vnz@2001:bc8:604:94f::1) (Changing host)
2021-03-16 23:35:26 +0100vnz(~vnz@unaffiliated/vnz)
2021-03-16 23:35:38 +0100zopsi(zopsi@2600:3c00::f03c:91ff:fe14:551f) (Max SendQ exceeded)
2021-03-16 23:36:02 +0100zopsi(~zopsi@irc.dir.ac)
2021-03-16 23:37:38 +0100pyuk(~vroom@217.138.252.181)
2021-03-16 23:38:57 +0100rzmt(~rzmt@87-92-180-112.rev.dnainternet.fi) (Ping timeout: 264 seconds)
2021-03-16 23:39:43 +0100RandomArcher(~RandomArc@90.153.151.187)
2021-03-16 23:40:33 +0100kam1(~kam1@83.123.167.219)
2021-03-16 23:40:44 +0100ptrcmd(~ptrcmd@unaffiliated/petercommand)
2021-03-16 23:40:52 +0100puke(~vroom@217.138.252.202) (Ping timeout: 276 seconds)
2021-03-16 23:41:32 +0100ukari(~ukari@unaffiliated/ukari)
2021-03-16 23:42:03 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-kiyfxvthgbbyzfbg) (Quit: Connection closed for inactivity)
2021-03-16 23:42:06 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-03-16 23:42:13 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-03-16 23:42:15 +0100Tops2(~Tobias@dyndsl-095-033-026-078.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-03-16 23:42:18 +0100echoreply(~echoreply@unaffiliated/echoreply)
2021-03-16 23:42:38 +0100carlomagno(~cararell@148.87.23.5)
2021-03-16 23:43:19 +0100supercoven(~Supercove@dsl-hkibng31-54fabd-233.dhcp.inet.fi) (Ping timeout: 265 seconds)
2021-03-16 23:43:36 +0100acidjnk_new(~acidjnk@p200300d0c72b9506e0723511d2830c2e.dip0.t-ipconnect.de)
2021-03-16 23:44:20 +0100rzmt(~rzmt@87-92-180-112.rev.dnainternet.fi)
2021-03-16 23:44:54 +0100Hi-Angel(~constanti@broadband-188-32-15-112.ip.moscow.rt.ru)
2021-03-16 23:45:48 +0100dragestil_dragestil
2021-03-16 23:46:44 +0100pavonia_pavonia
2021-03-16 23:48:33 +0100pyuk(~vroom@217.138.252.181) (Quit: pyuk)
2021-03-16 23:48:53 +0100puke(~vroom@217.138.252.181)
2021-03-16 23:49:12 +0100spoonm(~spoonm@tokyo.spoonm.org) (Ping timeout: 260 seconds)
2021-03-16 23:50:05 +0100malumore(~malumore@151.62.119.219) (Ping timeout: 265 seconds)
2021-03-16 23:53:46 +0100LKoen(~LKoen@194.250.88.92.rev.sfr.net) (Remote host closed the connection)
2021-03-16 23:55:26 +0100molehillish(~molehilli@ip98-167-226-26.ph.ph.cox.net)
2021-03-16 23:56:14 +0100LKoen(~LKoen@194.250.88.92.rev.sfr.net)
2021-03-16 23:56:47 +0100 <Axman6> @hoogle joist
2021-03-16 23:56:47 +0100 <lambdabot> No results found
2021-03-16 23:56:49 +0100 <Axman6> @hoogle hoist
2021-03-16 23:56:50 +0100 <lambdabot> Pipes hoist :: (MFunctor t, Monad m) => (forall a . () => m a -> n a) -> t m b -> t n b
2021-03-16 23:56:50 +0100 <lambdabot> Control.Monad.Morph hoist :: (MFunctor t, Monad m) => (forall a . m a -> n a) -> t m b -> t n b
2021-03-16 23:56:50 +0100 <lambdabot> Streaming hoist :: (MFunctor t, Monad m) => (forall a . () => m a -> n a) -> t m b -> t n b
2021-03-16 23:57:06 +0100 <Axman6> % :t hoist
2021-03-16 23:57:06 +0100 <yahb> Axman6: (Recursive s, Corecursive t) => (forall a. Base s a -> Base t a) -> s -> t
2021-03-16 23:57:19 +0100 <Axman6> % :t Control.Monad.Morph.hoist
2021-03-16 23:57:20 +0100 <yahb> Axman6: ; <interactive>:1:1: error:; Not in scope: `Control.Monad.Morph.hoist'; No module named `Control.Monad.Morph' is imported.
2021-03-16 23:57:23 +0100ph88_(~ph88@2a02:8109:9e00:7e5c:85cc:3a34:36cf:1a53) (Ping timeout: 272 seconds)
2021-03-16 23:58:33 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)