2021/01/06

2021-01-06 00:00:14 +0100 <dmj`> there should exist a baseline Haskell2010 AST / Parser w/o the frills
2021-01-06 00:01:32 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33) (Remote host closed the connection)
2021-01-06 00:02:38 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 256 seconds)
2021-01-06 00:02:39 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-06 00:02:55 +0100cgadski(~cgadski@a95-95-106-208.cpe.netcabo.pt) ()
2021-01-06 00:02:56 +0100sgibber2018(~arch-gibb@208.85.237.144)
2021-01-06 00:03:51 +0100Tario(~Tario@201.192.165.173)
2021-01-06 00:04:24 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 260 seconds)
2021-01-06 00:06:21 +0100justsomeguy(~justsomeg@216.186.218.241)
2021-01-06 00:06:21 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2021-01-06 00:06:21 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2021-01-06 00:06:38 +0100carlomagno1(~cararell@148.87.23.12)
2021-01-06 00:06:54 +0100carlomagno(~cararell@148.87.23.12) (Remote host closed the connection)
2021-01-06 00:07:02 +0100denisse_(~spaceCat@gateway/tor-sasl/alephzer0)
2021-01-06 00:07:03 +0100denisse(~spaceCat@gateway/tor-sasl/alephzer0) (Ping timeout: 240 seconds)
2021-01-06 00:07:23 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya) (Ping timeout: 240 seconds)
2021-01-06 00:07:32 +0100 <dfeuer> dmj`: you could look at the Hugs, nhc, etc., parsers and see if you like one.
2021-01-06 00:07:44 +0100 <monochrom> Does haskell-src count?
2021-01-06 00:08:47 +0100plutoniix(~q@ppp-49-237-20-247.revip6.asianet.co.th) (Ping timeout: 260 seconds)
2021-01-06 00:09:56 +0100 <dmj`> dfeuer: ooo hadn't heard of nhc
2021-01-06 00:10:05 +0100 <dmj`> monochrom: no ! traumatizing.
2021-01-06 00:10:35 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2021-01-06 00:10:35 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2021-01-06 00:10:35 +0100mouseghost(~draco@wikipedia/desperek)
2021-01-06 00:11:49 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2021-01-06 00:13:29 +0100 <koz_> Amusingly, 'cabal outdated' won't work without a global GHC, because it won't take a -w argument.
2021-01-06 00:15:27 +0100pera(~pera@unaffiliated/pera) (Quit: leaving)
2021-01-06 00:20:00 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33)
2021-01-06 00:20:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-06 00:24:56 +0100ransom(~c4264035@2a09:bac0:72::82f:c34)
2021-01-06 00:26:01 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-sukkcsrudpgtylmw) (Quit: Connection closed for inactivity)
2021-01-06 00:26:02 +0100 <monochrom> Yikes, that's a funny corner case.
2021-01-06 00:26:46 +0100 <koz_> Wouldn't be the first time I found of of those... this week.
2021-01-06 00:26:53 +0100fendor_(~fendor@91.141.3.164.wireless.dyn.drei.com) (Remote host closed the connection)
2021-01-06 00:27:14 +0100 <monochrom> Heh the year 2021 has barely begun...
2021-01-06 00:27:22 +0100 <koz_> monochrom: It's just how I am.
2021-01-06 00:27:28 +0100 <koz_> I am a lamp, I attract bugs.
2021-01-06 00:27:38 +0100 <koz_> Case in point - so far this year, I've found _two_ kernel bugs.
2021-01-06 00:32:48 +0100cynick_cynick
2021-01-06 00:34:32 +0100iteratee(~kyle@162.211.154.4) (Read error: No route to host)
2021-01-06 00:37:40 +0100usr256(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-01-06 00:39:06 +0100iteratee(~kyle@162.211.154.4)
2021-01-06 00:39:23 +0100 <koz_> @unmtl ExceptT e (State s) a
2021-01-06 00:39:23 +0100 <lambdabot> s -> (Either e a, s)
2021-01-06 00:39:37 +0100 <koz_> @unmtl StateT s (Except e) a
2021-01-06 00:39:37 +0100 <lambdabot> s -> Except e (a, s)
2021-01-06 00:40:22 +0100usr25(~usr25@unaffiliated/usr25)
2021-01-06 00:42:03 +0100dirediresalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2021-01-06 00:42:37 +0100dirediresalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2021-01-06 00:43:09 +0100kel(d26b42ca@210.107.66.202)
2021-01-06 00:43:36 +0100kel(d26b42ca@210.107.66.202) (Remote host closed the connection)
2021-01-06 00:45:23 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-mfwhrfcnbyerpdae)
2021-01-06 00:47:00 +0100dirediresalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2021-01-06 00:47:28 +0100dirediresalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2021-01-06 00:51:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33) (Remote host closed the connection)
2021-01-06 00:52:57 +0100mpereira(~mpereira@2a02:810d:f40:d96:5cc6:836f:afa7:e837) (Ping timeout: 268 seconds)
2021-01-06 00:54:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-06 00:55:41 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:f4f0:d2c0:3ecf:a408)
2021-01-06 00:58:52 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33)
2021-01-06 00:58:58 +0100Vindaloo(~Vindaloo@70.129.133.37.dynamic.jazztel.es) (Remote host closed the connection)
2021-01-06 00:59:07 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2021-01-06 01:00:24 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-01-06 01:04:25 +0100fradet(~pi@216.252.75.247) (Ping timeout: 264 seconds)
2021-01-06 01:11:03 +0100revprez_anzio(~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Quit: Lost terminal)
2021-01-06 01:11:18 +0100revprez_anzio(~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net)
2021-01-06 01:14:24 +0100timbit(~trob@135-23-206-58.cpe.pppoe.ca)
2021-01-06 01:18:48 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2021-01-06 01:24:13 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net) (Ping timeout: 264 seconds)
2021-01-06 01:26:35 +0100timbit(~trob@135-23-206-58.cpe.pppoe.ca) (Quit: Leaving)
2021-01-06 01:30:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-06 01:32:37 +0100ulidtko|k(~ulidtko@194.54.80.38) (Ping timeout: 246 seconds)
2021-01-06 01:32:38 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2021-01-06 01:33:06 +0100thc202(~thc202@unaffiliated/thc202) (Quit: thc202)
2021-01-06 01:35:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-06 01:39:37 +0100bitmagie(~Thunderbi@200116b80605280008c19424c544e900.dip.versatel-1u1.de) (Quit: bitmagie)
2021-01-06 01:41:16 +0100alx741(~alx741@181.196.69.158) (Ping timeout: 240 seconds)
2021-01-06 01:46:43 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 265 seconds)
2021-01-06 01:49:35 +0100mpereira(~mpereira@2a02:810d:f40:d96:5cc6:836f:afa7:e837)
2021-01-06 01:51:56 +0100dh(dh@bsd.ee) (Disconnected by services)
2021-01-06 01:52:02 +0100dh_(dh@bsd.ee)
2021-01-06 01:53:25 +0100usr256(~usr25@unaffiliated/usr25)
2021-01-06 01:54:29 +0100mpereira(~mpereira@2a02:810d:f40:d96:5cc6:836f:afa7:e837) (Ping timeout: 272 seconds)
2021-01-06 01:54:45 +0100alx741(~alx741@186.178.110.141)
2021-01-06 01:56:36 +0100usr25(~usr25@unaffiliated/usr25) (Ping timeout: 256 seconds)
2021-01-06 01:58:25 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2021-01-06 02:00:05 +0100jedws(~jedws@121.209.189.201)
2021-01-06 02:02:17 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-06 02:03:38 +0100dabr(~daniel@p5082597a.dip0.t-ipconnect.de)
2021-01-06 02:05:38 +0100dandels(~dandels@unaffiliated/dandels)
2021-01-06 02:09:15 +0100ryanbooker(uid4340@gateway/web/irccloud.com/x-hbbtuufbzmpoieub)
2021-01-06 02:10:29 +0100shaprhops quietly
2021-01-06 02:13:44 +0100 <ezzieyguywuf> is reactive-banana still alive?
2021-01-06 02:13:59 +0100 <ezzieyguywuf> seems the last commit was may 2019, and it has some stale upper bounds
2021-01-06 02:15:16 +0100haritz(~hrtz@unaffiliated/haritz) (Ping timeout: 240 seconds)
2021-01-06 02:18:05 +0100haritz(~hrtz@62.3.70.206)
2021-01-06 02:18:05 +0100haritz(~hrtz@62.3.70.206) (Changing host)
2021-01-06 02:18:05 +0100haritz(~hrtz@unaffiliated/haritz)
2021-01-06 02:23:00 +0100inkbottle(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-06 02:24:05 +0100zebrag(~inkbottle@aaubervilliers-654-1-6-52.w83-200.abo.wanadoo.fr) (Ping timeout: 240 seconds)
2021-01-06 02:27:52 +0100eacameron(uid256985@gateway/web/irccloud.com/x-sggmrofinlhiriab) (Quit: Connection closed for inactivity)
2021-01-06 02:27:54 +0100threestrikes(~threestri@cpe-24-243-229-2.hot.res.rr.com)
2021-01-06 02:28:25 +0100dandels(~dandels@unaffiliated/dandels) (Ping timeout: 264 seconds)
2021-01-06 02:30:08 +0100inkbottlezebrag
2021-01-06 02:30:33 +0100troydm(~troydm@unaffiliated/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2021-01-06 02:32:36 +0100columbarius1(~columbari@mue-88-130-54-222.dsl.tropolys.de) (Ping timeout: 272 seconds)
2021-01-06 02:32:54 +0100 <int-e> ezzieyguywuf: https://github.com/HeinrichApfelmus/reactive-banana/issues/197 seems relevant (so not dead, but kind of hibernating... possibly it's waking up again now)
2021-01-06 02:32:59 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2021-01-06 02:34:14 +0100columbarius1(~columbari@87.123.198.204)
2021-01-06 02:34:54 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2021-01-06 02:36:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-06 02:38:01 +0100dabr(~daniel@p5082597a.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2021-01-06 02:38:30 +0100 <ezzieyguywuf> int-e: def. relevant, thanks (I should have checked issues...)
2021-01-06 02:39:32 +0100 <ezzieyguywuf> I've never personally used reactive-banana, but have heard good things, and I'm unsure if there are any real alternatives available - this is why I asked, as I'm getting ready to take it out of the gentoo portage tree due to stale dependencies that cause conflicts, but it's good to see that there is still activity around getting it updated
2021-01-06 02:39:46 +0100usr256(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-01-06 02:39:48 +0100 <ezzieyguywuf> the dependency stuff shouldn't really be an issue, I can probably submit a PR myself to get that up-to-speed
2021-01-06 02:41:51 +0100 <maerwald> take all haskell libs out of the portage tree :p
2021-01-06 02:42:11 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-01-06 02:42:57 +0100troydm(~troydm@unaffiliated/troydm)
2021-01-06 02:44:55 +0100 <ezzieyguywuf> maerwald: nooooo it's so nice!
2021-01-06 02:44:56 +0100shailangsa(~shailangs@host86-185-58-185.range86-185.btcentralplus.com) (Ping timeout: 240 seconds)
2021-01-06 02:45:04 +0100 <maerwald> it really isn't
2021-01-06 02:45:22 +0100 <ezzieyguywuf> I like it, that way I don't have to worry about ~/.cabal getting cluttered
2021-01-06 02:45:23 +0100 <maerwald> subslot abuse wrt GHC versions and it still doesn't work
2021-01-06 02:45:43 +0100 <ezzieyguywuf> it definitely has its rough edges, but for the most part seems to work
2021-01-06 02:45:44 +0100 <maerwald> it's worse than perl upgrades, with more resolver errors
2021-01-06 02:45:53 +0100 <maerwald> it's severely broken
2021-01-06 02:46:03 +0100 <ezzieyguywuf> we can't install two version of the same haskell package (we can with non-haskell stuff)
2021-01-06 02:46:12 +0100 <ezzieyguywuf> but that doesn't really seem to be a problem
2021-01-06 02:46:20 +0100 <maerwald> yes, because EAPI wasn't designed for this
2021-01-06 02:46:26 +0100 <ezzieyguywuf> indeed
2021-01-06 02:46:36 +0100iqubic(~user@2601:602:9500:4870:226b:d1ce:19b9:af92)
2021-01-06 02:46:46 +0100 <maerwald> so ppl trying to abuse EAPI to shove things into it that wasn't meant for it make user experience worse
2021-01-06 02:46:53 +0100 <maerwald> subslots were meant to be used sparingly
2021-01-06 02:47:16 +0100 <ezzieyguywuf> I'd rather contribute to EAPI 8 and fix it than throw my hands up and abandon ship
2021-01-06 02:47:36 +0100 <maerwald> since paludis doesn't work on gentoo anymore, I completely gave up on it :)
2021-01-06 02:47:45 +0100 <ezzieyguywuf> lol nooooo gentoo is so beast
2021-01-06 02:48:02 +0100 <ezzieyguywuf> i never tried paludis, what was so great about it?
2021-01-06 02:48:28 +0100 <maerwald> then spent a few years on exherbo, until I gave up about it too and switched to fedora, so I don't get bothered by packagers anymore who break my installattion :p
2021-01-06 02:48:41 +0100 <maerwald> ezzieyguywuf: it wasn't broken like portage
2021-01-06 02:49:10 +0100 <maerwald> portage doesn't even comply to the spec
2021-01-06 02:49:19 +0100 <maerwald> it's file merging is non-atomic and broken
2021-01-06 02:49:39 +0100 <maerwald> files go missing sometimes, it cannot recover from interrupts properly
2021-01-06 02:49:59 +0100 <ezzieyguywuf> maerwald: nah a lot (if not all) of that has been fixed
2021-01-06 02:50:05 +0100 <ezzieyguywuf> well, depends on what you mean by "interrupts"
2021-01-06 02:50:20 +0100 <ezzieyguywuf> I've never had portage make a file go missing, that'd be a huge bug
2021-01-06 02:50:21 +0100 <hololeap> portage has gotten better. the problem i saw were packages that didn't use the new EAPIs
2021-01-06 02:50:40 +0100 <maerwald> ezzieyguywuf: I don't think any of that has been fixed
2021-01-06 02:50:40 +0100 <ezzieyguywuf> ah, it seems there's been a big push to update EAPI lately though
2021-01-06 02:50:52 +0100 <hololeap> i think their QA has gotten better as well
2021-01-06 02:51:27 +0100 <maerwald> is still does portable file copy/move in the VDB, doesn't it?
2021-01-06 02:51:34 +0100 <maerwald> because it uses python sdlib
2021-01-06 02:51:54 +0100 <ezzieyguywuf> i dunno what most of those words in that order mean...
2021-01-06 02:52:04 +0100 <hololeap> me neither :(
2021-01-06 02:52:08 +0100 <maerwald> well, as I said: I doubt any of that has been fixed
2021-01-06 02:52:50 +0100 <ezzieyguywuf> *shrug*
2021-01-06 02:52:54 +0100 <maerwald> EAPI uses a file based database
2021-01-06 02:52:56 +0100 <ezzieyguywuf> I'm sure fedora is treating you very kindly :)
2021-01-06 02:53:26 +0100 <maerwald> but then portage fails to ensure atomicity of file operations in order to support ppl spreading VBD across devices
2021-01-06 02:53:28 +0100 <hololeap> maerwald: true
2021-01-06 02:53:41 +0100 <maerwald> or broken things like aufs
2021-01-06 02:53:51 +0100 <maerwald> *VDB
2021-01-06 02:53:57 +0100 <hololeap> i would think that would be up to the kernel to handle
2021-01-06 02:54:00 +0100 <maerwald> no
2021-01-06 02:54:15 +0100 <maerwald> atomic file operations across devices doesn't exist
2021-01-06 02:54:26 +0100 <hololeap> spreading a directory tree across devices?
2021-01-06 02:54:36 +0100 <maerwald> yeah, you can do that on portage
2021-01-06 02:54:41 +0100 <maerwald> and aufs does that internally
2021-01-06 02:55:20 +0100 <maerwald> it's a side-effect of not thinking about how to design operations in a file-based custom database
2021-01-06 02:55:24 +0100 <maerwald> so it's all ad-hoc
2021-01-06 02:55:29 +0100 <hololeap> aufs is a kernel-level feature and it's not even in the standard kernel
2021-01-06 02:55:34 +0100 <maerwald> correct
2021-01-06 02:55:55 +0100 <hololeap> i don't really blame them for not testing portage against that
2021-01-06 02:56:07 +0100 <maerwald> no: it works on portage :)
2021-01-06 02:56:09 +0100 <maerwald> but it shouldn't
2021-01-06 02:57:00 +0100iqubic(~user@2601:602:9500:4870:226b:d1ce:19b9:af92) ("ERC (IRC client for Emacs 28.0.50)")
2021-01-06 02:57:58 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:f4f0:d2c0:3ecf:a408) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-06 02:58:12 +0100 <hololeap> i used to have problems with interrupts when running concurrent portage jobs, but not anymore. it still acts funky if you CTRL+C during a pre-merge check though
2021-01-06 02:58:14 +0100Igloo(~igloo@matrix.chaos.earth.li) (Ping timeout: 260 seconds)
2021-01-06 02:58:53 +0100 <maerwald> concurrent portage jobs is something that shouldn't even exist
2021-01-06 02:59:06 +0100 <maerwald> there's no way to implement this correctly
2021-01-06 02:59:27 +0100 <hololeap> i don't see why there wouldn't be
2021-01-06 02:59:31 +0100Igloo(~igloo@matrix.chaos.earth.li)
2021-01-06 02:59:56 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-06 03:00:00 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:f4f0:d2c0:3ecf:a408)
2021-01-06 03:01:12 +0100 <hololeap> i have --jobs=3 as a default and i haven't run into any problems with it
2021-01-06 03:01:14 +0100blissfulazuline
2021-01-06 03:01:15 +0100azulineblissful
2021-01-06 03:01:54 +0100 <hololeap> it works like you would expect. if you have a bunch of packages that depend on package X, package X will be run first, without any parralel jobs
2021-01-06 03:02:02 +0100 <hololeap> parallel
2021-01-06 03:02:16 +0100 <maerwald> because you get all sorts of race conditions
2021-01-06 03:02:31 +0100 <maerwald> in the VDB, during merge, in pkg_postinst
2021-01-06 03:02:33 +0100 <maerwald> whatnot
2021-01-06 03:03:04 +0100 <maerwald> then suddenly a file is missing somewhere, because of a partial merge.. the user will think "hmm" and just rebuild the package and move on
2021-01-06 03:03:13 +0100 <maerwald> not understanding that their PM is broken :p
2021-01-06 03:03:13 +0100 <hololeap> you don't, though because they are run in a sandbox. the only race condition would be in the qmerge phase, and there it uses locks to make sure only one thing is merged to the filesystem at a time
2021-01-06 03:03:44 +0100 <hololeap> that has never happened to me
2021-01-06 03:03:56 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-06 03:04:36 +0100jmchael(~jmchael@81.174.205.210) (Ping timeout: 256 seconds)
2021-01-06 03:05:48 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-06 03:06:31 +0100 <maerwald> ok, so you have package A, which deletes a directory and replaces it with a file during merge, then you have package B, which depends on A, which still assumes it's a directory and places a file into it... will it fail or not?
2021-01-06 03:07:41 +0100 <maerwald> it really depends... portage in the end might just delete the file and replace it with a directory without failing :p
2021-01-06 03:07:44 +0100 <hololeap> i think that trying to replace a directory with a file would be detected as a file collision
2021-01-06 03:07:50 +0100 <maerwald> no
2021-01-06 03:07:55 +0100 <maerwald> in paludis yes
2021-01-06 03:08:17 +0100 <hololeap> maerwald: you may have a skewed/outdated image of portage
2021-01-06 03:08:49 +0100 <maerwald> unless the whole development team changed, I doubt it :p
2021-01-06 03:09:05 +0100 <maerwald> there's only one person who really understands portage anyway
2021-01-06 03:10:01 +0100 <hololeap> there can't be an empty directory that is handled by portage. that's why you see .keep files around
2021-01-06 03:10:40 +0100 <maerwald> I know
2021-01-06 03:10:47 +0100 <maerwald> I'm not talking about empty directories
2021-01-06 03:11:10 +0100 <maerwald> I'm talking about a package that used to install /usr/foo as a directory and now switches to it being a file
2021-01-06 03:11:11 +0100 <hololeap> and if some package tried to install a file, where that name was already taken by a directory handled by portage, that would definitely be a file collision, since it would destroy the file structure underneath
2021-01-06 03:11:13 +0100 <maerwald> that is possible
2021-01-06 03:11:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-01-06 03:11:37 +0100Entertainment(~entertain@104.246.132.210) (Ping timeout: 264 seconds)
2021-01-06 03:11:54 +0100 <hololeap> if it was a directory that _wasn't_ handled by portage, that would be reported as a warning
2021-01-06 03:11:55 +0100christo(~chris@81.96.113.213)
2021-01-06 03:13:01 +0100 <maerwald> portage doesn't handle directories at all, only files
2021-01-06 03:13:04 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 246 seconds)
2021-01-06 03:13:25 +0100 <maerwald> because you can't assign an ebuild owner to a directory
2021-01-06 03:13:36 +0100 <maerwald> so directories are always shared resources
2021-01-06 03:13:38 +0100sgibber2018(~arch-gibb@208.85.237.144) (Quit: WeeChat 3.0)
2021-01-06 03:13:42 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2021-01-06 03:14:22 +0100 <hololeap> correct, but if you had /usr/lib/foo/bar and /usr/lib/foo/baz owned by package X, and package Y tried to create a file called /usr/lib/foo, that would destroy the files owned by package X, which would not be allowed
2021-01-06 03:15:04 +0100 <maerwald> well, Y is not installed yet
2021-01-06 03:15:08 +0100 <maerwald> :)
2021-01-06 03:16:46 +0100 <hololeap> right, my statement assumes package X is installed before package Y
2021-01-06 03:16:56 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-01-06 03:18:59 +0100 <ezzieyguywuf> i think maerwald is philosophically opposed to portage
2021-01-06 03:19:10 +0100 <ezzieyguywuf> and it seems you've had some runins with the (sole?) developer as well
2021-01-06 03:19:14 +0100 <maerwald> hololeap: https://bugs.gentoo.org/483494
2021-01-06 03:19:16 +0100 <ezzieyguywuf> so I can understand your position
2021-01-06 03:19:37 +0100 <ezzieyguywuf> as purely a user of portage, and not a contributor (yet?), I can say that I am mostly satisfied and have not run into the issues you've described
2021-01-06 03:20:15 +0100 <maerwald> but that's another one
2021-01-06 03:21:03 +0100 <hololeap> an unconfirmed bug from 7 years ago?
2021-01-06 03:21:10 +0100 <maerwald> it is confirmed
2021-01-06 03:21:17 +0100 <maerwald> and still unfixed
2021-01-06 03:21:25 +0100 <hololeap> it literally says status: UNCONFIRMED
2021-01-06 03:21:33 +0100 <maerwald> did you read the report? :o
2021-01-06 03:21:37 +0100 <maerwald> and the reply?
2021-01-06 03:21:59 +0100 <hololeap> yes
2021-01-06 03:22:02 +0100 <maerwald> there's literally proof that this is not PMS compliant
2021-01-06 03:22:24 +0100 <hololeap> you would have to point to something current, or ask the gentoo devs if this is still a problem
2021-01-06 03:23:43 +0100 <hololeap> i could try to test it
2021-01-06 03:24:07 +0100 <hololeap> it might take me a bit
2021-01-06 03:24:59 +0100shailangsa(~shailangs@host86-186-191-114.range86-186.btcentralplus.com)
2021-01-06 03:26:26 +0100threestrikes(~threestri@cpe-24-243-229-2.hot.res.rr.com) (Ping timeout: 272 seconds)
2021-01-06 03:30:12 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:f4f0:d2c0:3ecf:a408) (Ping timeout: 268 seconds)
2021-01-06 03:32:42 +0100chenshen(~chenshen@2620:10d:c090:400::5:507b) (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
2021-01-06 03:33:28 +0100carlomagno1(~cararell@148.87.23.12) (Quit: Leaving.)
2021-01-06 03:38:28 +0100Varis(~Tadas@unaffiliated/varis) (Ping timeout: 272 seconds)
2021-01-06 03:39:48 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-06 03:41:23 +0100L29Ah(~L29Ah@unaffiliated/l29ah) (Ping timeout: 256 seconds)
2021-01-06 03:42:32 +0100xff0x(~fox@2001:1a81:52a7:8200:f535:aeb9:901:74c1) (Ping timeout: 268 seconds)
2021-01-06 03:42:49 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 246 seconds)
2021-01-06 03:44:16 +0100xff0x(~fox@2001:1a81:52e0:100:232f:c24f:d201:6316)
2021-01-06 03:50:34 +0100mpereira(~mpereira@2a02:810d:f40:d96:5cc6:836f:afa7:e837)
2021-01-06 03:52:12 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33) (Remote host closed the connection)
2021-01-06 03:52:47 +0100quinn(~quinn@c-73-223-224-163.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
2021-01-06 03:53:10 +0100phadej(phadej@62.204.15.134)
2021-01-06 03:53:25 +0100Vulfe(~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Read error: Connection reset by peer)
2021-01-06 03:53:44 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ec23:2fba:6a47:f771)
2021-01-06 03:53:51 +0100phadej(phadej@62.204.15.134) (Read error: Connection reset by peer)
2021-01-06 03:53:57 +0100Tario(~Tario@201.192.165.173)
2021-01-06 03:54:26 +0100phadej(phadej@62.204.15.134)
2021-01-06 03:54:32 +0100phadej(phadej@62.204.15.134) (Read error: Connection reset by peer)
2021-01-06 03:55:07 +0100mpereira(~mpereira@2a02:810d:f40:d96:5cc6:836f:afa7:e837) (Ping timeout: 260 seconds)
2021-01-06 03:55:53 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-06 03:56:31 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2021-01-06 03:58:44 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 272 seconds)
2021-01-06 03:59:13 +0100ransom(~c4264035@2a09:bac0:72::82f:c34) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-06 04:00:04 +0100plutoniix(~q@184.82.196.105)
2021-01-06 04:00:10 +0100plutoniix(~q@184.82.196.105) (Max SendQ exceeded)
2021-01-06 04:00:39 +0100plutoniix(~q@184.82.196.105)
2021-01-06 04:01:15 +0100jespada(~jespada@90.254.245.49)
2021-01-06 04:01:26 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2021-01-06 04:06:22 +0100lagothrixGuest98014
2021-01-06 04:06:22 +0100xirhtogal(~lagothrix@unaffiliated/lagothrix)
2021-01-06 04:06:22 +0100Guest98014(~lagothrix@unaffiliated/lagothrix) (Killed (hitchcock.freenode.net (Nickname regained by services)))
2021-01-06 04:06:22 +0100xirhtogallagothrix
2021-01-06 04:07:26 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 256 seconds)
2021-01-06 04:08:53 +0100quinn(~quinn@c-73-223-224-163.hsd1.ca.comcast.net)
2021-01-06 04:09:26 +0100phadej(phadej@huma.la)
2021-01-06 04:09:57 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-06 04:10:03 +0100phadej(phadej@huma.la) (Read error: Connection reset by peer)
2021-01-06 04:10:26 +0100adamwespiser(~adamwespi@209.6.43.158)
2021-01-06 04:12:45 +0100phadej(phadej@huma.la)
2021-01-06 04:13:08 +0100phadej(phadej@huma.la) (Read error: Connection reset by peer)
2021-01-06 04:13:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-01-06 04:13:48 +0100phadej(phadej@62.204.15.134)
2021-01-06 04:13:53 +0100ryanbooker(uid4340@gateway/web/irccloud.com/x-hbbtuufbzmpoieub) (Quit: Connection closed for inactivity)
2021-01-06 04:14:00 +0100phadej(phadej@62.204.15.134) (Read error: Connection reset by peer)
2021-01-06 04:14:15 +0100jfe(~user@pool-71-184-149-134.bstnma.fios.verizon.net)
2021-01-06 04:14:37 +0100adamwesp_(~adamwespi@107.181.19.30) (Ping timeout: 264 seconds)
2021-01-06 04:17:07 +0100adamwespiser(~adamwespi@209.6.43.158) (Ping timeout: 246 seconds)
2021-01-06 04:22:48 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-06 04:23:10 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-06 04:25:34 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-06 04:25:54 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33)
2021-01-06 04:26:20 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-01-06 04:28:11 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:ad75:1255:fdff:5733)
2021-01-06 04:28:50 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-01-06 04:29:01 +0100 <siraben> Can someone help me understand why this build is failing? https://github.com/siraben/compiler/runs/1651026614?check_suite_focus=true
2021-01-06 04:29:18 +0100 <siraben> Confused about the CPP error
2021-01-06 04:32:39 +0100 <ephemient> looks exactly like https://stackoverflow.com/q/7412548
2021-01-06 04:35:25 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:e95c:b04f:cb75:a96) (Read error: Connection reset by peer)
2021-01-06 04:35:59 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 272 seconds)
2021-01-06 04:40:39 +0100ransom(~c4264035@2a09:bac0:72::82f:c34)
2021-01-06 04:44:37 +0100mirrorbird(~psutcliff@m83-187-174-153.cust.tele2.se) (Ping timeout: 264 seconds)
2021-01-06 04:47:32 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-06 04:49:36 +0100 <siraben> ephemient: Thank you, I'll try that
2021-01-06 04:50:30 +0100jedws(~jedws@121.209.189.201)
2021-01-06 04:51:08 +0100 <jared-w> Is there a most-principled and least-likey-to-blow-up way to have a cabal test suite that tests the actual built executable of a program?
2021-01-06 04:52:04 +0100 <jared-w> (To be clear, I am really hoping the answer is not `cabal exec -- cabal test --enable-tests`)
2021-01-06 04:52:51 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-06 04:53:21 +0100 <ezzieyguywuf> jared-w: I've made a small `MyExeTest` target before, where `main` just poked some of the outermost pieces of my exe
2021-01-06 04:53:31 +0100 <ezzieyguywuf> or even just call :main of the exe
2021-01-06 04:53:37 +0100theDon(~td@94.134.91.206) (Ping timeout: 264 seconds)
2021-01-06 04:53:41 +0100adamwespiser(~adamwespi@209.6.43.158)
2021-01-06 04:53:56 +0100 <ezzieyguywuf> but my use-case was very simple, and "Just Worked ™" for me, dunno about the least-likely-to-blow-up-itiveness of it
2021-01-06 04:55:21 +0100theDon(~td@94.134.91.66)
2021-01-06 04:56:30 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-06 04:56:39 +0100 <jared-w> I'm wanting real integration tests, basically. Cabal's test stanzas work fine for unit tests but seem to be really lacking in integration testing (where it's important that what you're testing is the same exact bit-for-bit binary that you'll ship, not "the main function"). Otherwise there's nothing wrong with calling the exe like a library (ie the main function strategy you desribed)
2021-01-06 04:58:15 +0100nineonine(~nineonine@50.216.62.2)
2021-01-06 05:00:02 +0100alexelcu_(~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-06 05:00:12 +0100Tops21(~Tobias@dyndsl-095-033-094-030.ewe-ip-backbone.de)
2021-01-06 05:01:03 +0100alexelcu(~alexelcu@142.93.180.198)
2021-01-06 05:01:46 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-01-06 05:01:55 +0100adamwespiser(~adamwespi@209.6.43.158) (Ping timeout: 246 seconds)
2021-01-06 05:02:58 +0100Tops2(~Tobias@dyndsl-095-033-094-030.ewe-ip-backbone.de) (Ping timeout: 246 seconds)
2021-01-06 05:03:18 +0100zaquest(~notzaques@5.128.210.178)
2021-01-06 05:04:32 +0100djellemah(~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54) (Ping timeout: 260 seconds)
2021-01-06 05:05:10 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Ping timeout: 268 seconds)
2021-01-06 05:05:27 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2021-01-06 05:05:45 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
2021-01-06 05:06:03 +0100thunderrd(~thunderrd@183.182.111.131) (*.net *.split)
2021-01-06 05:12:27 +0100thunderrd(~thunderrd@183.182.111.131)
2021-01-06 05:19:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-06 05:19:23 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2021-01-06 05:20:15 +0100notzmv(~user@unaffiliated/zmv)
2021-01-06 05:21:25 +0100 <jared-w> Found it: https://cabal.readthedocs.io/en/3.4/cabal-package.html#pkg-field-build-tool-depends
2021-01-06 05:24:01 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-06 05:24:04 +0100 <jared-w> Had to *exhaustively* read the docs for cabal to find this functionality. I thought it was exclusively for a hard-coded set of magical tools (https://cabal.readthedocs.io/en/3.4/cabal-package.html#buildtoolsmap) but there's a single sentence in the documentation that actually lays out that you can use it for the use-case of testing your own binary
2021-01-06 05:24:41 +0100 <jared-w> Writing good docs are hard y'all, don't let anyone tell you otherwise :)
2021-01-06 05:25:10 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Client Quit)
2021-01-06 05:25:14 +0100 <ezzieyguywuf> jared-w: do you live in the south?
2021-01-06 05:25:30 +0100 <ezzieyguywuf> I don't usually find other folks on irc saying "y'all"
2021-01-06 05:25:34 +0100 <ezzieyguywuf> (other than me)
2021-01-06 05:27:12 +0100 <jared-w> Funnily enough I'm from Portland, OR, which is about as far as you can get from the south lol
2021-01-06 05:28:30 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-06 05:29:09 +0100 <ezzieyguywuf> lol!
2021-01-06 05:29:12 +0100 <ezzieyguywuf> *shrug*
2021-01-06 05:29:39 +0100spopejoy(~stuart@ool-44c5f8c9.dyn.optonline.net) (Quit: spopejoy)
2021-01-06 05:32:07 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-06 05:35:39 +0100troydm(~troydm@unaffiliated/troydm) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
2021-01-06 05:36:46 +0100troydm(~troydm@unaffiliated/troydm)
2021-01-06 05:46:45 +0100adamwespiser(~adamwespi@209.6.43.158)
2021-01-06 05:47:15 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 256 seconds)
2021-01-06 05:47:25 +0100MrMobius(~MrMobius@208.58.206.154)
2021-01-06 05:48:21 +0100 <MrMobius> hi, im trying to install haskell for windows. I installed chocolatey but get the error "String cannot be of zero length." when I try to install haskell-dev. any idea what I can do?
2021-01-06 05:49:37 +0100 <ezzieyguywuf> MrMobius: have you tried ghcup?
2021-01-06 05:50:12 +0100 <MrMobius> ezzieyguywuf, no, this is all ive tried
2021-01-06 05:50:56 +0100adamwespiser(~adamwespi@209.6.43.158) (Ping timeout: 240 seconds)
2021-01-06 05:51:01 +0100 <ezzieyguywuf> MrMobius: I think ghcup is typically the recommended method of installation
2021-01-06 05:51:32 +0100 <MrMobius> ezzieyguywuf, looks like its for the linux subsystem not windows
2021-01-06 05:52:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-01-06 05:53:54 +0100spopejoy(~stuart@ool-44c5f8c9.dyn.optonline.net)
2021-01-06 05:53:56 +0100 <ezzieyguywuf> MrMobius: hrm, i guess you're right
2021-01-06 05:54:17 +0100 <ezzieyguywuf> MrMobius: ah, I think I had issues installing, or didn't want to use chocolatey or something, and ended up using stack instead
2021-01-06 05:54:43 +0100 <ezzieyguywuf> MrMobius: https://docs.haskellstack.org/en/stable/install_and_upgrade/
2021-01-06 05:54:48 +0100ransom(~c4264035@2a09:bac0:72::82f:c34) (Read error: Connection reset by peer)
2021-01-06 05:54:55 +0100ransom_(~c4264035@8.47.12.52)
2021-01-06 05:55:23 +0100spopejoy(~stuart@ool-44c5f8c9.dyn.optonline.net) (Client Quit)
2021-01-06 05:57:02 +0100jduhamel(~textual@bras-base-toroon4664w-grc-16-184-145-103-248.dsl.bell.ca) (Ping timeout: 256 seconds)
2021-01-06 06:00:10 +0100sgibber2018(~arch-gibb@208.85.237.144)
2021-01-06 06:00:11 +0100 <MrMobius> ezzieyguywuf, and I should be able to compile with just stack?
2021-01-06 06:00:52 +0100 <ezzieyguywuf> MrMobius: absolutely, stack will provide you with ghc and cabal-install, which are really the only two building blocks you should need to do anything with haskell
2021-01-06 06:01:00 +0100Tario(~Tario@201.192.165.173)
2021-01-06 06:01:09 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-mfwhrfcnbyerpdae) ()
2021-01-06 06:01:20 +0100 <ezzieyguywuf> MrMobius: however, to make life easier, since you'll be using stack, you should do things 'the stack way', i.e. 'stack build' instead of 'cabal build', etc...
2021-01-06 06:02:34 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Ping timeout: 260 seconds)
2021-01-06 06:02:56 +0100dfeuer(~dfeuer@pool-108-18-223-60.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2021-01-06 06:05:37 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds)
2021-01-06 06:05:47 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 260 seconds)
2021-01-06 06:06:49 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-06 06:07:00 +0100Tops21(~Tobias@dyndsl-095-033-094-030.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2021-01-06 06:09:28 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection)
2021-01-06 06:11:34 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 246 seconds)
2021-01-06 06:17:23 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Ping timeout: 265 seconds)
2021-01-06 06:18:40 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2021-01-06 06:20:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-06 06:23:01 +0100DTZUZU(~DTZUZU@205.ip-149-56-132.net) (Read error: Connection reset by peer)
2021-01-06 06:23:49 +0100ransom(~c4264035@70-59-22-250.hlrn.qwest.net)
2021-01-06 06:24:19 +0100ADG1089__(~aditya@223.236.177.109)
2021-01-06 06:24:59 +0100DTZUZU(~DTZUZU@205.ip-149-56-132.net)
2021-01-06 06:25:07 +0100ransom_(~c4264035@8.47.12.52) (Ping timeout: 265 seconds)
2021-01-06 06:26:18 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-01-06 06:26:55 +0100 <MrMobius> hmm, I dont think I understand how this works
2021-01-06 06:27:38 +0100 <MrMobius> "stack ghci" gets me to a Prelude prompt but "2+2" shows nothing then changes the Prelude prompt to the test project I tried to build
2021-01-06 06:27:39 +0100guest15(~user@49.5.6.87) (Read error: Connection reset by peer)
2021-01-06 06:27:48 +0100guest15(~user@49.5.6.87)
2021-01-06 06:28:03 +0100 <MrMobius> pressing enter changes the prompt between Prelude and the project name seemingly at random. is this right?
2021-01-06 06:28:46 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-06 06:29:28 +0100christo(~chris@81.96.113.213)
2021-01-06 06:29:32 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-01-06 06:30:53 +0100 <sm[m]> no
2021-01-06 06:33:45 +0100arahael(~arahael@61.68.75.69)
2021-01-06 06:33:49 +0100christo(~chris@81.96.113.213) (Ping timeout: 264 seconds)
2021-01-06 06:34:21 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-06 06:35:10 +0100 <MrMobius> https://pastebin.com/iBLLaYJK
2021-01-06 06:35:13 +0100sm2n_sm2n
2021-01-06 06:39:53 +0100 <sm[m]> MrMobius: that seems very messed up
2021-01-06 06:39:53 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
2021-01-06 06:40:14 +0100 <sm[m]> stack --version ? What kind of window are you running in ?
2021-01-06 06:40:39 +0100 <MrMobius> Version 2.5.1, Git revision d6ab861544918185236cf826cb2028abb266d6d5 x86_64 hpack-0.33.0
2021-01-06 06:41:00 +0100 <MrMobius> windows 10, running at command line as administrator
2021-01-06 06:41:17 +0100chenshen(~chenshen@2620:10d:c090:400::5:ce60)
2021-01-06 06:41:31 +0100 <sm[m]> does stack exec -- ghci work any better ?
2021-01-06 06:42:18 +0100 <MrMobius> sm[m], same behavior
2021-01-06 06:42:28 +0100christo(~chris@81.96.113.213)
2021-01-06 06:42:51 +0100 <sm[m]> perhaps there's something related in the stack issue tracker
2021-01-06 06:43:59 +0100 <MrMobius> heh maybe
2021-01-06 06:44:09 +0100 <MrMobius> not off to a good start learning haskell lol
2021-01-06 06:44:39 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-06 06:44:53 +0100 <ezzieyguywuf> MrMobius: :(
2021-01-06 06:45:18 +0100 <sm[m]> Not one we've heard before in here
2021-01-06 06:45:26 +0100 <sm[m]> this issue
2021-01-06 06:45:49 +0100 <ezzieyguywuf> I've succesfully installed stack on windows and used the repl, but I can't say I've used it extensively as I mostly do my dev on linux
2021-01-06 06:46:03 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-01-06 06:46:22 +0100 <sm[m]> any chance you have another ghci running ? "Have you trying rebooting windows" ?
2021-01-06 06:47:56 +0100ADG1089__(~aditya@223.236.177.109) (Remote host closed the connection)
2021-01-06 06:49:10 +0100monochrom(trebla@216.138.220.146) (Quit: NO CARRIER)
2021-01-06 06:49:24 +0100 <MrMobius> no other ghci running
2021-01-06 06:49:29 +0100 <MrMobius> ill try a restart
2021-01-06 06:49:42 +0100ADG1089__(~aditya@223.236.177.109)
2021-01-06 06:50:37 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds)
2021-01-06 06:50:37 +0100rajivr(uid269651@gateway/web/irccloud.com/x-faovxbrouyrpmypw)
2021-01-06 06:51:39 +0100 <rajivr> Would it be okay to ask category theory related question here?
2021-01-06 06:52:54 +0100 <koz_> rajivr: You can try, but there may not be folks who can field it.
2021-01-06 06:56:15 +0100 <rajivr> Thanks koz_ In this https://i.imgur.com/3Gr9Nu5.png diagram, Is the Hom-set(X,Y) just {f} , or is it {f, f o id_x}?
2021-01-06 06:57:07 +0100 <dolio> f . id = f
2021-01-06 06:57:30 +0100 <dolio> So those are the same set.
2021-01-06 06:57:58 +0100monochrom(trebla@216.138.220.146)
2021-01-06 06:58:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-06 06:59:13 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-01-06 06:59:33 +0100 <rajivr> dan64: That's correct. :-) Thanks. for some reason, I missed thinking along that line.
2021-01-06 07:00:37 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds)
2021-01-06 07:02:38 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: Lost terminal)
2021-01-06 07:06:02 +0100notzmv(~user@unaffiliated/zmv) (Ping timeout: 264 seconds)
2021-01-06 07:11:27 +0100 <sm[m]> well MrMobius ?
2021-01-06 07:16:22 +0100 <koz_> sm[m]: Still rebooting Windows probbo.
2021-01-06 07:18:23 +0100rmk236(~lcampos@ip-37-201-210-153.hsi13.unitymediagroup.de)
2021-01-06 07:20:06 +0100 <sm[m]> thought it was a bit quicker these days
2021-01-06 07:21:14 +0100 <koz_> Depends on how much money you wanna throw at hardware to fix it, and what else you're running.
2021-01-06 07:23:04 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 260 seconds)
2021-01-06 07:24:34 +0100rmk236(~lcampos@ip-37-201-210-153.hsi13.unitymediagroup.de) (Ping timeout: 272 seconds)
2021-01-06 07:25:13 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-06 07:25:17 +0100rmk236(~lcampos@2a02:908:3616:b100:ad41:f5e6:8b3a:bfc3)
2021-01-06 07:27:49 +0100nyd(~nyd@unaffiliated/elysian)
2021-01-06 07:28:49 +0100rmk236(~lcampos@2a02:908:3616:b100:ad41:f5e6:8b3a:bfc3) (Remote host closed the connection)
2021-01-06 07:30:54 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-01-06 07:31:43 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-01-06 07:32:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-01-06 07:46:05 +0100ransom(~c4264035@70-59-22-250.hlrn.qwest.net) (Ping timeout: 240 seconds)
2021-01-06 07:47:08 +0100nineonin_(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-06 07:47:53 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-01-06 07:48:06 +0100adamwespiser(~adamwespi@209.6.43.158)
2021-01-06 07:50:25 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 240 seconds)
2021-01-06 07:52:13 +0100ransom(~c4264035@2a09:bac0:72::82f:c34)
2021-01-06 07:52:21 +0100ransom(~c4264035@2a09:bac0:72::82f:c34) (Client Quit)
2021-01-06 07:52:22 +0100adamwespiser(~adamwespi@209.6.43.158) (Ping timeout: 246 seconds)
2021-01-06 07:53:37 +0100phasespace(~sar@89-162-33-21.fiber.signal.no) (Ping timeout: 264 seconds)
2021-01-06 07:56:35 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007)
2021-01-06 08:01:01 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-06 08:03:49 +0100thunderrd(~thunderrd@183.182.111.131) (Ping timeout: 264 seconds)
2021-01-06 08:04:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-06 08:05:19 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-01-06 08:05:38 +0100chenshen(~chenshen@2620:10d:c090:400::5:ce60) (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
2021-01-06 08:10:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-01-06 08:12:34 +0100dirediresalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2021-01-06 08:12:43 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-01-06 08:14:15 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-06 08:14:30 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-01-06 08:17:45 +0100thunderrd(~thunderrd@183.182.115.136)
2021-01-06 08:17:59 +0100 <jared-w> GHC 8.8.4 is p'screwed on windows. Ideally you should be using GHC 8.10.3 https://www.stackage.org/nightly-2021-01-05
2021-01-06 08:18:33 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 256 seconds)
2021-01-06 08:18:34 +0100phasespace(~sar@80-89-47-117.inet.signal.no)
2021-01-06 08:18:58 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-01-06 08:19:28 +0100 <jared-w> Try running `stack --resolver nightly-2021-01-05 ghci`
2021-01-06 08:19:49 +0100graf_blutwurst(~user@2001:171b:226e:adc0:fc0a:8b21:4a12:4e1f)
2021-01-06 08:22:38 +0100chenshen(~chenshen@2620:10d:c090:400::5:ce60)
2021-01-06 08:23:31 +0100 <gentauro> jared-w: ideally? how about no
2021-01-06 08:23:44 +0100chenshen(~chenshen@2620:10d:c090:400::5:ce60) (Client Quit)
2021-01-06 08:23:46 +0100 <gentauro> people should be using the latest LTS
2021-01-06 08:23:57 +0100 <jared-w> You're right, "ideally" is a bad choice of words
2021-01-06 08:24:14 +0100 <gentauro> nightly should just be used by people that want to help find issues
2021-01-06 08:24:49 +0100emptyflask(~jon@136.49.71.178) (Ping timeout: 264 seconds)
2021-01-06 08:25:10 +0100emptyflask(~jon@136.49.71.178)
2021-01-06 08:25:18 +0100 <jared-w> That said, the entire GHC 8.8 series has a fairly persistent set of issues for windows support. So normally I'd say use the latest LTS, but given that MrMobius is on Windows, that's not going to pan out well for them
2021-01-06 08:25:54 +0100 <jared-w> (and nightly is pretty harmless if you're just trying to get '2+2' working)
2021-01-06 08:27:11 +0100 <jared-w> although it's not as broken as GHC 8.10.2 was for windows :) https://www.stackage.org/blog/2020/08/ghc-8-10-2-windows-workaround
2021-01-06 08:27:16 +0100 <gentauro> jared-w: I have no exp with Haskell on Windows
2021-01-06 08:27:31 +0100 <gentauro> but I would still think that using nightly could only make things worse?
2021-01-06 08:27:49 +0100 <gentauro> as mentioned before all issues that could appear would make the UX less pleasant
2021-01-06 08:27:55 +0100 <gentauro> (thant it already is?)
2021-01-06 08:28:11 +0100 <gentauro> maybe people on Windows should just use Haskell with the WSL
2021-01-06 08:28:52 +0100 <jared-w> The sole purpose of the nightly here is to get access to the ghc 8.10.3 compiler. A beginner isn't going to try and use a nightly stackage with 47 libraries + GHC plugins and weird esoteric config setups, they usually just want to try a few hello world examples and use the prelude. Nightly is fine for that (and honestly fine for a lot of other things too)
2021-01-06 08:30:02 +0100emptyflask(~jon@136.49.71.178) (Ping timeout: 256 seconds)
2021-01-06 08:32:01 +0100 <gentauro> a beginner should have a pleasent experience when trying a new language. The `bad-old-days` with the `cabal-hell` are over. We should never revert to that again (cabal-hell was the reason I didn't spend that much time with Haskell during my uni years)
2021-01-06 08:32:25 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-01-06 08:32:48 +0100Boomerang(~Boomerang@2a05:f6c7:2179:0:8da5:2e46:f1e1:ab48)
2021-01-06 08:32:54 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-06 08:33:35 +0100 <jared-w> people on windows should use chocolatey if possible. It makes a lot of things easier and Tamar puts a *lot* of work into smoothing over UI/UX issues with it. https://hub.zhox.com/posts/introducing-haskell-dev/ (although a bit ironically, `haskell-dev` isn't really maintained much and you should just use `choco install ghc` and call it a day; it'll work much more reliably)
2021-01-06 08:36:24 +0100 <jared-w> gentauro: right, which is why I'm a bit puzzled at the suggestion to use the LTS of stack instead of GHC 8.10.3 which is more stable and usable for windows users. Larger and more consistent package-set compatibility doesn't make much sense if you can't get 2+2 to work in a repl
2021-01-06 08:37:40 +0100chenshen(~chenshen@2620:10d:c090:400::5:ce60)
2021-01-06 08:38:42 +0100chenshen(~chenshen@2620:10d:c090:400::5:ce60) (Client Quit)
2021-01-06 08:41:29 +0100 <gentauro> like I say, I can't provide any specific input with regard of Windows 10 since I have never done any Haskell dev there. My comments were just on a high-level
2021-01-06 08:43:04 +0100StoneToad(~StoneToad@104-192-232-50.ppp.storm.ca) (Ping timeout: 256 seconds)
2021-01-06 08:43:42 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-06 08:45:13 +0100ADG1089__(~aditya@223.236.177.109) (Ping timeout: 264 seconds)
2021-01-06 08:46:53 +0100dandels(~dandels@unaffiliated/dandels)
2021-01-06 08:48:35 +0100StoneToad(~StoneToad@104-192-232-4.ppp.storm.ca)
2021-01-06 08:55:15 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-01-06 08:59:23 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2021-01-06 09:00:03 +0100adamwespiser(~adamwespi@209.6.43.158)
2021-01-06 09:01:44 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:ad75:1255:fdff:5733) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-06 09:04:05 +0100adamwespiser(~adamwespi@209.6.43.158) (Ping timeout: 240 seconds)
2021-01-06 09:06:47 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-01-06 09:15:43 +0100ps-auxw(~arneb@p548d571d.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2021-01-06 09:17:07 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ec23:2fba:6a47:f771) (Remote host closed the connection)
2021-01-06 09:17:38 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ec23:2fba:6a47:f771)
2021-01-06 09:17:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-01-06 09:18:53 +0100chenshen(~chenshen@2620:10d:c090:400::5:ce60)
2021-01-06 09:19:56 +0100chenshen(~chenshen@2620:10d:c090:400::5:ce60) (Client Quit)
2021-01-06 09:20:36 +0100eager_lambda(~gdrvnl@cpe-76-94-36-134.socal.res.rr.com) (Ping timeout: 240 seconds)
2021-01-06 09:21:22 +0100ps-auxw(~arneb@p548c6e54.dip0.t-ipconnect.de)
2021-01-06 09:22:14 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ec23:2fba:6a47:f771) (Ping timeout: 264 seconds)
2021-01-06 09:24:43 +0100eager_lambda(~gdrvnl@cpe-76-94-36-134.socal.res.rr.com)
2021-01-06 09:27:59 +0100plutoniix(~q@184.82.196.105) (Quit: Leaving)
2021-01-06 09:30:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-06 09:33:11 +0100plutoniix(~q@184.82.196.105)
2021-01-06 09:34:00 +0100chenshen(~chenshen@2620:10d:c090:400::5:ce60)
2021-01-06 09:34:14 +0100argento(~argent0@168.227.96.26) (Remote host closed the connection)
2021-01-06 09:34:55 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-01-06 09:37:01 +0100StoneToad(~StoneToad@104-192-232-4.ppp.storm.ca) (Ping timeout: 246 seconds)
2021-01-06 09:38:11 +0100adamwespiser(~adamwespi@209.6.43.158)
2021-01-06 09:42:37 +0100adamwespiser(~adamwespi@209.6.43.158) (Ping timeout: 246 seconds)
2021-01-06 09:42:48 +0100nineonin_(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-06 09:45:12 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de)
2021-01-06 09:46:31 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-06 09:48:59 +0100 <DigitalKiwi> who is this person that's taking over all of the haskell repos D:
2021-01-06 09:50:30 +0100chenshen(~chenshen@2620:10d:c090:400::5:ce60) (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
2021-01-06 09:50:45 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds)
2021-01-06 09:50:49 +0100 <DigitalKiwi> https://mostlyabsurd.com/files/2021-01-06-085019_1088x206_scrot.png
2021-01-06 09:51:55 +0100 <dminuoso> DigitalKiwi: "recipe" what is this from?
2021-01-06 09:52:55 +0100 <DigitalKiwi> is this haskells Event-Stream incident D:
2021-01-06 09:53:07 +0100 <DigitalKiwi> doom-emacs
2021-01-06 09:53:28 +0100 <dminuoso> That seems like a doom-emacs problem?
2021-01-06 09:54:11 +0100 <DigitalKiwi> i mean it'd be more of a problem if it just changed it without asking me :P
2021-01-06 09:54:40 +0100lordyod(~lordyod@c-67-169-144-132.hsd1.ca.comcast.net)
2021-01-06 09:55:00 +0100olban(~olban@213.152.162.154)
2021-01-06 09:55:28 +0100DigitalKiwiwonders who even has lpaste.com domain anymore
2021-01-06 09:57:04 +0100hwabyong(~hwabyong@ec2-3-221-194-167.compute-1.amazonaws.com) (Ping timeout: 260 seconds)
2021-01-06 09:57:35 +0100 <DigitalKiwi> How to proceed? (1, 2, 3, 4, 5) 4
2021-01-06 09:57:36 +0100 <DigitalKiwi> Really delete remote "origin"? (y or n) y
2021-01-06 09:57:37 +0100 <DigitalKiwi> rip
2021-01-06 10:05:43 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 246 seconds)
2021-01-06 10:11:51 +0100chenshen(~chenshen@2620:10d:c090:400::5:ce60)
2021-01-06 10:12:13 +0100dandels(~dandels@unaffiliated/dandels) (Ping timeout: 264 seconds)
2021-01-06 10:12:45 +0100 <tomsmeding> lpaste.com seems to be for sale DigitalKiwi
2021-01-06 10:12:58 +0100chenshen(~chenshen@2620:10d:c090:400::5:ce60) (Client Quit)
2021-01-06 10:13:10 +0100 <tomsmeding> if you're ready to plunk down $5.5k it's yours :p
2021-01-06 10:13:15 +0100 <DigitalKiwi> oh
2021-01-06 10:13:49 +0100hwabyong(~hwabyong@ec2-3-221-194-167.compute-1.amazonaws.com)
2021-01-06 10:14:03 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-06 10:14:51 +0100LKoen(~LKoen@174.175.9.109.rev.sfr.net)
2021-01-06 10:15:06 +0100Deide(~Deide@217.155.19.23)
2021-01-06 10:15:24 +0100kuribas(~user@ptr-25vy0i7d7aymgmplx2i.18120a2.ip6.access.telenet.be)
2021-01-06 10:16:31 +0100 <DigitalKiwi> does chris done still have it i tried getting ahold of him when he said he wanted to get rid of it and wanted someone to take it over...
2021-01-06 10:17:12 +0100 <DigitalKiwi> pastebins are kind of my thing i've made 4 of them :|
2021-01-06 10:17:22 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-06 10:17:24 +0100 <tomsmeding> probably if godaddy offers the domain for sale, it's not in Chris' posession anymore
2021-01-06 10:17:35 +0100 <tomsmeding> *possession
2021-01-06 10:18:27 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-06 10:18:49 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 264 seconds)
2021-01-06 10:19:13 +0100mapperr(~mapperr@vmi389916.contaboserver.net) (Remote host closed the connection)
2021-01-06 10:19:51 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-06 10:20:17 +0100mapperr(~mapperr@vmi389916.contaboserver.net)
2021-01-06 10:20:28 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-06 10:20:38 +0100 <tomsmeding> DigitalKiwi: what did the 'l' stand for in lpaste
2021-01-06 10:21:11 +0100 <DigitalKiwi> it stood for i love paste
2021-01-06 10:23:54 +0100 <DigitalKiwi> lambda i think
2021-01-06 10:24:27 +0100 <DigitalKiwi> also known as the haskell logo
2021-01-06 10:24:37 +0100 <merijn> We used to have hpaste, but that domain got lost
2021-01-06 10:24:48 +0100 <merijn> So lpaste was registered as new domain for it
2021-01-06 10:25:20 +0100 <DigitalKiwi> and there are still clients on hackage that point to them heh
2021-01-06 10:25:25 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 264 seconds)
2021-01-06 10:26:14 +0100 <idnar> @type \f -> fmap (fmap f)
2021-01-06 10:26:16 +0100 <lambdabot> (Functor f1, Functor f2) => (a -> b) -> f1 (f2 a) -> f1 (f2 b)
2021-01-06 10:27:00 +0100 <idnar> @hoogle (Functor f1, Functor f2) => (a -> b) -> f1 (f2 a) -> f1 (f2 b)
2021-01-06 10:27:01 +0100 <lambdabot> Protolude (<<$>>) :: (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b)
2021-01-06 10:27:01 +0100 <lambdabot> Protolude.Functor (<<$>>) :: (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b)
2021-01-06 10:27:01 +0100 <lambdabot> Relude.Functor.Fmap (<<$>>) :: (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b)
2021-01-06 10:27:48 +0100 <DigitalKiwi> my first paste client was luapaste and lpaste was haskell and now my latest paste client is haskell...
2021-01-06 10:28:30 +0100 <kuribas> merijn: I just figured that you don't need to use typeclasses for GADT parsing. You can just make a different parser for each (polymorphic) type.
2021-01-06 10:28:50 +0100 <kuribas> merijn: then you don't need to make an instance for every type.
2021-01-06 10:28:56 +0100 <kuribas> just for the types in the GADT :)
2021-01-06 10:29:35 +0100 <idnar> @type \f g x -> (f x, g x)
2021-01-06 10:29:37 +0100 <lambdabot> (t -> a) -> (t -> b) -> t -> (a, b)
2021-01-06 10:30:01 +0100 <idnar> @hoogle (t -> a) -> (t -> b) -> t -> (a, b)
2021-01-06 10:30:04 +0100 <lambdabot> Data.Tuple.Extra (&&&) :: (a -> b) -> (a -> c) -> a -> (b, c)
2021-01-06 10:30:04 +0100 <lambdabot> Extra (&&&) :: (a -> b) -> (a -> c) -> a -> (b, c)
2021-01-06 10:30:04 +0100 <lambdabot> Control.Wire.Core (&&&!) :: (a -> b) -> (a -> c) -> (a -> (b, c))
2021-01-06 10:30:21 +0100 <idnar> ah
2021-01-06 10:33:20 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds)
2021-01-06 10:34:31 +0100pjb(~t@2a01cb04063ec500d400c5fa56f501d7.ipv6.abo.wanadoo.fr) (Read error: Connection reset by peer)
2021-01-06 10:35:33 +0100xff0x(~fox@2001:1a81:52e0:100:232f:c24f:d201:6316) (Ping timeout: 260 seconds)
2021-01-06 10:36:24 +0100xff0x(~fox@2001:1a81:52e0:100:91d9:e205:a56c:7d48)
2021-01-06 10:37:00 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-flblofqkdcnkmtsc) (Quit: Connection closed for inactivity)
2021-01-06 10:39:09 +0100 <kuribas> hmm, but then I need to specialize each polymorphic parser...
2021-01-06 10:43:05 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-01-06 10:47:28 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33) (Remote host closed the connection)
2021-01-06 10:52:16 +0100L29Ah(~L29Ah@unaffiliated/l29ah)
2021-01-06 10:52:21 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2021-01-06 10:55:45 +0100dh_(dh@bsd.ee) (Quit: "Fhtagn-Nagh Yog Sothoth")
2021-01-06 10:55:58 +0100dh(dh@bsd.ee)
2021-01-06 10:58:46 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-06 10:59:26 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-06 10:59:51 +0100 <kuribas> merijn: I think if I use this solution, I would make some TH to automate most of it.
2021-01-06 11:00:17 +0100nucranium(~nucranium@2a02:8010:6173:0:24ec:3ce1:39cf:bba2)
2021-01-06 11:00:53 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception)
2021-01-06 11:01:10 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-06 11:02:17 +0100tomsmedingshudders
2021-01-06 11:03:44 +0100MidAutumnHotaru(~MidAutumn@154.91.197.93) (Quit: Quit 啾)
2021-01-06 11:04:03 +0100MidAutumnHotaru(~MidAutumn@154.91.197.93)
2021-01-06 11:04:06 +0100jmchael(~jmchael@81.174.205.210)
2021-01-06 11:05:52 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds)
2021-01-06 11:08:03 +0100mirrorbird(~psutcliff@2a00:801:42b:8314:3772:eb7f:91f1:698c)
2021-01-06 11:08:14 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:ad75:1255:fdff:5733)
2021-01-06 11:17:11 +0100mirrorbird(~psutcliff@2a00:801:42b:8314:3772:eb7f:91f1:698c) (Quit: Leaving)
2021-01-06 11:18:05 +0100ADG1089__(~aditya@223.236.177.109)
2021-01-06 11:19:45 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-06 11:19:58 +0100LKoen(~LKoen@174.175.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
2021-01-06 11:23:38 +0100MidAutumnHotaru(~MidAutumn@154.91.197.93) (Changing host)
2021-01-06 11:23:38 +0100MidAutumnHotaru(~MidAutumn@unaffiliated/midautumnhotaru)
2021-01-06 11:24:07 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 246 seconds)
2021-01-06 11:25:07 +0100nyd(~nyd@unaffiliated/elysian) (Ping timeout: 272 seconds)
2021-01-06 11:26:38 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-01-06 11:26:47 +0100nyd(~nyd@unaffiliated/elysian)
2021-01-06 11:33:34 +0100knupfer(~Thunderbi@200116b824b6e0005ccc25fffe64feee.dip.versatel-1u1.de)
2021-01-06 11:35:58 +0100knupfer(~Thunderbi@200116b824b6e0005ccc25fffe64feee.dip.versatel-1u1.de) (Remote host closed the connection)
2021-01-06 11:36:00 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-06 11:36:07 +0100knupfer(~Thunderbi@200116b824b6e0000cca6c8e98481b40.dip.versatel-1u1.de)
2021-01-06 11:36:31 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-01-06 11:38:44 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2021-01-06 11:39:28 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi)
2021-01-06 11:40:13 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 246 seconds)
2021-01-06 11:47:53 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33)
2021-01-06 11:49:07 +0100thc202(~thc202@unaffiliated/thc202)
2021-01-06 11:49:25 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2021-01-06 11:51:29 +0100sgibber2018(~arch-gibb@208.85.237.144) (Quit: WeeChat 3.0)
2021-01-06 11:51:38 +0100 <kuribas> tomsmeding: hmm, I was just thinking how it makes more sense to store the type together with the expression.
2021-01-06 11:51:58 +0100 <kuribas> tomsmeding: so to serialize (TypeOf a, Expr a)
2021-01-06 11:52:52 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33) (Ping timeout: 260 seconds)
2021-01-06 11:52:53 +0100 <kuribas> tomsmeding: that solves the problem of backtracking.
2021-01-06 11:53:30 +0100 <kuribas> and actually makes more sense. Because storing an polymorphic expression is not that useful, at least not for what I need it.
2021-01-06 11:53:39 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-06 11:55:15 +0100ADG1089__(~aditya@223.236.177.109) (Remote host closed the connection)
2021-01-06 11:55:37 +0100__monty__(~toonn@unaffiliated/toonn)
2021-01-06 11:55:39 +0100ADG1089__(~aditya@223.236.177.109)
2021-01-06 11:56:00 +0100fendor(~fendor@91.141.3.164.wireless.dyn.drei.com)
2021-01-06 11:56:23 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-06 11:56:25 +0100 <kuribas> So basically data SomeExpr where SomeExpr :: TypeOf a -> Expr a -> SomeExpr
2021-01-06 12:00:13 +0100adamwespiser(~adamwespi@209.6.43.158)
2021-01-06 12:00:22 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-01-06 12:00:42 +0100adamwesp_(~adamwespi@107.181.19.30)
2021-01-06 12:00:43 +0100ADG1089__(~aditya@223.236.177.109) (Remote host closed the connection)
2021-01-06 12:01:46 +0100ADG1089__(~aditya@223.236.177.109)
2021-01-06 12:02:15 +0100Kenshi(2eee1718@46.238.23.24)
2021-01-06 12:03:30 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2021-01-06 12:03:57 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 260 seconds)
2021-01-06 12:04:23 +0100daGrevis(~daGrevis@unaffiliated/dagrevis) (Read error: Connection reset by peer)
2021-01-06 12:04:43 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2021-01-06 12:04:49 +0100adamwespiser(~adamwespi@209.6.43.158) (Ping timeout: 260 seconds)
2021-01-06 12:07:07 +0100knupfer(~Thunderbi@200116b824b6e0000cca6c8e98481b40.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-01-06 12:07:10 +0100daGrevis(~daGrevis@unaffiliated/dagrevis)
2021-01-06 12:08:18 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 272 seconds)
2021-01-06 12:09:38 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-06 12:13:46 +0100 <tomsmeding> kuribas: if you use a generic Some datatype, e.g. the one in https://hackage.haskell.org/package/some, you can do Some (Product TypeOf Expr), where Product is from Data.Functor.Product
2021-01-06 12:14:08 +0100 <tomsmeding> not saying that's better though :p
2021-01-06 12:14:37 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 264 seconds)
2021-01-06 12:14:45 +0100 <kuribas> tomsmeding: but that doesn't store the output type.
2021-01-06 12:14:46 +0100 <tomsmeding> but yes, if it makes sense it's probably easier to store the type with it
2021-01-06 12:14:59 +0100 <tomsmeding> hm?
2021-01-06 12:15:05 +0100 <tomsmeding> it's equivalent to your SomeExpr
2021-01-06 12:15:37 +0100 <kuribas> tomsmeding: no, because my SomeExpr stores the type
2021-01-06 12:15:58 +0100 <tomsmeding> data Product f g a = Product (f a) (g a)
2021-01-06 12:16:13 +0100 <tomsmeding> hence Product TypeOf Expr a = Product (TypeOf a) (Expr a)
2021-01-06 12:16:26 +0100 <kuribas> ah I see
2021-01-06 12:16:26 +0100 <tomsmeding> it's equivalent to your SomeExpr, I don't see the difference?
2021-01-06 12:16:52 +0100 <kuribas> yes, with Product it is isomorphic
2021-01-06 12:17:04 +0100 <tomsmeding> oh sorry the data constructor is Pair, not Product
2021-01-06 12:17:09 +0100 <kuribas> but what does that give me over defining my own?
2021-01-06 12:17:14 +0100 <tomsmeding> nothing :)
2021-01-06 12:17:34 +0100 <tomsmeding> well, one custom datatype less
2021-01-06 12:17:39 +0100 <tomsmeding> but a custom datatype might be useful too
2021-01-06 12:17:47 +0100 <tomsmeding> so 🤷
2021-01-06 12:18:21 +0100 <kuribas> one less custom datatype, one more package dependency :-P
2021-01-06 12:18:26 +0100 <tomsmeding> very very true
2021-01-06 12:18:53 +0100 <tomsmeding> also, storing the output type solves the backtracking for your AST, since every argument type is fully determined by the output type for your constructors
2021-01-06 12:19:10 +0100 <tomsmeding> as soon as you'd add a constructor for which that doesn't hold, the backtracking is back
2021-01-06 12:19:42 +0100 <kuribas> indeed :)
2021-01-06 12:20:30 +0100maralorn(maralornma@gateway/shell/matrix.org/x-wfwnvstmnifltoqx) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:30 +0100jesser[m](jessermatr@gateway/shell/matrix.org/x-fzvpwsyxxfsxfljc) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:30 +0100alexfmpe(alexfmpema@gateway/shell/matrix.org/x-gowqrzcegnrjuszh) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:30 +0100Ericson2314(ericson231@gateway/shell/matrix.org/x-gsevokzxekchjacg) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:30 +0100domenkozar[m](domenkozar@NixOS/user/domenkozar) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:31 +0100jtojnar(jtojnarmat@gateway/shell/matrix.org/x-fmmuispbmxgnkzny) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:31 +0100rednaZ[m](r3dnazmatr@gateway/shell/matrix.org/x-hfgocjsopdawrtek) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:31 +0100fgaz(fgazmatrix@gateway/shell/matrix.org/x-yxipcpeduqjuvcow) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:32 +0100dyniec[m](dyniecmatr@gateway/shell/matrix.org/x-qfhwjklxapmkgusb) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:32 +0100hsiktas[m](hsiktasmat@gateway/shell/matrix.org/x-glefifefdwscjcqe) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:32 +0100doct0rhu[m](doct0rhumo@gateway/shell/matrix.org/x-sarufxwodykorttc) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:32 +0100ThaEwat(thaewraptm@gateway/shell/matrix.org/x-ufbnzjraelhohfix) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:32 +0100jkaye[m](jkayematri@gateway/shell/matrix.org/x-mmksapnwkzwrlfaf) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:33 +0100pqwy[m](pqwymatrix@gateway/shell/matrix.org/x-eixrfqgyidlvnkll) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:33 +0100noIOBeforeBedtim(dissatisfi@gateway/shell/matrix.org/x-cbrqqmkjyuflpaya) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:33 +0100PotatoHatsue(berbermanp@gateway/shell/matrix.org/x-zegdpocllywoosgz) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:34 +0100cnmne[m](cnmnematri@gateway/shell/matrix.org/x-hcmqjrvmyelkqweq) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:34 +0100theduke(thedukem1@gateway/shell/matrix.org/x-phrgqvuukcgbupcm) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:34 +0100berberman[T](berberma4@gateway/shell/matrix.org/x-hsuypygvacyqzwmq) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:35 +0100jeffcasavant[m](jeffcasava@gateway/shell/matrix.org/x-nikrypbvxnsoxboc) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:35 +0100michaelpj(michaelpjm@gateway/shell/matrix.org/x-mfdqiskmtojjlmpd) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:35 +0100kadoban(kadobanmat@gateway/shell/matrix.org/x-rcjrqnbtkevnhgtr) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:35 +0100Poscat[m](poscatmatr@gateway/shell/matrix.org/x-bvzvvoefeynvfsar) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:36 +0100sm[m](simonmicma@gateway/shell/matrix.org/x-wqdqihhkkwalfrui) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:36 +0100agentofuser(agentofuse@gateway/shell/matrix.org/x-dufldhasjoocycnn) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:36 +0100bsima[m](bensimatim@gateway/shell/matrix.org/x-gdhisogubvluiqlm) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:36 +0100majjoha(majjohamat@gateway/shell/matrix.org/x-nfknmskoomgvvhht) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:36 +0100drozdziak1(drozdziak1@gateway/shell/matrix.org/x-kopfdlgfyhfmispl) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:36 +0100VarikValefor[m](varikvalef@gateway/shell/matrix.org/x-fktkvdfjumtghkwz) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:36 +0100stalactite[m](stalactite@gateway/shell/matrix.org/x-cboftgeftibsawca) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:36 +0100Hatsue[m](berbermanm@gateway/shell/matrix.org/x-rvoesmgeaopbcbkh) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:36 +0100psydruid(psydruidma@gateway/shell/matrix.org/x-strapbsmwdglzvet) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:37 +0100plumenator[m](plumenator@gateway/shell/matrix.org/x-wqtlrogjrykbhyan) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:37 +0100MrMuffles[m](mrmufflesm@gateway/shell/matrix.org/x-xyejpsqzvzaqmmkc) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:37 +0100metamod[m](metamodmat@gateway/shell/matrix.org/x-lzmujfsacobwjbwo) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:40 +0100johnnyboy[m](gifumatrix@gateway/shell/matrix.org/x-mpuodigaaerwmayk) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:40 +0100Lurkki[m](lurkkipriv@gateway/shell/matrix.org/x-djvldaecobwrcdeg) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:41 +0100falling-edge[m](falling-ed@gateway/shell/matrix.org/x-rfbansvrujteeerw) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:41 +0100siraben(sirabenmat@gateway/shell/matrix.org/x-dkjvchpaxbrsnvrk) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:41 +0100Noughtmare[m](naughtmare@gateway/shell/matrix.org/x-ctsspavkhlmrbjtt) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:41 +0100floatingpoint[m](floating5@gateway/shell/matrix.org/x-zlmdmugtshzmdqro) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:41 +0100Vanilla[m](danielm_14@gateway/shell/matrix.org/x-dgeqldxyrkfpeufk) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:41 +0100Lurkki[m]1(lurkkifene@gateway/shell/matrix.org/x-jbjjhqmxlbixvnly) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:41 +0100itai33[m](itai33matr@gateway/shell/matrix.org/x-klwkmdlkmfqsikle) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:41 +0100lnxw37d4(lnxw37d4ma@gateway/shell/matrix.org/x-cfpajotnlvpvilyo) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:43 +0100lambdaclan(lambdaclan@gateway/shell/matrix.org/x-uzlhyhsfgqzaukhe) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:44 +0100rab24ack[m](rab24ackma@gateway/shell/matrix.org/x-unlxosvvhmxtsapj) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:20:45 +0100Wraul[m](wraulmatri@gateway/shell/matrix.org/x-bchiszgwyekwoten) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:21:07 +0100unclechu(unclechuma@gateway/shell/matrix.org/x-twjgulyebrjbbbcd) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:21:07 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Quit: andreas303)
2021-01-06 12:21:09 +0100Hanma[m](hanmamatri@gateway/shell/matrix.org/x-huiiddwybeabvfvf) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:21:09 +0100psamim(samimpmatr@gateway/shell/matrix.org/x-gsdaohmlsisctzxu) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:21:09 +0100materialfuture[m(materialfu@gateway/shell/matrix.org/x-cwhzlrxokybvzeoj) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:21:09 +0100rawles(~r@unaffiliated/rawles) (Excess Flood)
2021-01-06 12:21:09 +0100srid(sridmatrix@gateway/shell/matrix.org/x-bgcumtwxpughvykl) (Quit: Bridge terminating on SIGTERM)
2021-01-06 12:21:17 +0100rawles(~r@unaffiliated/rawles)
2021-01-06 12:22:03 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-01-06 12:22:25 +0100chenshen(~chenshen@2620:10d:c090:400::5:ce60)
2021-01-06 12:23:16 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 246 seconds)
2021-01-06 12:23:31 +0100chenshen(~chenshen@2620:10d:c090:400::5:ce60) (Client Quit)
2021-01-06 12:29:43 +0100 <kuribas> I also see why using an ADT for an AST is not very useful.
2021-01-06 12:30:07 +0100Ericson2314(ericson231@gateway/shell/matrix.org/x-eycjxzyzybmehehh)
2021-01-06 12:30:11 +0100 <kuribas> I mean for storing polymorphic expressions.
2021-01-06 12:30:25 +0100dabr(~daniel@p50825a42.dip0.t-ipconnect.de)
2021-01-06 12:31:35 +0100 <gentauro> kuribas: how would store an AST if it's not in an ADT?
2021-01-06 12:32:00 +0100 <kuribas> gentauro: sorry, I mean GADT
2021-01-06 12:32:03 +0100 <kuribas> ADT is fine
2021-01-06 12:32:35 +0100 <gentauro> kuribas: fair enough :)
2021-01-06 12:33:00 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-06 12:34:06 +0100berberman_(~berberman@unaffiliated/berberman) (Ping timeout: 268 seconds)
2021-01-06 12:34:41 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-06 12:37:40 +0100Alleria(~textual@mskresolve-a.mskcc.org)
2021-01-06 12:37:44 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
2021-01-06 12:38:04 +0100AlleriaGuest20273
2021-01-06 12:38:47 +0100Kenshi(2eee1718@46.238.23.24) (Remote host closed the connection)
2021-01-06 12:38:53 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-01-06 12:38:57 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 246 seconds)
2021-01-06 12:39:51 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:dc2c:66b9:92e6:b921)
2021-01-06 12:41:28 +0100nyd(~nyd@unaffiliated/elysian) (Ping timeout: 246 seconds)
2021-01-06 12:42:32 +0100 <lortabac> kuribas: SomeExpr is almost identical to Data.Dynamic.Dynamic
2021-01-06 12:44:07 +0100 <kuribas> lortabac: but a TypeRef cannot be stored, no?
2021-01-06 12:44:29 +0100 <kuribas> TypeRep
2021-01-06 12:45:00 +0100jedws(~jedws@121.209.189.201)
2021-01-06 12:45:20 +0100 <lortabac> good question
2021-01-06 12:47:42 +0100noop_noob(31e4c3d3@49.228.195.211)
2021-01-06 12:48:41 +0100ulidtko|k(~ulidtko@193.111.48.79)
2021-01-06 12:49:13 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33)
2021-01-06 12:50:17 +0100Noughtmare[m](naughtmare@gateway/shell/matrix.org/x-elhpevndlmaavbwt)
2021-01-06 12:50:17 +0100alexfmpe(alexfmpema@gateway/shell/matrix.org/x-byegcjtdnwjrjstz)
2021-01-06 12:50:17 +0100dyniec[m](dyniecmatr@gateway/shell/matrix.org/x-dntagevwjtsssopc)
2021-01-06 12:50:17 +0100domenkozar[m](domenkozar@NixOS/user/domenkozar)
2021-01-06 12:50:17 +0100fgaz(fgazmatrix@gateway/shell/matrix.org/x-ilhbhnqcmreoygeu)
2021-01-06 12:50:17 +0100hsiktas[m](hsiktasmat@gateway/shell/matrix.org/x-whwokcjaloumigax)
2021-01-06 12:50:17 +0100johnnyboy[m](gifumatrix@gateway/shell/matrix.org/x-ddtyjxliegbymllk)
2021-01-06 12:50:18 +0100jesser[m](jessermatr@gateway/shell/matrix.org/x-ztgnpizlmfjqozxc)
2021-01-06 12:50:18 +0100jkaye[m](jkayematri@gateway/shell/matrix.org/x-ygixxwauoonufenh)
2021-01-06 12:50:18 +0100jtojnar(jtojnarmat@gateway/shell/matrix.org/x-bqcuakapvvkhqvyh)
2021-01-06 12:50:18 +0100kadoban(kadobanmat@gateway/shell/matrix.org/x-tvbkdchltyihqohm)
2021-01-06 12:50:18 +0100lambdaclan(lambdaclan@gateway/shell/matrix.org/x-qnuenoqqycybdvsq)
2021-01-06 12:50:18 +0100lnxw37d4(lnxw37d4ma@gateway/shell/matrix.org/x-zcpsgkhlxjrtufan)
2021-01-06 12:50:18 +0100psydruid(psydruidma@gateway/shell/matrix.org/x-sjzobmayhhdrnyrp)
2021-01-06 12:50:18 +0100rednaZ[m](r3dnazmatr@gateway/shell/matrix.org/x-psbwjgmwhnbfxpvd)
2021-01-06 12:50:18 +0100sm[m](simonmicma@gateway/shell/matrix.org/x-erpehckoekyivhyz)
2021-01-06 12:50:18 +0100siraben(sirabenmat@gateway/shell/matrix.org/x-ompxpchgmuwlofwe)
2021-01-06 12:50:18 +0100psamim(samimpmatr@gateway/shell/matrix.org/x-zcokmttvseaiorus)
2021-01-06 12:50:18 +0100srid(sridmatrix@gateway/shell/matrix.org/x-kurgtyubfeavcpuk)
2021-01-06 12:50:18 +0100SlackIntegration(slackbotma@gateway/shell/matrix.org/x-fhaqgxbsmcjmdpgv)
2021-01-06 12:50:18 +0100ThaEwat(thaewraptm@gateway/shell/matrix.org/x-zzghdaahzrfpgpjd)
2021-01-06 12:50:18 +0100theduke(thedukem1@gateway/shell/matrix.org/x-hegbybueqtkglolp)
2021-01-06 12:50:18 +0100unclechu(unclechuma@gateway/shell/matrix.org/x-hiknotexkoisqxxl)
2021-01-06 12:50:18 +0100rab24ack[m](rab24ackma@gateway/shell/matrix.org/x-iypkxumuyyhmektk)
2021-01-06 12:50:19 +0100pqwy[m](pqwymatrix@gateway/shell/matrix.org/x-yrqbzcfvvgvhihqp)
2021-01-06 12:50:19 +0100plumenator[m](plumenator@gateway/shell/matrix.org/x-lvykfzzrvmqptvzq)
2021-01-06 12:50:19 +0100metamod[m](metamodmat@gateway/shell/matrix.org/x-qkyweymrjkgyfpfo)
2021-01-06 12:50:19 +0100Hanma[m](hanmamatri@gateway/shell/matrix.org/x-hqagbkflkardbeyb)
2021-01-06 12:50:19 +0100stalactite[m](stalactite@gateway/shell/matrix.org/x-hmsdktjbvicqrdgd)
2021-01-06 12:50:19 +0100jeffcasavant[m](jeffcasava@gateway/shell/matrix.org/x-jkwgveuwpobvzxsf)
2021-01-06 12:50:19 +0100Poscat[m](poscatmatr@gateway/shell/matrix.org/x-vcoicgxvllexrrii)
2021-01-06 12:50:19 +0100michaelpj(michaelpjm@gateway/shell/matrix.org/x-ppnwgolzqhsbjxqk)
2021-01-06 12:50:19 +0100maralorn(maralornma@gateway/shell/matrix.org/x-ulgtlcoftthaeisp)
2021-01-06 12:50:19 +0100doct0rhu[m](doct0rhumo@gateway/shell/matrix.org/x-xqcgpfxdrrdasugy)
2021-01-06 12:50:19 +0100berberman[T](berberma4@gateway/shell/matrix.org/x-ydntbnxvrquqngkp)
2021-01-06 12:50:20 +0100Hatsue[m](berbermanm@gateway/shell/matrix.org/x-uluzliuxxqhqsyle)
2021-01-06 12:50:20 +0100majjoha(majjohamat@gateway/shell/matrix.org/x-jifgtzsbvkjppkpw)
2021-01-06 12:50:20 +0100drozdziak1(drozdziak1@gateway/shell/matrix.org/x-nhtpbwaweoyyfwgx)
2021-01-06 12:50:20 +0100PotatoHatsue(berbermanp@gateway/shell/matrix.org/x-qvbwsusysmmnlxwa)
2021-01-06 12:50:20 +0100falling-edge[m](falling-ed@gateway/shell/matrix.org/x-pckulybifhkfiaod)
2021-01-06 12:50:20 +0100noIOBeforeBedtim(dissatisfi@gateway/shell/matrix.org/x-pljvxnigkfwhdutt)
2021-01-06 12:50:20 +0100cnmne[m](cnmnematri@gateway/shell/matrix.org/x-sjfvuxbdraxbtjzp)
2021-01-06 12:50:20 +0100VarikValefor[m](varikvalef@gateway/shell/matrix.org/x-vnnpwgfssdqwbqfu)
2021-01-06 12:50:21 +0100bsima[m](bensimatim@gateway/shell/matrix.org/x-ktajiadhtjvptkuy)
2021-01-06 12:50:26 +0100MrMuffles[m](mrmufflesm@gateway/shell/matrix.org/x-ocqxcgfxuorbepel)
2021-01-06 12:50:26 +0100Vanilla[m](danielm14@gateway/shell/matrix.org/x-hwrkmoboegngyxlc)
2021-01-06 12:50:26 +0100itai33[m](itai33matr@gateway/shell/matrix.org/x-erpojaoftljshoya)
2021-01-06 12:50:26 +0100Lurkki[m](lurkkifene@gateway/shell/matrix.org/x-tqwpdpxocqfxaqic)
2021-01-06 12:50:26 +0100materialfuture[m(materialfu@gateway/shell/matrix.org/x-himioyqaldoiauxa)
2021-01-06 12:50:26 +0100Lurkki[m]1(lurkkipriv@gateway/shell/matrix.org/x-mvwakzqqfdzfbmjr)
2021-01-06 12:50:26 +0100agentofuser(agentofuse@gateway/shell/matrix.org/x-haotbgmijlnmxwen)
2021-01-06 12:50:27 +0100Wraul[m](wraulmatri@gateway/shell/matrix.org/x-ocrsiypemiiqameo)
2021-01-06 12:50:28 +0100floatingpoint[m](floating5@gateway/shell/matrix.org/x-cjdgttiluqrdsali)
2021-01-06 12:50:55 +0100xff0x(~fox@2001:1a81:52e0:100:91d9:e205:a56c:7d48) (Ping timeout: 258 seconds)
2021-01-06 12:51:34 +0100xff0x(~fox@2001:1a81:52e0:100:99c7:97dc:c017:406)
2021-01-06 12:53:24 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33) (Ping timeout: 240 seconds)
2021-01-06 12:54:43 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2021-01-06 12:54:55 +0100 <noop_noob> I have a type alias. Is there an easy way I can see all typeclass instances involving that type alias?
2021-01-06 12:55:14 +0100 <noop_noob> or is that a bad idea
2021-01-06 12:57:26 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-01-06 12:58:43 +0100 <kuribas> you cannot
2021-01-06 12:58:53 +0100 <kuribas> well only if the type is monomorphic
2021-01-06 12:59:25 +0100 <kuribas> But you cannot "see" instances, because instances are open.
2021-01-06 12:59:41 +0100 <kuribas> They can be defined at any time, like after your code is written.
2021-01-06 13:00:12 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net)
2021-01-06 13:00:20 +0100 <noop_noob> Say, what if I want to see all instances that are in scope?
2021-01-06 13:00:29 +0100 <noop_noob> Or all instances that are defined in a certain package?
2021-01-06 13:01:12 +0100jedws(~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-06 13:01:12 +0100 <lortabac> noop_noob: you can use :instances in GHCI
2021-01-06 13:01:21 +0100 <noop_noob> Thx :D
2021-01-06 13:01:34 +0100 <__monty__> @instances Monoid
2021-01-06 13:01:36 +0100 <lambdabot> (), (a -> b), (a, b), All, Any, Dual a, IO a, Maybe a, Ordering, Product a, ST s a, Sum a
2021-01-06 13:02:13 +0100 <lortabac> noop_noob: however there is no way to distinguish a type synonym from the type it refers to
2021-01-06 13:02:21 +0100 <noop_noob> I'm aware, yup
2021-01-06 13:02:41 +0100 <kuribas> @instances [a]
2021-01-06 13:02:43 +0100 <lambdabot> Couldn't find class `[a]'. Try @instances-importing
2021-01-06 13:02:44 +0100 <noop_noob> I just wanted to have a better way of figuring out a certain library lol
2021-01-06 13:03:02 +0100 <noop_noob> Wait, instances goes the wrong way, doesn't it?
2021-01-06 13:03:14 +0100 <__monty__> Yep, that's what I tried showing.
2021-01-06 13:03:21 +0100 <kuribas> noop_noob: ghci :i is very useful
2021-01-06 13:04:00 +0100 <__monty__> Sadly @info seems to just be `id` >.<
2021-01-06 13:04:32 +0100 <lortabac> noop_noob: what do you mean by wrong way?
2021-01-06 13:04:55 +0100olban(~olban@213.152.162.154) (Ping timeout: 246 seconds)
2021-01-06 13:05:05 +0100 <noop_noob> @instances seems to go from the typeclass to the type.
2021-01-06 13:05:06 +0100 <lortabac> you can type for ex. ':instances Int' and it will show all the instances involving Int
2021-01-06 13:05:07 +0100 <lambdabot> Couldn't find class `seems to go from the typeclass to the type.'. Try @instances-importing
2021-01-06 13:05:21 +0100 <noop_noob> "unknown command ':instances'"
2021-01-06 13:05:25 +0100 <noop_noob> am i doing something wrong
2021-01-06 13:05:34 +0100 <noop_noob> I have a type, I want to know its typeclasses
2021-01-06 13:05:36 +0100 <lortabac> noop_noob: lambdabot is not GHCI
2021-01-06 13:05:53 +0100 <noop_noob> ghci told me it doesn't know what :instances is lol
2021-01-06 13:06:06 +0100 <noop_noob> Oh
2021-01-06 13:06:07 +0100 <lortabac> oh you probably have an old GHCI
2021-01-06 13:06:10 +0100 <__monty__> % :instances Monoid
2021-01-06 13:06:11 +0100 <yahb> __monty__:
2021-01-06 13:06:35 +0100 <lortabac> % :instances Int
2021-01-06 13:06:35 +0100 <yahb> lortabac: instance Eq Int -- Defined in `GHC.Classes'; instance Ord Int -- Defined in `GHC.Classes'; instance Enum Int -- Defined in `GHC.Enum'; instance Num Int -- Defined in `GHC.Num'; instance Real Int -- Defined in `GHC.Real'; instance Show Int -- Defined in `GHC.Show'; instance [safe] PrintfArg Int -- Defined in `Text.Printf'; instance Data Int -- Defined in `Data.Data'; instance Bits Int -- Defined in `Data.B
2021-01-06 13:06:53 +0100 <lortabac> % :instances String
2021-01-06 13:06:53 +0100 <yahb> lortabac: instance Eq [Char] -- Defined in `GHC.Classes'; instance Monoid [Char] -- Defined in `GHC.Base'; instance Ord [Char] -- Defined in `GHC.Classes'; instance Semigroup [Char] -- Defined in `GHC.Base'; instance Show [Char] -- Defined in `GHC.Show'; instance [safe] PrintfArg [Char] -- Defined in `Text.Printf'; instance [safe] PrintfType [Char] -- Defined in `Text.Printf'; instance Data [Char] -- Defined in `D
2021-01-06 13:07:10 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-06 13:07:14 +0100Stanley00(~stanley00@unaffiliated/stanley00) ()
2021-01-06 13:07:24 +0100 <lortabac> noop_noob: there is also :i
2021-01-06 13:07:28 +0100 <noop_noob> "GHCi, version 8.8.4"
2021-01-06 13:07:39 +0100 <tomsmeding> % :i Int
2021-01-06 13:07:40 +0100 <yahb> tomsmeding: type Int :: *; data Int = I# Int#; -- Defined in `GHC.Types'; instance Eq Int -- Defined in `GHC.Classes'; instance Ord Int -- Defined in `GHC.Classes'; instance Enum Int -- Defined in `GHC.Enum'; instance Num Int -- Defined in `GHC.Num'; instance Real Int -- Defined in `GHC.Real'; instance Show Int -- Defined in `GHC.Show'; instance [safe] PrintfArg Int -- Defined in `Text.Printf'; instance Data Int --
2021-01-06 13:07:42 +0100 <noop_noob> how old is that
2021-01-06 13:07:42 +0100 <__monty__> Huh, why does :instances go the opposite way to @instances?
2021-01-06 13:07:52 +0100 <__monty__> Or does it work for both directions?
2021-01-06 13:08:20 +0100 <tomsmeding> noop_noob: 8.8.4 is not old, it's the currently recommended version
2021-01-06 13:08:31 +0100 <tomsmeding> though that will probably soon change to 8.10.something
2021-01-06 13:08:37 +0100 <tomsmeding> use :i :)
2021-01-06 13:08:47 +0100 <lortabac> sorry, by "old" I meant relative to :instances
2021-01-06 13:08:59 +0100 <noop_noob> lol
2021-01-06 13:09:09 +0100 <tomsmeding> what does :instances give over :i ?
2021-01-06 13:09:25 +0100 <tomsmeding> for me :i already works both ways
2021-01-06 13:09:33 +0100 <noop_noob> % :instances (Int -> Int)
2021-01-06 13:09:34 +0100 <yahb> noop_noob: instance [safe] Control.DeepSeq.NFData (Int -> Int) -- Defined in `Control.DeepSeq'; instance Ixed (Int -> Int) -- Defined in `Control.Lens.At'
2021-01-06 13:09:41 +0100 <noop_noob> % :i (Int -> Int)
2021-01-06 13:09:41 +0100 <yahb> noop_noob: ; <interactive>:1:2: error: parse error on input `Int'
2021-01-06 13:09:44 +0100 <noop_noob> There
2021-01-06 13:10:16 +0100 <tomsmeding> ah that makes sense
2021-01-06 13:11:30 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 246 seconds)
2021-01-06 13:14:27 +0100 <noop_noob> "Module ‘Pipes.Core’ does not export ‘pipe’"
2021-01-06 13:14:31 +0100 <noop_noob> Am I doing something dumb?
2021-01-06 13:14:56 +0100 <noop_noob> I'm just trying to "import Pipes.Core (pipe)"
2021-01-06 13:15:25 +0100 <tomsmeding> who tells you to use 'pipe'?
2021-01-06 13:15:37 +0100 <noop_noob> https://hackage.haskell.org/package/pipes-4.3.14/docs/Pipes-Core.html
2021-01-06 13:15:39 +0100 <noop_noob> it's here
2021-01-06 13:15:55 +0100 <tomsmeding> where?
2021-01-06 13:15:56 +0100 <noop_noob> "type Pipe a b = Proxy () a () b"
2021-01-06 13:16:02 +0100 <noop_noob> oh
2021-01-06 13:16:03 +0100 <tomsmeding> I do see Pipe
2021-01-06 13:16:04 +0100 <noop_noob> *facepalm*
2021-01-06 13:16:06 +0100 <noop_noob> uppercase
2021-01-06 13:16:06 +0100 <tomsmeding> :)
2021-01-06 13:16:10 +0100noop_noob(31e4c3d3@49.228.195.211) (Remote host closed the connection)
2021-01-06 13:16:13 +0100 <tomsmeding> lol bye
2021-01-06 13:17:59 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net) (Quit: -a- Connection Timed Out)
2021-01-06 13:18:16 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net)
2021-01-06 13:20:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-01-06 13:22:03 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-06 13:24:10 +0100nyd(~nyd@unaffiliated/elysian)
2021-01-06 13:25:31 +0100solirc(~solirc@185.163.110.125) (Remote host closed the connection)
2021-01-06 13:29:45 +0100mananamenos(~mananamen@84.122.202.215.dyn.user.ono.com)
2021-01-06 13:29:59 +0100brisbin(~patrick@pool-173-49-158-4.phlapa.fios.verizon.net) (Ping timeout: 260 seconds)
2021-01-06 13:31:27 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it)
2021-01-06 13:34:35 +0100p-core(~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56)
2021-01-06 13:36:38 +0100Entertainment(~entertain@104.246.132.210)
2021-01-06 13:37:17 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Ping timeout: 260 seconds)
2021-01-06 13:37:34 +0100matryoshka(~matryoshk@pool-74-109-186-119.albyny.fios.verizon.net)
2021-01-06 13:39:37 +0100geekosaur(ac3a54fa@172.58.84.250)
2021-01-06 13:40:20 +0100pjb(~t@2a01cb04063ec500b94fa4fe14e91c99.ipv6.abo.wanadoo.fr)
2021-01-06 13:40:45 +0100Ishutin_(~Ishutin@92-249-185-150.pool.digikabel.hu)
2021-01-06 13:42:17 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-01-06 13:44:17 +0100Ishutin(~Ishutin@80-95-69-205.pool.digikabel.hu) (Ping timeout: 260 seconds)
2021-01-06 13:45:16 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-06 13:45:32 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-06 13:48:58 +0100kyali(~kyali@APN-123-250-188-gprs.simobil.net)
2021-01-06 13:49:56 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33)
2021-01-06 13:50:09 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds)
2021-01-06 13:53:30 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-06 13:54:38 +0100plutoniix(~q@184.82.196.105) (Quit: Leaving)
2021-01-06 13:54:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33) (Ping timeout: 264 seconds)
2021-01-06 13:54:47 +0100chrpape(~user@2a01:4f9:c010:632d::1) (Remote host closed the connection)
2021-01-06 13:55:30 +0100 <wz1000> how do I decode a Bytestring to Text using the system encoding?
2021-01-06 13:55:47 +0100 <ski> @instances []
2021-01-06 13:55:49 +0100 <lambdabot> Plugin `instances' failed with: Explict error in module Text.Regex.TDFA.String : Text.Regex.TDFA.String died: parseRegex for Text.Regex.TDFA.String failed:"class.*[].*where" (line 1, column 17):
2021-01-06 13:55:49 +0100 <lambdabot> unexpected end of input
2021-01-06 13:55:49 +0100 <lambdabot> expecting Failed to parse bracketed string or "]"
2021-01-06 13:55:49 +0100 <lambdabot> CallStack (from HasCallStack):
2021-01-06 13:55:49 +0100 <lambdabot> error, called at lib/Text/Regex/TDFA/Common.hs:29:3 in regex-tdfa-1.3.1.0-FpSHp7JyERvEeY2R0ZyRbt:Text.Regex.TDFA.Common
2021-01-06 13:55:58 +0100 <ski> hmm ..
2021-01-06 13:59:21 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-06 14:00:15 +0100kyali(~kyali@APN-123-250-188-gprs.simobil.net) (Ping timeout: 256 seconds)
2021-01-06 14:00:28 +0100 <merijn> wz1000: Use the GHC API to request the locale/encoding, then decode using that?
2021-01-06 14:00:38 +0100urodna(~urodna@unaffiliated/urodna)
2021-01-06 14:00:46 +0100 <merijn> wz1000: Also, that is the default behaviour for Text's IO functions
2021-01-06 14:01:21 +0100 <wz1000> merijn: yes, but I want to decode from a bytestring, not from a file
2021-01-06 14:01:41 +0100 <wz1000> I guess Data.ByteString.Encoding is what I want
2021-01-06 14:02:04 +0100 <merijn> wz1000: https://hackage.haskell.org/package/base-4.14.1.0/docs/GHC-IO-Encoding.html#v:getLocaleEncoding
2021-01-06 14:02:22 +0100 <merijn> Oh, wait that's not the right thing to base to text's encode stuff, I guess
2021-01-06 14:02:53 +0100 <wz1000> merijn: yeah, I know about that, I just couldn't figure out how to get that to work with Data.Text.Encoding
2021-01-06 14:03:04 +0100 <wz1000> but https://hackage.haskell.org/package/bytestring-encoding-0.1.0.0/docs/Data-ByteString-Encoding.html seems to do what I want
2021-01-06 14:04:11 +0100 <wz1000> I wonder if I really need to bother with decoding if all I want to do is split on newlines
2021-01-06 14:04:21 +0100 <merijn> Probably not
2021-01-06 14:04:31 +0100 <wz1000> Maybe Data.ByteString.Char8 will be code enough
2021-01-06 14:04:34 +0100 <wz1000> *good
2021-01-06 14:09:53 +0100cassim-(~cassim_@51.194.80.91) (Ping timeout: 256 seconds)
2021-01-06 14:10:56 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 240 seconds)
2021-01-06 14:14:13 +0100cassim-(~cassim@51.194.80.91)
2021-01-06 14:22:24 +0100 <tomsmeding> if your encoding is ascii-compatible, that is :p
2021-01-06 14:22:35 +0100 <tomsmeding> which the UTF family is, I believe, but others may not be
2021-01-06 14:23:05 +0100 <tomsmeding> wz1000: if (big if) you envision people on a non-UTF machine using your software, Char8 won't work
2021-01-06 14:23:59 +0100dandels(~dandels@unaffiliated/dandels)
2021-01-06 14:24:01 +0100dabr(~daniel@p50825a42.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2021-01-06 14:24:38 +0100 <merijn> tomsmeding: Define ascii-compatible
2021-01-06 14:24:53 +0100 <merijn> Only UTF-8 is "ascii compatible" for any meaning of that term that I can think off
2021-01-06 14:24:58 +0100 <tomsmeding> newline is always represented using byte 10, and all 10 bytes mean a newline
2021-01-06 14:25:43 +0100 <tomsmeding> I _think_ UTF-16 also works for that, but I'm not sure
2021-01-06 14:26:17 +0100 <tomsmeding> ah no it will not of course
2021-01-06 14:26:27 +0100chalkmonster(~chalkmons@unaffiliated/chalkmonster)
2021-01-06 14:26:28 +0100 <tomsmeding> so only UTF-8 and the standard windows codepage, whatever that number was
2021-01-06 14:26:53 +0100 <idnar> ISO-8859-* are all ASCII supersets too
2021-01-06 14:30:37 +0100 <pjb> US-ASCII supersets.
2021-01-06 14:30:40 +0100Tario(~Tario@201.192.165.173)
2021-01-06 14:30:54 +0100 <pjb> Because ASCII has national variants with different characters mapped to 0-127…
2021-01-06 14:31:10 +0100carlomagno(~cararell@148.87.23.11)
2021-01-06 14:32:12 +0100ADG1089__(~aditya@223.236.177.109) (Read error: Connection reset by peer)
2021-01-06 14:34:35 +0100 <merijn> pjb: Eh, no?
2021-01-06 14:34:49 +0100 <merijn> There is only one ASCII and it refers to values 0-127
2021-01-06 14:35:09 +0100 <merijn> US-ASCII would be a weird redundancy, the A in ASCII already stands for American
2021-01-06 14:35:48 +0100 <pjb> american standard, not american code.
2021-01-06 14:35:50 +0100xff0x(~fox@2001:1a81:52e0:100:99c7:97dc:c017:406) (Ping timeout: 244 seconds)
2021-01-06 14:36:45 +0100xff0x(~fox@2001:1a81:52e0:100:14f6:c3b8:1702:ec9d)
2021-01-06 14:36:49 +0100 <pjb> and US-ASCII is the IANA assigned name for it.
2021-01-06 14:37:00 +0100cyphase(~cyphase@unaffiliated/cyphase) (Ping timeout: 256 seconds)
2021-01-06 14:37:20 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-06 14:37:49 +0100 <merijn> The seems like pedantic nitpicking
2021-01-06 14:38:25 +0100 <pjb> You could still find some old files where the code for { is é and the code for } is è…
2021-01-06 14:38:26 +0100 <merijn> In the last two decades I've never heard anyone refer to any "other" ASCII, not even heard of one existing
2021-01-06 14:38:46 +0100 <merijn> pjb: Those are in the 128-255 range that is undefined by ascii to begin with
2021-01-06 14:38:56 +0100 <pjb> It's standardized nowadays as ISO/IEC 646: https://en.wikipedia.org/wiki/ISO/IEC_646
2021-01-06 14:38:58 +0100 <merijn> Which, would be the ISO-8859 encodings idnar mentioned
2021-01-06 14:39:06 +0100brisbin(~patrick@pool-173-49-158-4.phlapa.fios.verizon.net)
2021-01-06 14:39:14 +0100ADG1089__(~aditya@223.236.177.109)
2021-01-06 14:39:17 +0100 <geekosaur> enh
2021-01-06 14:39:44 +0100geekosaurpoints to the brackets over in the nick ist, which are Scandinavian characters
2021-01-06 14:39:55 +0100 <geekosaur> *list
2021-01-06 14:39:56 +0100 <merijn> pjb: Hell, your wikipedia link even mentions ISO-8859 as superceding it :p
2021-01-06 14:40:11 +0100 <pjb> Of course. I'm talking about ancient things.
2021-01-06 14:40:32 +0100 <pjb> But my point is that the mathematical structure of the encoding systems is not a mere tree.
2021-01-06 14:41:15 +0100 <merijn> that seems also entirely unrelated to the original discussion?
2021-01-06 14:41:20 +0100 <pjb> Things are complicated. Like February 30th, which is a real date in 1712 in Sweden…
2021-01-06 14:41:45 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-01-06 14:42:07 +0100djellemah(~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54)
2021-01-06 14:45:29 +0100bitmapper_(uid464869@gateway/web/irccloud.com/x-qmmrndshdhsgokli)
2021-01-06 14:46:06 +0100 <merijn> On a more on-topic note: Anyone got any good tricks for speeding up compilation? >.>
2021-01-06 14:46:31 +0100 <merijn> I'm being really bottlenecked by waiting for GHC right now :\
2021-01-06 14:47:00 +0100 <pjb> Buy a newer computer with more memory and faster processor. Once I did that, my compilation time of the linux kernel fell down to 5 minutes from 12 hours!
2021-01-06 14:47:27 +0100 <pjb> (I don't buy new computers often).
2021-01-06 14:47:36 +0100 <merijn> This machine has something like 250GB RAM, I doubt memory is the issue :p
2021-01-06 14:47:55 +0100 <pjb> Use SSD instead of hard disks?
2021-01-06 14:48:19 +0100 <merijn> It's all on SSD already
2021-01-06 14:48:21 +0100 <pjb> use: make -j $N # to compile in parallel?
2021-01-06 14:48:47 +0100 <merijn> cabal doesn't work with per module parallelism, sadly
2021-01-06 14:48:54 +0100 <pjb> :-(
2021-01-06 14:49:07 +0100 <merijn> Or rather, cabal just uses "ghc --make" which doesn't support that
2021-01-06 14:49:14 +0100ericsagnes(~ericsagne@2405:6580:0:5100:93a5:a77a:27e2:f365) (Ping timeout: 264 seconds)
2021-01-06 14:50:24 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5)
2021-01-06 14:50:37 +0100 <tomsmeding> how wide is your module dependency graph
2021-01-06 14:50:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33)
2021-01-06 14:51:03 +0100 <tomsmeding> I've been theorising that if it's wide enough, parallelising manually (e.g. using a makefile) might be faster than using ghc --make with the caching stuff
2021-01-06 14:51:10 +0100 <tomsmeding> but takes work
2021-01-06 14:51:32 +0100 <tomsmeding> merijn: compilation becomes faster if you do -fno-code
2021-01-06 14:51:55 +0100 <merijn> tomsmeding: Well, sure, everything is must faster if I just stop working all together!
2021-01-06 14:52:00 +0100 <merijn> s/must/much
2021-01-06 14:52:01 +0100 <tomsmeding> :D
2021-01-06 14:52:30 +0100 <merijn> tomsmeding: I am *not* rewriting my entire buildsystem while working on the finishing touches of my thesis >.>
2021-01-06 14:52:34 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-01-06 14:52:37 +0100 <tomsmeding> no?
2021-01-06 14:53:37 +0100cyphase(~cyphase@unaffiliated/cyphase)
2021-01-06 14:53:53 +0100Varis(~Tadas@unaffiliated/varis)
2021-01-06 14:55:03 +0100bitmapper_bitmapper
2021-01-06 14:55:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33) (Ping timeout: 264 seconds)
2021-01-06 14:57:25 +0100christo(~chris@81.96.113.213)
2021-01-06 14:57:46 +0100noop_noob(31e4c3d3@49.228.195.211)
2021-01-06 14:58:16 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl)
2021-01-06 14:58:16 +0100mouseghost(~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
2021-01-06 14:58:16 +0100mouseghost(~draco@wikipedia/desperek)
2021-01-06 14:58:58 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5) (Remote host closed the connection)
2021-01-06 14:59:22 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5)
2021-01-06 15:00:30 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:12e2:ad75:1255:fdff:5733) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-01-06 15:01:13 +0100pera(~pera@unaffiliated/pera)
2021-01-06 15:01:41 +0100ericsagnes(~ericsagne@2405:6580:0:5100:321f:ffea:a269:44a4)
2021-01-06 15:03:24 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-01-06 15:04:14 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5) (Ping timeout: 264 seconds)
2021-01-06 15:04:22 +0100 <merijn> tomsmeding: The main problem is that I have a bunch of schema code that effectively everything depends on, so if that changes I'm hosed and absolutely everything ends up rebuilding :\
2021-01-06 15:04:53 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ec23:2fba:6a47:f771)
2021-01-06 15:05:07 +0100 <merijn> And a full clean build with -O1 is easily 5 minutes
2021-01-06 15:05:25 +0100 <tomsmeding> maybe maybe some NOINLINE can help, though it's variable in its efficacy
2021-01-06 15:05:51 +0100 <merijn> tomsmeding: There doesn't seem to be a single bad module/code, though
2021-01-06 15:05:54 +0100 <tomsmeding> which is an expensive way of saying "I tried it and it didn't work well"
2021-01-06 15:06:00 +0100 <tomsmeding> ah
2021-01-06 15:06:01 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2021-01-06 15:06:03 +0100 <merijn> It's just death by a thousand papercuts
2021-01-06 15:06:14 +0100 <tomsmeding> ¯\_(ツ)_/¯
2021-01-06 15:06:26 +0100 <merijn> tomsmeding: I just have something like 120 modules that all take roughly the same amount of time
2021-01-06 15:06:59 +0100 <noop_noob> death by 120 papercuts
2021-01-06 15:10:49 +0100 <wz1000> I have a little problem I'm trying to outsource to #haskell: https://gist.github.com/wz1000/2bfc0ad5f41a5ee803cd2ccfcde9e1a3
2021-01-06 15:11:20 +0100 <wz1000> My brain is too fried from lack of sleep to solve this nicely, but I promise any solutions will be richly rewarded
2021-01-06 15:12:27 +0100 <wz1000> (for some definition of "richly")
2021-01-06 15:13:57 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection)
2021-01-06 15:14:20 +0100 <noop_noob> wz1000 https://en.wikipedia.org/wiki/Longest_common_subsequence_problem
2021-01-06 15:14:54 +0100 <noop_noob> https://www.geeksforgeeks.org/longest-common-subsequence-dp-4/
2021-01-06 15:14:59 +0100 <wz1000> noop_noob: that is not it
2021-01-06 15:15:35 +0100 <kuribas> merijn: shouldn't we try to make whenMono part of base Data.Monoid?
2021-01-06 15:15:40 +0100 <noop_noob> It's probably a few more steps after computing the longest common subsequence though
2021-01-06 15:15:46 +0100 <kuribas> merijn: as a library proposal
2021-01-06 15:15:47 +0100dabr(~daniel@p50825a42.dip0.t-ipconnect.de)
2021-01-06 15:15:53 +0100 <kuribas> merijn: we can argue about the name :)
2021-01-06 15:16:22 +0100 <wz1000> noop_noob: nope, I already have the diff.
2021-01-06 15:16:29 +0100 <noop_noob> nvm then
2021-01-06 15:16:35 +0100 <merijn> kuribas: The lack of good name is what has stopped me from writing a proposal so far
2021-01-06 15:18:09 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-01-06 15:18:48 +0100 <noop_noob> What's the difference between `StateT something Maybe` and a `MaybeT (StateT something)`?
2021-01-06 15:18:56 +0100 <noop_noob> I'm kinda confused by this lol
2021-01-06 15:19:10 +0100dandels(~dandels@unaffiliated/dandels) (Ping timeout: 256 seconds)
2021-01-06 15:19:54 +0100 <kuribas> merijn: it's not like good names are a must to be in base ;-)
2021-01-06 15:20:30 +0100ph88^(~ph88@2a02:8109:9e00:7e5c:f964:d8d4:1ec3:146c)
2021-01-06 15:20:35 +0100 <tomsmeding> @unmtl StateT s Maybe
2021-01-06 15:20:35 +0100 <lambdabot> err: `StateT s Maybe' is not applied to enough arguments, giving `/\A. s -> Maybe (A, s)'
2021-01-06 15:20:38 +0100 <tomsmeding> @unmtl StateT s Maybe a
2021-01-06 15:20:38 +0100 <lambdabot> s -> Maybe (a, s)
2021-01-06 15:20:44 +0100 <tomsmeding> @unmtl MaybeT (StateT s) a
2021-01-06 15:20:44 +0100 <lambdabot> err: `StateT s (Maybe a)' is not applied to enough arguments, giving `/\A. s -> Maybe a (A, s)'
2021-01-06 15:20:52 +0100 <noop_noob> Oh nice.
2021-01-06 15:20:57 +0100olban(~olban@213.152.161.85)
2021-01-06 15:21:07 +0100 <tomsmeding> @unmtl MaybeT (StateT s m) a
2021-01-06 15:21:08 +0100 <lambdabot> s -> m (Maybe a, s)
2021-01-06 15:21:13 +0100 <tomsmeding> there
2021-01-06 15:21:23 +0100 <tomsmeding> interpretation is up to you :p
2021-01-06 15:21:42 +0100 <kuribas> merijn: what about orMempty?
2021-01-06 15:21:45 +0100 <noop_noob> Oh. On error, the StateT Maybe version doesn't even give the modified state
2021-01-06 15:21:57 +0100 <noop_noob> wz1000, Computer LCS twice, once from the front and once from the back. You now have the LCS between all pairs of suffixes and all pairs of prefixes.
2021-01-06 15:22:34 +0100 <kuribas> merijn: I think whenMono is ok. Not great, but ok.
2021-01-06 15:22:57 +0100 <kuribas> merijn: because it is comparable to when
2021-01-06 15:22:59 +0100 <kuribas> :t when
2021-01-06 15:23:00 +0100 <lambdabot> Applicative f => Bool -> f () -> f ()
2021-01-06 15:23:06 +0100 <noop_noob> If a certain line from file 1 can match with a certain line from file 2, then LCS of (file 1 before that line and file 2 before that line) + LCS of (file 1 after that line and file 2 after that line) + 1 = LCS of entire file
2021-01-06 15:23:13 +0100 <noop_noob> wz1000^
2021-01-06 15:24:31 +0100ph88(~ph88@2a02:8109:9e00:7e5c:3831:a625:e216:5736) (Ping timeout: 272 seconds)
2021-01-06 15:25:12 +0100noop_noob(31e4c3d3@49.228.195.211) (Remote host closed the connection)
2021-01-06 15:26:03 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-06 15:26:17 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Quit: mputz)
2021-01-06 15:26:18 +0100 <kuribas> merijn: in fact, when is whenMono over Ap!
2021-01-06 15:27:22 +0100 <Melanie> :t whenMono
2021-01-06 15:27:23 +0100 <lambdabot> error: Variable not in scope: whenMono
2021-01-06 15:27:26 +0100 <kuribas> let whenMono True m = m; whenMono False _ = mempty in \b -> getAp . whenMono b . Ap
2021-01-06 15:27:34 +0100 <kuribas> > let whenMono True m = m; whenMono False _ = mempty in \b -> getAp . whenMono b . Ap
2021-01-06 15:27:36 +0100 <ADG1089__> is there a better way to write this? https://hastebin.com/uqelobunud.properties (using monad properties?)
2021-01-06 15:27:36 +0100 <lambdabot> error:
2021-01-06 15:27:37 +0100 <lambdabot> • No instance for (Typeable a0)
2021-01-06 15:27:37 +0100 <lambdabot> arising from a use of ‘show_M245131793820374088917039’
2021-01-06 15:27:49 +0100arguapacha(uid134895@gateway/web/irccloud.com/x-mfwdshztacdbuefh)
2021-01-06 15:27:53 +0100 <kuribas> Melanie: it doesn't exist, that's why I'd like it in base :)
2021-01-06 15:28:10 +0100 <ADG1089__> I mean what if I have 3 screens and so on.
2021-01-06 15:28:16 +0100 <Melanie> kuribas: aha ;)
2021-01-06 15:28:26 +0100 <Melanie> tehre are a lot of monoid-related functions i'd like in base
2021-01-06 15:28:37 +0100 <Melanie> one is memptyToNothing
2021-01-06 15:28:47 +0100 <kuribas> :t let whenMono True m = m; whenMono False _ = mempty in \b -> getAp . whenMono b . Ap
2021-01-06 15:28:48 +0100 <lambdabot> forall k (f :: k -> *) (a :: k). Monoid (Ap f a) => Bool -> f a -> f a
2021-01-06 15:28:59 +0100thecoffemaker(~thecoffem@unaffiliated/thecoffemaker) (Ping timeout: 260 seconds)
2021-01-06 15:29:01 +0100 <idnar> :t let whenMono True m = m; whenMono False _ = mempty in whenMono
2021-01-06 15:29:03 +0100 <lambdabot> Monoid p => Bool -> p -> p
2021-01-06 15:29:19 +0100 <ADG1089__> @t when'
2021-01-06 15:29:20 +0100 <lambdabot> Maybe you meant: tell thank you thanks thesaurus thx tic-tac-toe ticker time todo todo-add todo-delete type v @ ? .
2021-01-06 15:29:24 +0100 <ADG1089__> @type when'
2021-01-06 15:29:25 +0100 <lambdabot> error:
2021-01-06 15:29:25 +0100 <lambdabot> • Variable not in scope: when'
2021-01-06 15:29:26 +0100 <lambdabot> • Perhaps you meant ‘when’ (imported from Control.Monad.Writer)
2021-01-06 15:29:36 +0100 <idnar> :t optional
2021-01-06 15:29:37 +0100 <lambdabot> Alternative f => f a -> f (Maybe a)
2021-01-06 15:30:06 +0100 <ADG1089__> @let when' b ma = if b then ma else return mempty
2021-01-06 15:30:08 +0100 <lambdabot> Defined.
2021-01-06 15:30:11 +0100 <ADG1089__> @type when'
2021-01-06 15:30:13 +0100 <lambdabot> (Monad m, Monoid a) => Bool -> m a -> m a
2021-01-06 15:31:04 +0100 <idnar> @hoogle Monoid p => Bool -> p -> p
2021-01-06 15:31:05 +0100 <lambdabot> Data.Monoid.HT when :: Monoid m => Bool -> m -> m
2021-01-06 15:31:05 +0100 <lambdabot> Relude.Monoid memptyIfFalse :: Monoid m => Bool -> m -> m
2021-01-06 15:31:05 +0100 <lambdabot> Relude.Monoid memptyIfTrue :: Monoid m => Bool -> m -> m
2021-01-06 15:32:09 +0100 <kuribas> see, it gets defined many times :)
2021-01-06 15:32:30 +0100 <Melanie> Data.Monoid.HT.when is the function i'm talking about, but it clashes with what's in base already :)
2021-01-06 15:32:37 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds)
2021-01-06 15:32:57 +0100thecoffemaker(~thecoffem@unaffiliated/thecoffemaker)
2021-01-06 15:33:29 +0100 <kuribas> the name?
2021-01-06 15:33:42 +0100 <Melanie> i mean i guess i could go with \b -> stimesMonoid (fromEnum b)
2021-01-06 15:33:54 +0100 <Melanie> kuribas: yeah, the name
2021-01-06 15:34:02 +0100 <kuribas> having when in Prelude and Data.Monoid would be a bit shitty
2021-01-06 15:34:13 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-01-06 15:34:41 +0100 <kuribas> :t stimesMonoid . fromEnum
2021-01-06 15:34:43 +0100 <lambdabot> error:
2021-01-06 15:34:43 +0100 <lambdabot> Variable not in scope: stimesMonoid :: Int -> c
2021-01-06 15:35:14 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2021-01-06 15:35:22 +0100 <Melanie> stimesMonoid . fromEnum :: (Enum b, Monoid a) => b -> a -> a
2021-01-06 15:36:09 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-01-06 15:36:15 +0100 <Melanie> which isn't memptyToNothing, it's when
2021-01-06 15:37:01 +0100 <merijn> Melanie: memptyToNothing isn't possible, though? At least not without Eq
2021-01-06 15:37:11 +0100 <Melanie> that's correct, merijn
2021-01-06 15:37:45 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-06 15:38:21 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-06 15:38:24 +0100 <Melanie> would it be possible to write a pattern for mempty in general?
2021-01-06 15:38:31 +0100 <merijn> No
2021-01-06 15:38:53 +0100 <Melanie> ;-;
2021-01-06 15:39:05 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Remote host closed the connection)
2021-01-06 15:39:08 +0100 <ski> (can't match on functions, e.g.)
2021-01-06 15:39:31 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-06 15:39:46 +0100 <kuribas> for example: mempty :: Endo Int
2021-01-06 15:40:41 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Remote host closed the connection)
2021-01-06 15:40:45 +0100 <Melanie> ah, yeah, that throws a bit of a wrench in things
2021-01-06 15:41:07 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-06 15:41:30 +0100boistordu(boistordum@gateway/shell/matrix.org/x-uxzyryrlcsuoeixd)
2021-01-06 15:41:32 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Remote host closed the connection)
2021-01-06 15:41:54 +0100 <Melanie> :l Data.Monoid
2021-01-06 15:41:58 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-06 15:42:06 +0100 <Melanie> awwwh how does bot work
2021-01-06 15:42:09 +0100 <ski> @let import Data.Monoid
2021-01-06 15:42:10 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds)
2021-01-06 15:42:11 +0100 <lambdabot> Defined.
2021-01-06 15:42:28 +0100 <Melanie> :t stimesMonoid . fromEnum
2021-01-06 15:42:29 +0100 <lambdabot> error:
2021-01-06 15:42:29 +0100 <lambdabot> Variable not in scope: stimesMonoid :: Int -> c
2021-01-06 15:42:31 +0100 <Melanie> ugh
2021-01-06 15:42:36 +0100 <Melanie> it's in semigroup
2021-01-06 15:42:44 +0100 <Melanie> @let import Data.Semigroup
2021-01-06 15:42:46 +0100 <lambdabot> Defined.
2021-01-06 15:42:49 +0100 <Melanie> :t stimesMonoid . fromEnum
2021-01-06 15:42:50 +0100 <lambdabot> (Monoid a1, Enum a2) => a2 -> a1 -> a1
2021-01-06 15:43:11 +0100 <ADG1089__> ok, i improved it, but is there any better way to do this? https://hastebin.com/susewuwipo.properties
2021-01-06 15:43:17 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Remote host closed the connection)
2021-01-06 15:43:49 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-06 15:43:55 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-06 15:45:01 +0100 <tomsmeding> wz1000: https://paste.tomsmeding.com/7hlNnftk
2021-01-06 15:45:10 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-01-06 15:45:18 +0100 <tomsmeding> no idea if it works in general :p
2021-01-06 15:45:32 +0100 <tomsmeding> also "nicely" is questionable
2021-01-06 15:45:47 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net) (Quit: -a- Connection Timed Out)
2021-01-06 15:46:03 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net)
2021-01-06 15:46:13 +0100 <wz1000> tomsmeding: yeah, I ended up with something similar
2021-01-06 15:46:17 +0100 <tomsmeding> ah
2021-01-06 15:46:26 +0100 <wz1000> well, almost
2021-01-06 15:47:28 +0100 <tomsmeding> also I was too lazy to properly write 'numberify' as a scan :p
2021-01-06 15:47:31 +0100 <Melanie> ADG1089__: why not use an if statement instead of when'? in this case the reader may misunderstand what happens when screenCount is not 2
2021-01-06 15:47:47 +0100 <ADG1089__> Melanie: yeah
2021-01-06 15:49:29 +0100ulidtko|k(~ulidtko@193.111.48.79) (Remote host closed the connection)
2021-01-06 15:49:56 +0100 <wz1000> tomsmeding: yeah, here's my partial solution: https://gist.github.com/wz1000/cf71f931893a441ca005c148c8ce1afd
2021-01-06 15:50:16 +0100 <Melanie> ADG1089__: also, if you're using Just in both parts of the tuple, you might as well wrap the whole thing, since it looks like you're basing whether or not the tuple has both values on whether it has the first
2021-01-06 15:50:30 +0100m0rphism(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-01-06 15:50:45 +0100 <Melanie> and then you can use maybe or fromMaybe
2021-01-06 15:50:46 +0100 <Melanie> :t maybe
2021-01-06 15:50:48 +0100 <lambdabot> b -> (a -> b) -> Maybe a -> b
2021-01-06 15:50:50 +0100 <Melanie> :t fromMaybe
2021-01-06 15:50:51 +0100 <lambdabot> a -> Maybe a -> a
2021-01-06 15:51:20 +0100ulidtko|kk(~ulidtko@194.54.80.38)
2021-01-06 15:51:32 +0100Jd007(~Jd007@d154-5-83-24.bchsia.telus.net)
2021-01-06 15:51:59 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-06 15:52:19 +0100 <ADG1089__> Melanie: Handle does not implement Monoid I think so there's no mempty
2021-01-06 15:52:47 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Remote host closed the connection)
2021-01-06 15:53:12 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-06 15:54:06 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Remote host closed the connection)
2021-01-06 15:54:12 +0100 <ADG1089__> if statement would be better
2021-01-06 15:54:30 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-06 15:55:21 +0100 <tomsmeding> wz1000: writing code is easier than reading code; I'm unsure what exactly you're doing :)
2021-01-06 15:55:28 +0100 <tomsmeding> but doesn't matter
2021-01-06 15:55:36 +0100 <Melanie> ADG1089__ here's what i mean https://hastebin.com/sopulapuqu.properties
2021-01-06 15:55:59 +0100 <wz1000> tomsmeding: its essentially the same thing you are doing, but I'm doing it in both directions
2021-01-06 15:56:05 +0100 <Melanie> sorry for changing your indentation :p
2021-01-06 15:56:11 +0100 <ski> (no `if' statement in __Haskell ..)
2021-01-06 15:56:16 +0100 <tomsmeding> I see
2021-01-06 15:56:21 +0100olban(~olban@213.152.161.85) (Quit: bye)
2021-01-06 15:56:25 +0100christo(~chris@81.96.113.213)
2021-01-06 15:56:26 +0100 <ski> (s/__//)
2021-01-06 15:56:51 +0100 <wz1000> And I'm doing it over two passes, first constructing a lookup table [(Int,Maybe Int)] for the exact positions, then my intention is to add the Range positions in a seperate pass
2021-01-06 15:56:59 +0100Neo----(~neo@BSN-143-24-94.dynamic.siol.net)
2021-01-06 15:57:11 +0100geekosaur(ac3a54fa@172.58.84.250) (Remote host closed the connection)
2021-01-06 15:57:33 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 260 seconds)
2021-01-06 15:57:45 +0100carlomagno(~cararell@148.87.23.11) (Ping timeout: 240 seconds)
2021-01-06 15:58:23 +0100 <ski> @type fst &&& snd
2021-01-06 15:58:24 +0100 <lambdabot> (c, b) -> (c, b)
2021-01-06 15:58:35 +0100 <ADG1089__> Melanie: why pure (applicative) instead of return (Monad)?
2021-01-06 15:58:36 +0100Neo---(~neo@BSN-143-26-67.dynamic.siol.net) (Ping timeout: 240 seconds)
2021-01-06 15:58:45 +0100graf_blutwurst(~user@2001:171b:226e:adc0:fc0a:8b21:4a12:4e1f) (Read error: Connection reset by peer)
2021-01-06 15:59:47 +0100 <Melanie> instance (Applicative m) => Monad m since base-4.8.0.0
2021-01-06 15:59:50 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Remote host closed the connection)
2021-01-06 16:00:00 +0100 <Melanie> and i like pure better ¯\_(ツ)_/¯
2021-01-06 16:00:16 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-06 16:00:31 +0100 <kuribas> is there something like guard for applicative?
2021-01-06 16:00:34 +0100 <ski> for_ handles (\(a,b) -> myLogHook 1 a b) -- instead of the `maybe (pure ()) ...'
2021-01-06 16:00:35 +0100carlomagno(~cararell@148.87.23.11)
2021-01-06 16:00:41 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Remote host closed the connection)
2021-01-06 16:00:43 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds)
2021-01-06 16:00:47 +0100 <Melanie> :t guard
2021-01-06 16:00:48 +0100 <lambdabot> Alternative f => Bool -> f ()
2021-01-06 16:01:05 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-06 16:01:09 +0100 <kuribas> ah right :)
2021-01-06 16:01:11 +0100 <Melanie> ski: nice :)
2021-01-06 16:01:12 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Remote host closed the connection)
2021-01-06 16:01:36 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-06 16:02:03 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds)
2021-01-06 16:02:03 +0100xelxebar_(~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 240 seconds)
2021-01-06 16:02:10 +0100 <ADG1089__> Melanie: thanks! I went with this: https://hastebin.com/opaqamipob.rb
2021-01-06 16:02:14 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds)
2021-01-06 16:02:23 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds)
2021-01-06 16:02:43 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 240 seconds)
2021-01-06 16:03:02 +0100hrnz(~hrnz@unaffiliated/hrnz)
2021-01-06 16:03:09 +0100 <Melanie> ADG1089__: looks great!! :D
2021-01-06 16:04:24 +0100hekkaidekapus](~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2021-01-06 16:04:43 +0100 <ski> @type for_ :: Applicative i => Maybe a -> (a -> i b) -> i ()
2021-01-06 16:04:44 +0100 <lambdabot> Applicative i => Maybe a -> (a -> i b) -> i ()
2021-01-06 16:04:46 +0100 <ski> @hoogle whenJust
2021-01-06 16:04:46 +0100 <lambdabot> Control.Monad.Extra whenJust :: Applicative m => Maybe a -> (a -> m ()) -> m ()
2021-01-06 16:04:47 +0100 <lambdabot> Extra whenJust :: Applicative m => Maybe a -> (a -> m ()) -> m ()
2021-01-06 16:04:47 +0100 <lambdabot> Data.GI.Base.Utils whenJust :: Monad m => Maybe a -> (a -> m ()) -> m ()
2021-01-06 16:05:10 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2021-01-06 16:05:11 +0100hekkaidekapus](~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-01-06 16:05:12 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-01-06 16:05:14 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-01-06 16:05:18 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2021-01-06 16:05:37 +0100 <Melanie> very cool, i will (try to) remember that
2021-01-06 16:06:07 +0100 <kuribas> @type for_ @Maybe
2021-01-06 16:06:09 +0100 <lambdabot> error:
2021-01-06 16:06:09 +0100 <lambdabot> Pattern syntax in expression context: for_@Maybe
2021-01-06 16:06:09 +0100 <lambdabot> Did you mean to enable TypeApplications?
2021-01-06 16:06:14 +0100 <kuribas> :t for_ @Maybe
2021-01-06 16:06:15 +0100 <lambdabot> error:
2021-01-06 16:06:15 +0100 <lambdabot> Pattern syntax in expression context: for_@Maybe
2021-01-06 16:06:15 +0100 <lambdabot> Did you mean to enable TypeApplications?
2021-01-06 16:06:22 +0100 <ski> % :t for_ @Maybe
2021-01-06 16:06:22 +0100 <yahb> ski: Applicative f => Maybe a -> (a -> f b) -> f ()
2021-01-06 16:07:25 +0100phasespace(~sar@80-89-47-117.inet.signal.no) (Ping timeout: 264 seconds)
2021-01-06 16:08:31 +0100ystael(~ystael@209.6.50.55)
2021-01-06 16:09:18 +0100ADG1089__(~aditya@223.236.177.109) (Remote host closed the connection)
2021-01-06 16:09:43 +0100ADG1089__(~aditya@223.236.177.109)
2021-01-06 16:10:20 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
2021-01-06 16:10:45 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Read error: Connection reset by peer)
2021-01-06 16:11:06 +0100stree(~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net)
2021-01-06 16:12:02 +0100HHHH(77497963@static-host119-73-121-99.link.net.pk)
2021-01-06 16:12:13 +0100ulidtko|kk(~ulidtko@194.54.80.38) (Ping timeout: 264 seconds)
2021-01-06 16:12:27 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-06 16:12:44 +0100 <Melanie> kuribas: if you want something a little stronger than guard, i wrote pureIf in Extra
2021-01-06 16:12:47 +0100 <Melanie> @hoogle pureIf
2021-01-06 16:12:48 +0100 <lambdabot> No results found
2021-01-06 16:12:51 +0100 <Melanie> awwww
2021-01-06 16:13:06 +0100 <Melanie> @hoogle (Alternative f) => Bool -> a -> f a
2021-01-06 16:13:07 +0100 <lambdabot> Protolude orEmpty :: Alternative f => Bool -> a -> f a
2021-01-06 16:13:07 +0100 <lambdabot> Protolude.Applicative orEmpty :: Alternative f => Bool -> a -> f a
2021-01-06 16:13:07 +0100 <lambdabot> Control.Bool aguard' :: Alternative m => Bool -> a -> m a
2021-01-06 16:13:15 +0100 <Melanie> it's on hackage :/
2021-01-06 16:13:39 +0100HHHH(77497963@static-host119-73-121-99.link.net.pk) ()
2021-01-06 16:14:37 +0100HHHH(77497963@static-host119-73-121-99.link.net.pk)
2021-01-06 16:15:34 +0100HHHH(77497963@static-host119-73-121-99.link.net.pk) (Remote host closed the connection)
2021-01-06 16:16:09 +0100 <kuribas> @hoogle (Applicative f, Alternative t) => Bool -> f (t a) -> f (t a)
2021-01-06 16:16:10 +0100 <lambdabot> No results found
2021-01-06 16:16:27 +0100 <kuribas> lambdabot: you disappoint me :(
2021-01-06 16:17:01 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 264 seconds)
2021-01-06 16:17:23 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 256 seconds)
2021-01-06 16:17:31 +0100pera(~pera@unaffiliated/pera)
2021-01-06 16:18:57 +0100sparsity34(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
2021-01-06 16:21:04 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2021-01-06 16:21:42 +0100ADG1089__(~aditya@223.236.177.109) (Remote host closed the connection)
2021-01-06 16:22:08 +0100ubert(~Thunderbi@p200300ecdf1ee07be6b318fffe838f33.dip0.t-ipconnect.de)
2021-01-06 16:22:16 +0100sparsity(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Ping timeout: 240 seconds)
2021-01-06 16:23:10 +0100fendor_(~fendor@178.115.129.99.wireless.dyn.drei.com)
2021-01-06 16:24:20 +0100ADG1089__(~aditya@223.236.177.109)
2021-01-06 16:26:01 +0100fendor(~fendor@91.141.3.164.wireless.dyn.drei.com) (Ping timeout: 264 seconds)
2021-01-06 16:27:16 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it) (Quit: Leaving)
2021-01-06 16:29:39 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-06 16:29:41 +0100noop_noob(31e4c3d3@49.228.195.211)
2021-01-06 16:30:48 +0100ericsagnes(~ericsagne@2405:6580:0:5100:321f:ffea:a269:44a4) (Ping timeout: 260 seconds)
2021-01-06 16:30:59 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net) (Ping timeout: 256 seconds)
2021-01-06 16:35:04 +0100drozdziak1(drozdziak1@gateway/shell/matrix.org/x-nhtpbwaweoyyfwgx) (Quit: issued !quit command)
2021-01-06 16:36:04 +0100 <noop_noob> I'm using the "pipes" package. Is there a way for me to check if a Consumer is "done" consuming?
2021-01-06 16:38:04 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Ping timeout: 246 seconds)
2021-01-06 16:38:10 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2021-01-06 16:39:04 +0100 <noop_noob> Anyway, why is it `type Consumer a = Proxy () a () X` and not `type Consumer a = Proxy X a () X` ?
2021-01-06 16:39:18 +0100 <noop_noob> https://hackage.haskell.org/package/pipes-4.3.14/docs/Pipes-Core.html#t:Proxy
2021-01-06 16:39:21 +0100jollygood2(~bc812391@217.29.117.252)
2021-01-06 16:39:28 +0100 <noop_noob> Oops, wrong link
2021-01-06 16:39:28 +0100 <noop_noob> https://hackage.haskell.org/package/pipes-4.3.14/docs/Pipes.html#t:Consumer
2021-01-06 16:40:53 +0100rcdilorenzo(~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
2021-01-06 16:42:50 +0100ericsagnes(~ericsagne@2405:6580:0:5100:e826:4c07:b220:a42a)
2021-01-06 16:42:52 +0100 <noop_noob> I wish I could pattern-match on the constructor of Proxy, but unfortunately they're not exported...
2021-01-06 16:43:19 +0100 <__monty__> noop_noob: If I'm reading Proxy a' a b' b m r correctly it's because a' and b' need to match up.
2021-01-06 16:43:32 +0100 <noop_noob> what
2021-01-06 16:44:02 +0100 <noop_noob> Oh
2021-01-06 16:44:09 +0100 <noop_noob> I confused b with b'
2021-01-06 16:44:20 +0100 <noop_noob> I think?
2021-01-06 16:44:49 +0100 <noop_noob> Eh... whatever
2021-01-06 16:45:14 +0100 <noop_noob> So anyway..... In the "pipes" package, Is there a way for me to check if a Consumer is "done" consuming?
2021-01-06 16:46:30 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-01-06 16:47:51 +0100zx__kish`
2021-01-06 16:49:08 +0100edwtjo(~edwtjo@fsf/member/edwtjo) (Read error: Connection reset by peer)
2021-01-06 16:51:46 +0100edwtjo(~edwtjo@h-7-145.A213.priv.bahnhof.se)
2021-01-06 16:51:46 +0100edwtjo(~edwtjo@h-7-145.A213.priv.bahnhof.se) (Changing host)
2021-01-06 16:51:46 +0100edwtjo(~edwtjo@fsf/member/edwtjo)
2021-01-06 16:51:57 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33)
2021-01-06 16:54:59 +0100dabr(~daniel@p50825a42.dip0.t-ipconnect.de) (Quit: WeeChat 3.0)
2021-01-06 16:57:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33) (Ping timeout: 264 seconds)
2021-01-06 16:58:53 +0100sparsity34(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
2021-01-06 16:59:28 +0100matryoshka(~matryoshk@pool-74-109-186-119.albyny.fios.verizon.net) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-06 17:00:31 +0100Rudd0(~Rudd0@185.189.115.103)
2021-01-06 17:00:36 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 256 seconds)
2021-01-06 17:00:41 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-01-06 17:01:35 +0100plutoniix(~q@ppp-27-55-91-8.revip3.asianet.co.th)
2021-01-06 17:02:26 +0100jespada(~jespada@90.254.245.49)
2021-01-06 17:03:07 +0100emptyflask(~jon@136.49.71.178)
2021-01-06 17:05:03 +0100matryoshka(~matryoshk@184.75.223.227)
2021-01-06 17:06:48 +0100djellemah(~djellemah@2601:5c2:100:96c:e008:b638:39fe:6a54) (Remote host closed the connection)
2021-01-06 17:08:12 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33)
2021-01-06 17:11:44 +0100hololeap(~hololeap@unaffiliated/hololeap) (Quit: KVIrc 5.0.1 Aria http://www.kvirc.net/)
2021-01-06 17:12:52 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Remote host closed the connection)
2021-01-06 17:13:37 +0100usr25(~usr25@unaffiliated/usr25)
2021-01-06 17:13:53 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-01-06 17:14:39 +0100 <shinobi> I want to create a counter data type and set the initial value to 0, without injecting it. 1. Is this normally done in FP?
2021-01-06 17:15:13 +0100neiluj(~jco@unaffiliated/neiluj) (Ping timeout: 264 seconds)
2021-01-06 17:15:37 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-06 17:15:47 +0100 <merijn> shinobi: Counter for what? Does it have to be mutable? How do you plan to update it?
2021-01-06 17:16:45 +0100 <shinobi> merijn: It doesn't have to be mutable. I would inject the state into a function that would return an updated state, etc.
2021-01-06 17:17:02 +0100 <noop_noob> shinobi, What do you mean by "inject"?
2021-01-06 17:17:14 +0100 <shinobi> pass in as a parameter
2021-01-06 17:17:29 +0100 <merijn> shinobi: Well, then that's just "data Counter = Counter Int" and passing "Counter 0" to a function, no? :p
2021-01-06 17:17:33 +0100 <noop_noob> Yes, you can have a function of type `Counter -> (a, Counter)`
2021-01-06 17:17:44 +0100 <noop_noob> Although you probably want the `State` monad.
2021-01-06 17:18:15 +0100 <noop_noob> https://hackage.haskell.org/package/containers-0.6.4.1/docs/Data-Sequence-Internal.html#t:State
2021-01-06 17:18:40 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net)
2021-01-06 17:19:02 +0100 <noop_noob> merijn http://learnyouahaskell.com/for-a-few-monads-more
2021-01-06 17:19:20 +0100noop_noob(31e4c3d3@49.228.195.211) (Remote host closed the connection)
2021-01-06 17:19:34 +0100new_haskeller(ae72a197@cpe00fc8d386d93-cm00fc8d386d90.cpe.net.cable.rogers.com)
2021-01-06 17:19:45 +0100 <shinobi> merijn: I don't want a user to pass in the initial state. I was hoping it could be set in the constructor. I am trying to prevent "Counter 6".
2021-01-06 17:20:26 +0100 <shinobi> I see I would never be able to do that because it's constructing each time and not mutating
2021-01-06 17:20:27 +0100usr25(~usr25@unaffiliated/usr25) ("Leaving")
2021-01-06 17:20:31 +0100 <merijn> Don't export the constructor and have "initialCounter :: Counter; initialCounter = Counter 0" in your module?
2021-01-06 17:20:59 +0100 <new_haskeller> hi friends, I am puzzling over a disappearing list when I map a file input (text rings).
2021-01-06 17:21:16 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2021-01-06 17:21:20 +0100 <merijn> @where paste
2021-01-06 17:21:20 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com
2021-01-06 17:21:20 +0100 <shinobi> merijn: that may work. Thanks!
2021-01-06 17:21:35 +0100 <merijn> new_haskeller: paste code + output there
2021-01-06 17:21:54 +0100 <merijn> shinobi: If you don't want users messing with datatype internals, just don't export those ;)
2021-01-06 17:22:10 +0100 <dsal> new_haskeller: ...and expected output. Sometimes things are really obvious to us, but not what you expect to happen.
2021-01-06 17:22:32 +0100carbolymer(~carbolyme@dropacid.net) (Ping timeout: 256 seconds)
2021-01-06 17:22:39 +0100carbolymer_(~carbolyme@dropacid.net)
2021-01-06 17:22:45 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-06 17:23:08 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-06 17:23:59 +0100 <ski> shinobi : you could wrap `State' in a `newtype', say `Counting', and provide a `runCounting' function that initializes your counter
2021-01-06 17:25:03 +0100ubert(~Thunderbi@p200300ecdf1ee07be6b318fffe838f33.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-01-06 17:25:07 +0100 <ski> (or just have `Counting a' be implemented as `Counter -> (a,Counter)' directly, if you prefer being explicit)
2021-01-06 17:25:28 +0100ubert(~Thunderbi@p200300ecdf1ee07be6b318fffe838f33.dip0.t-ipconnect.de)
2021-01-06 17:25:33 +0100phasespace(~sar@89-162-33-21.fiber.signal.no)
2021-01-06 17:28:39 +0100xff0x(~fox@2001:1a81:52e0:100:14f6:c3b8:1702:ec9d) (Ping timeout: 272 seconds)
2021-01-06 17:28:57 +0100xff0x(~fox@2001:1a81:52e0:100:d64b:d56d:3d88:4e8b)
2021-01-06 17:29:22 +0100 <new_haskeller> @merijn thanks. as I was pasting the code and typing out my issues I realize that my list did not disappear. the program complained about the last line being empty! Thanks
2021-01-06 17:29:22 +0100 <lambdabot> Unknown command, try @list
2021-01-06 17:29:46 +0100 <tomsmeding> new_haskeller: https://en.wikipedia.org/wiki/Rubber_duck_debugging
2021-01-06 17:32:27 +0100alx741(~alx741@186.178.110.141) (Ping timeout: 272 seconds)
2021-01-06 17:33:28 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-01-06 17:33:41 +0100notzmv(~user@unaffiliated/zmv)
2021-01-06 17:34:00 +0100 <new_haskeller> ye_haskeler_gods: if you could spare a minute critiquing this, I would be grateful https://paste.tomsmeding.com/KTWCGcmh
2021-01-06 17:34:42 +0100ubert1(~Thunderbi@p200300ecdf1ee062e6b318fffe838f33.dip0.t-ipconnect.de)
2021-01-06 17:34:58 +0100ubert(~Thunderbi@p200300ecdf1ee07be6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-01-06 17:34:58 +0100ubert1ubert
2021-01-06 17:35:09 +0100 <merijn> new_haskeller: The map + list comprehension can be simplified to just filter
2021-01-06 17:35:14 +0100 <merijn> > filter even [1..10]
2021-01-06 17:35:16 +0100 <lambdabot> [2,4,6,8,10]
2021-01-06 17:35:38 +0100 <Melanie> :t count
2021-01-06 17:35:39 +0100 <lambdabot> error:
2021-01-06 17:35:39 +0100 <lambdabot> • Variable not in scope: count
2021-01-06 17:35:39 +0100 <lambdabot> • Perhaps you meant one of these:
2021-01-06 17:35:57 +0100 <merijn> new_haskeller: And rather than using head/tail multiple times in procone you probably wanna use pattern matching instead
2021-01-06 17:36:22 +0100 <merijn> new_haskeller: Which would also warn you for the error you're getting
2021-01-06 17:36:25 +0100 <ski> trues = [y | x <- l,let {y = procone x},y]
2021-01-06 17:36:29 +0100 <new_haskeller> ya -- I was brute forcing it
2021-01-06 17:36:32 +0100 <merijn> Which is calling "tail on an empty list"
2021-01-06 17:36:53 +0100 <ski> t1:t2:t3:_ = words l
2021-01-06 17:37:08 +0100arguapacha(uid134895@gateway/web/irccloud.com/x-mfwdshztacdbuefh) (Quit: Connection closed for inactivity)
2021-01-06 17:37:11 +0100 <new_haskeller> @merijn the last line of the input file was empty
2021-01-06 17:37:12 +0100 <lambdabot> Unknown command, try @list
2021-01-06 17:37:37 +0100 <ski> if you use `case l of t1:t2:t3:_ -> ...; _ -> ...', you can then decide what to do, if the list is too short
2021-01-06 17:38:28 +0100 <Melanie> @let import Util
2021-01-06 17:38:29 +0100 <lambdabot> .L.hs:145:1: error:
2021-01-06 17:38:29 +0100 <lambdabot> Could not load module ‘Util’
2021-01-06 17:38:29 +0100 <lambdabot> It is a member of the hidden package ‘ghc-8.10.2’.
2021-01-06 17:38:37 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 246 seconds)
2021-01-06 17:38:39 +0100 <ski> > span (== '-') "foo-bar-baz"
2021-01-06 17:38:40 +0100 <lambdabot> ("","foo-bar-baz")
2021-01-06 17:38:45 +0100 <ski> > break (== '-') "foo-bar-baz"
2021-01-06 17:38:47 +0100 <lambdabot> ("foo","-bar-baz")
2021-01-06 17:38:54 +0100 <merijn> new_haskeller: If you need inspiration for other ways, here's my solution: https://github.com/merijn/AdventOfCode2020/blob/master/Day3.hs
2021-01-06 17:39:15 +0100 <merijn> spoilers for both day 3 puzzles, obviously :p
2021-01-06 17:39:18 +0100 <new_haskeller> this is perhaps my day 3 of Haskell -- lots to work through based on your comments. Much appreciated.
2021-01-06 17:39:22 +0100 <ski> (lboundStr,'_':uboundStr) = break (== '-') t1
2021-01-06 17:40:21 +0100 <ski> and perhaps better to use `case readMaybe lboundStr of Just lbound -> ...; Nothing -> ...' as well ?
2021-01-06 17:40:32 +0100pera(~pera@unaffiliated/pera)
2021-01-06 17:40:34 +0100 <new_haskeller> I did day 1 in 1.5 days. day 2 in 10 minutes. but the day 3 IO involves a fair bit of digging. **I am a convert! **
2021-01-06 17:42:09 +0100juttamirth(4e3f1297@78-63-18-151.static.zebra.lt)
2021-01-06 17:42:18 +0100 <ski> passed = inRange (lbound,ubound) size
2021-01-06 17:43:43 +0100 <ski> (and the brackets around your patterns with `Just' are redundant ..)
2021-01-06 17:43:58 +0100 <glguy> new_haskeller: If you're solving this in Haskell you might consider adding yourself to our private leaderboard
2021-01-06 17:44:35 +0100 <glguy> The code is 43100-84040706
2021-01-06 17:44:49 +0100 <glguy> which I should probably remove from the /topic now that it's January
2021-01-06 17:44:54 +0100 https://www.haskell.org | https://wiki.haskell.org/IRC_channel | Paste code/errors: https://gist.github.com/ | Logs: http://tunes.org/~nef/logs/haskell/?C=M;O=D | https://www.reddit.com/r/haskell | Admin: #haskell-ops | Offtopic: #haskell-offtopic | https://downloads.haskell.org
2021-01-06 17:44:54 +0100 <merijn> I got twice as far this year before pesky real life ruined it >.>
2021-01-06 17:44:57 +0100chalkmon1(~chalkmons@unaffiliated/chalkmonster)
2021-01-06 17:45:03 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2021-01-06 17:45:07 +0100 <merijn> At this rate I might actually finish AoC next year :p
2021-01-06 17:45:28 +0100alx741(~alx741@186.178.110.141)
2021-01-06 17:45:35 +0100 <Melanie> glguy: there's a leaderboard?
2021-01-06 17:45:56 +0100 <Melanie> sorry, what is the code used for?
2021-01-06 17:46:08 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net) (Quit: -a- Connection Timed Out)
2021-01-06 17:46:15 +0100 <glguy> Melanie: you put the code in the box at https://adventofcode.com/2020/leaderboard/private
2021-01-06 17:46:18 +0100 <glguy> to add yourself to the list
2021-01-06 17:46:25 +0100 <Melanie> thanks!
2021-01-06 17:46:38 +0100xff0x(~fox@2001:1a81:52e0:100:d64b:d56d:3d88:4e8b) (Ping timeout: 260 seconds)
2021-01-06 17:46:40 +0100chalkmonster(~chalkmons@unaffiliated/chalkmonster) (Ping timeout: 246 seconds)
2021-01-06 17:47:19 +0100 <glguy> You'll find a lot of links to github where Haskellers have uploaded their solutions if you're exploring
2021-01-06 17:47:28 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2021-01-06 17:48:05 +0100 <Melanie> neat!! i'm #62 at this point :)
2021-01-06 17:50:07 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2021-01-06 17:50:08 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2021-01-06 17:50:24 +0100 <xerox_> this was the first time I ended in the top 10, it was a good year
2021-01-06 17:53:12 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-01-06 17:53:18 +0100rkbeach(31cfd1aa@49.207.209.170)
2021-01-06 17:53:37 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-01-06 17:55:26 +0100notzmv(~user@unaffiliated/zmv)
2021-01-06 17:55:55 +0100 <new_haskeller> @glguy @ski @merijn thanks for the hints
2021-01-06 17:55:56 +0100 <lambdabot> Unknown command, try @list
2021-01-06 17:56:02 +0100Wuzzy(~Wuzzy@p5790ed14.dip0.t-ipconnect.de)
2021-01-06 17:56:23 +0100hekkaidekapus](~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2021-01-06 17:57:32 +0100madjestic(~Android@86-88-72-244.fixed.kpn.net)
2021-01-06 17:57:49 +0100 <ski> yw
2021-01-06 17:59:28 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-zznalggusqjucmjb)
2021-01-06 18:00:59 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-06 18:02:12 +0100chrpape(~user@2a01:4f9:c010:632d::1)
2021-01-06 18:02:44 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
2021-01-06 18:03:42 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-06 18:07:22 +0100ulidtko(~ulidtko@194.54.80.38)
2021-01-06 18:08:40 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 272 seconds)
2021-01-06 18:09:17 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-01-06 18:09:55 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-01-06 18:10:30 +0100 <sm[m]> glguy's Haskell leaderboard is great, it deserves more marketing. Permanent website ? Post competition celebration of results ? Prizes ?
2021-01-06 18:11:08 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-01-06 18:12:14 +0100geekosaur(ac3a8b92@172.58.139.146)
2021-01-06 18:15:11 +0100rkbeach(31cfd1aa@49.207.209.170) (Remote host closed the connection)
2021-01-06 18:16:20 +0100juttamirth(4e3f1297@78-63-18-151.static.zebra.lt) (Ping timeout: 245 seconds)
2021-01-06 18:19:34 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 246 seconds)
2021-01-06 18:19:49 +0100jess(jess@freenode/staff/jess) (Quit: brb)
2021-01-06 18:21:03 +0100ubert(~Thunderbi@p200300ecdf1ee062e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-01-06 18:22:10 +0100ADG1089__(~aditya@223.236.177.109) (Remote host closed the connection)
2021-01-06 18:22:43 +0100ADG1089__(~aditya@223.236.177.109)
2021-01-06 18:22:46 +0100 <sshine> I never get past day 5.
2021-01-06 18:23:22 +0100 <sshine> maybe I'll join the AOC Haskell Club next year :)
2021-01-06 18:23:28 +0100 <glguy> sshine: Day 7 was probably the first interesting one this year
2021-01-06 18:23:29 +0100 <merijn> sshine: I recommend being unemployed, great way to have time for AOC! ;)
2021-01-06 18:23:49 +0100 <sshine> merijn, I *was* actually unemployed all through Dec 1-24! but I was busy hacking on a compiler.
2021-01-06 18:23:59 +0100 <merijn> sshine: Poor excuse!
2021-01-06 18:24:10 +0100 <sshine> I totally agree!
2021-01-06 18:27:36 +0100ADG1089__(~aditya@223.236.177.109) (Remote host closed the connection)
2021-01-06 18:28:08 +0100 <xerox_> sshine: which compiler?
2021-01-06 18:28:34 +0100xff0x(~fox@2001:1a81:52e0:100:d64b:d56d:3d88:4e8b)
2021-01-06 18:28:57 +0100kish`(~oracle@unaffiliated/oracle) ("Leaving")
2021-01-06 18:29:01 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 264 seconds)
2021-01-06 18:32:22 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-01-06 18:32:46 +0100 <adamwesp_> best time to build a compiler, either for a job, or as your own job! :)
2021-01-06 18:33:40 +0100nineonine(~nineonine@S01061cabc0b095f3.vf.shawcable.net)
2021-01-06 18:35:47 +0100Boomerang(~Boomerang@2a05:f6c7:2179:0:8da5:2e46:f1e1:ab48) (Ping timeout: 272 seconds)
2021-01-06 18:39:27 +0100nyd(~nyd@unaffiliated/elysian) (Quit: nyd)
2021-01-06 18:40:57 +0100styledash(~styledash@157.230.173.136) (Quit: The Lounge - https://thelounge.chat)
2021-01-06 18:41:35 +0100styledash(~styledash@157.230.173.136)
2021-01-06 18:41:51 +0100 <new_haskeller> going back to my aoc day 3 code. Is there an 'easier' way to do String to Int conversion? I cropped 'readMaybe' from somewhere. Seems like there would be a library function somewhere. I'm not being lazy. I have looked but not sure what the canonical solution would be. https://paste.tomsmeding.com/sfEAme6P
2021-01-06 18:42:32 +0100knupfer(~Thunderbi@200116b824b6e00054a0e5fffe7c6b6a.dip.versatel-1u1.de)
2021-01-06 18:42:32 +0100knupfer(~Thunderbi@200116b824b6e00054a0e5fffe7c6b6a.dip.versatel-1u1.de) (Client Quit)
2021-01-06 18:42:47 +0100knupfer(~Thunderbi@i5E86B49C.versanet.de)
2021-01-06 18:43:21 +0100 <ski> @index readMaybe
2021-01-06 18:43:21 +0100 <lambdabot> Text.Read
2021-01-06 18:43:21 +0100spopejoy(~stuart@ool-44c5f8c9.dyn.optonline.net)
2021-01-06 18:43:39 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-01-06 18:44:12 +0100 <ski> use pattern-matching, instead of `fst' and `snd' (and you can also do it instead of `drop 1')
2021-01-06 18:44:39 +0100 <ski> (and you can replace the pattern `t2' by `check:_', avoiding `head')
2021-01-06 18:44:44 +0100 <glguy> Actual readMaybe tolerates trailing whitespace (like read does)
2021-01-06 18:45:55 +0100 <ski> seeing `(==True)' is jarring
2021-01-06 18:46:00 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Ping timeout: 256 seconds)
2021-01-06 18:46:01 +0100eacameron(uid256985@gateway/web/irccloud.com/x-ycbifkwtkicpetrm)
2021-01-06 18:46:07 +0100 <glguy> ski: it's important to be sure
2021-01-06 18:46:39 +0100 <merijn> new_haskeller: Eh, just do "filter procone"
2021-01-06 18:46:49 +0100 <merijn> Instead of map, then filter by comparison to True
2021-01-06 18:47:19 +0100 <ski> (but then it's not a list of `True's ..)
2021-01-06 18:47:33 +0100 <merijn> ski: That's irrelevant
2021-01-06 18:47:37 +0100 <ski> i know
2021-01-06 18:47:58 +0100 <ski> (but the name would have to be changed, in order to not be confusing)
2021-01-06 18:48:02 +0100 <glguy> new_haskeller: You never need to compare for equality to True, you can just pass it through in that case with 'id'
2021-01-06 18:50:30 +0100 <new_haskeller> excellent! 'id' is new to me. let trues = filter id (map procone l )
2021-01-06 18:50:44 +0100rajivr(uid269651@gateway/web/irccloud.com/x-faovxbrouyrpmypw) (Quit: Connection closed for inactivity)
2021-01-06 18:50:47 +0100 <glguy> new_haskeller: and if you're doing that you can further simplify: filter procone l
2021-01-06 18:50:57 +0100 <glguy> (since you don't care what the elements are)
2021-01-06 18:51:07 +0100robotmay(~beepboop@2001:8b0:7af0:2580:e163:8dc0:987:5b1e) (Quit: Be excellent to each other)
2021-01-06 18:51:26 +0100 <ski> new_haskeller : is there anything sensible you can do, or would like to do, in case any of the expected things (length of lists, presence of `-', ability to parse `Int's) fail ?
2021-01-06 18:51:53 +0100 <sshine> xerox_, this one: https://github.com/Sword-Smith/Sword (also, before you comment on the lack of best-practice, there's a bunch of things I did that aren't in that repo. this is a 3-year-old BSc project that was brought back to life.)
2021-01-06 18:52:22 +0100notzmv(~user@unaffiliated/zmv) (Remote host closed the connection)
2021-01-06 18:53:14 +0100notzmv(~user@unaffiliated/zmv)
2021-01-06 18:53:48 +0100 <sshine> xerox_, personally, the biggest accomplishment I think we achieved was to lure two students who'd never written Haskell before to extend the compiler with some features. :)
2021-01-06 18:54:00 +0100gues64803(~username@62-34-117-205.abo.bbox.fr)
2021-01-06 18:54:48 +0100 <Melanie> > ski: That's irrelevant
2021-01-06 18:54:50 +0100 <lambdabot> error: Variable not in scope: skierror:
2021-01-06 18:54:50 +0100 <lambdabot> Data constructor not in scope: That's :: t0 -> [a]error: Variable not in...
2021-01-06 18:55:22 +0100 <xerox_> sshine: neat (:
2021-01-06 18:57:40 +0100 <new_haskeller> @ski the AoC input file was of course well-formed. I think if a line fails I probably would just skip it. Does my answer influence with library to use?
2021-01-06 18:57:40 +0100 <lambdabot> Maybe you meant: wiki src ask
2021-01-06 18:58:34 +0100 <ski> new_haskeller : i'm just thinking of possibly avoiding all the partiality in `procone'
2021-01-06 18:58:49 +0100 <ski> (mind that i dunno what the intent of that function is)
2021-01-06 18:59:14 +0100 <new_haskeller> 'partiality' ?
2021-01-06 18:59:26 +0100argento(~argent0@168.227.96.51)
2021-01-06 18:59:31 +0100 <ski> (oh, and btw, those `:: Maybe Int' type ascriptions are actually optional, here)
2021-01-06 18:59:48 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2021-01-06 19:00:44 +0100 <ski> new_haskeller : i mean that calling `procone' with a list that doesn't contain three words, or where you can't parse two `Int's from the first word, will result in the program being aborted
2021-01-06 19:00:55 +0100 <ski> > 1 + head []
2021-01-06 19:00:57 +0100 <lambdabot> *Exception: Prelude.head: empty list
2021-01-06 19:01:03 +0100 <ggVGc> That's usually fine in AoC :)
2021-01-06 19:01:07 +0100 <ski> (similar to such a failure)
2021-01-06 19:01:20 +0100geekosaur(ac3a8b92@172.58.139.146) (Ping timeout: 245 seconds)
2021-01-06 19:01:22 +0100 <ggVGc> My rust implementations were littered with unwra
2021-01-06 19:02:07 +0100 <ski> > let [t1,t2,t3] = words "9-10 b: " in (t1,t2,t3)
2021-01-06 19:02:08 +0100 <ggVGc> also why AoC doesn't really teach you to use languages very well... since any error handling is optional
2021-01-06 19:02:10 +0100 <lambdabot> ("*Exception: <interactive>:3:5-33: Non-exhaustive patterns in [t1, t2, t3]
2021-01-06 19:02:17 +0100 <new_haskeller> is there a 'try' 'catch' idiom so the program does not abort?
2021-01-06 19:02:28 +0100 <ski> use `case'-`of'
2021-01-06 19:02:42 +0100 <ski> case words l of
2021-01-06 19:02:58 +0100dandels(~dandels@unaffiliated/dandels)
2021-01-06 19:03:04 +0100 <ski> [t1,t2,t3] -> ..t1..t2..t3..
2021-01-06 19:03:13 +0100 <ski> _ -> ..oops..
2021-01-06 19:03:28 +0100 <ski> and similarly for the `readMaybe' calls
2021-01-06 19:03:48 +0100 <new_haskeller> I see ... of course!
2021-01-06 19:03:50 +0100 <ski> of course, you'd have to decide what to do, in the failing branch
2021-01-06 19:04:11 +0100 <ski> .. which was why i was wondering whether there would be anything sensible you could do, in those cases
2021-01-06 19:04:27 +0100 <new_haskeller> in case of something like AoC I'll likely return False for that line
2021-01-06 19:04:37 +0100 <ski> e.g. maybe it would be sensible to have the call to `procone' result in `False' (or `True' ?) in that case ?
2021-01-06 19:05:57 +0100 <jollygood2> new_haskeller, there is, but you can just fix your function instead. there's -fwarn-incomplete-patterns flag to catch such things
2021-01-06 19:05:57 +0100 <ggVGc> new_haskeller: there's try/catch, but it's mostly not what you want, and it's used when doing things in IO. something like a missed pattern match, or calling `fst` on an empty list is not something you'd handle with try/catch in haskell, and is considered a programming error, and a bug that needs to be fixed and hence should crash the program
2021-01-06 19:06:13 +0100 <jollygood2> new_haskeller, there's also readMaybe in Text.Read
2021-01-06 19:07:00 +0100 <ggVGc> try/catch is somethig that would be used to handle an error while reading a file for example
2021-01-06 19:07:06 +0100 <ski> s/fst/head/
2021-01-06 19:07:11 +0100codeAlways(uid272474@gateway/web/irccloud.com/x-ksrtxpuomausdfhe)
2021-01-06 19:07:11 +0100 <ggVGc> haha, sorry
2021-01-06 19:07:12 +0100 <ggVGc> I meant head
2021-01-06 19:07:50 +0100 <ski> jollygood2 : already mentioned :)
2021-01-06 19:08:37 +0100 <new_haskeller> I'll look in Text.Read properly. thks
2021-01-06 19:10:36 +0100 <new_haskeller> ggVGc: good comment about 'try/catch'. I have never thought of it this way (e.g. in javascript)
2021-01-06 19:12:22 +0100 <ski> (either fixing it by making the operation not partial .. or by ensuring that a precondition under which it's total is fulfilled)
2021-01-06 19:12:30 +0100geekosaur(42d52137@66.213.33.55)
2021-01-06 19:13:09 +0100 <ggVGc> new_haskeller: the thing with haskell is that in pure code (not using IO), there should never be a crash. But this is a bit of a lie, since it's possible to write partial pattern matches (can be prevented with compiler flag),and there are artial functions (like head). So in practice even pure code can crash. But those crashes are incorrect usages of the language, and all those cases can be
2021-01-06 19:13:11 +0100 <ggVGc> rewritten in a way that doesn't crash and produces a real error value instead.
2021-01-06 19:13:49 +0100 <ggVGc> So try/catch only makes sense in "truly exceptional" circumstances, from outside influence that does not mean your code is wrong, and hence only make sense in IO
2021-01-06 19:14:06 +0100ransom(~c4264035@8.47.12.52)
2021-01-06 19:14:46 +0100 <jollygood2> you can't even call try/catch outside of IO
2021-01-06 19:14:56 +0100 <ggVGc> jollygood2: this is exactly my point
2021-01-06 19:15:04 +0100 <ggVGc> I am trying to clarify why that is the case
2021-01-06 19:15:19 +0100 <ggVGc> I am unfortunately quite bad at expressing myself most of the time
2021-01-06 19:16:00 +0100kyali(~kyali@APN-123-253-144-gprs.simobil.net)
2021-01-06 19:16:43 +0100andreas303(~andreas@gateway/tor-sasl/andreas303) (Ping timeout: 240 seconds)
2021-01-06 19:17:00 +0100 <ggVGc> new_haskeller: this is one of the big warts, imo, in JS. That exceptions like file errors are bundled together with invalid property accesses etc. Where one is an actual exceptional situation, and the other is you writing buggy code (which you shouldn't be writing an error handler for)
2021-01-06 19:17:25 +0100 <new_haskeller> that's why I am here :)
2021-01-06 19:17:48 +0100andreas303(~andreas@gateway/tor-sasl/andreas303)
2021-01-06 19:18:21 +0100Tario(~Tario@201.192.165.173)
2021-01-06 19:19:52 +0100 <ggVGc> new_haskeller: I recommend compiing your code with -Wall and -Werror. This will protect you against partial pattern matches, among other things, and generally clear up your code
2021-01-06 19:21:05 +0100stefan-__(~cri@42dots.de) (Ping timeout: 240 seconds)
2021-01-06 19:23:53 +0100 <new_haskeller> I find the Haskell extension in VS Code v helpful. If it flags a problem, there is no point going to the compiler!
2021-01-06 19:24:08 +0100 <new_haskeller> ggVGc: done!
2021-01-06 19:25:48 +0100stefan-_(~cri@42dots.de)
2021-01-06 19:26:40 +0100robotmay(~beepboop@80.172.187.81.in-addr.arpa)
2021-01-06 19:29:25 +0100jitwit(~user@bras-base-mtrlpq4381w-grc-34-174-93-238-71.dsl.bell.ca) (Remote host closed the connection)
2021-01-06 19:38:29 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds)
2021-01-06 19:39:00 +0100chalkmon1(~chalkmons@unaffiliated/chalkmonster) (Quit: WeeChat 3.0)
2021-01-06 19:39:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33) (Remote host closed the connection)
2021-01-06 19:42:46 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-01-06 19:44:40 +0100ADG1089__(~aditya@223.236.177.109)
2021-01-06 19:46:11 +0100nucranium(~nucranium@2a02:8010:6173:0:24ec:3ce1:39cf:bba2) (Remote host closed the connection)
2021-01-06 19:48:28 +0100fryguybob(~fryguybob@cpe-74-65-31-113.rochester.res.rr.com) (Ping timeout: 246 seconds)
2021-01-06 19:49:25 +0100fryguybob(~fryguybob@cpe-74-65-31-113.rochester.res.rr.com)
2021-01-06 19:49:59 +0100conal(~conal@64.71.133.70)
2021-01-06 19:54:12 +0100gedda(~gedda@185.195.233.164)
2021-01-06 19:54:20 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 256 seconds)
2021-01-06 19:55:55 +0100Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-01-06 19:56:57 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-06 19:57:46 +0100 <gedda> I have a bunch of type signatures like this: "default foo :: (MonadTrans t, MyTypeClass m1, m ~ t m1) => m a" for a bunch of different foo's and MyTypeClass's
2021-01-06 19:57:54 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 260 seconds)
2021-01-06 19:57:54 +0100Lord_of_Life_Lord_of_Life
2021-01-06 19:58:15 +0100 <gedda> If i wanted to reduce the constraint boiler, is type families and ConstraintKinds the way to go?
2021-01-06 19:58:20 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2021-01-06 19:58:55 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-01-06 19:58:56 +0100dandels(~dandels@unaffiliated/dandels) (Ping timeout: 240 seconds)
2021-01-06 19:59:40 +0100jfe(~user@pool-71-184-149-134.bstnma.fios.verizon.net) (Ping timeout: 246 seconds)
2021-01-06 19:59:48 +0100 <gedda> is it possible to get something like "default foo :: Bar MyTypeClass m => m"?
2021-01-06 20:00:23 +0100 <gedda> where Bar MyTypeClass m would expand to (MonadTrans t, MyTypeClass m1, m ~ t m1) of course
2021-01-06 20:00:37 +0100christo(~chris@81.96.113.213)
2021-01-06 20:01:24 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 272 seconds)
2021-01-06 20:02:15 +0100chenshen(~chenshen@2620:10d:c090:400::5:af56)
2021-01-06 20:03:09 +0100gues64803(~username@62-34-117-205.abo.bbox.fr) ()
2021-01-06 20:03:28 +0100berberman_(~berberman@unaffiliated/berberman)
2021-01-06 20:03:39 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33)
2021-01-06 20:03:50 +0100 <merijn> gedda: With ConstraintKinds and type families, sure
2021-01-06 20:04:10 +0100 <merijn> You can do nearly arbitrary nonsense that way :p
2021-01-06 20:04:32 +0100 <gedda> the question is always is the arbitrary nonsense worth it or KISS
2021-01-06 20:04:41 +0100berberman_(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-01-06 20:04:50 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
2021-01-06 20:05:00 +0100 <merijn> gedda: Actually, for the simple case you just need ConstraintKinds, not even type families
2021-01-06 20:05:09 +0100berberman(~berberman@unaffiliated/berberman)
2021-01-06 20:05:25 +0100 <merijn> With ConstraintKinds you can just do "type Foo v = (Show v, Eq v, Ord v)"
2021-01-06 20:05:38 +0100 <gedda> merijn, really? how would I define a type which can accept a typeclass as argument?
2021-01-06 20:06:28 +0100 <merijn> gedda: YOu can try if "type Foo cls m = (cls m, Monad m)" or something along those lines works
2021-01-06 20:06:33 +0100 <merijn> I think it should?
2021-01-06 20:06:43 +0100 <gedda> ill have a go
2021-01-06 20:06:46 +0100jamm(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-01-06 20:06:51 +0100 <ski> (looks like you'd need existential quantification (the real thing) for the above example ?)
2021-01-06 20:07:29 +0100 <gedda> over t, and m1?
2021-01-06 20:07:32 +0100 <gedda> or t and m?
2021-01-06 20:07:48 +0100 <ski> type Foo c m = exists t m1. (MonadTrans t,c m1,m ~ t m1)
2021-01-06 20:07:55 +0100jamm(~jamm@unaffiliated/jamm)
2021-01-06 20:08:09 +0100 <ski> oh, s/Foo/Bar/
2021-01-06 20:09:22 +0100 <kuribas> why doesn't () have an alternative instance?
2021-01-06 20:09:30 +0100 <gedda> ski, exists and not forall?
2021-01-06 20:09:34 +0100 <ski> yes
2021-01-06 20:09:50 +0100 <ski> foo :: Bar MyTypeClass m => m
2021-01-06 20:10:05 +0100 <ski> foo :: (exists t m1. (MonadTrans t,MyTypeClass m1,m ~ t m1)) => m
2021-01-06 20:10:16 +0100 <ski> foo :: forall t m1. ((MonadTrans t,MyTypeClass m1,m ~ t m1) => m)
2021-01-06 20:10:18 +0100ADG1089__(~aditya@223.236.177.109) (Remote host closed the connection)
2021-01-06 20:10:41 +0100 <ski> an alternative would be
2021-01-06 20:10:47 +0100ph88^(~ph88@2a02:8109:9e00:7e5c:f964:d8d4:1ec3:146c) (Ping timeout: 272 seconds)
2021-01-06 20:10:58 +0100ADG1089__(~aditya@223.236.177.109)
2021-01-06 20:11:00 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-06 20:11:03 +0100jfe(~user@pool-71-184-149-134.bstnma.fios.verizon.net)
2021-01-06 20:11:08 +0100 <ski> type FooOf c m o = forall t m1. (MonadTrans t,c m1,m ~ t m1) => o
2021-01-06 20:11:24 +0100 <ski> foo :: FooOf MyTypeClass m m
2021-01-06 20:11:38 +0100 <ski> foo :: forall t m1. (MonadTrans t,MyTypeClass m1,m ~ t m1) => m
2021-01-06 20:11:57 +0100shinobi(~shinobi@c-24-147-48-162.hsd1.ma.comcast.net) (Quit: Leaving)
2021-01-06 20:12:14 +0100 <ski> (wrapping the "body type" in a parameter of the type synonym)
2021-01-06 20:12:28 +0100jamm(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-01-06 20:12:48 +0100 <gedda> hmm, exists gives me not in in scope error, even with ExistentialQuantification
2021-01-06 20:13:06 +0100 <gedda> with your "type Foo ..."
2021-01-06 20:13:33 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-01-06 20:14:04 +0100 <ski> `exists' doesn't exist in GHC
2021-01-06 20:14:21 +0100 <ski> (and `ExistentialQuantification' doesn't turn on existential quantification .. imho, it's a misnomer)
2021-01-06 20:15:22 +0100 <gedda> Wow thats confusing, so is your solution a no go with ghc?
2021-01-06 20:15:32 +0100jfe(~user@pool-71-184-149-134.bstnma.fios.verizon.net) (Ping timeout: 256 seconds)
2021-01-06 20:15:35 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it)
2021-01-06 20:15:49 +0100 <ski> `FooOf' would work, i think
2021-01-06 20:15:57 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 260 seconds)
2021-01-06 20:18:11 +0100 <ski> (`ExistentialQuantification' turns on a feature by which you can *encode* existential quantification, by defining a `data' type (more specifically, it amounts to declating a `data' constructor with an existentially quantified parameter type .. although, you can curry -- so it's only directly an existential, in the uncurried form))
2021-01-06 20:19:15 +0100 <gedda> FooOf would perfectly, thanks
2021-01-06 20:19:55 +0100 <gedda> and it worked neatly where i have `a -> m o` or a -> b -> m o` as well
2021-01-06 20:19:59 +0100 <ski> the solution with `exists' was what you would probably be ablt to do, *if* you had proper existential quantification
2021-01-06 20:20:06 +0100 <ski> yea
2021-01-06 20:20:25 +0100 <ski> of course, you can't access `t' or `m1' there, though .. but hopefully that's not needed
2021-01-06 20:20:54 +0100 <gedda> no it is just to remove type type signature boiler for defaultsigs when using mtl
2021-01-06 20:21:07 +0100 <gedda> foo = lift foo
2021-01-06 20:21:47 +0100 <gedda> and here i was looking for an excuses to learn type families once and for all >:^(
2021-01-06 20:22:18 +0100skididn't really see how type families would help, here ..
2021-01-06 20:22:53 +0100 <gedda> (hence why i should learn them)
2021-01-06 20:25:46 +0100 <gedda> naming wise im also a bit surprised that the forall requires RankNTypes and not QuantifiedConstraints
2021-01-06 20:25:57 +0100 <ski> you know how `ExistentialQuantification' works ?
2021-01-06 20:27:04 +0100 <ski> well, you had no quantified constraints, here. that would have been `(forall a. ..a..) => ...'. but you had `forall a. (..a.. => ..a..)', which is an ordinary universally quantified, and constrained, type
2021-01-06 20:28:53 +0100 <gedda> aah, of course
2021-01-06 20:29:54 +0100 <gedda> that explains my confusion with ExistentialQuantification as well
2021-01-06 20:30:01 +0100 <gedda> very helpful!
2021-01-06 20:32:10 +0100geekosaur(42d52137@66.213.33.55) (Ping timeout: 245 seconds)
2021-01-06 20:32:44 +0100 <ski> note that `(exists a. ..a..) -> ...' is equivalent to `forall a. (..a.. -> ...)'
2021-01-06 20:32:48 +0100 <ski> so, in particular, e.g.
2021-01-06 20:32:57 +0100 <ski> length :: forall a. ([a] -> Int)
2021-01-06 20:33:00 +0100 <ski> could also be thought of as
2021-01-06 20:33:09 +0100 <ski> length :: (exists a. [a]) -> Int
2021-01-06 20:33:39 +0100 <ski> you can read the type signature as (a) for all types `a', if you pass a list of elements of type `a' to `length', you'll get an `Int' back
2021-01-06 20:34:16 +0100 <ski> but you can also read it as (b) the result of calling `length' will be `Int', if there exists some type `a' such that the argument is a list of elements of type `a'
2021-01-06 20:34:49 +0100 <gedda> that much i remember from my logic classes in uni
2021-01-06 20:35:22 +0100 <ski> and for similar reasons, `(exists a. ..a..) => ...' (an existentially quantified constraint, as in my `Foo' above) would be equivalent to `forall a. (..a.. => ...)'
2021-01-06 20:35:52 +0100 <gedda> i think i've been missing out on ExistentialQuantification, looks like i could use it in a bunch of places actually in my code to reduce boiler
2021-01-06 20:36:56 +0100 <ski> so, having an argument type wrapped in `exists' is "not serious", in the sense that you can always rewrite it with a `forall' wrapping the whole function type. (and ditto for `exists' in a constraint that you're assuming with `=>', declaring that the caller/user/consumer must ensure they're satisfied)
2021-01-06 20:37:45 +0100 <ski> otoh, having the result type wrapped in `exists' (or having `exists' more deeply nested in either argument types or result types) would be "serious", not as easily expressible in another way
2021-01-06 20:38:29 +0100 <gedda> naturally, i just presumed forall a. (...) => m a would associate to the left as (forall a. (...)) => m a and not the other way
2021-01-06 20:38:59 +0100 <gedda> which in hindsight doesn't make a lot of sense
2021-01-06 20:39:05 +0100 <ski> you could also note that `... -> (forall a. ..a..)' is equivalent to `forall a. (... -> ..a..)' (and similarly `... => (forall a. ..a..)' is equivalent to `forall a. (... => ..a..)') .. so, you can move `forall's wrapping result type so that it wraps the whole function type. so that usage is also "non-serious"/"trivial"
2021-01-06 20:39:21 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2021-01-06 20:39:58 +0100 <ski> otoh, having *argument* type wrapped in `forall' is "serious"/"nontrivial", requires `Rank2Types'. (and nesting it more deeply in arguments of a callback function type requires `RankNTypes')
2021-01-06 20:40:16 +0100knupfer1(~Thunderbi@200116b824b6e000295db61e169135c3.dip.versatel-1u1.de)
2021-01-06 20:40:17 +0100knupfer(~Thunderbi@i5E86B49C.versanet.de) (Quit: knupfer)
2021-01-06 20:40:17 +0100knupfer1knupfer
2021-01-06 20:40:32 +0100 <koz_> ski: Isn't Rank2Types just part of RankNTypes now?
2021-01-06 20:40:38 +0100 <gedda> on the topic of Rank2Types vs RankNTypes, do people still use Rank2Types?
2021-01-06 20:40:55 +0100 <koz_> I mean yes, in theory we can have rank-2 inference, but it's not like GHC uses the algorithm that enables this in any case.
2021-01-06 20:41:08 +0100 <ski> gedda : yea .. not that seldom misunderstandings seem to be like that, they're obviously incorrect, once you examine them (once you're able to examine them, from the right angle, or with enough appropriate detail, perhaps)
2021-01-06 20:41:12 +0100 <ski> koz_ : yes
2021-01-06 20:41:14 +0100 <Uniaika> koz_: yes I think it is
2021-01-06 20:41:19 +0100thc202(~thc202@unaffiliated/thc202) (Quit: thc202)
2021-01-06 20:41:22 +0100 <ski> (i was just about to say that :)
2021-01-06 20:41:34 +0100 <Uniaika> no I think you raced me
2021-01-06 20:41:42 +0100 <Uniaika> well-done, mr. combinator
2021-01-06 20:41:46 +0100 <koz_> Uniaika: Somethign something racy comments.
2021-01-06 20:41:51 +0100skijust types `Rank2Types', is that's all that's needed
2021-01-06 20:42:08 +0100 <koz_> Also, I forget what paper had that algorithm. I remember Odersky was one of the coauthors?
2021-01-06 20:42:28 +0100 <ski> (and similarly, if i only need rank-2 data constructors, i use `PolymorphicComponents')
2021-01-06 20:42:57 +0100 <ski> @where Haskel
2021-01-06 20:42:57 +0100 <lambdabot> <http://web.archive.org/web/20070703001910/http://www.cs.chalmers.se/~augustss/pics/haskel.gif>
2021-01-06 20:43:40 +0100 <koz_> ski: Link be baroke.
2021-01-06 20:43:54 +0100 <ski> works here
2021-01-06 20:43:56 +0100 <gedda> works for me
2021-01-06 20:43:58 +0100ericsagnes(~ericsagne@2405:6580:0:5100:e826:4c07:b220:a42a) (Ping timeout: 260 seconds)
2021-01-06 20:44:00 +0100 <__monty__> Is that from Maus?
2021-01-06 20:44:03 +0100 <ski> yes
2021-01-06 20:44:48 +0100 <koz_> Ah whoops.
2021-01-06 20:45:00 +0100 <koz_> Clicked wrong thing because my terminal is 'smart' about links.
2021-01-06 20:45:59 +0100ski. o O ( "Delimiting a URI in Context" <https://tools.ietf.org/html/rfc3986#appendix-C> )
2021-01-06 20:46:17 +0100 <gedda> koz_, when you say in theory, doesnt ghc in practice have rank-2 inference with the more general rank-n algorithm?
2021-01-06 20:46:22 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Ping timeout: 272 seconds)
2021-01-06 20:46:55 +0100 <ski> > let foo f = (f [False,True],f "FileNotFound") in foo reverse
2021-01-06 20:46:57 +0100 <lambdabot> error:
2021-01-06 20:46:57 +0100 <lambdabot> • Couldn't match type ‘Char’ with ‘Bool’
2021-01-06 20:46:57 +0100 <lambdabot> Expected type: [Bool]
2021-01-06 20:46:57 +0100 <koz_> gedda: In theory means quite literally 'it is possible to do'.
2021-01-06 20:47:15 +0100 <koz_> Rank-n polymorphism can't have type inference even in theory.
2021-01-06 20:47:16 +0100 <ski> > let foo :: (forall a. [a] -> [a]) -> ([Bool],String); foo f = (f [False,True],f "FileNotFound") in foo reverse
2021-01-06 20:47:18 +0100 <lambdabot> ([True,False],"dnuoFtoNeliF")
2021-01-06 20:47:21 +0100 <koz_> (for arbitrary n)
2021-01-06 20:47:27 +0100geekosaur(42d52137@66.213.33.55)
2021-01-06 20:47:28 +0100 <gedda> koz_, yeah, just wondering if I misunderstood something
2021-01-06 20:47:42 +0100 <gedda> and that was it, arbitrary n inference doesnt work
2021-01-06 20:47:56 +0100 <koz_> Yeah, indeed. Rank-2 can have inference, but IIRC the algorithm is gory.
2021-01-06 20:47:59 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-06 20:48:04 +0100 <gedda> does GHC limit n to some upper bound?
2021-01-06 20:48:07 +0100 <koz_> (both in specifics and in performance)
2021-01-06 20:48:14 +0100 <gedda> or rather, how large can n be?
2021-01-06 20:48:18 +0100 <koz_> gedda: If you really need rank-100 polymorphism, go for it.
2021-01-06 20:48:30 +0100 <koz_> I think you'll hit other limits _long_ before this becomes an issue.
2021-01-06 20:48:31 +0100 <Uniaika> (or make your machine die trying)
2021-01-06 20:49:13 +0100knupfer(~Thunderbi@200116b824b6e000295db61e169135c3.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-01-06 20:49:51 +0100 <gedda> more of a thought exercise, how little code can you write to have ghc be unable to typecheck a program in a reasonable time
2021-01-06 20:50:56 +0100 <koz_> gedda: I'm pretty sure it's possible to infinite loop the compiler using type families.
2021-01-06 20:51:28 +0100 <gedda> if we say that the program should be sound then
2021-01-06 20:51:41 +0100 <koz_> gedda: Define 'sound'.
2021-01-06 20:52:38 +0100 <gedda> no infinite types
2021-01-06 20:53:03 +0100 <gedda> like mutual recursion without a base case
2021-01-06 20:53:27 +0100 <koz_> gedda: What do you mean by 'infinite type'?
2021-01-06 20:53:31 +0100 <ski> @type let pair x y z = z x y; x0 y = pair y y; x1 = x0 . x0; x2 = x1 . x1; x3 = x2 . x2 in x3 id
2021-01-06 20:53:32 +0100 <lambdabot> ((((((((((((((((a -> a) -> (a -> a) -> t1) -> t1) -> (((a -> a) -> (a -> a) -> t1) -> t1) -> t2) -> t2) -> (((((a -> a) -> (a -> a) -> t1) -> t1) -> (((a -> a) -> (a -> a) -> t1) -> t1) -> t2) -> t2)
2021-01-06 20:53:32 +0100 <lambdabot> -> t3) -> t3) -> (((((((a -> a) -> (a -> a) -> t1) -> t1) -> (((a -> a) -> (a -> a) -> t1) -> t1) -> t2) -> t2) -> (((((a -> a) -> (a -> a) -> t1) -> t1) -> (((a -> a) -> (a -> a) -> t1) -> t1) ->
2021-01-06 20:53:32 +0100 <lambdabot> t2) -> t2) -> t3) -> t3) -> t4) -> t4) -> (((((((((a -> a) -> (a -> a) -> t1) -> t1) -> (((a -> a) -> (a -> a) -> t1) -> t1) -> t2) -> t2) -> (((((a -> a) -> (a -> a) -> t1) -> t1) -> (((a -> a) -> (
2021-01-06 20:53:32 +0100 <lambdabot> a -> a) -> t1) -> t1) -> t2) -> t2) -> t3) -> t3) -> (((((((a -> a) -> (a -> a) -> t1) -> t1) -> (((a -> a) -> (a -> a) -> t1) -> t1) -> t2) -> t2) -> (((((a -> a) -> (a -> a) -> t1) -> t1) -> (((a -
2021-01-06 20:53:32 +0100 <lambdabot> > a) -> (a -> a) -> t1) -> t1) -> t2) -> t2) -> t3) -> t3) -> t4) -> t4) -> t5) -> t5) -> (((((((((((a -> a) -> (a -> a) -> t1) -> t1) -> (((a -> a) -> (a -> a) -> t1) -> t1) -> t2) -> t2) -> (((((a
2021-01-06 20:53:34 +0100 <lambdabot> [32 @more lines]
2021-01-06 20:53:53 +0100 <monochrom> If you insist every recursion to have a base case, you are in the wrong channel.
2021-01-06 20:53:56 +0100 <koz_> ski: Oooof.
2021-01-06 20:54:05 +0100pavonia(~user@unaffiliated/siracusa)
2021-01-06 20:54:08 +0100 <monochrom> In Haskell and #haskell, we have soundness without base cases.
2021-01-06 20:54:11 +0100 <koz_> That's like, an exponentially-sized tree?
2021-01-06 20:54:15 +0100 <ski> yes
2021-01-06 20:55:10 +0100 <gedda> monochrom, of course, but a simple endless loop is no fun :(
2021-01-06 20:55:50 +0100 <monochrom> Is "x = 0 : x" fun? I think it is.
2021-01-06 20:56:00 +0100 <monochrom> Is it also a simple endless loop? I think it is.
2021-01-06 20:56:14 +0100 <koz_> Alternatively, there's the simple [1 ..]
2021-01-06 20:56:20 +0100 <koz_> Also a simple endless loop, but very useful!
2021-01-06 20:56:25 +0100 <ski> @let infixr 5 /\/; (/\/) :: [a] -> [a] -> [a]; [ ] /\/ ys = ys; (x:xs) /\/ ys = x : ys /\/ xs
2021-01-06 20:56:26 +0100 <lambdabot> Defined.
2021-01-06 20:56:28 +0100ericsagnes(~ericsagne@2405:6580:0:5100:e475:5ea1:1ccc:d1ed)
2021-01-06 20:56:31 +0100 <koz_> (or [0..])
2021-01-06 20:56:45 +0100 <ski> > let abacaba = repeat 0 /\/ map (1 +) abacaba in abacaba
2021-01-06 20:56:47 +0100 <lambdabot> [0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1...
2021-01-06 20:57:08 +0100 <gedda> monochrom, x :: Num a => [a]
2021-01-06 20:57:25 +0100 <gedda> still typechecks quickly
2021-01-06 20:57:56 +0100 <monochrom> I think you don't get my point.
2021-01-06 20:58:59 +0100 <gedda> i fully do
2021-01-06 20:59:32 +0100jfe(~user@pool-71-184-149-134.bstnma.fios.verizon.net)
2021-01-06 20:59:42 +0100carif(~mcarifio@cpe-67-246-227-118.rochester.res.rr.com)
2021-01-06 20:59:49 +0100 <ski> it was just a point re "like mutual recursion without a base case", not about large or infinite types
2021-01-06 21:00:18 +0100 <ski> (or long typechecking time)
2021-01-06 21:03:06 +0100denucat(teqwve@2001:bc8:28d6::2) (Quit: cya)
2021-01-06 21:03:12 +0100 <gedda> i might have expressed myself clumsily
2021-01-06 21:04:06 +0100conal(~conal@64.71.133.70) (Ping timeout: 272 seconds)
2021-01-06 21:05:18 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-01-06 21:07:02 +0100kuribas(~user@ptr-25vy0i7d7aymgmplx2i.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-01-06 21:07:41 +0100conal(~conal@66.115.157.85)
2021-01-06 21:09:57 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5)
2021-01-06 21:10:23 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2021-01-06 21:10:34 +0100ph88^(~ph88@2a02:8109:9e00:7e5c:f964:d8d4:1ec3:146c)
2021-01-06 21:11:46 +0100argento(~argent0@168.227.96.51) (Quit: leaving)
2021-01-06 21:12:46 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-01-06 21:12:53 +0100ADG1089_(~aditya@171.76.136.168)
2021-01-06 21:13:31 +0100ADG1089__(~aditya@223.236.177.109) (Ping timeout: 246 seconds)
2021-01-06 21:13:40 +0100Franciman(~francesco@host-82-48-174-127.retail.telecomitalia.it) (Quit: Leaving)
2021-01-06 21:13:42 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-06 21:13:44 +0100manjaro-user_(~manjaro-u@2601:285:c000:a6c0::4f77)
2021-01-06 21:17:17 +0100ph88^(~ph88@2a02:8109:9e00:7e5c:f964:d8d4:1ec3:146c) (Ping timeout: 272 seconds)
2021-01-06 21:18:28 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus) (Quit: ->)
2021-01-06 21:18:56 +0100 <melkornms> hey guys, I was digging a little more into the Monoid (a -> b) and stumbled upon something I can't understand, I have made a little gist - https://gist.github.com/MelkorNemesis/b53535f298d478aa437853c8180dbbd9
2021-01-06 21:19:05 +0100 <melkornms> would the implementation on line 4 work?
2021-01-06 21:19:11 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 272 seconds)
2021-01-06 21:19:22 +0100 <melkornms> mappend is a binary function and here it takes 3 arguments
2021-01-06 21:19:30 +0100coot(~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl)
2021-01-06 21:20:06 +0100 <ski> yes it would
2021-01-06 21:20:11 +0100 <melkornms> does it have something to do with partial application? I can understand it on the line 11 where it clearly reads f <> g
2021-01-06 21:20:19 +0100 <merijn> melkornms: Question: What's the difference between a function taking 2 arguments and one taking 1 argument and returning a lambda?
2021-01-06 21:20:34 +0100 <ski> mappend :: (a -> b) -> (a -> b) -> (a -> b) -- where `Monoid b' is known
2021-01-06 21:20:37 +0100 <ski> in that case
2021-01-06 21:20:40 +0100 <melkornms> merijn: I would say none?
2021-01-06 21:20:44 +0100 <merijn> melkornms: Right
2021-01-06 21:20:53 +0100 <ski> mappend f g x = f x `mappend` g x
2021-01-06 21:20:56 +0100 <ski> is equivalent to
2021-01-06 21:21:02 +0100 <ski> mappend f g = \x -> f x `mappend` g x
2021-01-06 21:21:09 +0100 <merijn> melkornms: Now keep in mind that "mappend x f = ..." is the same as "mappend = \x -> \y -> ..."
2021-01-06 21:21:24 +0100 <melkornms> right, thanks guys
2021-01-06 21:21:37 +0100 <merijn> melkornms: So, by extension "mappend f g = \x -> f x <> g x" is equivalent to "mappend f g x = f x <> g x"
2021-01-06 21:21:47 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-39-70-27-244-102.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in)
2021-01-06 21:22:05 +0100 <merijn> melkornms: Haskell doesn't really have a notion of "number of arguments", GHC just cares "do the types match?"
2021-01-06 21:22:20 +0100 <melkornms> brilliant, thanks for the help
2021-01-06 21:22:25 +0100 <merijn> So if the "return" is a function, then GHC is perfectly happy if you move that argument to the left of the =
2021-01-06 21:22:27 +0100 <ski> melkornms : if you turn on the `InstanceSigs' extension, you can actually put the signature i mentioned in your code (inside the `instance' declaration)
2021-01-06 21:22:52 +0100 <melkornms> been coding for 15 years, but it was time to dig into some haskell, haha
2021-01-06 21:23:14 +0100 <ski> (and note that that signature means the same thing as `mappend :: (a -> b) -> (a -> b) -> a -> b')
2021-01-06 21:23:25 +0100 <ephemient> let f () _ = undefined in f undefined `seq` ()
2021-01-06 21:23:33 +0100 <ephemient> let f () = \_ -> undefined in f undefined `seq` ()
2021-01-06 21:23:39 +0100 <ephemient> have different behavior though
2021-01-06 21:23:48 +0100 <ski> yes
2021-01-06 21:24:18 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com) (Read error: Connection reset by peer)
2021-01-06 21:24:41 +0100 <ski> (but if you're just matching on variables, wildcards, and `as'-patterns nested around those, then there's no difference)
2021-01-06 21:25:07 +0100 <ski> (you could also throw in irrefutable/lazy patterns)
2021-01-06 21:25:45 +0100 <manjaro-user_> I'm trying to use `rand l = (l!) <$> randomRIO (1, length l)` with the type def of `[String] -> IO String` inside a do block of type `IO ()` and the exact usage is `rand bg'` where bg' is a `[String]`
2021-01-06 21:26:19 +0100 <manjaro-user_> And I'm getting the error of Expected pyte: X String Actual type: IO String
2021-01-06 21:26:26 +0100 <manjaro-user_> type*
2021-01-06 21:26:46 +0100 <manjaro-user_> If I change it to type X String then it gives me the error:
2021-01-06 21:27:16 +0100 <ski> looks like you're not executing `rand l' in `IO', but rather in `X'
2021-01-06 21:27:24 +0100leungbk(~user@2603-8000-f144-2028-6884-768f-e832-6e83.res6.spectrum.com)
2021-01-06 21:27:53 +0100 <ski> also, i suspect you'd prefer `(0,length l - 1)' ?
2021-01-06 21:27:54 +0100 <manjaro-user_> Expected type: X String Actual type: IO String ... in the expression (l!...
2021-01-06 21:28:57 +0100 <manjaro-user_> Good catch there, but the error still persists
2021-01-06 21:28:58 +0100 <ski> (i also presume you mean `!!', rather than `!' ?)
2021-01-06 21:29:32 +0100 <manjaro-user_> No
2021-01-06 21:29:40 +0100 <ephemient> what is X?
2021-01-06 21:29:43 +0100 <ski> @type (!)
2021-01-06 21:29:45 +0100 <lambdabot> Ix i => Array i e -> i -> e
2021-01-06 21:29:46 +0100pieguy128(~pieguy128@bras-base-mtrlpq5031w-grc-39-70-27-244-102.dsl.bell.ca)
2021-01-06 21:29:47 +0100 <ski> @type (!!)
2021-01-06 21:29:49 +0100 <lambdabot> [a] -> Int -> a
2021-01-06 21:29:51 +0100 <manjaro-user_> I set ! as l ! n = l!!(n-1)
2021-01-06 21:30:00 +0100 <ski> which `!' are you using ?
2021-01-06 21:30:03 +0100 <ski> oh, ok
2021-01-06 21:30:24 +0100asthasr(~asthasr@162.210.29.120)
2021-01-06 21:30:39 +0100 <manjaro-user_> ephemient: X is an Xmonad function type (I think)
2021-01-06 21:30:49 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2021-01-06 21:30:50 +0100 <ski> well, then i guess `(1,length l)' wouldn't error out (assuming the list is non-empty)
2021-01-06 21:31:20 +0100 <ski> (not a function type. it would be a monad. in this case for doing X Windows stuff, for Xmonad)
2021-01-06 21:31:36 +0100 <manjaro-user_> ^ Yeah, that makes more sense
2021-01-06 21:31:45 +0100 <ski> manjaro-user_ : and you actually put a type signature for `rand' in the coded ?
2021-01-06 21:31:52 +0100 <ski> s/coded/code/
2021-01-06 21:32:41 +0100 <manjaro-user_> in the coded?
2021-01-06 21:32:52 +0100 <manjaro-user_> Sorry, fairly new to haskell, I'm not sure what that means
2021-01-06 21:33:15 +0100 <ephemient> are you writing `rand :: [String] -> X String` before the declaration or something like that
2021-01-06 21:33:17 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2021-01-06 21:33:21 +0100 <ski> in the code, "coded" was a typo
2021-01-06 21:33:30 +0100 <manjaro-user_> at the end of the same file, so seperate, yes
2021-01-06 21:33:50 +0100 <ski> could you paste your code ?
2021-01-06 21:33:52 +0100 <ski> @where paste
2021-01-06 21:33:52 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com
2021-01-06 21:34:35 +0100 <manjaro-user_> Sure, I actually have a slightly older version located at https://github.com/techtiger255/xbronad
2021-01-06 21:34:52 +0100 <ski> (if you could cut down on the code a bit, such that the error still persists, that might be nice. but unless it's a lot of code, it could still be fine)
2021-01-06 21:35:07 +0100 <manjaro-user_> the files in question are lib/Custom/Grid.hs <- rand is defined here
2021-01-06 21:35:18 +0100knupfer(~Thunderbi@i5E86B49C.versanet.de)
2021-01-06 21:35:25 +0100 <manjaro-user_> xmonad.hs <- the do block with rand bg' is here
2021-01-06 21:35:27 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-06 21:35:30 +0100geekosauris guessing that the real problem is a missing liftIO
2021-01-06 21:35:34 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89)
2021-01-06 21:35:48 +0100 <ski> there's no type signature for `rand' in that file
2021-01-06 21:35:53 +0100 <ephemient> you can't separate the signature from the declaration like that
2021-01-06 21:36:00 +0100 <manjaro-user_> yeah, slightly different version
2021-01-06 21:36:03 +0100 <ski> yes, you can, ephemient
2021-01-06 21:36:13 +0100 <monochrom> Prelude does it all the time.
2021-01-06 21:36:19 +0100 <ski> (but most people don't)
2021-01-06 21:36:19 +0100 <manjaro-user_> in that one I have way less type definitions
2021-01-06 21:36:27 +0100 <geekosaur> ghci won't let you but that's because it's ghci
2021-01-06 21:36:32 +0100 <manjaro-user_> I do it so I can read my config reasonably
2021-01-06 21:36:41 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 265 seconds)
2021-01-06 21:36:48 +0100codeAlways(uid272474@gateway/web/irccloud.com/x-ksrtxpuomausdfhe) (Quit: Connection closed for inactivity)
2021-01-06 21:37:31 +0100 <ephemient> huh. TIL
2021-01-06 21:37:31 +0100 <manjaro-user_> again, the supposed type is `[String] -> IO String` or X String instead of IO String
2021-01-06 21:38:15 +0100 <ephemient> well, the generic type would be `rand :: (MonadIO m) => [a] -> m a`
2021-01-06 21:38:23 +0100 <ski> manjaro-user_ : in place of `maybe (pure ()) fn', you could say `traverse_ fn'
2021-01-06 21:38:37 +0100jfe(~user@pool-71-184-149-134.bstnma.fios.verizon.net) (Ping timeout: 264 seconds)
2021-01-06 21:39:05 +0100 <ski> @index traverse_
2021-01-06 21:39:05 +0100 <lambdabot> Data.Foldable
2021-01-06 21:39:20 +0100 <monochrom> It can be a reasonable use if you have "f, g, h :: Int -> Int" on one line because they are so closely related, and then define f, g, h, respectively.
2021-01-06 21:40:06 +0100 <ski> or to have separate `f :: Foo' and `g :: Bar -> Baz', with a definition like `(f,g) = ...' or `Blah f g = ...'
2021-01-06 21:40:12 +0100 <manjaro-user_> Yeah, in a regular program I'd probably do that, but if they're all basic types like that then I've ommited them in my config
2021-01-06 21:40:39 +0100 <manjaro-user_> slightly increases compile times (by fractions of seconds, but eh)
2021-01-06 21:41:17 +0100 <ski> manjaro-user_ : anyway, i see no type error relating to `rand' in that file
2021-01-06 21:41:22 +0100ulidtko(~ulidtko@194.54.80.38) (Remote host closed the connection)
2021-01-06 21:41:27 +0100 <manjaro-user_> in xmonad.hs?
2021-01-06 21:41:30 +0100 <ski> manjaro-user_ : perhaps paste the code that gives the error ?
2021-01-06 21:41:57 +0100 <ski> oh. sorry, i was looking at `Grid.hs'. missed you also mentioned `xmonad.hs' as relevant to look at
2021-01-06 21:42:15 +0100jfe(~user@pool-71-184-149-134.bstnma.fios.verizon.net)
2021-01-06 21:42:26 +0100 <manjaro-user_> it's very close to the bottom btw
2021-01-06 21:42:51 +0100 <manjaro-user_> ephemient: that type you gave me didn't work
2021-01-06 21:43:03 +0100 <ski> manjaro-user_ : what happens if you add a type signature for `rand' ?
2021-01-06 21:43:40 +0100 <manjaro-user_> ski: thanks for the traverse_ tip
2021-01-06 21:43:46 +0100leungbk(~user@2603-8000-f144-2028-6884-768f-e832-6e83.res6.spectrum.com) (Quit: ERC (IRC client for Emacs 28.0.50))
2021-01-06 21:43:58 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 246 seconds)
2021-01-06 21:44:45 +0100 <manjaro-user_> The errors I described happen (the one with X String vs IO String, and vice versa, at definition time, vs usage time)
2021-01-06 21:45:14 +0100 <manjaro-user_> I'm thinking I need to change my definition to accept both X String and IO String, is there any way I can do that?
2021-01-06 21:45:24 +0100 <pie_> bitonic: can i pull my inline-c-cpp inline c++ code from a file?
2021-01-06 21:45:33 +0100 <manjaro-user_> the error also occurs if I don't add a type definition
2021-01-06 21:45:56 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com) (Read error: Connection reset by peer)
2021-01-06 21:46:24 +0100conal(~conal@66.115.157.85) (Ping timeout: 260 seconds)
2021-01-06 21:46:36 +0100knupfer(~Thunderbi@i5E86B49C.versanet.de) (Ping timeout: 240 seconds)
2021-01-06 21:47:35 +0100 <ski> manjaro-user_ : anyway, in `colors', you're using `rand (..)' as an `X' action, while in `main', you're using it as an `IO' action. you can only use the same `rand' in both those two different contexts, if it's overloaded to work for both `IO' and `X', which the signature ephemient would achieve (this is the signature that the system would infer from your `rand' definition, if you don't have a type signature
2021-01-06 21:47:37 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-06 21:47:41 +0100 <ski> written)
2021-01-06 21:47:44 +0100 <ski> @type randomRIO
2021-01-06 21:47:46 +0100 <lambdabot> (Random a, MonadIO m) => (a, a) -> m a
2021-01-06 21:47:53 +0100 <ggVGc> can someone give me a real-world useful example of using fix?
2021-01-06 21:48:14 +0100adamwesp_(~adamwespi@107.181.19.30) ()
2021-01-06 21:48:14 +0100 <ski> this can work, both for `m' being `IO', and for it being `X', since both of those are instances of `MonadIO'
2021-01-06 21:48:18 +0100 <ggVGc> I don't understand why you'd ever use it instead of explicit recursion. I think I might be missing a bigger picture though
2021-01-06 21:49:12 +0100 <ski> in some cases, it can be a handy shorthand over writing an explicitly recursive definition
2021-01-06 21:49:19 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2021-01-06 21:49:58 +0100 <ggVGc> well... with the added baggage of whoever reading it needing to understand fix?
2021-01-06 21:50:10 +0100 <ggVGc> and introducing a lambda?
2021-01-06 21:50:22 +0100 <ggVGc> (which I think reads worse in general)
2021-01-06 21:50:26 +0100 <ski> if you want to encode "open recursion", you use `T -> T', rather than plain `T', and only at the "last possible point" do you use `fix' ("instantiating the object from the class") to get a `T'
2021-01-06 21:50:39 +0100 <manjaro-user_> IDK, I like shorthands, and there's a fair amount of them in haskell
2021-01-06 21:51:01 +0100 <ski> if you use `fix', then it's easier to swap it out for an instrumented version that e.g. memoizes, or traces
2021-01-06 21:51:23 +0100 <ggVGc> yeah I guess I can see that point
2021-01-06 21:51:29 +0100 <ski> not all uses of `fix' would be applied to a lambda expression
2021-01-06 21:51:30 +0100 <manjaro-user_> idk why, but that typo in 'memorizes
2021-01-06 21:51:37 +0100 <ggVGc> abstracting away the recursion does have some value I guess
2021-01-06 21:51:44 +0100 <manjaro-user_> +' reminds me heavily of a boston accent
2021-01-06 21:51:52 +0100 <ski> (no, it's supposed to be "memoizes", not "memorizes")
2021-01-06 21:52:03 +0100 <ggVGc> yeah, those are different things :)
2021-01-06 21:52:05 +0100 <manjaro-user_> ok, well, boston accent
2021-01-06 21:52:29 +0100 <ephemient> https://en.wikipedia.org/wiki/Memoization > Not to be confused with Memorization.
2021-01-06 21:53:13 +0100 <ggVGc> ski: do you have an example of your own when you've opted for using fix?
2021-01-06 21:53:19 +0100 <manjaro-user_> That's quite an interesting word, never heard it before
2021-01-06 21:53:23 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds)
2021-01-06 21:53:39 +0100 <ski> ggVGc : i had one on <lpaste.net> ..
2021-01-06 21:54:13 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-01-06 21:54:13 +0100 <ggVGc> what happened to lpaste.net?
2021-01-06 21:54:50 +0100 <manjaro-user_> anyway, adding `(MonadIO m) => [a] -> m a` is erroring w/ couldn't match type `m' with `IO'
2021-01-06 21:55:20 +0100 <ski> iirc, the maintainer wanted to do other things, and afaik noone else at the time stepped up
2021-01-06 21:55:32 +0100 <ski> (there was also a spamming problem, i think)
2021-01-06 21:55:37 +0100ski. o O ( Sic Transit Gloria Mundi )
2021-01-06 21:55:50 +0100 <ski> manjaro-user_ : adding it, where ?
2021-01-06 21:56:06 +0100 <ephemient> sounds like a fix is needed at the call site, not rand
2021-01-06 21:56:10 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com) (Ping timeout: 256 seconds)
2021-01-06 21:56:47 +0100 <ski> rand :: MonadIO m => [a] -> m a -- like this, at the end of `Grid' ?
2021-01-06 21:56:54 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33) (Remote host closed the connection)
2021-01-06 21:56:55 +0100 <manjaro-user_> indeed
2021-01-06 21:57:25 +0100conal(~conal@64.71.133.70)
2021-01-06 21:57:28 +0100 <manjaro-user_> and geekosaur mentioned (or rather thought outloud) about liftIO from XMonad
2021-01-06 21:58:15 +0100 <ski> @type let l ! n = l!!(n-1); rand l = (l!) <$> randomRIO (1,length l) in rand
2021-01-06 21:58:17 +0100 <lambdabot> error:
2021-01-06 21:58:17 +0100 <lambdabot> • Couldn't match expected type ‘[a1]’ with actual type ‘Int -> a1’
2021-01-06 21:58:17 +0100 <lambdabot> • In the expression:
2021-01-06 22:00:10 +0100urb(5434a07f@tm.84.52.160.127.dc.cable.static.telemach.net)
2021-01-06 22:00:23 +0100evanjs(~evanjs@075-129-098-007.res.spectrum.com)
2021-01-06 22:00:46 +0100 <urb> Is there a Haskell library that automates selection from a database into a Haskell datatype? I'm looking at Opaleye, but it seems it just selects into tuples
2021-01-06 22:00:51 +0100coot(~coot@37.30.55.131.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-01-06 22:01:05 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-01-06 22:01:07 +0100 <urb> perhaps there's a reason to want to do it like that. I don't know
2021-01-06 22:01:26 +0100 <manjaro-user_> adding liftIO to xmonad.hs didn't seem to effect the call, I also attempted to add it in the colors definition in grid.hs via `fg {- & bg -} <- liftIO <$> rand bg'`
2021-01-06 22:02:04 +0100 <manjaro-user_> now it's complaining about expected type IO (IO Char) vs IO [Char] -- so that's probably not the right place
2021-01-06 22:02:42 +0100conal_(~conal@66.115.157.28)
2021-01-06 22:02:50 +0100 <ski> @type let l !!! n = l!!(n-1); rand l = (l!!!) <$> randomRIO (1,length l) in rand -- oh, fun
2021-01-06 22:02:52 +0100 <lambdabot> MonadIO f => [a] -> f a
2021-01-06 22:03:15 +0100 <ephemient> ... what version of random is this using, manjaro-user_
2021-01-06 22:03:16 +0100conal(~conal@64.71.133.70) (Ping timeout: 240 seconds)
2021-01-06 22:03:24 +0100 <ephemient> the type of randomRIO has changed between releases
2021-01-06 22:03:47 +0100 <manjaro-user_> whatever the latest is on nixpkgs (from the nix package manager)
2021-01-06 22:03:58 +0100jollygood2(~bc812391@217.29.117.252) (Quit: http://www.okay.uz/)
2021-01-06 22:04:08 +0100jollygood2(~bc812391@217.29.117.252)
2021-01-06 22:04:14 +0100 <manjaro-user_> last time this particular config worked was a few months ago, so should I downgrade then?
2021-01-06 22:04:39 +0100 <ski> @type let (!) l n = l!!(n-1); rand l = (l!) <$> randomRIO (1,length l) in rand
2021-01-06 22:04:40 +0100 <lambdabot> MonadIO f => [a] -> f a
2021-01-06 22:04:58 +0100 <manjaro-user_> orr, just try to rip the function from the library, and keep the rest updated?
2021-01-06 22:05:06 +0100 <ephemient> nixpkgs uses stackage lts for curation which which is currently at random 1.1, so... it's not MonadIO yet
2021-01-06 22:05:07 +0100koala_man(~vidar@unaffiliated/koala-man/x-2491903) (Remote host closed the connection)
2021-01-06 22:05:09 +0100 <manjaro-user_> from the older version*
2021-01-06 22:05:13 +0100 <ski> manjaro-user_ : could you show the exact error you get, when you place `rand :: MonadIO m => [a] -> m a' in `Grid' ?
2021-01-06 22:05:17 +0100koala_man(~vidar@157.146.251.23.bc.googleusercontent.com)
2021-01-06 22:05:24 +0100 <manjaro-user_> sure, I'll get you a paste
2021-01-06 22:05:31 +0100koala_man(~vidar@157.146.251.23.bc.googleusercontent.com) (Changing host)
2021-01-06 22:05:31 +0100koala_man(~vidar@unaffiliated/koala-man/x-2491903)
2021-01-06 22:05:39 +0100 <ephemient> type `rand :: [a] -> IO a` and add `liftIO (rand l)` when you're using it inside an `X`
2021-01-06 22:05:59 +0100 <ephemient> or update to newer random, either way
2021-01-06 22:06:05 +0100 <ski> `liftIO' oughtn't be necessary here (but would be one way around it, yes)
2021-01-06 22:06:09 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-06 22:06:28 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2021-01-06 22:06:50 +0100 <ephemient> https://hackage.haskell.org/package/random-1.1/docs/System-Random.html#v:randomRIO randomRIO :: (a, a) -> IO a
2021-01-06 22:06:54 +0100knupfer(~Thunderbi@200116b824b6e000f8306dfffe96fd00.dip.versatel-1u1.de)
2021-01-06 22:06:54 +0100knupfer(~Thunderbi@200116b824b6e000f8306dfffe96fd00.dip.versatel-1u1.de) (Client Quit)
2021-01-06 22:07:03 +0100 <ephemient> https://hackage.haskell.org/package/random-1.2.0/docs/System-Random.html#v:randomRIO randomRIO :: (MonadIO m) => (a, a) -> m a
2021-01-06 22:07:06 +0100knupfer(~Thunderbi@i5E86B49C.versanet.de)
2021-01-06 22:07:17 +0100 <ski> it's a backward-compatible change
2021-01-06 22:07:45 +0100 <ephemient> as long as you're not defining your own random instances, but yes
2021-01-06 22:07:53 +0100 <ski> yea
2021-01-06 22:08:03 +0100 <ephemient> it does mean you can't use the MonadIO version on with the older release
2021-01-06 22:08:27 +0100boxscape(4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed)
2021-01-06 22:09:05 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-06 22:09:18 +0100 <ski> (ok, `Vars' contains the definition of `!')
2021-01-06 22:09:40 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Client Quit)
2021-01-06 22:10:23 +0100heatsink(~heatsink@2600:1700:bef1:5e10:dfd:1630:16ef:2f33)
2021-01-06 22:10:36 +0100 <manjaro-user_> after fiddling around with what you two just said, to no avail, here's the paste, according to your specifications: https://paste.ee/p/WiFbw#b3dSINZxG7znzL6KEezVScDTshvhSFoo
2021-01-06 22:11:43 +0100 <manjaro-user_> oh wait, gimme a sec
2021-01-06 22:12:04 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-06 22:12:19 +0100v_m_v(~vm_v@2a02:aa12:3200:6480:14d3:e041:99da:4fe5) (Remote host closed the connection)
2021-01-06 22:13:29 +0100 <manjaro-user_> ok, nvm, using liftIO <$> didn't work in colors
2021-01-06 22:14:06 +0100 <monochrom> liftIO (rand foo) ?
2021-01-06 22:14:13 +0100ghghgh(~ghghgh@104.152.222.36)
2021-01-06 22:15:49 +0100 <manjaro-user_> ok, well, the parenthesis fixed it...
2021-01-06 22:16:12 +0100carif(~mcarifio@cpe-67-246-227-118.rochester.res.rr.com) (Quit: leaving)
2021-01-06 22:16:26 +0100 <manjaro-user_> I was under the impression that doing `xyz <$> a b c` was identical to `xyz (a b c)`, but apparently not!
2021-01-06 22:17:40 +0100 <exarkun> You're thinking of `xyz $ a b c` I suppose
2021-01-06 22:17:55 +0100ghghgh(~ghghgh@104.152.222.36) ()
2021-01-06 22:17:56 +0100 <exarkun> @type ($)
2021-01-06 22:17:57 +0100 <lambdabot> (a -> b) -> a -> b
2021-01-06 22:18:00 +0100 <exarkun> @type (<$>)
2021-01-06 22:18:02 +0100 <lambdabot> Functor f => (a -> b) -> f a -> f b
2021-01-06 22:18:15 +0100 <exarkun> close but no cigar
2021-01-06 22:18:31 +0100 <manjaro-user_> Thanks for the help (monochrom geekosaur ski ephemient (and of course) lambdabot)
2021-01-06 22:18:59 +0100 <ski> yw
2021-01-06 22:19:02 +0100 <manjaro-user_> uh, did my thank you message go through, because I just tripped an anti spam measure
2021-01-06 22:19:04 +0100 <manjaro-user_> ah, I see
2021-01-06 22:19:29 +0100 <ephemient> liftIO $ rand foo -- would also work, same as parentheses
2021-01-06 22:20:10 +0100 <manjaro-user_> ah, thanks!
2021-01-06 22:20:49 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 260 seconds)
2021-01-06 22:20:57 +0100justan0theruser(~justanoth@unaffiliated/justanotheruser)
2021-01-06 22:22:11 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-01-06 22:22:14 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds)
2021-01-06 22:23:49 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-01-06 22:24:09 +0100ph88(~ph88@2a02:8109:9e00:7e5c:cce3:aa71:9586:6387)
2021-01-06 22:27:22 +0100ADG1089_(~aditya@171.76.136.168) (Read error: Connection reset by peer)
2021-01-06 22:28:09 +0100ADG1089_(~aditya@171.79.107.193)
2021-01-06 22:28:11 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-06 22:32:37 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-01-06 22:32:39 +0100ph88(~ph88@2a02:8109:9e00:7e5c:cce3:aa71:9586:6387) (Ping timeout: 272 seconds)
2021-01-06 22:35:33 +0100geekosaur(42d52137@66.213.33.55) (Remote host closed the connection)
2021-01-06 22:36:57 +0100qqvat(~private@176.167.9.201)
2021-01-06 22:39:28 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
2021-01-06 22:43:43 +0100amerigo(uid331857@gateway/web/irccloud.com/x-yfslrwncojbqmybp)
2021-01-06 22:44:01 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 264 seconds)
2021-01-06 22:46:20 +0100new_haskeller(ae72a197@cpe00fc8d386d93-cm00fc8d386d90.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds)
2021-01-06 22:49:36 +0100 <qqvat> hello, is anybody familiar with ixset-typed? I have 2 ixsets ixA (elements with type A) and ixB (elements with type B). B has a field with type A and ixB can be indexed by values of type A. B has also a field "date" (UTCTime). I would like to query the most recent B in ixB that has a given A. I can easily query all Bs in ixB that have a given A (because A is an index of ixB). The date is also an index of
2021-01-06 22:49:42 +0100 <qqvat> ixB. The lib provides toDecList but it takes a "proxy ix" as its first parameter (I imagine to know over which index elements should be sorted, here the date). But in practice I don't know how to use the function. What is "proxy"? Which value am I to provide. The value itself does not matter in the definition of toDecList, only its type is relevant. Should I use provide any UTCTime value? What is "proxy"
2021-01-06 22:49:48 +0100 <qqvat> about?
2021-01-06 22:50:17 +0100Guest_93(9e8cc287@158.140.194.135)
2021-01-06 22:50:35 +0100 <Guest_93> Hello everyoned
2021-01-06 22:53:30 +0100 <urb> what's the idiomatic way of dealing with long tuples returned from something like a SQL query? Since there can be many fields and the types repeat, I imagine it would be easy to alias the wrong field - or at least tedious to write out the destructured tuple
2021-01-06 22:54:07 +0100 <Melanie> what language extension enables the syntax foo @(via Backwards) ... ?
2021-01-06 22:56:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-01-06 22:59:03 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds)
2021-01-06 22:59:22 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-06 22:59:27 +0100 <monochrom> probably TypeApplication
2021-01-06 22:59:38 +0100 <monochrom> assuming that "via Backwards" is a type.
2021-01-06 23:00:03 +0100hexo(~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds)
2021-01-06 23:00:30 +0100srk(~sorki@gateway/tor-sasl/sorki)
2021-01-06 23:00:31 +0100hexo(~hexo@gateway/tor-sasl/hexo)
2021-01-06 23:02:46 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-06 23:03:00 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-06 23:04:28 +0100 <yushyin> it's a ghc proposal
2021-01-06 23:04:31 +0100 <yushyin> https://github.com/ghc-proposals/ghc-proposals/pull/218
2021-01-06 23:04:43 +0100 <yushyin> ^ Melanie
2021-01-06 23:05:56 +0100 <Rembane> urb: I've seen the tuples been put in records, and then quite some wrangling with Generics to have that translation done more or less automatically.
2021-01-06 23:06:35 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 265 seconds)
2021-01-06 23:06:39 +0100 <monochrom> ooohhhh very nice, yushyin, I think we (haskellers) really need that!
2021-01-06 23:07:23 +0100ransom(~c4264035@8.47.12.52) (Read error: Connection reset by peer)
2021-01-06 23:07:46 +0100 <monochrom> probably better than my https://mail.haskell.org/pipermail/haskell-cafe/2017-May/127147.html
2021-01-06 23:08:12 +0100Guest_93(9e8cc287@158.140.194.135) (Remote host closed the connection)
2021-01-06 23:08:32 +0100ransom(~c4264035@8.47.12.52)
2021-01-06 23:09:01 +0100kyali(~kyali@APN-123-253-144-gprs.simobil.net) (Ping timeout: 246 seconds)
2021-01-06 23:11:01 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-06 23:11:18 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-06 23:11:48 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection)
2021-01-06 23:12:21 +0100shatriff(~vitaliish@176-52-216-242.irishtelecom.com)
2021-01-06 23:13:15 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654)
2021-01-06 23:15:35 +0100neiluj(~jco@91-167-203-101.subs.proxad.net) (Remote host closed the connection)
2021-01-06 23:17:57 +0100mpereira(~mpereira@2a02:810d:f40:d96:a13a:4248:e827:5654) (Ping timeout: 260 seconds)
2021-01-06 23:20:17 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net)
2021-01-06 23:22:44 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-01-06 23:22:57 +0100zebrag(~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr)
2021-01-06 23:24:49 +0100ezrakilty(~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 264 seconds)
2021-01-06 23:28:30 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-01-06 23:29:38 +0100 <Melanie> yushyin: thanks!! i'll be excited when it's merged
2021-01-06 23:30:06 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-01-06 23:31:13 +0100 <pie_> how would increasing frequency of garbage collection make something _stop_ crashing?
2021-01-06 23:31:15 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ec23:2fba:6a47:f771) (Remote host closed the connection)
2021-01-06 23:31:42 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ec23:2fba:6a47:f771)
2021-01-06 23:32:18 +0100conal_(~conal@66.115.157.28) (Ping timeout: 272 seconds)
2021-01-06 23:32:18 +0100 <monochrom> Would it?
2021-01-06 23:33:16 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-01-06 23:33:44 +0100conal(~conal@66.115.157.28)
2021-01-06 23:35:30 +0100 <ephemient> I could imagine gc more often -> finalizers called earlier -> smaller leaks
2021-01-06 23:35:37 +0100mananamenos(~mananamen@84.122.202.215.dyn.user.ono.com) (Read error: Connection reset by peer)
2021-01-06 23:36:26 +0100 <monochrom> I am against playing speculation games. Let's see some code that actually does it. Code or it didn't happen.
2021-01-06 23:36:38 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:ec23:2fba:6a47:f771) (Ping timeout: 264 seconds)
2021-01-06 23:38:03 +0100 <monochrom> Alternatively, I'm happy to play speculation games if outrageous speculations are welcome, such as...
2021-01-06 23:38:12 +0100 <monochrom> "Have you re-seated your DIMMs?"
2021-01-06 23:38:24 +0100pera(~pera@unaffiliated/pera)
2021-01-06 23:39:03 +0100kyali(~kyali@APN-123-253-144-gprs.simobil.net)
2021-01-06 23:39:04 +0100 <pie_> if i had an idea what was going on it might be easier to make an MRE but I dont. I can try to do some statistics though
2021-01-06 23:39:17 +0100pie_looks up how to give ghci commands as args
2021-01-06 23:40:25 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
2021-01-06 23:40:48 +0100 <nshepperd> it's always bad ram
2021-01-06 23:42:06 +0100 <ephemient> ghci -ignore-dot-ghci -ghci-script <(echo 'putStrLn "hello, world!"')
2021-01-06 23:42:07 +0100 <nshepperd> or at least, it's sometimes bad ram, and when it is, you always regret how long you doesn't checking all other possibilities
2021-01-06 23:42:11 +0100 <ephemient> like that?
2021-01-06 23:42:22 +0100 <pie_> oh no. maybe it is bad ram. this wouldnt be the first time someone suggested it.
2021-01-06 23:42:36 +0100ADG1089_(~aditya@171.79.107.193) (Remote host closed the connection)
2021-01-06 23:42:37 +0100 <pie_> ephemient: doesnt work, but piping does
2021-01-06 23:42:58 +0100 <pie_> ephemient: $ ghci <(echo println '"asd"')
2021-01-06 23:42:58 +0100 <pie_> target `/dev/fd/63' is not a module name or a source file
2021-01-06 23:43:14 +0100 <ephemient> -ghci-script <(...) works for me
2021-01-06 23:43:14 +0100 <pie_> well not that println would work anyway but
2021-01-06 23:43:17 +0100jess(jess@freenode/staff/jess)
2021-01-06 23:43:20 +0100 <pie_> oh sorry i cant read
2021-01-06 23:46:36 +0100ransom(~c4264035@8.47.12.52) (Ping timeout: 240 seconds)
2021-01-06 23:47:09 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:a898:ee90:1b20:e047)
2021-01-06 23:49:30 +0100 <pie_> ephemient: hmm, seems to execute before things are loaded though
2021-01-06 23:49:55 +0100texasmynsted(~texasmyns@99.96.221.112) (Remote host closed the connection)
2021-01-06 23:50:31 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2021-01-06 23:51:47 +0100Tops2(~Tobias@dyndsl-095-033-026-219.ewe-ip-backbone.de)
2021-01-06 23:52:16 +0100ransom(~c4264035@8.47.12.52)
2021-01-06 23:56:10 +0100 <ephemient> all the packages are loaded at that point, just the module path isn't set yet. you can do that yourself or fully-qualify everything