Home freenode/#haskell: Logs Calendar

Logs on 2021-01-06 (freenode/#haskell)

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

All times are in UTC on 2021-01-06.