Home freenode/#haskell: Logs Calendar

Logs on 2021-03-16 (freenode/#haskell)

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

All times are in UTC on 2021-03-16.