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.