2020/12/01

2020-12-01 00:00:01 +0100notzmv(~user@unaffiliated/zmv)
2020-12-01 00:00:05 +0100joaoh82(~joaoh82@157-131-134-210.dedicated.static.sonic.net) (Ping timeout: 240 seconds)
2020-12-01 00:00:26 +0100conal(~conal@64.71.133.70)
2020-12-01 00:02:13 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-12-01 00:02:59 +0100mouseghost(~draco@wikipedia/desperek) (Quit: mew wew)
2020-12-01 00:03:34 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
2020-12-01 00:06:55 +0100son0p(~son0p@181.136.122.143)
2020-12-01 00:11:27 +0100Flonk(~Flonk@ec2-52-40-29-25.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds)
2020-12-01 00:11:43 +0100srk(~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds)
2020-12-01 00:12:09 +0100srk(~sorki@gateway/tor-sasl/sorki)
2020-12-01 00:12:16 +0100Flonk(~Flonk@ec2-52-40-29-25.us-west-2.compute.amazonaws.com)
2020-12-01 00:12:36 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2020-12-01 00:13:12 +0100stux|RC-only(stux2@grid9.quadspeedi.net) (Ping timeout: 260 seconds)
2020-12-01 00:13:22 +0100stux|RC-only(stux2@grid9.quadspeedi.net)
2020-12-01 00:13:36 +0100rotaerk(~rotaerk@ender.afternet.org) (Ping timeout: 260 seconds)
2020-12-01 00:16:25 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 265 seconds)
2020-12-01 00:18:16 +0100rprije(~rprije@118.102.93.64)
2020-12-01 00:20:08 +0100tlaxkit(~kvirc@185.228.155.198) (Ping timeout: 260 seconds)
2020-12-01 00:23:25 +0100 <iqubic> So, I have a cabal project, and I'd like to turn on -Wall for every file. Currently I'm just adding "{-# OPTIONS_GHC -Wall #-}" to the top of every file, but I feel there's some configuration I can add to my .cabal file to do this for me. Is that true?
2020-12-01 00:26:36 +0100rprije(~rprije@118.102.93.64) (Ping timeout: 240 seconds)
2020-12-01 00:27:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-01 00:30:51 +0100 <solonarv> it is true, yes; you can also add it to cabal.project or cabal.project.local (I would recommend one of the latter two)
2020-12-01 00:31:13 +0100 <sclv> also your cabal file itself you can toss in a ghc-options: -Wall
2020-12-01 00:31:29 +0100 <sclv> in the lib or executable stanzas
2020-12-01 00:31:57 +0100 <iqubic> sclv: That's what I was looking for.
2020-12-01 00:32:57 +0100rikkus(uid1476@about/csharp/regular/rikkus)
2020-12-01 00:33:10 +0100tlaxkit(~kvirc@185.228.155.198)
2020-12-01 00:34:27 +0100rikkus(uid1476@about/csharp/regular/rikkus) ()
2020-12-01 00:35:12 +0100timCF_(~i.tkachuk@m91-129-105-245.cust.tele2.ee)
2020-12-01 00:35:15 +0100 <hekkaidekapus> iqubic: To expand a bit, i) if there is a single package in the project, you can edit the .cabal file to use the `ghc-options` field for any components (library, executable,…). The field is like any other, `build-depends` for instance. ii) If there are many packages in the project, consider using a `cabal.project`. There, use a `package` stanza under which you will use the same field.
2020-12-01 00:35:45 +0100 <iqubic> It's a single project.
2020-12-01 00:35:51 +0100 <hekkaidekapus> Further reading: i) <https://cabal.readthedocs.io/en/3.4/cabal-package.html#pkg-field-ghc-options>, ii) <https://cabal.readthedocs.io/en/3.4/cabal-project.html#package-configuration-options>
2020-12-01 00:37:11 +0100jess(jess@freenode/staff/jess) (Quit: Leaving)
2020-12-01 00:38:02 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-12-01 00:38:49 +0100adm(~adm@117.208.18.165)
2020-12-01 00:38:50 +0100immae(~immae@2a01:4f8:141:53e7::) (Quit: WeeChat 2.9)
2020-12-01 00:39:30 +0100son0p(~son0p@181.136.122.143) (Quit: Lost terminal)
2020-12-01 00:40:39 +0100matryoshka(~matryoshk@184.75.223.227)
2020-12-01 00:41:11 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-01 00:43:05 +0100adm(~adm@117.208.18.165) (Ping timeout: 240 seconds)
2020-12-01 00:43:14 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52) (Ping timeout: 264 seconds)
2020-12-01 00:44:23 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds)
2020-12-01 00:44:46 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net) (Ping timeout: 246 seconds)
2020-12-01 00:46:11 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
2020-12-01 00:47:15 +0100matryoshka(~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
2020-12-01 00:47:33 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2020-12-01 00:48:07 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2020-12-01 00:49:17 +0100rprije(~rprije@203.87.66.34)
2020-12-01 00:50:09 +0100hekkaidekapus_(~tchouri@gateway/tor-sasl/hekkaidekapus)
2020-12-01 00:50:22 +0100frdg(~nick@pool-71-184-143-249.bstnma.fios.verizon.net)
2020-12-01 00:52:23 +0100hekkaidekapus(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
2020-12-01 00:52:46 +0100solonarv(~solonarv@anancy-651-1-197-136.w109-217.abo.wanadoo.fr) (Ping timeout: 256 seconds)
2020-12-01 00:55:36 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-12-01 00:56:06 +0100rprije(~rprije@203.87.66.34) (Ping timeout: 256 seconds)
2020-12-01 00:57:11 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Client Quit)
2020-12-01 00:59:25 +0100conal(~conal@64.71.133.70)
2020-12-01 00:59:37 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-12-01 00:59:40 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-01 01:00:02 +0100zopsi(zopsi@2600:3c00::f03c:91ff:fe14:551f) (Quit: Oops)
2020-12-01 01:00:27 +0100 <cads> hey all, is there software that helps a code auditor manage the reading of a large and complex code base?
2020-12-01 01:00:37 +0100zopsi(~zopsi@irc.dir.ac)
2020-12-01 01:00:47 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.)
2020-12-01 01:01:34 +0100jchia1(~jchia@58.32.33.6) (Ping timeout: 246 seconds)
2020-12-01 01:01:56 +0100rotaerk(~rotaerk@ender.afternet.org)
2020-12-01 01:04:08 +0100argent0(~argent0@168.227.97.29)
2020-12-01 01:04:28 +0100elcaro(~anonymous@45.32.191.75) (Ping timeout: 260 seconds)
2020-12-01 01:04:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-01 01:05:02 +0100elcaro(~anonymous@45.32.191.75)
2020-12-01 01:05:59 +0100Varis(~Tadas@unaffiliated/varis) (Read error: Connection reset by peer)
2020-12-01 01:06:48 +0100rotaerk(~rotaerk@ender.afternet.org) (Ping timeout: 260 seconds)
2020-12-01 01:08:28 +0100jchia(~jchia@58.32.35.67)
2020-12-01 01:08:53 +0100Qudit314159(~user@unaffiliated/qudit314159)
2020-12-01 01:09:14 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-01 01:10:10 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net)
2020-12-01 01:10:59 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
2020-12-01 01:13:01 +0100LKoen(~LKoen@105.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.”)
2020-12-01 01:13:57 +0100miguel_clean(~Miguel@89-72-187-203.dynamic.chello.pl) (Quit: Leaving.)
2020-12-01 01:17:04 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2020-12-01 01:18:57 +0100 <wz1000> cads: what exactly do you want this software to do?
2020-12-01 01:19:57 +0100xff0x(~fox@2001:1a81:5287:f00:3ddc:a797:9dcd:8476) (Ping timeout: 260 seconds)
2020-12-01 01:20:27 +0100xff0x(~fox@port-92-195-56-241.dynamic.as20676.net)
2020-12-01 01:21:21 +0100rotaerk(~rotaerk@ender.afternet.org)
2020-12-01 01:23:07 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 265 seconds)
2020-12-01 01:26:23 +0100urek(~urek@2804:7f1:e10a:9644:28f0:3bb:caef:43b3) (Ping timeout: 272 seconds)
2020-12-01 01:28:35 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-12-01 01:30:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-01 01:33:23 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 260 seconds)
2020-12-01 01:34:09 +0100rprije(~rprije@124.170.26.173)
2020-12-01 01:36:37 +0100Rudd0(~Rudd0@185.189.115.108)
2020-12-01 01:37:09 +0100falafel(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-12-01 01:37:24 +0100falafel(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Remote host closed the connection)
2020-12-01 01:37:40 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) (Quit: ZNC 1.8.1 - https://znc.in)
2020-12-01 01:37:51 +0100falafel(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-12-01 01:38:38 +0100seanparsons(~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net)
2020-12-01 01:41:52 +0100falafel_(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-12-01 01:44:56 +0100Melanie(c000868a@192-0-134-138.cpe.teksavvy.com)
2020-12-01 01:45:03 +0100falafel(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 256 seconds)
2020-12-01 01:50:18 +0100tlaxkit(~kvirc@185.228.155.198) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/)
2020-12-01 01:51:20 +0100natechan(~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2020-12-01 01:54:41 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 256 seconds)
2020-12-01 01:56:11 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-kscbyfmbzjjwdrpq) ()
2020-12-01 01:59:04 +0100bitmagie(~Thunderbi@200116b8068d1f00e02cf9810b35763a.dip.versatel-1u1.de) (Quit: bitmagie)
2020-12-01 02:04:09 +0100 <ezzieyguywuf> so here's what I ended up with https://dpaste.com/2BDW9J64Y
2020-12-01 02:04:39 +0100 <ezzieyguywuf> it seems to me that the nested-case statements is poor form
2020-12-01 02:04:48 +0100 <ezzieyguywuf> but I'm open to thoughts/suggestions
2020-12-01 02:04:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-01 02:04:56 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
2020-12-01 02:08:56 +0100ericsagnes(~ericsagne@sp49-97-97-189.msc.spmode.ne.jp) (Ping timeout: 272 seconds)
2020-12-01 02:10:51 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:f4f6:41ee:981a:34)
2020-12-01 02:11:26 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2020-12-01 02:12:55 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.161-165.dynamic.3bb.co.th)
2020-12-01 02:13:52 +0100adm_(~adm@117.208.18.165)
2020-12-01 02:14:00 +0100SeMas(uid32977@gateway/web/irccloud.com/x-fslpxgaefzxrqvxr)
2020-12-01 02:14:04 +0100thc202(~thc202@unaffiliated/thc202) (Ping timeout: 244 seconds)
2020-12-01 02:14:15 +0100jess(jess@freenode/staff/jess)
2020-12-01 02:14:35 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:690b:f4aa:bb1f:cfec) (Remote host closed the connection)
2020-12-01 02:15:03 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-12-01 02:15:52 +0100elliott_(~elliott@pool-108-51-141-12.washdc.fios.verizon.net)
2020-12-01 02:16:04 +0100isBEKaml(~isBEKaml@unaffiliated/isbekaml)
2020-12-01 02:18:20 +0100wei2912(~wei2912@unaffiliated/wei2912)
2020-12-01 02:20:03 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 260 seconds)
2020-12-01 02:20:24 +0100Tario(~Tario@201.192.165.173)
2020-12-01 02:20:59 +0100jlamothe(~jlamothe@198.251.55.207) (Quit: Lost terminal)
2020-12-01 02:21:29 +0100alp_(~alp@2a01:e0a:58b:4920:e5b9:c518:2c12:3fb9) (Ping timeout: 272 seconds)
2020-12-01 02:21:52 +0100 <jle`> i wouldn't say it's necessarily bad, but you could pull out a bit of the boilerplate and make it a little more readable maybe with ExceptT
2020-12-01 02:22:31 +0100 <jle`> which basically just integrates the IO sequencing and the Left/Right pattern matching into its >>=/Monad instance
2020-12-01 02:24:47 +0100 <jle`> a small note, print . show should probably be just print, or putStrLn . show
2020-12-01 02:25:07 +0100 <jle`> unless you really want the escaped string
2020-12-01 02:25:12 +0100 <ezzieyguywuf> jle`: I changed all those to Systex.Exit.die, but thanks
2020-12-01 02:25:19 +0100 <dmj`> ezzieyguywuf: you'll need to unify the different types of errors if you want to use do syntax for the Either monad, since it's defined on Monad (Either e).
2020-12-01 02:25:59 +0100 <jle`> idris has some nice syntax for bailing out of a do block with patterns like this
2020-12-01 02:26:05 +0100 <jle`> that i wish haskell had sometimes
2020-12-01 02:26:17 +0100 <dmj`> yea, we need a new haskell
2020-12-01 02:26:28 +0100 <ezzieyguywuf> dmj`: I started doing that yesterday, but it started getting hairy. maybe I just was trying to do too much at once, may be worth a shot now.
2020-12-01 02:26:37 +0100ericsagnes(~ericsagne@240b:c010:4c1:17ae:8419:4353:1497:70f)
2020-12-01 02:26:45 +0100 <ezzieyguywuf> I was using either to try "unify" the Left types
2020-12-01 02:26:58 +0100 <dmj`> ezzieyguywuf: data MyError = MyError1 String | MyError2 String, etc.
2020-12-01 02:27:02 +0100 <dmj`> ezzieyguywuf: yea, exactly.
2020-12-01 02:27:07 +0100 <ezzieyguywuf> but it ended up looking like `either (pure . Left . changeType) (pure . Right)
2020-12-01 02:27:12 +0100 <ezzieyguywuf> which seemed non-ideal
2020-12-01 02:27:28 +0100immae(~immae@2a01:4f8:141:53e7::)
2020-12-01 02:27:32 +0100 <jle`> all of those are some form of die, right?
2020-12-01 02:27:35 +0100 <jle`> so you can write a function like
2020-12-01 02:27:44 +0100phaul(~phaul@ruby/staff/phaul)
2020-12-01 02:27:49 +0100 <jle`> rightOrDie :: (e -> Stirng) -> Either e a -> IO a
2020-12-01 02:28:07 +0100 <jle`> er, or maybe e -> IO a
2020-12-01 02:28:29 +0100 <ezzieyguywuf> yea, here's how it looks right now https://dpaste.com/C29QTVVF7
2020-12-01 02:28:38 +0100 <ezzieyguywuf> jle`: ah hah, this makes sense
2020-12-01 02:28:39 +0100 <jle`> fData <- rightOrDie TextIO.putStrLn =<< getFileData
2020-12-01 02:28:55 +0100 <ezzieyguywuf> lol, "rightOrDie" seems so agrressive
2020-12-01 02:29:09 +0100 <jle`> vData <- rightOrDie displayException $ parse fData
2020-12-01 02:29:34 +0100 <dmj`> ezzieyguywuf: you shouldn't do any IO until the very end imo. At that point you're just checking if you have the config, or die'ing.
2020-12-01 02:29:42 +0100 <jle`> hm, actually i just noticed that only one of your either's are in IO
2020-12-01 02:29:48 +0100 <ezzieyguywuf> jle`: yea
2020-12-01 02:29:53 +0100 <ezzieyguywuf> jle`: I noticed that earlier too
2020-12-01 02:29:54 +0100 <jle`> so you really could just use normal Either do notation for everything after getFileData
2020-12-01 02:30:00 +0100 <jle`> but it might be confusing to mix the two do's
2020-12-01 02:30:01 +0100 <dmj`> ^ this
2020-12-01 02:30:05 +0100 <ezzieyguywuf> right
2020-12-01 02:30:12 +0100 <ezzieyguywuf> thus my conundrum - maybe just leave it as-is
2020-12-01 02:30:19 +0100 <jle`> two do or not two do
2020-12-01 02:30:42 +0100 <jle`> i think personally i would do something like rightOrDie, since we're just in the main subroutine anyway
2020-12-01 02:30:45 +0100 <ezzieyguywuf> lol
2020-12-01 02:31:21 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Read error: Connection reset by peer)
2020-12-01 02:31:36 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2020-12-01 02:32:12 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-01 02:32:48 +0100 <dmj`> ezzieyguywuf: which IOExceptions do you care about besides the file missing ? I'd just slap a doesFileExist before the T.readFile
2020-12-01 02:33:42 +0100srid(sridmatrix@gateway/shell/matrix.org/x-xkaemlggxitmvijh) (Ping timeout: 244 seconds)
2020-12-01 02:34:22 +0100 <ezzieyguywuf> dmj`: I guess permissionerror too
2020-12-01 02:34:38 +0100 <ezzieyguywuf> and someone said checking for file existence prior to opneing it was an anti-pattern or something
2020-12-01 02:35:02 +0100 <dmj`> I wonder what their rationale was
2020-12-01 02:35:11 +0100 <dmj`> Sounds made up to me
2020-12-01 02:35:35 +0100 <dmj`> Checking the existence of a file before reading it does not sounds like a good practice :)
2020-12-01 02:35:44 +0100 <dmj`> does sound ** lol
2020-12-01 02:35:57 +0100strangeglyph(~strangegl@boreeas.net) (Quit: User terminated)
2020-12-01 02:36:37 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 256 seconds)
2020-12-01 02:36:44 +0100strangeglyph(~strangegl@boreeas.net)
2020-12-01 02:37:10 +0100 <dsal> It depends on why you're checking. Many people don't consider race conditions.
2020-12-01 02:37:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-12-01 02:38:01 +0100 <dsal> e.g., I check for the existence of a file I intend to create to know that I don't need to do the work of downloading and building it in an application where there's no conflict. But if you're doing that in, e.g., /tmp to avoid collisions, you're going to have a security problem.
2020-12-01 02:39:44 +0100falling-edge[m](falling-ed@gateway/shell/matrix.org/x-ewgnzieoktvonuxq) (Ping timeout: 240 seconds)
2020-12-01 02:40:37 +0100Lord_of_Life_(~Lord@46.217.220.86)
2020-12-01 02:40:45 +0100Lord_of_Life(~Lord@46.217.220.24) (Ping timeout: 240 seconds)
2020-12-01 02:41:22 +0100whatisRT(~whatisRT@2002:5b41:6a33:0:f4f6:41ee:981a:34) (Ping timeout: 260 seconds)
2020-12-01 02:42:29 +0100Ericson2314(ericson231@gateway/shell/matrix.org/x-avnyxwuppgyurkaz) (Ping timeout: 244 seconds)
2020-12-01 02:42:59 +0100TekShifter[m](tekshifter@gateway/shell/matrix.org/x-qkoxohtmvaxbhybf) (Ping timeout: 246 seconds)
2020-12-01 02:43:49 +0100srid(sridmatrix@gateway/shell/matrix.org/x-apaqawlqzgkodtqd)
2020-12-01 02:43:51 +0100 <dsal> If you're using it as an IO guard to protect against an inability to read the file, you *still* might not be able to read the file, so it's not saved you any work. It may have given you a better error message for one of the reasons you can't read the file, but it's preemptive diagnosis at that point.
2020-12-01 02:44:51 +0100 <cads> wz1000, you sound skeptical. not a fan of code review?
2020-12-01 02:45:36 +0100 <dsal> I would not have got code review from your question.
2020-12-01 02:45:49 +0100 <wz1000> cads: I don't understand what kind of software you are looking for
2020-12-01 02:45:52 +0100 <dsal> At work, we have a thing that does what's described and we have a thing that does code review. They're only very loosely related.
2020-12-01 02:46:28 +0100 <cads> dsal, two different and conceptually isolated systems? that's fascinating!
2020-12-01 02:46:29 +0100itai33[m](itai33matr@gateway/shell/matrix.org/x-rgomoxkojslrbjtb) (Ping timeout: 246 seconds)
2020-12-01 02:47:15 +0100 <dsal> You're talking about things that don't sound related.
2020-12-01 02:47:27 +0100 <dsal> Perhaps back to wz1000's question. What do you expect this software to do?
2020-12-01 02:48:23 +0100 <dsal> github has semantic for what I think of as reading lots of source code: https://github.com/github/semantic
2020-12-01 02:48:29 +0100 <cads> dsal, how is code review not related to reading and understanding code?
2020-12-01 02:48:45 +0100 <cads> or even to auditing it?
2020-12-01 02:48:46 +0100itai33[m](itai33matr@gateway/shell/matrix.org/x-frldueosxtaonyqo)
2020-12-01 02:48:52 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds)
2020-12-01 02:49:17 +0100TekShifter[m](tekshifter@gateway/shell/matrix.org/x-jgtfubkitlckvzls)
2020-12-01 02:49:34 +0100falling-edge[m](falling-ed@gateway/shell/matrix.org/x-wprvacjwbjixwxio)
2020-12-01 02:49:55 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-01 02:50:26 +0100Ericson2314(ericson231@gateway/shell/matrix.org/x-ckcitsrjoxxkqbcd)
2020-12-01 02:50:29 +0100 <cads> wz1000, I think of auditing as the process of reading a code base and verifying both through formal and qualitative means that it meets certain quality standards
2020-12-01 02:51:33 +0100 <cads> and I think of code review as almost a microcosm of that process - the audit happens with smaller scope and less oversight and for different reasons, but essentially you still have a knowledge management scenario where a few different actors might be looking at the code
2020-12-01 02:52:24 +0100 <cads> the system I'm thining of could for instance help split up the work of reading code, maybe assigning sections for people to read and check
2020-12-01 02:52:49 +0100conal(~conal@64.71.133.70)
2020-12-01 02:53:10 +0100 <wz1000> OK, but how do you want to use software to do this? Anything from note-taking software and mind-mapping tools, to model checkers and theorem provers fit your criteria
2020-12-01 02:53:32 +0100 <cads> perhaps it It could keep track of which sections of the code you've read, and help schedule a systematic reading of a large code base without losing your place
2020-12-01 02:54:25 +0100 <cads> wz1000, and the reason I ask is to learn of methods I don't know about
2020-12-01 02:55:49 +0100 <cads> dsal, you mentioned that you have one system at work that does "what's described" - does it help act as a task planning aid for systematic reading of code?
2020-12-01 02:56:07 +0100 <cads> what was the system you had in mind, and how does that work?
2020-12-01 02:56:11 +0100 <dmj`> cads: I found this pleasant for reading large code bases https://github.com/alexwl/haskell-code-explorer
2020-12-01 02:57:25 +0100 <cads> dmj`, nice!
2020-12-01 02:58:50 +0100cybai(~cybai@2400:4050:3122:900:f9e6:8583:8aec:b8b0) (Ping timeout: 264 seconds)
2020-12-01 02:59:34 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-01 02:59:45 +0100cybai(~cybai@2400:4050:3122:900:64e3:7c8f:2521:8629)
2020-12-01 02:59:47 +0100 <dsal> cads: "code review" has a more common connotation than what you're describing. I'd call the thing you're describing "Code perusal" or something. Review is often change-oriented.
2020-12-01 03:00:13 +0100 <cads> I know that
2020-12-01 03:01:20 +0100 <dsal> So, we have one thing that is used for understanding code. It's normally about "What is *this* thing and where is it defined and where is it used and what does it use?" and questions like that. Github's semantic project seems like it's on the road to that type of system.
2020-12-01 03:01:51 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-vmvaxpsicxpbtezq) (Quit: Connection closed for inactivity)
2020-12-01 03:02:29 +0100 <dsal> We have another thing for "code review" which involves understanding the changes someone is trying to issue against the codebase. Sometimes you end up having to dive into the codebase to see what the larger ramifications of a change are, but often it's just the change and enough context to make sense of it.
2020-12-01 03:02:57 +0100Jonkimi727406120(~Jonkimi@113.87.160.57)
2020-12-01 03:03:49 +0100 <cads> Sometimes I do a "code review" of historic commits - especially when I'm joining a project. I can really quickly get into the flow of what work in a given repo looks like, by reviewing - in this static sense
2020-12-01 03:04:20 +0100 <cads> probably reviewing /w a pair coding partner would be much much faster, if they already know the code
2020-12-01 03:05:41 +0100 <cads> and part of that is that tacit knowledge - you can ask them "what the fuck is this?! where is the even used?!" and they say "oh, funny story about that... yeah it's a total kuldge, but it's used here, it's been in the code base for 6 months, it really saved our bacon, and we're too scared to refactor it
2020-12-01 03:06:36 +0100ulidtko|k(~ulidtko@194.54.80.38) (Ping timeout: 240 seconds)
2020-12-01 03:06:38 +0100 <cads> that kind of knowledge is VERY HARD to deduce while cold reading... even though a lot of it comes from very mundane observations of the code that could in theory be datamined
2020-12-01 03:06:42 +0100 <dsal> Sure. Our code review tool links to the other tool to give you that kind of context.
2020-12-01 03:07:17 +0100 <cads> so if you are not sure about the context that a review is happening, within seconds you can be looking at libnrary docs and code samples?
2020-12-01 03:07:29 +0100 <dsal> I've used opengrok in the past on similar things. This might be a good jumping off point: https://github.com/oracle/opengrok/wiki/Comparison-with-Similar-Tools
2020-12-01 03:07:42 +0100 <cads> ah thanks!
2020-12-01 03:08:04 +0100 <cads> I've recently found Zeal - it's not great, but for lirbaries that have docsets, it can be pretty nice
2020-12-01 03:08:30 +0100 <cads> dsal, can you share the vendor with me?
2020-12-01 03:08:39 +0100 <dsal> Which vendor?
2020-12-01 03:09:32 +0100 <cads> of "code intel gatehering" tool you mention - don't tell me it' an in-house solution?!
2020-12-01 03:09:45 +0100 <dsal> Yeah, it's all in house.
2020-12-01 03:10:01 +0100cadsdoffs his cap to you and nods approvingly
2020-12-01 03:10:07 +0100 <cads> but also I'm hearbroken, lol
2020-12-01 03:10:33 +0100 <cads> ah well, I will follup up these leads
2020-12-01 03:10:48 +0100 <dsal> Here's a talk from ~8 years ago describing an older version: https://www.youtube.com/watch?v=KTJs-0EInW8
2020-12-01 03:11:00 +0100 <cads> dsal, are you familiar with the zotero reference management system?
2020-12-01 03:11:15 +0100Wuzzy(~Wuzzy@p549c9976.dip0.t-ipconnect.de) (Quit: Wuzzy)
2020-12-01 03:11:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-01 03:11:46 +0100 <dsal> No, I don't generally spend that much time in fancy stuff. I write Haskell because my brain can't keep up with a lot of stuff and I want to keep things simple.
2020-12-01 03:12:50 +0100 <cads> lol, my brain can't keep up with a lot of stuff and as a result I overengineer systems for effectively knowing things without actually knowing them
2020-12-01 03:13:35 +0100ulidtko|k(~ulidtko@194.54.80.38)
2020-12-01 03:13:59 +0100 <cads> doesn't really work out that well though
2020-12-01 03:20:37 +0100Iceland_jack(~user@31.124.48.169)
2020-12-01 03:21:21 +0100phaul(~phaul@ruby/staff/phaul)
2020-12-01 03:21:57 +0100 <cads> dsal, regarding code explorer, it turns out that I have this docker file ready to install it! https://gist.github.com/maxsu/098e896fb820b577b52214633861f5bb
2020-12-01 03:24:37 +0100 <cads> maerwald, I have pared down the dependencies to the absolute minimum, exploited ENV and ADD statements to separate the configuration from the code, and upgraded to the latest ubuntu and alpine images... once I have docker up and running here, I'll even test it!
2020-12-01 03:25:03 +0100 <cads> so far I have tested a script-only version in windows alpine-WSL, and it works!
2020-12-01 03:25:27 +0100xff0x(~fox@port-92-195-56-241.dynamic.as20676.net) (Ping timeout: 272 seconds)
2020-12-01 03:26:40 +0100xff0x(~fox@2001:1a81:52c4:e700:37aa:116:ec2d:7ff9)
2020-12-01 03:26:52 +0100 <cads> maerwald, I am also considering dropping the debian target from the build. I can build in Alpine, and then deploy to alpine, and even make alpine a very comfortable work environment. It's so much faster and responsive than ubuntu WSL that I don't want to go back
2020-12-01 03:27:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-12-01 03:27:44 +0100m0rphism(~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de) (Ping timeout: 260 seconds)
2020-12-01 03:28:16 +0100 <cads> since I run infrastrucutre on alpine docker anyways, why not make alpine into my haskell workstation?
2020-12-01 03:33:13 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-12-01 03:33:28 +0100vg(~vg@139.59.59.230)
2020-12-01 03:33:42 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-12-01 03:33:55 +0100vg(~vg@139.59.59.230)
2020-12-01 03:34:52 +0100hackplan1(~hackplan@2408:8221:4b10:da30:c167:6b69:89a8:31f1)
2020-12-01 03:36:04 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-01 03:36:44 +0100 <dsal> That sounds like a really awful nixos.
2020-12-01 03:37:07 +0100conal(~conal@64.71.133.70)
2020-12-01 03:37:23 +0100 <cads> I mean, 60 packages / 200mb worth of installation happens in about 10 second
2020-12-01 03:37:57 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-01 03:38:45 +0100plutoniix(~q@node-ulb.pool-125-24.dynamic.totinternet.net) (Remote host closed the connection)
2020-12-01 03:38:53 +0100 <cads> also I am thinking that nixos would actually like to live on Alpine WSL
2020-12-01 03:38:56 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2020-12-01 03:39:24 +0100 <cads> alpine being super light, with just one job: "get out of the way"
2020-12-01 03:40:02 +0100conal(~conal@64.71.133.70)
2020-12-01 03:40:22 +0100 <cads> nix would probably love that, compared to, say, an ubuntu base. Maybe clearl linux would be even better? But the clear linux WSL machine is still vaporware afaik
2020-12-01 03:42:00 +0100 <dsal> I use a nixos base most of the time.
2020-12-01 03:42:38 +0100 <cads> what is that based on?
2020-12-01 03:42:46 +0100 <dsal> What do you mean?
2020-12-01 03:43:14 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds)
2020-12-01 03:43:31 +0100 <iqubic> Nixos is linux distro.
2020-12-01 03:44:29 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-12-01 03:44:37 +0100 <cads> last I saw, I think nixos was still typically hosted on gentoo. And two year ago when I saw my friend playing around with it in a VM, they were working in an arch vm
2020-12-01 03:44:59 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Quit: Lost terminal)
2020-12-01 03:45:08 +0100 <cads> so I guess didn't know it was a standalone distro now - probably has been for years
2020-12-01 03:46:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-12-01 03:46:36 +0100 <iqubic> It has.
2020-12-01 03:47:07 +0100 <dsal> New release last month.
2020-12-01 03:48:16 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
2020-12-01 03:48:19 +0100ericsagnes(~ericsagne@240b:c010:4c1:17ae:8419:4353:1497:70f) (Read error: No route to host)
2020-12-01 03:48:25 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 240 seconds)
2020-12-01 03:49:32 +0100 <cads> have you followed intel's clear linux?
2020-12-01 03:49:51 +0100Melanie(c000868a@192-0-134-138.cpe.teksavvy.com) (Remote host closed the connection)
2020-12-01 03:49:54 +0100 <dsal> I first heard of it a few seconds ago.
2020-12-01 03:51:01 +0100halbGefressen(~halbGefre@2a02:810d:f40:2a9c:40b2:2308:84bd:8b9b) (Quit: halbGefressen)
2020-12-01 03:51:07 +0100jespada(~jespada@90.254.245.49)
2020-12-01 03:51:37 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-01 03:51:42 +0100 <cads> stateless/declarative/atomic deployments, plus it is incredibly fast, due to very agressive compiler flag optimization by the intel crew. In prhoronix's bencmarks it regaruly goes 10 or even 25% faster than other kernels
2020-12-01 03:52:05 +0100 <cads> it's definitley inspired by nix
2020-12-01 03:52:36 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-12-01 03:52:41 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Ping timeout: 272 seconds)
2020-12-01 03:52:45 +0100 <iqubic> Nixos has a stable version with releases every 6 months, and an unstable version that's rolling release. I'm using the rolling release version, but I can easily switch.
2020-12-01 03:53:12 +0100 <dsal> Yeah, why am I running a stable release?
2020-12-01 03:53:34 +0100 <iqubic> I don't know. If you want to switch to the unstable channel, you can.
2020-12-01 03:53:47 +0100 <cads> I don't know if clear has a stable release channel or if it's just rolling release
2020-12-01 03:53:53 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2020-12-01 03:54:25 +0100 <cads> haven't actually gotten to use, just read about it
2020-12-01 03:55:16 +0100justanotheruser(~justanoth@unaffiliated/justanotheruser)
2020-12-01 03:55:40 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit)
2020-12-01 03:55:42 +0100 <cads> how well does nixos play /w containers and kubernetes? Is there any support available?
2020-12-01 03:55:51 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2020-12-01 03:56:20 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-12-01 03:56:25 +0100 <iqubic> There's plenty of support.
2020-12-01 03:56:31 +0100 <cads> we have nix expressions for that stuff
2020-12-01 03:56:45 +0100 <iqubic> Yeah.
2020-12-01 03:56:51 +0100 <dsal> Yeah, I think I'm running docker somewhere. I just don't when I can avoid it.
2020-12-01 03:57:04 +0100 <cads> iqubic, who offers nixos training ?
2020-12-01 03:57:05 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-01 03:57:09 +0100 <iqubic> I'm sure there's a section of the nix manual that explains how to do that.
2020-12-01 03:57:16 +0100 <iqubic> cads: I have no idea.
2020-12-01 03:57:18 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-01 03:57:29 +0100 <cads> you said plenty of support
2020-12-01 03:57:54 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-01 03:58:09 +0100 <iqubic> Ah. What I meant was "nixos has plenty of support for containers"
2020-12-01 03:58:10 +0100 <dsal> This is #haskell
2020-12-01 03:58:21 +0100 <dsal> (quick reminder since nobody's mentioned haskell in pages)
2020-12-01 03:58:38 +0100 <iqubic> cads: If you want help, just ask in #nixos
2020-12-01 03:58:49 +0100 <iqubic> dsal: Are you doing AoC this year?
2020-12-01 03:59:02 +0100 <dsal> Oh man, it's about to start isn't it? I certainly enjoy it.
2020-12-01 03:59:28 +0100Jonkimi727406120(~Jonkimi@113.87.160.57) (Ping timeout: 260 seconds)
2020-12-01 03:59:59 +0100philopso1(~caecilius@gateway/tor-sasl/caecilius)
2020-12-01 04:00:37 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2020-12-01 04:00:50 +0100 <iqubic> It's starting in "7192.944941526s" If you understand how to read the string representation of a NominalDiffTime
2020-12-01 04:01:01 +0100philopso1(~caecilius@gateway/tor-sasl/caecilius) (Client Quit)
2020-12-01 04:01:01 +0100 <iqubic> That's a little under two hours
2020-12-01 04:01:22 +0100philopso1(~caecilius@gateway/tor-sasl/caecilius)
2020-12-01 04:01:33 +0100philopso1caecilius
2020-12-01 04:01:43 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-12-01 04:01:55 +0100caeciliusphilopsos
2020-12-01 04:02:31 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2020-12-01 04:03:06 +0100Deide(~Deide@217.155.19.23) (Quit: Seeee yaaaa)
2020-12-01 04:05:21 +0100 <ezzieyguywuf> here's where I ended up using rightOrdie. https://dpaste.com/D8TVSCMTK . I'm actually not sure if it's much better than the nested-case statements, due to the need for the type annotations on displayException
2020-12-01 04:05:28 +0100ericsagnes(~ericsagne@2405:6580:0:5100:bdbb:cde4:15d0:6fe5)
2020-12-01 04:10:55 +0100 <jle`> ezzieyguywuf: hm, you didn't need to do it before?
2020-12-01 04:10:59 +0100 <monochrom> If you turn on ScopedTypeVariables, then you can consider: rightOrDie (\(e :: ParseError) -> displayException e) (parse fData)
2020-12-01 04:11:17 +0100 <ezzieyguywuf> jle`: for some reason, I don't think I did. actually maybe I did...
2020-12-01 04:12:10 +0100 <ezzieyguywuf> yea didn't need it before
2020-12-01 04:12:11 +0100 <ezzieyguywuf> weird
2020-12-01 04:12:17 +0100 <jle`> or also rightOrDie (displayException @ParseError) (parse fData)
2020-12-01 04:12:18 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-01 04:13:06 +0100 <ezzieyguywuf> I think I'll leave the nested case, but wrap them in a "getConfigInfoOrDie" function. that way, it's very clear when reading main what is going on
2020-12-01 04:13:13 +0100 <iqubic> Is it just me, or is hoogle down?
2020-12-01 04:13:30 +0100 <Melanie> it's down for me too!
2020-12-01 04:13:31 +0100 <monochrom> jle`: No. Although I haven't read the code before, based on what's said informally here, the code before used handwritten inline pattern matching instead of rightOrDie, so there was an explicit "e" variable that you can easily attach ":: ParseError" to.
2020-12-01 04:14:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-01 04:14:39 +0100 <jle`> it's a bit puzzling to me https://dpaste.com/C29QTVVF7
2020-12-01 04:14:46 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-12-01 04:14:46 +0100 <ezzieyguywuf> monochrom: this is the code without rightOrDie https://dpaste.com/ERPKZS98H
2020-12-01 04:15:23 +0100 <ezzieyguywuf> I can post the full code if you'd like to compile and check, but it's a few modules big
2020-12-01 04:15:35 +0100 <monochrom> OK I can't explain that then.
2020-12-01 04:16:34 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-12-01 04:18:36 +0100Stanley|00(~stanley00@unaffiliated/stanley00)
2020-12-01 04:18:58 +0100rprije(~rprije@124.170.26.173) (Ping timeout: 256 seconds)
2020-12-01 04:19:14 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-01 04:20:02 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 272 seconds)
2020-12-01 04:20:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-01 04:20:53 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 256 seconds)
2020-12-01 04:24:17 +0100isBEKaml(~isBEKaml@unaffiliated/isbekaml) (Quit: leaving)
2020-12-01 04:24:51 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-01 04:25:19 +0100conal(~conal@64.71.133.70)
2020-12-01 04:25:58 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-01 04:27:00 +0100drbean(~drbean@TC210-63-209-163.static.apol.com.tw)
2020-12-01 04:27:53 +0100chew2(~steven@pool-100-6-89-242.pitbpa.fios.verizon.net)
2020-12-01 04:28:47 +0100christo(~chris@81.96.113.213)
2020-12-01 04:28:48 +0100conal(~conal@64.71.133.70)
2020-12-01 04:28:55 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4)
2020-12-01 04:29:04 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-12-01 04:32:16 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) ()
2020-12-01 04:32:53 +0100Jonkimi727406120(~Jonkimi@113.87.160.57)
2020-12-01 04:34:41 +0100sleblanc(~sleblanc@unaffiliated/sebleblanc)
2020-12-01 04:35:03 +0100bergey``(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2020-12-01 04:36:41 +0100lagothrix(~lagothrix@unaffiliated/lagothrix) (Killed (verne.freenode.net (Nickname regained by services)))
2020-12-01 04:36:49 +0100lagothrix(~lagothrix@unaffiliated/lagothrix)
2020-12-01 04:37:02 +0100sleblanc(~sleblanc@unaffiliated/sebleblanc) (Remote host closed the connection)
2020-12-01 04:37:19 +0100Jonkimi727406120(~Jonkimi@113.87.160.57) (Ping timeout: 256 seconds)
2020-12-01 04:38:14 +0100bergey`(~user@107.181.19.30) (Ping timeout: 256 seconds)
2020-12-01 04:38:38 +0100jonatan(~nate@h77-53-70-163.cust.a3fiber.se) (Quit: leaving)
2020-12-01 04:38:45 +0100theDon(~td@muedsl-82-207-238-063.citykom.de) (Ping timeout: 240 seconds)
2020-12-01 04:39:33 +0100seveg(~gabriel@2a02-ab04-0249-8d00-7d49-c4e2-4790-91c2.dynamic.v6.chello.sk) (Ping timeout: 272 seconds)
2020-12-01 04:40:49 +0100theDon(~td@94.134.91.186)
2020-12-01 04:40:56 +0100phaul(~phaul@ruby/staff/phaul)
2020-12-01 04:45:57 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-01 04:46:54 +0100Tario(~Tario@201.192.165.173)
2020-12-01 04:47:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-01 04:51:07 +0100sleblanc(~sleblanc@unaffiliated/sebleblanc)
2020-12-01 04:51:23 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
2020-12-01 04:51:57 +0100rprije(~rprije@194-193-148-12.tpgi.com.au)
2020-12-01 04:53:56 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2020-12-01 04:54:20 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
2020-12-01 04:56:46 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2020-12-01 04:59:12 +0100falafel_(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 260 seconds)
2020-12-01 04:59:49 +0100joaj(~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca) (Ping timeout: 272 seconds)
2020-12-01 04:59:59 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds)
2020-12-01 05:01:52 +0100vg(~vg@139.59.59.230)
2020-12-01 05:02:24 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!)
2020-12-01 05:03:28 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-12-01 05:05:56 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-01 05:05:58 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net) (Client Quit)
2020-12-01 05:06:18 +0100alx741(~alx741@186.178.110.99) (Ping timeout: 260 seconds)
2020-12-01 05:07:23 +0100SupaYoshi(~supayoshi@213-10-140-13.fixed.kpn.net)
2020-12-01 05:07:23 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-01 05:08:49 +0100falafel_(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-12-01 05:09:01 +0100MartinAS1(~MartinAS@195.140.213.38) (Remote host closed the connection)
2020-12-01 05:09:18 +0100Jonkimi727406120(~Jonkimi@113.87.160.57)
2020-12-01 05:09:25 +0100jlamothe(~jlamothe@198.251.55.207)
2020-12-01 05:13:16 +0100Jonkimi727406120(~Jonkimi@113.87.160.57) (Ping timeout: 240 seconds)
2020-12-01 05:16:13 +0100conal(~conal@64.71.133.70)
2020-12-01 05:16:48 +0100zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2020-12-01 05:17:25 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-12-01 05:17:43 +0100vg(~vg@139.59.59.230)
2020-12-01 05:17:55 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-12-01 05:18:10 +0100vg(~vg@139.59.59.230)
2020-12-01 05:19:01 +0100alx741(~alx741@186.178.110.203)
2020-12-01 05:21:31 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds)
2020-12-01 05:21:36 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-01 05:21:50 +0100zaquest(~notzaques@5.128.210.178)
2020-12-01 05:22:27 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-01 05:23:54 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net) (Read error: Connection reset by peer)
2020-12-01 05:24:29 +0100jonatan(~nate@h77-53-70-163.cust.a3fiber.se)
2020-12-01 05:24:46 +0100marek(~mmahut@209.250.249.245) (Ping timeout: 246 seconds)
2020-12-01 05:25:38 +0100marek(~mmahut@209.250.249.245)
2020-12-01 05:28:45 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-01 05:29:10 +0100adm_(~adm@117.208.18.165) (Remote host closed the connection)
2020-12-01 05:29:45 +0100maop(~maop@195.140.213.38)
2020-12-01 05:31:09 +0100texasmynsted(~texasmyns@212.102.45.112) (Remote host closed the connection)
2020-12-01 05:31:10 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2020-12-01 05:31:36 +0100chew2(~steven@pool-100-6-89-242.pitbpa.fios.verizon.net) (Ping timeout: 240 seconds)
2020-12-01 05:31:56 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-12-01 05:32:48 +0100Sgeo_(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2020-12-01 05:33:30 +0100chew2(~steven@pool-100-6-89-242.pitbpa.fios.verizon.net)
2020-12-01 05:33:36 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2020-12-01 05:35:41 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Ping timeout: 256 seconds)
2020-12-01 05:36:21 +0100conal(~conal@64.71.133.70)
2020-12-01 05:36:48 +0100emmanuel_erc(~user@2604:2000:1382:ce03::9af)
2020-12-01 05:38:00 +0100 <emmanuel_erc> So kind of a beginner question (but not beginner enough for haskell-beginners perhaps): How does Haskell's concurrency model compare to that of Javascript's?
2020-12-01 05:38:24 +0100 <dolio> JavaScript doesn't have one?
2020-12-01 05:39:39 +0100alx741(~alx741@186.178.110.203) (Ping timeout: 256 seconds)
2020-12-01 05:39:48 +0100 <emmanuel_erc> I was in a meteing today and the opposing model smirked (dejectedly) at the suggestion that Haskell is well acclaimed for it's concurrency model and then went on to talk about how amazing Javascript's model.
2020-12-01 05:39:49 +0100 <dolio> I guess Haskell doesn't really have one, either. GHC does.
2020-12-01 05:39:56 +0100 <emmanuel_erc> dolio: Fair point.
2020-12-01 05:40:15 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-01 05:40:18 +0100adm_(~adm@117.208.18.165)
2020-12-01 05:41:58 +0100 <emmanuel_erc> dolio: But you can implement concurrent programs in Javascript though?
2020-12-01 05:43:32 +0100phaul(~phaul@ruby/staff/phaul)
2020-12-01 05:44:21 +0100 <dolio> There are many libraries in JS for doing some kind of concurrency. Probably one for every year or so, which completely revolutionizes the last one, which was thought to be the best thing ever.
2020-12-01 05:46:03 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
2020-12-01 05:46:05 +0100 <dolio> For a long time it was essentially that you write almost everything with callbacks, which is barely a 'model'. It's close to just writing your own scheduler.
2020-12-01 05:46:16 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Client Quit)
2020-12-01 05:46:33 +0100 <emmanuel_erc> bleh
2020-12-01 05:46:47 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
2020-12-01 05:46:53 +0100 <dolio> I think some stuff has finally gotten beyond that, but I'm not an expert.
2020-12-01 05:47:18 +0100Noldorin(~noldorin@unaffiliated/noldorin)
2020-12-01 05:47:44 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 260 seconds)
2020-12-01 05:48:42 +0100Noldorin(~noldorin@unaffiliated/noldorin) (Client Quit)
2020-12-01 05:49:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-01 05:50:53 +0100Noldorin(~noldorin@unaffiliated/noldorin)
2020-12-01 05:51:01 +0100Noldorin(~noldorin@unaffiliated/noldorin) (Client Quit)
2020-12-01 05:52:09 +0100 <dolio> Is this the same guy who talks about how bad Haskell is at every opportunity without knowing anything about it? Or am I thinking of someone else?
2020-12-01 05:54:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2020-12-01 05:54:58 +0100Jonkimi727406120(~Jonkimi@113.87.160.57)
2020-12-01 05:55:19 +0100Tario(~Tario@201.192.165.173)
2020-12-01 05:57:13 +0100Saukk(~Saukk@2001:998:f9:2914:1c59:9bb5:b94c:4) (Remote host closed the connection)
2020-12-01 05:58:04 +0100 <siraben> Why do JS people put up with manually writing CPS, heh
2020-12-01 06:01:52 +0100 <dolio> Incidentally, one of the newer JS frameworks is react, as in reactive programming, as in functional reactive programming.
2020-12-01 06:02:25 +0100 <dolio> At least, I think.
2020-12-01 06:02:28 +0100 <cads> hey I want to instrument some code so that I can run input/output tests on the code, and /derive/ from that a set of mock interfaces complete with test data recorded from integration testing runtime
2020-12-01 06:03:16 +0100Jonkimi727406120(~Jonkimi@113.87.160.57) (Ping timeout: 272 seconds)
2020-12-01 06:03:25 +0100 <cads> the idea is that the tests should be able to run about 10 to 100 times faster if we distill them to exercising the units indepdently against in-memory test case cashes
2020-12-01 06:03:30 +0100 <cads> caches*
2020-12-01 06:03:45 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds)
2020-12-01 06:04:31 +0100 <emmanuel_erc> dolio: This is the same guy
2020-12-01 06:04:37 +0100 <dolio> Hahaha.
2020-12-01 06:04:39 +0100 <emmanuel_erc> I'm going to be leaving this job soon.
2020-12-01 06:04:45 +0100 <emmanuel_erc> I can't stand his idiocy any longer.
2020-12-01 06:06:00 +0100 <cads> it would be awesome to combine this approach with automated test case minimization
2020-12-01 06:06:51 +0100 <cads> lol, in effect this is test case minimization for minimzing your tests from tests against a binary blob
2020-12-01 06:07:00 +0100 <cads> into unit tests ;)
2020-12-01 06:07:25 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 256 seconds)
2020-12-01 06:08:34 +0100 <cads> but these unit tests also don't look like ordinary unit tests - they're just masses of empirically derived intermediary values that we pipe into our modules along mock interfaces
2020-12-01 06:09:31 +0100cheater(~user@unaffiliated/cheater)
2020-12-01 06:10:56 +0100drbean(~drbean@TC210-63-209-163.static.apol.com.tw) (Ping timeout: 240 seconds)
2020-12-01 06:11:11 +0100 <emmanuel_erc> dolio: Why did you figure it was the same guy?
2020-12-01 06:11:21 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-01 06:12:55 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-01 06:13:06 +0100 <dolio> Sounded familiar.
2020-12-01 06:13:16 +0100drbean(~drbean@TC210-63-209-61.static.apol.com.tw)
2020-12-01 06:13:36 +0100rprije(~rprije@194-193-148-12.tpgi.com.au) (Ping timeout: 240 seconds)
2020-12-01 06:15:28 +0100 <emmanuel_erc> dolio: Fair enough
2020-12-01 06:17:24 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-12-01 06:18:11 +0100Maxdamantus(~Maxdamant@unaffiliated/maxdamantus) (Ping timeout: 256 seconds)
2020-12-01 06:19:38 +0100Maxdamantus(~Maxdamant@unaffiliated/maxdamantus)
2020-12-01 06:20:01 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2020-12-01 06:21:15 +0100 <emmanuel_erc> I do wonder how JS concurrency does measure to Haskell's. More specifically, are there any real, reliable benchmarks to compare, instead of dudes in their mid 30s puffing their chetsts.
2020-12-01 06:24:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-01 06:28:34 +0100Tario(~Tario@201.192.165.173)
2020-12-01 06:30:16 +0100 <Tario> greetings
2020-12-01 06:31:47 +0100JJ15__(~JJ@host81-133-209-64.in-addr.btopenworld.com) (Ping timeout: 256 seconds)
2020-12-01 06:31:58 +0100 <iqubic> @define allPairs xs@(_ : tail) = [(x, pair) | x <- xs, pair <- tail]
2020-12-01 06:32:00 +0100 <lambdabot> Defined.
2020-12-01 06:32:11 +0100 <iqubic> > allPair [1..5]
2020-12-01 06:32:14 +0100 <lambdabot> error:
2020-12-01 06:32:14 +0100 <lambdabot> • Variable not in scope: allPair :: [a0] -> t
2020-12-01 06:32:14 +0100 <lambdabot> • Perhaps you meant ‘allPairs’ (line 182)
2020-12-01 06:32:19 +0100 <iqubic> > allPairs [1..5]
2020-12-01 06:32:22 +0100 <lambdabot> [(1,2),(1,3),(1,4),(1,5),(2,2),(2,3),(2,4),(2,5),(3,2),(3,3),(3,4),(3,5),(4,...
2020-12-01 06:32:49 +0100 <iqubic> glguy: I think you'll find it doesn't have both (1,2) and (2,1) magically.
2020-12-01 06:33:22 +0100 <glguy> > allPairs [1..2]
2020-12-01 06:33:25 +0100 <lambdabot> [(1,2),(2,2)]
2020-12-01 06:33:40 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 272 seconds)
2020-12-01 06:34:08 +0100ph88^(~ph88@2a02:8109:9e00:7e5c:a401:1e2b:755a:f79)
2020-12-01 06:34:08 +0100 <iqubic> Oh, weird. It has (2,2), but not (2,1)? How does this work?
2020-12-01 06:34:11 +0100ph88(~ph88@2a02:8109:9e00:7e5c:38a3:bec1:bd68:259f) (Ping timeout: 272 seconds)
2020-12-01 06:35:21 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 265 seconds)
2020-12-01 06:35:40 +0100rprije(~rprije@59-102-60-220.tpgi.com.au)
2020-12-01 06:36:15 +0100alx741(~alx741@186.178.110.121)
2020-12-01 06:36:16 +0100falafel_(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 260 seconds)
2020-12-01 06:36:17 +0100 <int-e> > [(x,y) | x:xs <- tails [1..3], y <- xs]
2020-12-01 06:36:20 +0100 <lambdabot> [(1,2),(1,3),(2,3)]
2020-12-01 06:36:27 +0100 <iqubic> Yeah, that's good.
2020-12-01 06:37:11 +0100 <int-e> it's a useful pattern
2020-12-01 06:37:21 +0100 <int-e> though not the most efficient way to go about that problem
2020-12-01 06:38:00 +0100 <iqubic> I'm talking about the first Advent Of Code problem.
2020-12-01 06:38:21 +0100 <int-e> that's what I thought
2020-12-01 06:38:33 +0100 <iqubic> [x*y | x:xs <- tails input, y <- xs, x+y == 2020]
2020-12-01 06:38:46 +0100 <iqubic> Is that not the most efficient.
2020-12-01 06:38:54 +0100 <glguy> no
2020-12-01 06:39:00 +0100 <int-e> no, it's possible to do better
2020-12-01 06:39:34 +0100 <iqubic> Oh? How?
2020-12-01 06:40:38 +0100chew2(~steven@pool-100-6-89-242.pitbpa.fios.verizon.net) (Ping timeout: 272 seconds)
2020-12-01 06:43:00 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-12-01 06:43:42 +0100argent0(~argent0@168.227.97.29) (Remote host closed the connection)
2020-12-01 06:44:00 +0100 <siraben> linear time solution
2020-12-01 06:44:30 +0100Sonolin(~Sonolin@184.103.179.49) (Quit: WeeChat 2.4)
2020-12-01 06:45:57 +0100rprije(~rprije@59-102-60-220.tpgi.com.au) (Ping timeout: 256 seconds)
2020-12-01 06:46:27 +0100 <int-e> though hmm, with only 200 input values it hardly matters
2020-12-01 06:47:15 +0100 <siraben> true, don't overoptimize!
2020-12-01 06:47:25 +0100 <mniip> siraben, linear? or pseudolinear (linlog)
2020-12-01 06:49:10 +0100 <siraben> mniip: assuming O(1) element access, this is like the classic problem about finding all pairs that sum to a given value right?
2020-12-01 06:50:25 +0100 <mniip> sounds like you're assuming an upper bound on number sizes
2020-12-01 06:51:18 +0100Iceland_jack(~user@31.124.48.169) (Ping timeout: 265 seconds)
2020-12-01 06:51:22 +0100 <mniip> anything where you use an input as an index into some array it's usually a good sign it's merely pseudopolynomial
2020-12-01 06:53:47 +0100falafel_(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-12-01 06:53:48 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-01 06:54:18 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-01 06:55:27 +0100maop(~maop@195.140.213.38) (Remote host closed the connection)
2020-12-01 06:55:56 +0100adm_(~adm@117.208.18.165) (Remote host closed the connection)
2020-12-01 06:56:09 +0100adm_(~adm@117.208.18.165)
2020-12-01 06:56:38 +0100kkdmemxor
2020-12-01 06:56:55 +0100memxorkkd
2020-12-01 06:57:08 +0100dibblego(~dibblego@haskell/developer/dibblego) (Ping timeout: 260 seconds)
2020-12-01 06:58:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2020-12-01 07:02:01 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-12-01 07:02:36 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 240 seconds)
2020-12-01 07:02:36 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-01 07:03:06 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-01 07:03:39 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com)
2020-12-01 07:03:40 +0100dibblego(~dibblego@122-199-1-30.ip4.superloop.com) (Changing host)
2020-12-01 07:03:40 +0100dibblego(~dibblego@haskell/developer/dibblego)
2020-12-01 07:05:50 +0100 <nitrix> I'm assuming that list comprehension gets gnarly as soon as you get to part #2, where you need a 3-tuple?
2020-12-01 07:06:17 +0100 <iqubic> Not really.
2020-12-01 07:06:41 +0100 <iqubic> If you want to know my solution to part 2, just let me know.
2020-12-01 07:06:58 +0100 <int-e> nitrix: 1313400 triples are okay
2020-12-01 07:07:00 +0100 <nitrix> Go ahead. I ended up choosing prolog for this year.
2020-12-01 07:07:01 +0100 <iqubic> There's certainly a clean way of doing it.
2020-12-01 07:07:06 +0100 <iqubic> [x*y*z | x:xs <- tails input, y:ys <- tails xs, z <- ys, x+y+z == 2020]
2020-12-01 07:07:51 +0100 <iqubic> Oh, int-e and I had the same amount of numbers in our input.
2020-12-01 07:07:51 +0100Jonkimi727406120(~Jonkimi@113.87.160.57)
2020-12-01 07:08:01 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-01 07:08:03 +0100gimps(~gimps@185.163.110.116)
2020-12-01 07:08:12 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Ping timeout: 260 seconds)
2020-12-01 07:08:45 +0100bergey``(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
2020-12-01 07:08:45 +0100 <nitrix> So the tail of the tail. I guess the list monad combined with list comprehensions can be quite awesome. You get you depth-first search and back-tracking.
2020-12-01 07:09:10 +0100 <dsal> I just went with `[x * y | x <- xs, y <- xs, x + y == 2020 ]` -- don't need all those fancy tails. It's roughly instant anyway.
2020-12-01 07:09:13 +0100 <nitrix> I had this in prolog: solution(S) :- entry(A), entry(B), entry(C), A + B + C =:= 2020, S is A * B * C.
2020-12-01 07:09:28 +0100 <dsal> I guess it's possible to get the wrong answer.
2020-12-01 07:09:34 +0100 <nitrix> It's quadratic (?) but I didn't worry too much about it for now.
2020-12-01 07:10:11 +0100 <nitrix> I was honestly more worried that they'd throw a wrench and have duplicate entries.
2020-12-01 07:11:27 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-12-01 07:11:38 +0100 <dsal> Yeah, if the dumbest thing gets the answer in a reasonable amount of time, I check it in and then think about other things I might want to do.
2020-12-01 07:12:22 +0100 <nitrix> Or, sorry, a number that added to itself would give 2020 (so 1010), to catch people doing the pairing naively instead of actually trying matching two entries together.
2020-12-01 07:12:58 +0100 <int-e> nitrix: not on day 1
2020-12-01 07:12:59 +0100 <int-e> :)
2020-12-01 07:13:03 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 265 seconds)
2020-12-01 07:13:46 +0100 <dsal> It's not uncommon to get the wrong answer for your real input when you get the right answer for the test.
2020-12-01 07:15:33 +0100phaul(~phaul@ruby/staff/phaul)
2020-12-01 07:18:17 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-01 07:18:25 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-12-01 07:18:39 +0100vg(~vg@139.59.59.230)
2020-12-01 07:18:54 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-12-01 07:19:18 +0100elliott_(~elliott@pool-108-51-141-12.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2020-12-01 07:21:16 +0100vg(~vg@139.59.59.230)
2020-12-01 07:22:23 +0100Ariakenom(~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se)
2020-12-01 07:27:22 +0100perry69420(7aa1dcc3@122.161.220.195)
2020-12-01 07:28:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-01 07:32:31 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-01 07:33:05 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2020-12-01 07:33:35 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-01 07:39:05 +0100Amras(~Amras@unaffiliated/amras)
2020-12-01 07:39:52 +0100jedws(~jedws@pa49-181-235-217.pa.nsw.optusnet.com.au)
2020-12-01 07:40:51 +0100falafel__(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-12-01 07:40:58 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-01 07:41:50 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds)
2020-12-01 07:43:28 +0100falafel_(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 260 seconds)
2020-12-01 07:44:25 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-12-01 07:44:42 +0100vg(~vg@139.59.59.230)
2020-12-01 07:44:56 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-12-01 07:45:06 +0100matryoshka(~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
2020-12-01 07:45:10 +0100vg(~vg@139.59.59.230)
2020-12-01 07:45:30 +0100matryoshka(~matryoshk@184.75.223.227)
2020-12-01 07:45:41 +0100matryoshka(~matryoshk@184.75.223.227) (Remote host closed the connection)
2020-12-01 07:45:48 +0100Melanie(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 260 seconds)
2020-12-01 07:47:08 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection)
2020-12-01 07:47:31 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2020-12-01 07:48:51 +0100Jonkimi727406120(~Jonkimi@113.87.160.57) (Ping timeout: 256 seconds)
2020-12-01 07:48:59 +0100 <aplainzetakind> Wasn't there a #haskell-aoc?
2020-12-01 07:50:03 +0100jedws(~jedws@pa49-181-235-217.pa.nsw.optusnet.com.au) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-01 07:50:05 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-01 07:50:05 +0100matryoshka(~matryoshk@184.75.223.227)
2020-12-01 07:50:25 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-12-01 07:50:32 +0100coot(~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl)
2020-12-01 07:50:42 +0100vg(~vg@139.59.59.230)
2020-12-01 07:50:53 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2020-12-01 07:51:13 +0100vg(~vg@139.59.59.230) (Client Quit)
2020-12-01 07:51:36 +0100vg(~vg@139.59.59.230)
2020-12-01 07:51:41 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-12-01 07:51:52 +0100vg(~vg@139.59.59.230)
2020-12-01 07:52:13 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-01 07:57:16 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-12-01 07:57:35 +0100vg(~vg@139.59.59.230)
2020-12-01 07:58:00 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-12-01 07:58:19 +0100vg(~vg@139.59.59.230)
2020-12-01 07:58:20 +0100 <Sose> I just went with `part2 l = head [ a*b*c | a <- l, b <- l, c <- l, a+b+c == 2020]` :D but yeah I guess it's possible to be more efficient
2020-12-01 07:58:38 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-12-01 08:00:04 +0100 <Sose> also it makes me feel a little bad that it's possible on bad inputs that head will result in a runtime exception
2020-12-01 08:01:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-01 08:01:38 +0100 <int-e> Sose: welcome to the wonderful world of throwaway code
2020-12-01 08:04:10 +0100phaul(~phaul@ruby/staff/phaul)
2020-12-01 08:05:53 +0100Ariakenom_(~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se)
2020-12-01 08:07:42 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca) (Quit: WeeChat 3.0)
2020-12-01 08:09:08 +0100Jonkimi727406120(~Jonkimi@113.87.160.57)
2020-12-01 08:09:11 +0100ericsagnes(~ericsagne@2405:6580:0:5100:bdbb:cde4:15d0:6fe5) (Ping timeout: 246 seconds)
2020-12-01 08:09:44 +0100urek(~urek@2804:7f1:e10a:9644:28f0:3bb:caef:43b3)
2020-12-01 08:09:54 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer)
2020-12-01 08:10:07 +0100alp_(~alp@2a01:e0a:58b:4920:935:7a17:356b:36a1)
2020-12-01 08:10:57 +0100Rudd0(~Rudd0@185.189.115.108) (Ping timeout: 256 seconds)
2020-12-01 08:12:21 +0100kkdagsdyugau
2020-12-01 08:12:28 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2020-12-01 08:12:39 +0100agsdyugaukkd
2020-12-01 08:13:09 +0100 <nshepperd2> i used 'head' but in retrospect it was probably better to just return the list itself so you would notice if it wasn't as expected (eg. more than one answer) so you could debug it instead of submitting something wrong
2020-12-01 08:13:49 +0100 <nshepperd2> or possibly use `the :: Eq a => [a] -> a`
2020-12-01 08:13:49 +0100bergey``(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2020-12-01 08:15:08 +0100 <koz_> The?
2020-12-01 08:15:43 +0100 <iqubic> What is the?
2020-12-01 08:16:11 +0100 <opqdonut> I assume `the xs = case nub xs of [x] -> x; _ -> error "not unique"`
2020-12-01 08:16:26 +0100 <koz_> An appropriate phrasing would also be 'what the?'/
2020-12-01 08:16:43 +0100 <nshepperd2> https://paste.zlkj.in/uploads/c1fe9333fe8d9a85/the.txt -- this is
2020-12-01 08:16:43 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-12-01 08:17:05 +0100Melanie__(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-01 08:17:45 +0100contiver_(~contiver@84-115-64-151.wifi.dynamic.surfer.at)
2020-12-01 08:17:56 +0100bergey``(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
2020-12-01 08:18:19 +0100 <nshepperd2> oh, maybe it could be generalized for foldable
2020-12-01 08:21:42 +0100 <iqubic> So, jle` found this bug in Data.Vec: https://hackage.haskell.org/package/vec-0.3/docs/src/Data.Vec.Lazy.html#product
2020-12-01 08:21:49 +0100ericsagnes(~ericsagne@2405:6580:0:5100:f21a:cc5d:d49d:bba0)
2020-12-01 08:21:51 +0100dmiles(~dmiles@c-73-67-179-188.hsd1.wa.comcast.net) ()
2020-12-01 08:21:51 +0100 <iqubic> How did this pass the tests?
2020-12-01 08:22:10 +0100Melanie__(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 265 seconds)
2020-12-01 08:22:25 +0100st8less(~st8less@2603:a060:11fd:0:e426:c042:f13e:e237) (Ping timeout: 268 seconds)
2020-12-01 08:22:33 +0100 <int-e> fun!
2020-12-01 08:22:40 +0100 <jle`> who tests the testers?
2020-12-01 08:22:44 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net) ()
2020-12-01 08:23:22 +0100st8less(~st8less@2603:a060:11fd:0:e426:c042:f13e:e237)
2020-12-01 08:23:24 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:6448:a1be:2d68:fad7)
2020-12-01 08:26:25 +0100 <int-e> iqubic: what tests?
2020-12-01 08:26:46 +0100conal(~conal@64.71.133.70) (Ping timeout: 246 seconds)
2020-12-01 08:27:06 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-01 08:27:15 +0100 <iqubic> I assume you could just use quickcheck to see if this is equivalent to the product function from base.
2020-12-01 08:27:16 +0100 <int-e> (as far as I can see, there are a few tests in `vec`, but nothing comprehensive)
2020-12-01 08:29:28 +0100falafel__(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Remote host closed the connection)
2020-12-01 08:29:56 +0100falafel__(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-12-01 08:30:03 +0100 <int-e> despite the evidence I feel like bugs like this never happen ;-)
2020-12-01 08:30:25 +0100 <int-e> (there's something quite unreal about this)
2020-12-01 08:32:36 +0100perry69420(7aa1dcc3@122.161.220.195) (Remote host closed the connection)
2020-12-01 08:32:36 +0100hackplan1(~hackplan@2408:8221:4b10:da30:c167:6b69:89a8:31f1) (Remote host closed the connection)
2020-12-01 08:33:40 +0100_linker_(~linker@2a02:a31a:a041:9a80:bdde:213a:272f:62f7)
2020-12-01 08:33:52 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2020-12-01 08:34:19 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-01 08:34:39 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2020-12-01 08:34:59 +0100 <jle`> Foldable instances seem to have a lot of room for bugs
2020-12-01 08:35:29 +0100 <jle`> last major ecosystem bug i found was in containers actually in the toList instance of IntSet or IntMap
2020-12-01 08:35:37 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2020-12-01 08:37:05 +0100shah^(shah@ip98-184-89-2.mc.at.cox.net)
2020-12-01 08:37:32 +0100adm_(~adm@117.208.18.165) (Remote host closed the connection)
2020-12-01 08:37:47 +0100 <jle`> s/instance/implementation
2020-12-01 08:39:14 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de)
2020-12-01 08:43:25 +0100falafel__(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 264 seconds)
2020-12-01 08:44:01 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de)
2020-12-01 08:44:40 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
2020-12-01 08:44:53 +0100contiver_(~contiver@84-115-64-151.wifi.dynamic.surfer.at) (Ping timeout: 265 seconds)
2020-12-01 08:45:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-01 08:47:13 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2020-12-01 08:50:46 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-01 08:55:12 +0100boxscape(86ab2d62@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.45.98)
2020-12-01 08:57:16 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds)
2020-12-01 08:57:19 +0100st8less(~st8less@2603:a060:11fd:0:e426:c042:f13e:e237) (Ping timeout: 272 seconds)
2020-12-01 08:57:34 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-12-01 08:58:26 +0100dmiles(~dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
2020-12-01 08:58:35 +0100st8less(~st8less@inet-167-224-197-181.isp.ozarksgo.net)
2020-12-01 09:00:19 +0100adm_(~adm@117.208.18.165)
2020-12-01 09:01:13 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-01 09:01:34 +0100Mathmoose(~mathias@31-208-78-204.cust.bredband2.com)
2020-12-01 09:02:37 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2020-12-01 09:03:03 +0100inja(~inja@vpras-174.vpn-pool.uni-konstanz.de)
2020-12-01 09:04:25 +0100timCF_(~i.tkachuk@m91-129-105-245.cust.tele2.ee) (Ping timeout: 264 seconds)
2020-12-01 09:05:38 +0100kuribas(~user@ptr-25vy0i7f6k5lgkppukc.18120a2.ip6.access.telenet.be)
2020-12-01 09:07:56 +0100adm_(~adm@117.208.18.165) (Remote host closed the connection)
2020-12-01 09:08:24 +0100Jonkimi727406120(~Jonkimi@113.87.160.57) (Read error: Connection reset by peer)
2020-12-01 09:10:03 +0100adm_(~adm@117.208.18.165)
2020-12-01 09:10:15 +0100 <siraben> Is it possible to make this any faster? http://ix.io/2G7O
2020-12-01 09:10:24 +0100 <siraben> Not sure what to do after bang patterns
2020-12-01 09:10:41 +0100 <siraben> It should take constant space
2020-12-01 09:12:55 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-12-01 09:14:11 +0100 <maerwald> siraben: top-level recursion doesn't optimize well, but I'm not sure about the details
2020-12-01 09:14:22 +0100dddddd(~dddddd@unaffiliated/dddddd) (Ping timeout: 246 seconds)
2020-12-01 09:14:39 +0100 <maerwald> so ppl usually do where go =... f go : foo
2020-12-01 09:15:07 +0100 <jle`> seems to be a clean tail recursion to me
2020-12-01 09:15:27 +0100 <jle`> no obvious opportunities for sharing
2020-12-01 09:16:03 +0100 <siraben> Using godbolt to see the assembly, looks pretty optimal
2020-12-01 09:16:22 +0100 <siraben> also putting f in a where clause doesn't seem to affect output
2020-12-01 09:17:38 +0100nados(~dan@69-165-210-185.cable.teksavvy.com) (Quit: Leaving)
2020-12-01 09:18:05 +0100 <siraben> What about the use of Int?
2020-12-01 09:18:38 +0100 <siraben> Heh I haven't even QuickChecked my code to see if it's a solution to a problem
2020-12-01 09:18:49 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-01 09:19:14 +0100 <maerwald> try -XStrict and -XStrictData and see if it changes anything
2020-12-01 09:19:20 +0100 <jle`> hm, you could switch to Int# maybe, but i'm not sure if that would make a major difference
2020-12-01 09:19:58 +0100 <siraben> https://godbolt.org/z/nos54M
2020-12-01 09:20:31 +0100 <jle`> if you switched it Int# and strict tuples then you wouldn't even need the bang patterns
2020-12-01 09:20:52 +0100 <jle`> but looking at the assembly it's likely that ghc already made that optimization for you
2020-12-01 09:21:02 +0100 <siraben> How can you tell?
2020-12-01 09:21:26 +0100 <jle`> oh i was kind of taking your word for it heh
2020-12-01 09:21:49 +0100 <jle`> the downside if you turn it into a strict tuple is that you won't be able to take advantage of sharing like you are doing now
2020-12-01 09:21:53 +0100 <jle`> with the s@(..)
2020-12-01 09:22:00 +0100 <jle`> because everyhting will be call by value
2020-12-01 09:22:35 +0100adm_(~adm@117.208.18.165) (Remote host closed the connection)
2020-12-01 09:22:49 +0100 <siraben> Without bang patterns: 864 lines of asm, with bang patterns: 680
2020-12-01 09:23:01 +0100 <siraben> Oops
2020-12-01 09:23:05 +0100 <siraben> 684 vs 680
2020-12-01 09:23:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2020-12-01 09:23:14 +0100 <jle`> oh by strict tuple i meant unboxed tuples
2020-12-01 09:23:16 +0100m0rphism(~m0rphism@HSI-KBW-095-208-098-207.hsi5.kabel-badenwuerttemberg.de)
2020-12-01 09:23:28 +0100 <siraben> Should I not use tuples altogether?
2020-12-01 09:23:29 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2020-12-01 09:23:49 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
2020-12-01 09:23:54 +0100 <jle`> right now your tuples give you the 'advantage' of sharing
2020-12-01 09:24:00 +0100 <jle`> i'm not sure if it makes a big difference though
2020-12-01 09:24:29 +0100 <siraben> How could I dump the C-- code?
2020-12-01 09:24:32 +0100 <siraben> To check for allocations and so on
2020-12-01 09:25:05 +0100 <boxscape> siraben -ddump-cmm
2020-12-01 09:25:28 +0100 <boxscape> siraben if you check here there's a whole bunch of -ddump-cmm-* flags https://downloads.haskell.org/ghc/latest/docs/html/users_guide/flags.html
2020-12-01 09:25:51 +0100Jonkimi727406120(~Jonkimi@113.87.160.57)
2020-12-01 09:26:05 +0100Sgeo_(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2020-12-01 09:26:14 +0100 <dminuoso> I have a data record with some `S, T, ..` and plenty of `Maybe Q`, `Maybe V`, etc. Ideally Id like a way to build a value from just the "required" (fields that are not Maybe) values.
2020-12-01 09:26:19 +0100 <dminuoso> optics is at my disposal
2020-12-01 09:26:19 +0100 <siraben> Uh oh it's quite unreadable
2020-12-01 09:26:29 +0100 <dminuoso> Writing a Monoid instance is unfeasible
2020-12-01 09:26:42 +0100 <dminuoso> (Since that wouldn't guarantee I produce sensible value of types S, T, ...)
2020-12-01 09:26:47 +0100 <dminuoso> What options do I have?
2020-12-01 09:28:13 +0100raichoo(~raichoo@213.240.178.58)
2020-12-01 09:30:34 +0100timCF(511495c8@200-149-20-81.sta.estpak.ee) (Remote host closed the connection)
2020-12-01 09:36:18 +0100adm_(~adm@117.208.18.165)
2020-12-01 09:36:40 +0100 <boxscape> this example Richard wrote is kind of interesting, I wouldn't have guessed the infinite output https://mail.haskell.org/pipermail/ghc-steering-committee/2020-November/001933.html
2020-12-01 09:37:59 +0100 <boxscape> oh though I just reali0
2020-12-01 09:38:14 +0100 <boxscape> realized* the reason I was confused is because I overlooked the default definition that ppr has
2020-12-01 09:38:42 +0100 <boxscape> a lot less interesting now :)
2020-12-01 09:38:52 +0100drbean(~drbean@TC210-63-209-61.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin1 - https://znc.in)
2020-12-01 09:40:53 +0100michalz(~user@185.246.204.125)
2020-12-01 09:40:54 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-12-01 09:42:04 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2020-12-01 09:43:36 +0100jamm_(~jamm@unaffiliated/jamm)
2020-12-01 09:45:07 +0100miguel_clean(~Miguel@89-72-187-203.dynamic.chello.pl)
2020-12-01 09:45:31 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection)
2020-12-01 09:45:56 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2020-12-01 09:48:30 +0100borne(~fritjof@200116b864506b008cdf581d4c1cc02f.dip.versatel-1u1.de)
2020-12-01 09:49:17 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
2020-12-01 09:50:52 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2020-12-01 09:54:09 +0100inja(~inja@vpras-174.vpn-pool.uni-konstanz.de) (Read error: Connection reset by peer)
2020-12-01 09:55:26 +0100Spiff(~quassel@102.160.27.107)
2020-12-01 09:56:57 +0100boxscape91(54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55)
2020-12-01 09:57:13 +0100wz1000(~wz1000@static.11.113.47.78.clients.your-server.de) (Ping timeout: 264 seconds)
2020-12-01 09:57:36 +0100kritzefitz(~kritzefit@p2e5a5f99.dip0.t-ipconnect.de)
2020-12-01 09:58:17 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de)
2020-12-01 09:59:56 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 240 seconds)
2020-12-01 10:00:45 +0100boxscape(86ab2d62@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.45.98) (Ping timeout: 240 seconds)
2020-12-01 10:01:33 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2020-12-01 10:02:03 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 260 seconds)
2020-12-01 10:02:54 +0100 <idnar> @type \f x -> f x $> x
2020-12-01 10:02:55 +0100 <lambdabot> error:
2020-12-01 10:02:56 +0100 <lambdabot> • Variable not in scope: ($>) :: t1 -> t -> t2
2020-12-01 10:02:56 +0100 <lambdabot> • Perhaps you meant one of these:
2020-12-01 10:03:13 +0100kritzefitz(~kritzefit@p2e5a5f99.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2020-12-01 10:03:31 +0100kritzefitz(~kritzefit@2003:5b:203b:200::10:49)
2020-12-01 10:03:34 +0100toorevitimirp(~tooreviti@117.182.183.16)
2020-12-01 10:03:50 +0100 <idnar> huh isn't $> in Prelude?
2020-12-01 10:04:18 +0100 <merijn> Pretty sure <$ and $> are in Control.Applicative, so no
2020-12-01 10:04:40 +0100 <dminuoso> ‘Cryptokey’ is exported by ‘Cryptokey(..)’ and ‘Cryptokey(..)’
2020-12-01 10:04:48 +0100 <dminuoso> Not bad. Modifying files while GHC is running is a funny buiness
2020-12-01 10:05:00 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-12-01 10:05:05 +0100 <dminuoso> The diagnostics become quite strange
2020-12-01 10:05:15 +0100 <idnar> merijn: Data.Functor
2020-12-01 10:05:20 +0100 <idnar> @type \f x -> x <$ f x
2020-12-01 10:05:22 +0100 <lambdabot> Functor f => (t -> f b) -> t -> f t
2020-12-01 10:05:49 +0100 <idnar> oic, <$ is the class method
2020-12-01 10:05:59 +0100jrqc(~rofl@96.78.87.197) (Ping timeout: 256 seconds)
2020-12-01 10:06:28 +0100 <dminuoso> Oh hold on, nvm me
2020-12-01 10:06:29 +0100jrqc(~rofl@96.78.87.197)
2020-12-01 10:06:47 +0100 <idnar> @hoogle Functor f => (t -> f b) -> t -> f t
2020-12-01 10:06:48 +0100 <lambdabot> No results found
2020-12-01 10:07:07 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2020-12-01 10:07:36 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
2020-12-01 10:08:07 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-12-01 10:09:11 +0100__monty__(~toonn@unaffiliated/toonn)
2020-12-01 10:12:58 +0100SeMas(uid32977@gateway/web/irccloud.com/x-fslpxgaefzxrqvxr) (Quit: Connection closed for inactivity)
2020-12-01 10:13:46 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-12-01 10:15:30 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2020-12-01 10:17:52 +0100Melanie__(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-01 10:18:27 +0100boxscape91(54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) (Quit: Connection closed)
2020-12-01 10:19:40 +0100massma(~user@dyn-160-39-62-152.dyn.columbia.edu)
2020-12-01 10:19:41 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-12-01 10:21:41 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-12-01 10:23:00 +0100Melanie__(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 265 seconds)
2020-12-01 10:23:47 +0100Lord_of_Life_(~Lord@46.217.220.86) (Read error: Connection reset by peer)
2020-12-01 10:24:06 +0100Lord_of_Life(~Lord@46.217.220.86)
2020-12-01 10:24:56 +0100Lord_of_Life(~Lord@46.217.220.86) (Changing host)
2020-12-01 10:24:56 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-12-01 10:25:15 +0100wonko7(~wonko7@2a01:e35:2ffb:7040:55f1:c3a3:cdbe:bf52)
2020-12-01 10:25:57 +0100plutoniix(~q@ppp-223-24-92-155.revip6.asianet.co.th)
2020-12-01 10:28:08 +0100Sose(sid429738@gateway/web/irccloud.com/x-vdewfreqbfmetfxe) ()
2020-12-01 10:31:26 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-iqmdrqkssdvbgacz) (Quit: Connection closed for inactivity)
2020-12-01 10:31:29 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2020-12-01 10:38:14 +0100Aquazi(uid312403@gateway/web/irccloud.com/x-upkmxhtxsvcjopkm)
2020-12-01 10:39:06 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-12-01 10:40:57 +0100 <merijn> Hey
2020-12-01 10:41:07 +0100 <merijn> Why don't we have a #haskell AoC leaderboard yet?
2020-12-01 10:41:41 +0100 <merijn> Ah, looks like the old one is still active, but not in th topic
2020-12-01 10:45:12 +0100thc202(~thc202@unaffiliated/thc202)
2020-12-01 10:46:20 +0100DavidEichmann(~david@62.110.198.146.dyn.plus.net)
2020-12-01 10:47:02 +0100solonarv(~solonarv@anancy-651-1-197-136.w109-217.abo.wanadoo.fr)
2020-12-01 10:48:26 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-01 10:48:59 +0100sose(~sose@2a01:4f9:c010:e5da::1)
2020-12-01 10:49:08 +0100jamm_(~jamm@unaffiliated/jamm)
2020-12-01 10:49:25 +0100dragestil(~quassel@fsf/member/dragestil) (Ping timeout: 240 seconds)
2020-12-01 10:49:34 +0100boxscape(54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55)
2020-12-01 10:49:50 +0100Franciman(~francesco@host-95-251-103-60.retail.telecomitalia.it)
2020-12-01 10:50:02 +0100soseSose
2020-12-01 10:50:48 +0100jamm__(~jamm@unaffiliated/jamm)
2020-12-01 10:51:33 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-12-01 10:52:08 +0100dragestil(~quassel@fsf/member/dragestil)
2020-12-01 10:53:51 +0100ph88^(~ph88@2a02:8109:9e00:7e5c:a401:1e2b:755a:f79) (Ping timeout: 272 seconds)
2020-12-01 10:54:43 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 256 seconds)
2020-12-01 10:56:53 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Remote host closed the connection)
2020-12-01 10:56:54 +0100oleks(~oleks@188.166.34.97)
2020-12-01 10:57:21 +0100massma(~user@dyn-160-39-62-152.dyn.columbia.edu) (Quit: rcirc on GNU Emacs 26.1)
2020-12-01 10:57:34 +0100adm_(~adm@117.208.18.165) (Remote host closed the connection)
2020-12-01 10:57:39 +0100massma(~user@dyn-160-39-62-152.dyn.columbia.edu)
2020-12-01 10:58:00 +0100adm_(~adm@117.208.18.165)
2020-12-01 10:59:25 +0100Nahra(~Nahra@unaffiliated/nahra)
2020-12-01 10:59:35 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-12-01 11:00:32 +0100Rudd0(~Rudd0@185.189.115.103)
2020-12-01 11:02:39 +0100adm_(~adm@117.208.18.165) (Ping timeout: 256 seconds)
2020-12-01 11:04:37 +0100Sose(~sose@2a01:4f9:c010:e5da::1) (Quit: WeeChat 2.8)
2020-12-01 11:06:31 +0100Sose(~sose@2a01:4f9:c010:e5da::1)
2020-12-01 11:07:18 +0100son0p(~son0p@181.58.39.182)
2020-12-01 11:07:53 +0100funkatronixxx(~funkatron@2001:981:f73:1:b048:68d2:a9f5:c605)
2020-12-01 11:09:33 +0100dhil(~dhil@195.213.192.34)
2020-12-01 11:13:18 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-01 11:13:40 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
2020-12-01 11:13:59 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-01 11:14:43 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 265 seconds)
2020-12-01 11:15:01 +0100xff0x(~fox@2001:1a81:52c4:e700:37aa:116:ec2d:7ff9) (Ping timeout: 244 seconds)
2020-12-01 11:16:25 +0100xff0x(~fox@2001:1a81:52c4:e700:37aa:116:ec2d:7ff9)
2020-12-01 11:18:05 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-12-01 11:18:15 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
2020-12-01 11:18:30 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-01 11:18:30 +0100vfaronov(~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
2020-12-01 11:19:04 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2020-12-01 11:20:07 +0100 <dminuoso> Mmm, is there a reason not to provide a Data instance when you already have a Generic instance for ADTs exposed in libraries?
2020-12-01 11:20:24 +0100 <dminuoso> It seems like you might as well provide anything you can for the odd user who wants it.
2020-12-01 11:20:55 +0100 <dminuoso> Assuming you're exporting data constructors/field accessor anyway
2020-12-01 11:22:47 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-12-01 11:22:58 +0100 <bulters> merijn: care to share your solution to day 1? ;-)
2020-12-01 11:23:27 +0100 <bulters> I'm curious to see what a more proficient Haskeller would have written
2020-12-01 11:26:19 +0100Jonkimi727406120(~Jonkimi@113.87.160.57) (Ping timeout: 246 seconds)
2020-12-01 11:27:49 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2020-12-01 11:27:56 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds)
2020-12-01 11:29:20 +0100 <dminuoso> bulters: Do you have your solution submitted already?
2020-12-01 11:29:57 +0100xff0x(~fox@2001:1a81:52c4:e700:37aa:116:ec2d:7ff9) (Ping timeout: 272 seconds)
2020-12-01 11:30:35 +0100hexo-(~hexo@83.167.228.130) (Quit: ZNC - http://znc.in)
2020-12-01 11:30:35 +0100_Adluc_(~Adluc@83.167.228.130) (Quit: ZNC - http://znc.in)
2020-12-01 11:30:38 +0100xff0x(~fox@2001:1a81:52c4:e700:bf4e:e529:193a:8d75)
2020-12-01 11:30:57 +0100 <bulters> dminuoso: yes, and on GH
2020-12-01 11:31:19 +0100Adluc(~Adluc@2a01:430:17:1::ffff:328)
2020-12-01 11:31:24 +0100kritzefitz(~kritzefit@2003:5b:203b:200::10:49) (Ping timeout: 240 seconds)
2020-12-01 11:31:30 +0100 <bulters> to put my bluntness, stupidity and ignorance on display... and for others to comment on so I can actually learn this stuff for once.
2020-12-01 11:32:18 +0100 <dminuoso> No worries, I just dont to spoonfeed solutions. Hence my asking.
2020-12-01 11:32:37 +0100 <bulters> I know...
2020-12-01 11:33:36 +0100 <bulters> but wanted to extend the invite to have a look at my solution (https://github.com/bulters/aoc20)... although for today, well, doesn't matter too much.
2020-12-01 11:34:20 +0100 <bulters> could've done optimization, but it runs in 0.04s when ran via `cabal new-run`.
2020-12-01 11:34:57 +0100Franciman(~francesco@host-95-251-103-60.retail.telecomitalia.it) (Ping timeout: 256 seconds)
2020-12-01 11:38:22 +0100 <Sose> I'm new to Haskell myself but I did pretty much the exact same solution except I separated the actual problems into separate pure functions ([Int] -> Int)
2020-12-01 11:39:31 +0100Nahra(~Nahra@unaffiliated/nahra) (Quit: leaving)
2020-12-01 11:39:47 +0100hexo-(~hexo@83.167.228.130)
2020-12-01 11:39:55 +0100 <dminuoso> bulters: Depending on how further AoC excercises run, you might have to do this more efficiently
2020-12-01 11:40:00 +0100 <dminuoso> You're generating unnecessary work
2020-12-01 11:40:34 +0100 <dminuoso> Keep in mind that both addition and multiplication are commutative
2020-12-01 11:41:07 +0100 <dminuoso> Also, readMaybe tends to be a better choice, read is always a wart.
2020-12-01 11:41:30 +0100 <bulters> dminuoso: I agree. This is not the smartest thing to do. Will probably try and improve a bit this afternoon.
2020-12-01 11:41:53 +0100 <bulters> dminuoso: but now we're talking software engineering, not solving AoC challenges ;-)
2020-12-01 11:42:11 +0100bultersstill adds changing `read` to `readMaybe` to todo list for this afternoon.
2020-12-01 11:42:16 +0100Franciman(~francesco@host-62-211-221-142.retail.telecomitalia.it)
2020-12-01 11:42:21 +0100 <dminuoso> Surely christmas is important enough to warrent stable code.
2020-12-01 11:42:41 +0100 <bulters> But I thought we were going on vacation this year?
2020-12-01 11:42:44 +0100 <dminuoso> Also, it's helpful if you develop a habit of using safe primitives regardless of the task..
2020-12-01 11:42:59 +0100 <dminuoso> `traverse readMaybe` is not more work than `map maybe`, but it saves you from endless headaches down the road
2020-12-01 11:43:10 +0100 <dminuoso> err *map read
2020-12-01 11:45:01 +0100 <bulters> I really have to explore package documentation more...
2020-12-01 11:45:05 +0100 <Sose> my first time hearing about readMaybe ;o
2020-12-01 11:45:24 +0100 <suzu_> traverse readMaybe will break if any of the values can't be read
2020-12-01 11:45:36 +0100 <suzu_> is there a form for if you wanted to read up to the first error?
2020-12-01 11:46:08 +0100Spiff(~quassel@102.160.27.107) (Read error: Connection reset by peer)
2020-12-01 11:46:30 +0100kritzefitz(~kritzefit@p2e5a5f99.dip0.t-ipconnect.de)
2020-12-01 11:46:40 +0100sphaleriteL1nuxH4ckerm4n
2020-12-01 11:47:10 +0100 <bulters> is there a cabal new-repl incantation that loads a specific source file right away?
2020-12-01 11:47:52 +0100 <bulters> and q2: did the "haskell community at large" already decide on a default code formatter? :')
2020-12-01 11:47:59 +0100 <dminuoso> suzu_: Good question. I mean if you want to *skip* invalid rows, mapMaybe/catMaybes has you covered.
2020-12-01 11:48:27 +0100 <suzu_> there must be some newtype wrapper for Maybe that has the applicative I want
2020-12-01 11:48:37 +0100 <boxscape> I suppose you can (sequence . takeWhile isJust . map readMaybe)?
2020-12-01 11:48:51 +0100 <suzu_> oh thats a good idea
2020-12-01 11:49:10 +0100 <suzu_> is there one that uses just an applicative instance though
2020-12-01 11:49:29 +0100 <dminuoso> sequenceA? :>
2020-12-01 11:49:40 +0100 <suzu_> right, but that's not the right sequence
2020-12-01 11:49:49 +0100 <dminuoso> What do you mean by "right sequence"
2020-12-01 11:49:54 +0100 <dminuoso> sequenceA = sequence
2020-12-01 11:49:59 +0100 <suzu_> err to be specific
2020-12-01 11:50:09 +0100 <suzu_> can it be written as a `traverse f` for some f
2020-12-01 11:50:09 +0100Spiff(~quassel@102.160.27.107)
2020-12-01 11:50:15 +0100 <dminuoso> The reasons we have both are... well... there was discussion to unify them into sequence, and people forgot about it
2020-12-01 11:50:36 +0100 <dminuoso> suzu_: Im thinking you should be able to with ListT
2020-12-01 11:50:52 +0100 <suzu_> and i think traverse uses a sequenceA in it, which will use the applicative of Maybe
2020-12-01 11:50:54 +0100 <merijn> bulters: Eh, I just read and downloaded it, so it is as of yet, non-existent :p
2020-12-01 11:51:14 +0100 <merijn> I already have some *entirely* overkill solution in mind, though
2020-12-01 11:51:22 +0100 <bulters> nice, looking forward to it :')
2020-12-01 11:51:45 +0100 <merijn> but lunch first :p
2020-12-01 11:51:58 +0100ph88^(~ph88@2a02:8109:9e00:7e5c:a401:1e2b:755a:f79)
2020-12-01 11:52:04 +0100 <bulters> priorities!!!
2020-12-01 11:52:13 +0100 <dminuoso> suzu_: My feeling says if you run it through `MaybeT (ListT Identity)` it should do the expected
2020-12-01 11:52:21 +0100 <dminuoso> Let's see
2020-12-01 11:52:49 +0100L1nuxH4ckerm4nsphalerite
2020-12-01 11:54:27 +0100 <bulters> dminuoso: What would be the "value add" of using a mt for this be? (c.l. I don't understand monads, let alone mt's, so just trying to figure out the why here)
2020-12-01 11:55:22 +0100whald(~trem@2a02:810a:8100:11a6:6dd2:b8f3:b9d4:9820)
2020-12-01 11:55:45 +0100JJ15__(~JJ@2a00:23a8:4382:a900:c045:d3da:cbf4:529a)
2020-12-01 11:56:40 +0100 <dminuoso> bulters: Oh, with monad transformers we just get a succint way of specifying effects, nothing more.
2020-12-01 11:57:42 +0100 <bulters> dminuoso: "clear", I'll dive into that somewhere this month :')
2020-12-01 11:58:14 +0100 <bulters> dminuoso: so if I change read into readMaybe, I suddenly have to define by Nothing case as well right...
2020-12-01 11:58:44 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net) (Read error: No route to host)
2020-12-01 11:58:59 +0100Kaiepi(~Kaiepi@nwcsnbsc03w-47-55-225-82.dhcp-dynamic.fibreop.nb.bellaliant.net)
2020-12-01 11:59:17 +0100joaoh82(~joaoh82@157-131-134-210.dedicated.static.sonic.net)
2020-12-01 11:59:48 +0100vg(~vg@139.59.59.230)
2020-12-01 12:00:06 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-12-01 12:00:37 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2020-12-01 12:01:37 +0100 <dminuoso> Right.
2020-12-01 12:02:05 +0100 <dminuoso> Alternatively, you can use readEither, and then do the entirety of your code in `Either String`
2020-12-01 12:02:18 +0100 <dminuoso> Or maybe `readMaybe` with `note` and you stuck it all into IO
2020-12-01 12:02:39 +0100 <boxscape> % readEither "" :: Either String Int
2020-12-01 12:02:39 +0100 <yahb> boxscape: Left "Prelude.read: no parse"
2020-12-01 12:02:41 +0100 <boxscape> hm
2020-12-01 12:04:23 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2020-12-01 12:04:59 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
2020-12-01 12:05:16 +0100wei2912(~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
2020-12-01 12:07:58 +0100plutoniix(~q@ppp-223-24-92-155.revip6.asianet.co.th) (Quit: Leaving)
2020-12-01 12:08:55 +0100raichoo(~raichoo@213.240.178.58) (Quit: Lost terminal)
2020-12-01 12:09:36 +0100adm(~adm@117.208.18.165)
2020-12-01 12:10:05 +0100cads(~cads@ip-64-72-99-232.lasvegas.net) (Read error: Connection reset by peer)
2020-12-01 12:12:26 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-01 12:13:03 +0100carlomagno1(~cararell@148.87.23.8)
2020-12-01 12:13:31 +0100 <bulters> dminuoso: thanks... actually moving from just read to readMaybe, and doing the type matching dance made my solution "faster" (by 25%, 0.01s)
2020-12-01 12:14:08 +0100adm(~adm@117.208.18.165) (Ping timeout: 260 seconds)
2020-12-01 12:14:22 +0100 <bulters> sorry, I was mistaking... it made it one order of magnitude slower :')
2020-12-01 12:14:26 +0100 <bulters> need more coffee
2020-12-01 12:15:31 +0100 <dminuoso> bulters: Can you share your code?
2020-12-01 12:15:38 +0100 <bulters> yeah
2020-12-01 12:15:40 +0100 <bulters> pushing now
2020-12-01 12:15:46 +0100 <dminuoso> It shouldn't be noticeable slower.
2020-12-01 12:16:19 +0100carlomagno(~cararell@148.87.23.13) (Ping timeout: 256 seconds)
2020-12-01 12:16:34 +0100 <bulters> from 0.04s to 0.35s is, imo an order of magnitude slower... not dramatic though ;-)
2020-12-01 12:16:55 +0100 <dminuoso> Ah yes, I see.
2020-12-01 12:17:26 +0100 <dminuoso> It's quite possible this fmap breaks fusion.
2020-12-01 12:17:26 +0100ericsagnes(~ericsagne@2405:6580:0:5100:f21a:cc5d:d49d:bba0) (Ping timeout: 264 seconds)
2020-12-01 12:17:27 +0100alp_(~alp@2a01:e0a:58b:4920:935:7a17:356b:36a1) (Ping timeout: 272 seconds)
2020-12-01 12:17:39 +0100 <dminuoso> So I'd rather
2020-12-01 12:17:42 +0100p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Remote host closed the connection)
2020-12-01 12:17:49 +0100 <bulters> It's because I use product and sum instead of (*) and (+) right?
2020-12-01 12:17:49 +0100 <dminuoso> Write the code in terms of `[Int] -> ...`
2020-12-01 12:18:04 +0100 <dminuoso> so roughly you'd do
2020-12-01 12:18:33 +0100Melanie__(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-01 12:18:44 +0100 <dminuoso> case traverse readMaybe (lines buf) of Just xs -> print =<< solution xs; Nothing -> die "Parse error"
2020-12-01 12:19:47 +0100 <dminuoso> There's a million ways to make this better or different, but I think this is a good starter.
2020-12-01 12:20:12 +0100 <dminuoso> or well, maybe `print (solution xs)` rather
2020-12-01 12:20:16 +0100 <dminuoso> Assuming solution is pure code
2020-12-01 12:21:15 +0100 <dminuoso> `traverse readMaybe` conceptually reads every string, and if any fails the whole thing short circuits with a conceptual exception
2020-12-01 12:21:24 +0100 <dminuoso> the surrouding case-of acts as a conceptual catch
2020-12-01 12:22:10 +0100 <dminuoso> The benefit of this is that you can control what happens if read fails. With `read` you're placing a mine inside a thunk, that gets triggered somewhere else
2020-12-01 12:23:54 +0100Melanie__(~Melanie@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 272 seconds)
2020-12-01 12:24:12 +0100LKoen(~LKoen@105.175.9.109.rev.sfr.net)
2020-12-01 12:25:04 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-12-01 12:25:18 +0100vg(~vg@139.59.59.230)
2020-12-01 12:25:30 +0100graf_blutwurst(~user@2001:171b:226e:adc0:8cf1:fdba:8ff:47f5)
2020-12-01 12:25:32 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-12-01 12:25:45 +0100vg(~vg@139.59.59.230)
2020-12-01 12:27:08 +0100 <boxscape> the second part of the aoc task seems kind of weird. It almost feels like they make the problem bigger so you have to come up with a more efficient algorithm, but the problem isn't actually large enough to necessitate it (I'm also not sure if there is a better algorithm atm)
2020-12-01 12:27:08 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-01 12:27:36 +0100 <boxscape> more efficient algorithm than the naive one, that is
2020-12-01 12:29:05 +0100ericsagnes(~ericsagne@2405:6580:0:5100:e153:5d61:7541:557d)
2020-12-01 12:30:28 +0100poljar1(~poljar@93-139-28-121.adsl.net.t-com.hr) (Ping timeout: 260 seconds)
2020-12-01 12:30:52 +0100 <boxscape> (the answer is yes)
2020-12-01 12:31:26 +0100 <boxscape> Oh actually never mind lazy evaluation already gave me the optimization I had in mind
2020-12-01 12:31:45 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-01 12:37:15 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de)
2020-12-01 12:39:33 +0100massma(~user@dyn-160-39-62-152.dyn.columbia.edu) (Quit: rcirc on GNU Emacs 26.1)
2020-12-01 12:41:08 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-12-01 12:41:16 +0100Spiff(~quassel@102.160.27.107) (Ping timeout: 240 seconds)
2020-12-01 12:42:14 +0100boxscape(54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) (Quit: Connection closed)
2020-12-01 12:42:30 +0100boxscape(54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55)
2020-12-01 12:43:20 +0100alp_(~alp@2a01:e0a:58b:4920:3ce6:db0:87ea:498)
2020-12-01 12:43:53 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Ping timeout: 244 seconds)
2020-12-01 12:44:34 +0100xff0x(~fox@2001:1a81:52c4:e700:bf4e:e529:193a:8d75) (Remote host closed the connection)
2020-12-01 12:44:38 +0100jollygood2(~bc8165ab@217.29.117.252)
2020-12-01 12:44:52 +0100xff0x(~fox@2001:1a81:52c4:e700:4c67:f849:ed85:83ba)
2020-12-01 12:45:00 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-01 12:46:56 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-01 12:49:08 +0100christo(~chris@81.96.113.213)
2020-12-01 12:49:22 +0100p3n(~p3n@217.198.124.246)
2020-12-01 12:49:33 +0100adm(~adm@117.208.18.165)
2020-12-01 12:49:51 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-12-01 12:50:07 +0100shatriff(~vitaliish@176.52.219.10)
2020-12-01 12:50:40 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-12-01 12:50:58 +0100shatriff(~vitaliish@176.52.219.10)
2020-12-01 12:51:24 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-01 12:51:28 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-12-01 12:51:47 +0100shatriff(~vitaliish@176.52.219.10)
2020-12-01 12:52:06 +0100 <maerwald> Do TupleSections translate to a lambda expression or is there some other black magic involved?
2020-12-01 12:52:16 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-12-01 12:52:18 +0100Stanley|00(~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
2020-12-01 12:52:30 +0100 <merijn> maerwald: What kinda black magic would be involved?
2020-12-01 12:52:32 +0100shatriff(~vitaliish@176.52.219.10)
2020-12-01 12:52:47 +0100 <maerwald> If I knew, I probably would know how to figure out the answer.
2020-12-01 12:53:05 +0100shatriff(~vitaliish@176.52.219.10) (Remote host closed the connection)
2020-12-01 12:53:22 +0100 <merijn> I'd say they turn into something equivalent to a lambda expression
2020-12-01 12:53:29 +0100 <dminuoso> boxscape: What I dislike, is that the task doesnt make it clear whether an entry can be added with itself or not.
2020-12-01 12:53:38 +0100 <dminuoso> I mean, for this task it doesnt matter. But it might
2020-12-01 12:53:43 +0100christo(~chris@81.96.113.213) (Ping timeout: 256 seconds)
2020-12-01 12:54:08 +0100adm(~adm@117.208.18.165) (Ping timeout: 256 seconds)
2020-12-01 12:55:13 +0100 <boxscape> dminuoso Hm, they do say "the two numbers that add together to 2020", which to me implies that they're different numbers, but it is somewhat ambiguous
2020-12-01 12:55:32 +0100 <boxscape> s/numbers/entries
2020-12-01 12:55:45 +0100 <dminuoso> "two entries" does not imply they're different entries
2020-12-01 12:55:57 +0100 <LKoen> they didn't say "the two distinct numbers" or "the two different numbers"
2020-12-01 12:56:07 +0100 <boxscape> I feel like in non-math speech it does
2020-12-01 12:56:41 +0100 <LKoen> I read it as "the two numbers, which are not particularly expected to be equal, but who knows"
2020-12-01 12:57:10 +0100 <merijn> This all seems irrelevant to solving the problem, tbh
2020-12-01 12:57:31 +0100 <dminuoso> Sure, that was just complaining about the problem description
2020-12-01 12:58:01 +0100Jonkimi727406120(~Jonkimi@115.44.7.41)
2020-12-01 12:58:14 +0100 <boxscape> it's kind of interesting because "the two numbers that are greater than 1000" I think would obviously be two distinct numbers, but when they interact it's not as clear
2020-12-01 12:58:58 +0100lotuseater(~user@2a02:908:fbd1:b0a0:e509:2192:3b29:45fb)
2020-12-01 12:59:57 +0100 <boxscape> I'm almost inclined to argue that there's a difference between "a pair of numbers that add to 2020" and "two numbers that add to 2020", but interpreting these is probably pretty subjective, so I won't
2020-12-01 13:00:52 +0100 <dminuoso> My point is, it shouldnt require interpretation
2020-12-01 13:01:08 +0100 <boxscape> that is a fair point
2020-12-01 13:02:12 +0100 <merijn> And once again I find myself wanting foldMapM or foldTraverse :p
2020-12-01 13:02:12 +0100jamm__(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2020-12-01 13:03:00 +0100toorevitimirp(~tooreviti@117.182.183.16) (Remote host closed the connection)
2020-12-01 13:03:07 +0100 <siraben> Is there an elegant way to check if a list is ascending? I have `and . (zipWith (<) <*> tail)` but it's not very amenable to equational reasoning
2020-12-01 13:03:31 +0100toorevitimirp(~tooreviti@117.182.183.16)
2020-12-01 13:04:48 +0100 <merijn> @quote aztec.god
2020-12-01 13:04:48 +0100 <lambdabot> quicksilver says: zip`ap`tail the aztec god of consecutive numbers
2020-12-01 13:05:13 +0100 <merijn> (not an answer, but sprang to mind)
2020-12-01 13:06:56 +0100gproto23(~gproto23@unaffiliated/gproto23)
2020-12-01 13:07:14 +0100 <siraben> Here's what I have https://gist.github.com/siraben/6b1f57ff1a3fbb76432eb79f0f91f507
2020-12-01 13:07:25 +0100 <siraben> I have a naive solution and the efficient one that looks like a state machine
2020-12-01 13:07:35 +0100 <siraben> I want to derive the efficient solution from the naive one
2020-12-01 13:07:36 +0100Spiff(~quassel@102.160.27.107)
2020-12-01 13:07:49 +0100 <siraben> Trying to invoke Horner's rule (from Algebra of Programming) somehow
2020-12-01 13:08:31 +0100jchia__(~jchia@58.32.37.146) (Ping timeout: 246 seconds)
2020-12-01 13:08:46 +0100 <siraben> Horner's rule states if `f c = c and f (g (a,b)) = g (f a, f b)` then `foldr g c . iterate f = foldr (\a b -> g (a, f b)) c`
2020-12-01 13:08:54 +0100 <siraben> (specialized to the list base bifunctor)
2020-12-01 13:09:13 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233)
2020-12-01 13:10:22 +0100massma(~user@dyn-160-39-62-152.dyn.columbia.edu)
2020-12-01 13:10:51 +0100 <siraben> Somehow the predicate `isMountain` is blocking progress
2020-12-01 13:11:19 +0100 <siraben> Here's an example of Horner's rule used to solve the maximum subsegment problem, https://en.wikipedia.org/wiki/Bird%E2%80%93Meertens_formalism#/media/File:Max_seg_sums_svg.svg
2020-12-01 13:11:22 +0100jchia__(~jchia@58.32.37.146)
2020-12-01 13:11:41 +0100Tario(~Tario@201.192.165.173)
2020-12-01 13:12:22 +0100Spiff(~quassel@102.160.27.107) (Ping timeout: 246 seconds)
2020-12-01 13:12:25 +0100drbean(~drbean@TC210-63-209-89.static.apol.com.tw)
2020-12-01 13:12:30 +0100 <merijn> siraben: oof...that's some complex list abuse with most likely *terrible* performance
2020-12-01 13:12:43 +0100 <siraben> merijn: Yes, I'm aware. That's why it's the naive solution
2020-12-01 13:12:55 +0100 <siraben> `solve` runs in linear time and constant space OTOH
2020-12-01 13:13:53 +0100 <merijn> siraben: It's awfully complex for a naive solution, though? >.>
2020-12-01 13:14:01 +0100 <siraben> Maybe my calculus of choice is wrong, I should be using a relational calculus, hm.
2020-12-01 13:14:17 +0100 <siraben> merijn: did you see the naive pointfree version?
2020-12-01 13:14:41 +0100 <merijn> siraben: Yes. And my brain nopes out of there 2 expressions in ;)
2020-12-01 13:15:00 +0100 <siraben> Heh, it's quite simple, really!
2020-12-01 13:15:14 +0100 <merijn> siraben: My immediate response to isMountain on line 93 is "wow...I can't be bothered to understand this enough to help" :p
2020-12-01 13:15:40 +0100 <siraben> I derived that expression from the monadic one
2020-12-01 13:15:49 +0100 <siraben> So it's basically the same
2020-12-01 13:16:23 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 256 seconds)
2020-12-01 13:18:17 +0100 <siraben> @pl any (\(l, r) -> isAscending l && isDescending r) . (\l -> (\i -> (take (i + 1) l, drop i l)) <$> [1..length l - 2])
2020-12-01 13:18:17 +0100 <lambdabot> any (uncurry ((. isDescending) . (&&) . isAscending)) . ap ((<$>) . ap (ap . ((,) .) . flip (take . (1 +))) (flip drop)) (enumFromTo 1 . subtract 2 . length)
2020-12-01 13:18:50 +0100 <siraben> Ooh
2020-12-01 13:19:29 +0100adm(~adm@117.208.18.165)
2020-12-01 13:19:56 +0100raichoo(~raichoo@213.240.178.58)
2020-12-01 13:21:16 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-12-01 13:21:42 +0100poljar(~poljar@78-3-3-62.adsl.net.t-com.hr)
2020-12-01 13:22:48 +0100Mathmoose(~mathias@31-208-78-204.cust.bredband2.com) (Ping timeout: 265 seconds)
2020-12-01 13:24:26 +0100Feuermagier_(~Feuermagi@213.178.26.41)
2020-12-01 13:24:39 +0100Feuermagier(~Feuermagi@213.178.26.41) (Read error: Connection reset by peer)
2020-12-01 13:24:44 +0100shad0w_(~Srain@160.202.37.72)
2020-12-01 13:25:27 +0100gimps(~gimps@185.163.110.116) (Remote host closed the connection)
2020-12-01 13:26:33 +0100sondr3(~sondr3@cm-84.211.56.132.getinternet.no)
2020-12-01 13:27:59 +0100christo(~chris@81.96.113.213)
2020-12-01 13:30:18 +0100sleblanc(~sleblanc@unaffiliated/sebleblanc) (Ping timeout: 260 seconds)
2020-12-01 13:30:54 +0100 <merijn> bulters: Well, here's part 1 in terms of overengineered solutions: https://github.com/merijn/AdventOfCode2020/blob/master/Day1.hs ;)
2020-12-01 13:31:56 +0100christo(~chris@81.96.113.213) (Ping timeout: 240 seconds)
2020-12-01 13:34:24 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
2020-12-01 13:37:34 +0100 <tomsmeding> maerwald: wasn't there a difference in laziness between (,x) and (\a -> (a, x)) ?
2020-12-01 13:38:01 +0100phaul(~phaul@ruby/staff/phaul) (Ping timeout: 264 seconds)
2020-12-01 13:38:19 +0100Boomerang(~Boomerang@xd520f68c.cust.hiper.dk)
2020-12-01 13:38:42 +0100 <merijn> tomsmeding: That applies to all operators, is technically a bug (or incompatibility with the report) in GHC, and it's hard to think of non-contrived situations where it matters
2020-12-01 13:38:55 +0100 <merijn> https://github.com/quchen/articles/blob/master/fbut.md#a-op-is-not-x---a-op-x
2020-12-01 13:39:55 +0100 <tomsmeding> ah right that was it. I agree that if this matters in your code you're doing something wrong, but maerwald was asking if there was magic involved :p
2020-12-01 13:40:33 +0100wz1000(~wz1000@static.11.113.47.78.clients.your-server.de)
2020-12-01 13:40:34 +0100Iceland_jack(~user@31.124.48.169)
2020-12-01 13:40:40 +0100 <merijn> tomsmeding: Well, like I said, it depends how you define magic. What GHC generates is *roughly* equivalent of the lambda
2020-12-01 13:40:58 +0100 <tomsmeding> ... on the other hand, that operator case you linked is for when the operator is undefined, but with tuple sections the operator is the tuple section -- which apparently isn't undefined, since you just wrote it
2020-12-01 13:41:12 +0100 <merijn> Except, GHC internally has a notion of "function arity" (i.e. when something is fully applied) for optimisation purposes
2020-12-01 13:41:27 +0100 <tomsmeding> so am I correct in saying that this distinction is present for operator sections, but not for tuplesections?
2020-12-01 13:41:39 +0100LKoen(~LKoen@105.175.9.109.rev.sfr.net) (Remote host closed the connection)
2020-12-01 13:41:46 +0100 <merijn> tomsmeding: Who knows? :p
2020-12-01 13:42:15 +0100 <tomsmeding> > fst ((,undefined) 42)
2020-12-01 13:42:18 +0100 <lambdabot> 42
2020-12-01 13:42:39 +0100 <tomsmeding> I claim no observable difference
2020-12-01 13:42:46 +0100 <tomsmeding> s/observable/semantic/
2020-12-01 13:43:10 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 246 seconds)
2020-12-01 13:46:34 +0100Mathmoose(~mathias@31-208-78-204.cust.bredband2.com)
2020-12-01 13:46:37 +0100 <siraben> merijn: put it like this, what's a good way to check if a list is a mountain? i.e.
2020-12-01 13:47:19 +0100 <siraben> There is some i, 0 < i < length arr such that arr[0] < arr[1] ... < arr[i] and arr[i] > arr[i + 1] ... > arr[length arr - 1]
2020-12-01 13:47:21 +0100tomsmedinghates it how accidentally pressing 'e' on a github page immediately forks the repo
2020-12-01 13:47:37 +0100 <maerwald> tomsmeding: lol, does it?
2020-12-01 13:47:41 +0100 <siraben> My derivation hinges on that
2020-12-01 13:47:43 +0100 <tomsmeding> it does
2020-12-01 13:48:42 +0100geekosaur(ac3a54de@172.58.84.222)
2020-12-01 13:50:48 +0100 <merijn> siraben: I don't think the logic is necessarily bad, I think the logic *applied to lists* is bad :)
2020-12-01 13:51:03 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
2020-12-01 13:51:14 +0100 <merijn> siraben: (and the overuse of point-free/zip`ap`tail)
2020-12-01 13:51:48 +0100 <siraben> merijn: Right, so my hope is to eliminate the intermediate list altogether via calculation
2020-12-01 13:51:49 +0100 <merijn> siraben: Because indexing lists is O(n), if you use Array or Vector so your indexing is O(1) it'd already be a lot more sensible
2020-12-01 13:52:29 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-01 13:52:31 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de)
2020-12-01 13:52:42 +0100 <maerwald> merijn: wait, so (,) is like an infix operator?
2020-12-01 13:53:07 +0100 <merijn> maerwald: (,) is analogous to making operators prefix, yes, that's the idea
2020-12-01 13:53:37 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
2020-12-01 13:54:03 +0100 <merijn> maerwald: Also, note that (,) isn't TupleSections
2020-12-01 13:54:33 +0100berberman(~berberman@unaffiliated/berberman)
2020-12-01 13:54:45 +0100 <maerwald> Can we make a contrived example that demonstrates a difference?
2020-12-01 13:55:23 +0100 <merijn> maerwald: Between TupleSections and not or of the strictness?
2020-12-01 13:55:31 +0100 <maerwald> yeah
2020-12-01 13:55:41 +0100 <merijn> ENOPARSE
2020-12-01 13:55:54 +0100 <maerwald> lol
2020-12-01 13:56:04 +0100vg(~vg@139.59.59.230) (Quit: vg)
2020-12-01 13:56:11 +0100 <merijn> that was an either/or clarification, yes is not acceptable answer :p
2020-12-01 13:56:16 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-12-01 13:56:19 +0100vg(~vg@139.59.59.230)
2020-12-01 13:56:34 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-12-01 13:56:44 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2020-12-01 13:56:49 +0100vg(~vg@139.59.59.230)
2020-12-01 13:57:01 +0100Melanie__(~Melanie@192-0-134-138.cpe.teksavvy.com)
2020-12-01 13:57:07 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-12-01 13:57:18 +0100vg(~vg@139.59.59.230)
2020-12-01 13:57:27 +0100joaj(~joaj@2001:818:e326:8200:5273:55b7:3a86:e6ca)
2020-12-01 13:57:29 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-12-01 13:57:31 +0100 <maerwald> I want to see a demonstration of different strictness properties between (\x -> (undefined, x)) and (undefined,) for example
2020-12-01 13:57:39 +0100vg(~vg@139.59.59.230)
2020-12-01 13:57:40 +0100 <maerwald> Can't come up with one
2020-12-01 13:57:48 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-12-01 13:58:18 +0100 <merijn> I'm not there is one, the example in quchen's post relies on the operator being undefined (which it isn't for tuples)
2020-12-01 13:58:34 +0100 <boxscape> do tuples work with RebindableSyntax?
2020-12-01 13:58:51 +0100 <merijn> bulters: Don't think so
2020-12-01 13:59:33 +0100 <boxscape> yeah user guide doesn't mention it
2020-12-01 13:59:37 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 264 seconds)
2020-12-01 14:00:03 +0100urek(~urek@2804:7f1:e10a:9644:28f0:3bb:caef:43b3) (Ping timeout: 272 seconds)
2020-12-01 14:00:33 +0100urodna(~urodna@unaffiliated/urodna)
2020-12-01 14:02:01 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-12-01 14:03:30 +0100jess(jess@freenode/staff/jess) (Quit: Leaving)
2020-12-01 14:05:04 +0100hexfive(~hexfive@50-47-142-195.evrt.wa.frontiernet.net)
2020-12-01 14:05:44 +0100da39a3ee5e6b4b0d(~da39a3ee5@mx-ll-171.5.161-165.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-01 14:06:18 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl)
2020-12-01 14:06:24 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net)
2020-12-01 14:06:25 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2020-12-01 14:08:03 +0100texasmynsted(~texasmyns@212.102.45.123)
2020-12-01 14:09:33 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2020-12-01 14:09:54 +0100 <bulters> merijn: it looks over engineered alright ;-)
2020-12-01 14:10:35 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2020-12-01 14:11:25 +0100 <merijn> bulters: I have the same rules as last year. "Must correctly handle *any* possible error"
2020-12-01 14:11:48 +0100 <boxscape> how do you know you haven't missed one?
2020-12-01 14:11:55 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2020-12-01 14:11:59 +0100Spiff(~quassel@102.160.27.107)
2020-12-01 14:12:41 +0100 <merijn> bulters: Because I like to refer to them as examples of how you can write clean, readable, but still relatively short code
2020-12-01 14:13:13 +0100Melanie__(~Melanie@192-0-134-138.cpe.teksavvy.com) (Quit: #haskell-aoc-beginners)
2020-12-01 14:13:14 +0100 <merijn> boxscape: I just mean "don't use 'read' and assume the conversions work out', 'don't skip cases because "they can't happen"', etc.
2020-12-01 14:13:21 +0100 <boxscape> I see
2020-12-01 14:13:54 +0100 <merijn> So, "no hacky shortcuts"
2020-12-01 14:13:56 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-12-01 14:14:27 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-12-01 14:14:56 +0100 <merijn> bulters: Last year it paid of, because doing it properly made it fairly easy to reuse in later puzzles :p
2020-12-01 14:16:59 +0100Tario(~Tario@201.192.165.173)
2020-12-01 14:17:11 +0100 <ph88^> hey guys, maybe strange question but if i want to have a functional language and then instead of CPU instructions to come out my own steps, where do i even start? and could i leverage ghc optimizations for this ?
2020-12-01 14:17:50 +0100 <boxscape> what kind of step do you have in mind when you say "your own steps"?
2020-12-01 14:18:20 +0100 <merijn> That just sounds like "how do I wrote my own compiler?" :p
2020-12-01 14:18:40 +0100_linker_(~linker@2a02:a31a:a041:9a80:bdde:213a:272f:62f7) (Remote host closed the connection)
2020-12-01 14:18:49 +0100 <ph88^> yes a small functional language that compiles into steps send to another system
2020-12-01 14:18:59 +0100 <merijn> (which is a perfectly reasonable thing to want and will probably get you more useful answers :p)
2020-12-01 14:19:01 +0100 <Boomerang> That sounds a bit like what Clash does. It uses GHC for the frontend and optimization and then generates HDL from the Core language
2020-12-01 14:19:17 +0100 <Boomerang> (or maybe I missunderstood and you want the opposite? ^^)
2020-12-01 14:19:23 +0100son0p(~son0p@181.58.39.182) (Quit: leaving)
2020-12-01 14:19:27 +0100 <ph88^> no you got it Boomerang
2020-12-01 14:19:35 +0100 <Boomerang> https://clash-lang.org/ Then :)
2020-12-01 14:19:38 +0100 <merijn> Working from Core is super tedious, though
2020-12-01 14:19:39 +0100 <bulters> merijn: that's my next step, include this into a lib ;-)
2020-12-01 14:19:42 +0100 <Boomerang> And maybe #clash-lang
2020-12-01 14:19:52 +0100 <ph88^> merijn, clash works on core ?
2020-12-01 14:20:17 +0100 <merijn> ph88^: Clash is a semi-fork of GHC that reuses it's front end (so input is Haskell), but generates different code
2020-12-01 14:20:37 +0100 <merijn> But if your input language *isn't* "Haskell", then writing your own compiler is probably much easier
2020-12-01 14:20:52 +0100 <ph88^> ye i mean the "handover point" from ghc front-end is the core language ?
2020-12-01 14:21:10 +0100 <Boomerang> There are several "handover points"
2020-12-01 14:21:27 +0100 <Boomerang> Core is the minimal Haskell like language I think
2020-12-01 14:21:45 +0100 <Boomerang> But that can include many optimisations
2020-12-01 14:21:52 +0100 <ph88^> i also heard that i could use a free monad to write some interpreter .. maybe this is more suitable to get started ?
2020-12-01 14:22:05 +0100 <Boomerang> Yeah definitely! :D
2020-12-01 14:23:17 +0100 <merijn> ph88^: tbh, "writing a compiler" really isn't so hard if you don't really need much optimisation
2020-12-01 14:23:59 +0100 <ph88^> merijn, ye this optimization is not really a requirement now. I'm just trying to determine if it's already worth looking at ghc stuff at some point to take that into account or not
2020-12-01 14:24:34 +0100 <merijn> ph88^: tbh, "writing a new compiler from scratch" is most likely *much* less work than reusing GHC
2020-12-01 14:24:49 +0100 <ph88^> is there any stuff that can be reused ? i mean after the parser there should come symbol tables and type inference and so on ..
2020-12-01 14:24:51 +0100 <merijn> And the more your language differs from Haskell, the bigger the amount of work saved :p
2020-12-01 14:25:02 +0100 <ph88^> ok sounds like good advice
2020-12-01 14:25:09 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de)
2020-12-01 14:25:51 +0100 <ph88^> do you know of any components (not necessarily ghc stuff) that can be used to save work though ? or do we have to implement hindley milner & friends from scratch ?
2020-12-01 14:26:07 +0100Feuermagier(~Feuermagi@213.178.26.41)
2020-12-01 14:26:57 +0100 <merijn> ph88^: My main recommendations would be: 1) Types and Programming Languages by Benjamin Pierce (on how to do typechecking) and "Modern Compiler Implementation in ML" by Andrew Appel
2020-12-01 14:27:14 +0100 <ph88^> ye already reading that first book
2020-12-01 14:27:26 +0100 <Boomerang> What is your language for? Could you use an existing one? :)
2020-12-01 14:27:32 +0100 <ph88^> any recommendations on components and libraries perhaps ?
2020-12-01 14:28:03 +0100 <ph88^> Boomerang, we want our own custom language for a product like a DSL ..
2020-12-01 14:29:14 +0100 <Ariakenom_> for a DSL example I like this blog post on an assembly DSL in haskell https://www.stephendiehl.com/posts/monads_machine_code.html
2020-12-01 14:29:20 +0100 <Ariakenom_> sry wrong link
2020-12-01 14:29:21 +0100 <Boomerang> I think as soon as you need typechecking it becomes a fairly big undertaking. Would an embedded DSL be enough?
2020-12-01 14:29:23 +0100 <Ariakenom_> http://wall.org/~lewis/2013/10/15/asm-monad.html
2020-12-01 14:29:59 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:9156:59b2:2700:3dd:eb69)
2020-12-01 14:30:54 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-01 14:31:01 +0100 <Boomerang> How about using Dhall with custom builtins (if the standard language isn't enough)? https://dhall-lang.org/
2020-12-01 14:31:17 +0100 <Ariakenom_> requires understanding of monads but nothing more I think
2020-12-01 14:31:22 +0100 <Boomerang> dhall-haskell is fairly easily extensible
2020-12-01 14:31:23 +0100Feuermagier_(~Feuermagi@213.178.26.41) (Quit: Leaving)
2020-12-01 14:33:07 +0100 <ph88^> Boomerang, i like your creativity :) :)
2020-12-01 14:34:13 +0100 <maerwald> this is cooler: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/coqasm.pdf
2020-12-01 14:34:16 +0100 <dminuoso> ph88^: Regarding "writing a compiler". There's the following difficulties: Type system, suitable diagnostics and optimizations. If you dont care about any three, then often you can get away with less than a thousand lines of Haskell for most languages, often 100 could suffice.
2020-12-01 14:34:25 +0100jrqc(~rofl@96.78.87.197) (Ping timeout: 240 seconds)
2020-12-01 14:35:01 +0100 <ph88^> dminuoso, hum i tried implementing just a parser once (not counting other components) in megaparsec which already was 3000 lines
2020-12-01 14:35:11 +0100 <dminuoso> Well it depends on the grammar, of course.
2020-12-01 14:35:45 +0100 <dminuoso> I've seen an implementation of an early Haskell-like that was about 200 lines total I think?
2020-12-01 14:36:25 +0100JJ15__(~JJ@2a00:23a8:4382:a900:c045:d3da:cbf4:529a) (Read error: Connection reset by peer)
2020-12-01 14:36:27 +0100 <dminuoso> The diagnostics in GHC for example leads to a lot of difficulties. GHC's type system operates on the original source language (in fact it operates on something even *richer*, since it operates on elaborated haskell), allowing GHC to report errors accurately on what code you have written, not how its desugared.
2020-12-01 14:36:42 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
2020-12-01 14:36:46 +0100jrqc(~rofl@96.78.87.197)
2020-12-01 14:37:05 +0100 <ph88^> ye i agree that error reporting is very important
2020-12-01 14:37:13 +0100 <Boomerang> Well my Dhall recommendation is biased since I contribute to that project. But the extensibility is very good, since you can serialise functions between Haskell and Dhall: https://hackage.haskell.org/package/dhall-1.36.0/docs/Dhall-Tutorial.html#g:23
2020-12-01 14:37:33 +0100dyeplexer(~lol@unaffiliated/terpin)
2020-12-01 14:37:33 +0100z0k(~user@101.50.127.33) (Read error: Connection reset by peer)
2020-12-01 14:37:47 +0100JJ15__(~JJ@host81-133-209-64.in-addr.btopenworld.com)
2020-12-01 14:37:50 +0100 <dminuoso> ph88^: Does your language have a notion of variables/binders?
2020-12-01 14:38:02 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2020-12-01 14:38:03 +0100 <ph88^> Boomerang, the notion of "a sequence of steps" and putting constraints what step can before another step (and not) is quite important, i would have to think a bit to see how that could work in dhall
2020-12-01 14:38:20 +0100 <ph88^> dminuoso, yes like some immutable variables
2020-12-01 14:38:48 +0100gproto23(~gproto23@unaffiliated/gproto23) (Ping timeout: 272 seconds)
2020-12-01 14:38:55 +0100 <dminuoso> ph88^: Then you might be interested in unbound.
2020-12-01 14:39:02 +0100 <dminuoso> Dealing with names and binders is something you don't want to do yourself.
2020-12-01 14:39:06 +0100 <ph88^> whats that ?
2020-12-01 14:39:17 +0100 <dminuoso> https://hackage.haskell.org/package/unbound
2020-12-01 14:39:18 +0100 <ph88^> this https://hackage.haskell.org/package/unbound ?
2020-12-01 14:39:24 +0100 <ph88^> aah great !
2020-12-01 14:39:24 +0100 <dminuoso> Yes
2020-12-01 14:39:35 +0100 <ph88^> do you have any other recommendations too ? i love this kind of stuff
2020-12-01 14:40:03 +0100 <ph88^> i found this before, but not sure yet if i can use it https://hackage.haskell.org/package/hoopl
2020-12-01 14:40:51 +0100 <siraben> Anyone remember the scan lemma?
2020-12-01 14:41:07 +0100 <siraben> I have `foldr f 0 . tails`
2020-12-01 14:41:39 +0100 <siraben> hlint doesn't seem to have it
2020-12-01 14:42:55 +0100kritzefitz(~kritzefit@p2e5a5f99.dip0.t-ipconnect.de) (Remote host closed the connection)
2020-12-01 14:43:35 +0100z0k(~user@101.50.127.33)
2020-12-01 14:43:45 +0100cfricke(~cfricke@unaffiliated/cfricke)
2020-12-01 14:43:49 +0100 <siraben> Ooh, https://gist.github.com/regiskuckaertz/63c60151ef85670312d1d1f92490de2e#scan-lemma
2020-12-01 14:44:45 +0100drbean(~drbean@TC210-63-209-89.static.apol.com.tw) (Ping timeout: 240 seconds)
2020-12-01 14:46:22 +0100 <siraben> This turns a quadratic time expression into a linear one
2020-12-01 14:48:09 +0100 <Boomerang> Is this advent of code related? ^^
2020-12-01 14:48:18 +0100aidecoe(~aidecoe@unaffiliated/aidecoe) (Remote host closed the connection)
2020-12-01 14:48:45 +0100 <siraben> Boomerang: no, leetcode related
2020-12-01 14:48:56 +0100Jonkimi727406120(~Jonkimi@115.44.7.41) (Ping timeout: 272 seconds)
2020-12-01 14:53:33 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-12-01 14:54:58 +0100adm(~adm@117.208.18.165) (Remote host closed the connection)
2020-12-01 14:55:54 +0100JJ15__(~JJ@host81-133-209-64.in-addr.btopenworld.com) (Read error: Connection reset by peer)
2020-12-01 14:56:01 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:690b:f4aa:bb1f:cfec)
2020-12-01 14:57:03 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net)
2020-12-01 14:57:51 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2020-12-01 14:59:10 +0100ph88_(~ph88@2a02:8109:9e00:7e5c:51c4:aed6:17c7:3978)
2020-12-01 15:00:33 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-12-01 15:01:23 +0100dddddd(~dddddd@unaffiliated/dddddd)
2020-12-01 15:01:40 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-12-01 15:02:46 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas)
2020-12-01 15:02:52 +0100ph88^(~ph88@2a02:8109:9e00:7e5c:a401:1e2b:755a:f79) (Ping timeout: 244 seconds)
2020-12-01 15:03:52 +0100untwisted(~untwisted@84.39.117.57)
2020-12-01 15:04:36 +0100aurieeeh_(~aurieh@static.91.102.243.136.clients.your-server.de)
2020-12-01 15:05:10 +0100auri_-(~auri_@fsf/memeber/auri-)
2020-12-01 15:06:23 +0100auri_(~auri_@fsf/memeber/auri-) (Read error: Connection reset by peer)
2020-12-01 15:06:25 +0100aurieeeh(~aurieh@static.91.102.243.136.clients.your-server.de) (Read error: Connection reset by peer)
2020-12-01 15:06:58 +0100adm(~adm@117.208.18.165)
2020-12-01 15:08:20 +0100bitmagie(~Thunderbi@200116b806cac600156b24a29c060696.dip.versatel-1u1.de)
2020-12-01 15:10:09 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Remote host closed the connection)
2020-12-01 15:12:54 +0100z0(~z0@188.251.70.85)
2020-12-01 15:12:55 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2020-12-01 15:13:25 +0100 <lotuseater> siraben: thx for this gist to widen my knowledge. but damn, no Haskell (or this other awesome language) supported on leetcode. are you guys doing it in Rust?
2020-12-01 15:13:32 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
2020-12-01 15:14:08 +0100 <siraben> I haven't been running my solutions on leetcode, but I think I'll use Rust when I do
2020-12-01 15:15:39 +0100 <z0> is there a language extension that allows for naming collisions of functions with different types?
2020-12-01 15:16:08 +0100 <lotuseater> yeah that comes to Haskell closest in default. I recently also got into APL
2020-12-01 15:16:20 +0100massma(~user@dyn-160-39-62-152.dyn.columbia.edu) (Quit: rcirc on GNU Emacs 26.1)
2020-12-01 15:16:31 +0100 <z0> that would allow for unqualified imports for instance, and let the compiler disambiguate by tyoe inference
2020-12-01 15:16:45 +0100 <boxscape> z0 only if those functions are record fields, afaik
2020-12-01 15:16:59 +0100 <boxscape> Idris has overloading like that
2020-12-01 15:17:02 +0100 <geekosaur> z0, that's called type-directed name resolution and there's a long discussion on the wiki of why it's a bad idea
2020-12-01 15:17:04 +0100 <solonarv> or if you write a typeclass for them, I suppose
2020-12-01 15:17:14 +0100 <solonarv> but I don't reommend that
2020-12-01 15:17:30 +0100 <z0> thanks, i'll look into it
2020-12-01 15:18:08 +0100 <boxscape> hmm now I want to write a type class that makes it so I can replace every identifier in my program by the single method of that class
2020-12-01 15:18:41 +0100 <z0> is it less bad of an idea for record accessors?
2020-12-01 15:18:45 +0100hidedagger(~nate@unaffiliated/hidedagger)
2020-12-01 15:19:08 +0100 <siraben> I can't seem to define `tails` in terms of `foldl`, anyone up to the challenge?
2020-12-01 15:19:12 +0100 <geekosaur> not really, it's just more wanted and easier to avoid it giving the compiler way too much rope
2020-12-01 15:19:22 +0100 <siraben> `tails = foldr (\ a (x:xs) -> (a:x):x:xs) [[]]`
2020-12-01 15:19:30 +0100 <siraben> As `foldr` it's easy but not sure about `foldl`
2020-12-01 15:20:22 +0100hidedagger(~nate@unaffiliated/hidedagger) (Client Quit)
2020-12-01 15:20:37 +0100shad0w_(~Srain@160.202.37.72) (Ping timeout: 264 seconds)
2020-12-01 15:20:47 +0100bergey(~user@pool-74-108-99-127.nycmny.fios.verizon.net)
2020-12-01 15:21:32 +0100 <boxscape> siraben you can't make something that's exactly the same, semantically, right? Since with foldl it wouldn't work for infinite lists?
2020-12-01 15:21:32 +0100 <solonarv> step 1. write foldr in terms of foldl, step 2. substitute that into the above definition of tails
2020-12-01 15:21:35 +0100 <solonarv> ;)
2020-12-01 15:21:44 +0100 <solonarv> but ye,s boxscape is right
2020-12-01 15:21:45 +0100Franciman(~francesco@host-62-211-221-142.retail.telecomitalia.it) (Ping timeout: 240 seconds)
2020-12-01 15:21:47 +0100 <siraben> boxscape: assume lists are finite
2020-12-01 15:21:50 +0100 <siraben> solonarv: foldr cannot be written in terms of foldl
2020-12-01 15:22:16 +0100 <siraben> Oh, for infinite lists
2020-12-01 15:22:35 +0100 <siraben> it's not possible, for finite lists it is
2020-12-01 15:22:56 +0100 <dminuoso> Is there a channel to discuss AoC solutions at?
2020-12-01 15:23:12 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de)
2020-12-01 15:23:25 +0100shad0w_(~Srain@160.202.37.72)
2020-12-01 15:23:27 +0100 <solonarv> dminuoso: ##adventofcode, it seems
2020-12-01 15:23:31 +0100 <dminuoso> Haskell too?
2020-12-01 15:24:13 +0100 <solonarv> I see a bunch of nicks in there that I recognize from #haskell, so I'd assume as much
2020-12-01 15:24:37 +0100 <solonarv> I've certainly never heard anything to the tone of "take your Haskell elsewhere" from there in previous years
2020-12-01 15:26:49 +0100 <dminuoso> Alright cheers :)
2020-12-01 15:27:42 +0100Franciman(~francesco@host-212-171-88-43.pool212171.interbusiness.it)
2020-12-01 15:27:49 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-01 15:28:27 +0100 <tomsmeding> (in fact, yesterevening there was some discussion about haskell in that channel)
2020-12-01 15:28:48 +0100 <dminuoso> Oh I think I might have jumped the gun...
2020-12-01 15:28:52 +0100 <dminuoso> Today is not over. :<
2020-12-01 15:29:06 +0100 <tomsmeding> forgot part 2?
2020-12-01 15:29:15 +0100 <dminuoso> huh? nah
2020-12-01 15:29:16 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-12-01 15:29:23 +0100exarkunb`exarkun`
2020-12-01 15:29:30 +0100 <solonarv> I didn't solve today's task yet because I spent an hour waiting for pandoc to compile :p
2020-12-01 15:30:03 +0100 <dminuoso> Well no worries
2020-12-01 15:30:12 +0100 <dminuoso> apparently today wont make it to the leader board because of an outage
2020-12-01 15:30:31 +0100 <dminuoso> so I guess spoilers in ##adventofcode-spoilers are fair game already
2020-12-01 15:30:37 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 246 seconds)
2020-12-01 15:31:23 +0100 <solonarv> I don't care about the leaderboard anyawy, the puzzles come out at 06:00 in my timezone
2020-12-01 15:33:56 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 256 seconds)
2020-12-01 15:35:35 +0100fendor(~fendor@178.165.130.113.wireless.dyn.drei.com) (Remote host closed the connection)
2020-12-01 15:36:30 +0100bergey`(~user@107.181.19.30)
2020-12-01 15:37:19 +0100Dykam(Dykam@dykam.nl) (Quit: Dykam)
2020-12-01 15:37:32 +0100Dykam(Dykam@dykam.nl)
2020-12-01 15:37:42 +0100 <nf> solonarv: that should be motivation to get up early!
2020-12-01 15:38:56 +0100bergey(~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 240 seconds)
2020-12-01 15:39:30 +0100christo(~chris@81.96.113.213)
2020-12-01 15:39:44 +0100 <solonarv> it is, but not strong enough motivation to outweigh all the reasons to *not* get up that early ;)
2020-12-01 15:40:20 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-12-01 15:40:25 +0100adm(~adm@117.208.18.165) (Remote host closed the connection)
2020-12-01 15:41:06 +0100 <dminuoso> Or just dont go to bed.
2020-12-01 15:41:08 +0100 <merijn> solonarv: Start a personal leaderobard with people in your code? :p
2020-12-01 15:41:35 +0100 <merijn> solonarv: Pandoc compilation time sounds like an excellent excuse to work on advent of code :p
2020-12-01 15:42:07 +0100 <dminuoso> The “Copyright”, “License”, “Maintainer” and “Stability” fields should be obvious. An alternative spelling for the “License” field is accepted as “Licence” but the output will always prefer “License”.
2020-12-01 15:42:15 +0100 <dminuoso> Okay.. what does "obvious" mean exactly?
2020-12-01 15:42:26 +0100 <dminuoso> Put it whatever you think goes in there?
2020-12-01 15:42:39 +0100 <dminuoso> (This is for module level haddock)
2020-12-01 15:42:45 +0100ddellacosta(dd@gateway/vpn/mullvad/ddellacosta)
2020-12-01 15:43:56 +0100christo(~chris@81.96.113.213) (Ping timeout: 265 seconds)
2020-12-01 15:44:15 +0100 <dminuoso> It seems like it's just wild west.
2020-12-01 15:46:02 +0100 <solonarv> merijn: I decided to steal jle's framework this year and it has pandoc as a dependency!
2020-12-01 15:46:55 +0100darjeeling_(~darjeelin@115.215.41.204) (Quit: WeeChat 2.9)
2020-12-01 15:48:09 +0100darjeeling_(~darjeelin@115.215.41.204)
2020-12-01 15:48:25 +0100untwisted(~untwisted@84.39.117.57) (Remote host closed the connection)
2020-12-01 15:48:56 +0100 <z0> 4 am in my timezone. normal waking hour here is around 8
2020-12-01 15:49:37 +0100joaoh82(~joaoh82@157-131-134-210.dedicated.static.sonic.net) ()
2020-12-01 15:51:25 +0100 <merijn> solonarv: That'll teach you!
2020-12-01 15:52:10 +0100geekosaur(ac3a54de@172.58.84.222) (Remote host closed the connection)
2020-12-01 15:52:55 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2020-12-01 15:53:28 +0100 <solonarv> meh, at least I was able to spend that hour doing other things, instead of spending it futzing around with my half-baked framework
2020-12-01 15:54:20 +0100 <ph88_> I found this list of different types online https://en.wikipedia.org/wiki/Substructural_type_system#Different_substructural_type_systems does anyone know what the difference is between the types mentioned there and session types ?
2020-12-01 15:54:22 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-12-01 15:54:46 +0100christo(~chris@81.96.113.213)
2020-12-01 15:58:06 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
2020-12-01 16:00:33 +0100adm(~adm@117.208.18.165)
2020-12-01 16:01:29 +0100da39a3ee5e6b4b0d(~da39a3ee5@2403:6200:8876:9156:59b2:2700:3dd:eb69) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-01 16:02:51 +0100 <whataday> why haskell use so many constructs in type and value?
2020-12-01 16:03:28 +0100 <whataday> like how you define a json type to parse jason data
2020-12-01 16:03:43 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-12-01 16:03:56 +0100urek(~urek@2804:7f1:e10a:9644:28f0:3bb:caef:43b3)
2020-12-01 16:04:18 +0100 <ph88_> whataday, isn't like this with any static type programming language ??
2020-12-01 16:04:39 +0100hseg(~gesh@IGLD-84-228-238-34.inter.net.il)
2020-12-01 16:05:20 +0100 <whataday> I don't know other static languages
2020-12-01 16:05:23 +0100 <ph88_> i think even with dynamic type language you define structures for serializing into json
2020-12-01 16:05:35 +0100 <dminuoso> 16:03:29 whataday | like how you define a json type to parse jason data
2020-12-01 16:05:42 +0100z0(~z0@188.251.70.85) (Quit: leaving)
2020-12-01 16:05:54 +0100 <dminuoso> This is an idiosyncrasie of aeson you're probably referring to
2020-12-01 16:05:57 +0100 <hseg> code golf, round n: http://ix.io/2G9X. realized i could combine my set and map by just kicking out unneeded (k,v) pairs. still looks like it could be improved
2020-12-01 16:06:19 +0100 <dminuoso> There's no inherent need to have a separate type just to parse JSON with aeson.
2020-12-01 16:06:32 +0100 <dminuoso> Some library authors just fancy using typeclasses much.
2020-12-01 16:06:50 +0100 <ph88_> dmnwhat idiosyncrasie ?
2020-12-01 16:06:55 +0100 <whataday> I don't know aeson lib
2020-12-01 16:07:24 +0100 <tdammers> having an intermediate Value type, so that the parsing process is two stage: JSON source -> Value -> user type
2020-12-01 16:07:26 +0100 <whataday> I just saw someone use parsec to handle json data
2020-12-01 16:07:58 +0100 <ph88_> and what were the constructs you saw in type and value ?
2020-12-01 16:08:23 +0100 <merijn> hseg: eh, your combination of "head" + "IM.elems" is weird
2020-12-01 16:08:43 +0100 <dminuoso> whataday: But yes, in Haskell we rarely use dynamic structures. It's usually better to explictly conjure data types to model your problem domain.
2020-12-01 16:08:44 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
2020-12-01 16:08:46 +0100 <merijn> hseg: Like, why not "lookupMin :: IntMap a -> Maybe (Key, a)"?
2020-12-01 16:08:55 +0100 <tdammers> an alternative design would be to have something like class FromJSON a where { fromNull :: Maybe a, fromNumber :: Scientific -> Maybe a, ... }
2020-12-01 16:08:56 +0100 <dminuoso> That means you often create lots of data types, and I think it's a good thing
2020-12-01 16:09:02 +0100 <dminuoso> It keeps your code robust and documented.
2020-12-01 16:09:15 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-12-01 16:09:30 +0100 <dminuoso> tdammers: I fancy the waargonaut implementation.
2020-12-01 16:09:30 +0100 <hseg> ... as usual, my line of sight is sticky
2020-12-01 16:09:38 +0100 <hseg> missed its existence
2020-12-01 16:09:41 +0100 <tomjaguarpaw> I just got the dreaded <<loop>>. Luckily it only took my 5 mins to see that I'd done let x = ... x ... in an invalid way. How do people normally track those down?
2020-12-01 16:09:49 +0100darjeeling_(~darjeelin@115.215.41.204) (Ping timeout: 264 seconds)
2020-12-01 16:10:09 +0100 <Uniaika> tomjaguarpaw: git show on the last commit :P
2020-12-01 16:10:10 +0100 <dminuoso> tomjaguarpaw: +RTS -xc -RTS
2020-12-01 16:10:15 +0100 <merijn> hseg: pop could be made more efficient via alterF (but might not be worth it)
2020-12-01 16:10:31 +0100 <whataday> data JSON = Null| Number Number'| String String| Bool Bool| Undefined| Object [(String ,JSON)]| List [JSON] deriving (Show)
2020-12-01 16:11:05 +0100 <merijn> hseg: Also, are you *actually* code golfing or cleaning up? :p
2020-12-01 16:11:27 +0100 <hseg> :p
2020-12-01 16:11:32 +0100 <hseg> cleaning up
2020-12-01 16:11:50 +0100 <tdammers> whataday: Undefined?
2020-12-01 16:11:52 +0100 <merijn> hseg: Personally I'd move the 'go' helper into a where, because I dislike let
2020-12-01 16:12:19 +0100 <hseg> but have been doing so several times in pursuit of the Most Elegant Form(TM) over the past couple of weeks, as new insights strike me
2020-12-01 16:12:34 +0100 <dminuoso> tdammers: Probably Null
2020-12-01 16:12:40 +0100 <dminuoso> Since this is JSON
2020-12-01 16:12:44 +0100 <tdammers> dminuoso: there's a Null constructor too
2020-12-01 16:12:47 +0100 <whataday> I don't know it yet, copy from someone
2020-12-01 16:12:47 +0100 <dminuoso> Oh
2020-12-01 16:12:50 +0100 <hseg> yeah, but then you get increased vertical size. matter of taste
2020-12-01 16:13:07 +0100 <tdammers> JS distinguishes null and undefined, but JSON cannot represent the latter
2020-12-01 16:13:08 +0100 <merijn> hseg: More scannable :p
2020-12-01 16:13:10 +0100u0_a298(~user@47.206.148.226)
2020-12-01 16:13:17 +0100 <hseg> :)
2020-12-01 16:13:33 +0100 <whataday> what is String String in there?
2020-12-01 16:13:40 +0100 <merijn> hseg: I like empty lines around bindings too for the same reason
2020-12-01 16:14:02 +0100 <tdammers> whataday: it's a term constructor named String that takes one argument of type String
2020-12-01 16:14:05 +0100 <hpc> the first String is value-level, the name of the data constructor
2020-12-01 16:14:05 +0100 <whataday> first String is a data constructor and second is a defined type?
2020-12-01 16:14:12 +0100 <hpc> the second String is type-level, the parameter it takes
2020-12-01 16:14:15 +0100 <hpc> String :: String -> JSON
2020-12-01 16:14:30 +0100 <whataday> ok
2020-12-01 16:14:45 +0100 <tdammers> it's important to remember that term-level and type-level have separate namespaces, so we can have a type named String and a term-level constructor named String, and the two won't clash
2020-12-01 16:14:53 +0100 <whataday> reminder me Just Int
2020-12-01 16:15:01 +0100 <hpc> (that mixing of levels always bothers me about ADT syntax)
2020-12-01 16:15:10 +0100 <tdammers> GADT syntax is a bit clearer that way
2020-12-01 16:15:24 +0100 <Vulfe> that does produce some code that seems needlessly hard to read
2020-12-01 16:15:39 +0100 <boxscape> and 270 will warn about punning if people enable it
2020-12-01 16:15:44 +0100 <dminuoso> whataday: The confusing part might be the dense syntax haskell has. We could imagine the data type be instead declared as: https://gist.github.com/dminuoso/cbe72c1dee8712d0472cfcdd91b87b02
2020-12-01 16:15:45 +0100 <boxscape> ghc-proposal 279
2020-12-01 16:15:47 +0100 <boxscape> uh
2020-12-01 16:15:48 +0100 <boxscape> 270
2020-12-01 16:16:01 +0100 <dminuoso> whataday: Does this fictional syntax make more sense, perhaps?
2020-12-01 16:16:08 +0100 <boxscape> (String being both a type and a value constructor being an example of punning)
2020-12-01 16:16:17 +0100 <dminuoso> On the left hand of each :: you see a data constructor being declared, and on the right hand side you see its type
2020-12-01 16:16:23 +0100 <whataday> yeah
2020-12-01 16:16:25 +0100tdammersgiggles a bit at "fictional"
2020-12-01 16:16:36 +0100 <dminuoso> ;)
2020-12-01 16:16:52 +0100 <maerwald> is there a trick to create a unit test via an existing property test function, without touching the generator? E.g.: supply the inputs manually and then set withMaxSuccess to 1?
2020-12-01 16:17:15 +0100 <whataday> Just Int is not a value neither a type, what we should call it?
2020-12-01 16:17:23 +0100 <dminuoso> Nonsense! :p
2020-12-01 16:17:33 +0100 <dminuoso> Just 1 :: Maybe Int
2020-12-01 16:17:46 +0100 <dminuoso> Just is a data constructor, Int is a type constructor
2020-12-01 16:17:46 +0100gagbo(~gagbo@unaffiliated/gagbo)
2020-12-01 16:17:55 +0100 <tdammers> @let data Foo = Int -- now Int is a data constructor too
2020-12-01 16:17:58 +0100 <lambdabot> Defined.
2020-12-01 16:18:04 +0100 <tdammers> Just Int
2020-12-01 16:18:05 +0100 <whataday> but you see String String
2020-12-01 16:18:05 +0100 <dminuoso> yeah.. not helpful..
2020-12-01 16:18:10 +0100 <dminuoso> whataday: Look at my gist!
2020-12-01 16:18:14 +0100 <dminuoso> whataday: Does my gist make sense? :)
2020-12-01 16:18:16 +0100 <merijn> tdammers: That's not very helpful, though >.>
2020-12-01 16:18:25 +0100 <tdammers> merijn: yeah, I just realized that myself XD
2020-12-01 16:18:40 +0100 <dminuoso> whataday: The data declaration is just very sense. The first "String" is the equivalent of MkString. I just renamed it to MkString for your sanity.
2020-12-01 16:18:49 +0100 <dminuoso> The second String refers to an existing type constructor
2020-12-01 16:19:56 +0100dhil(~dhil@195.213.192.34) (Ping timeout: 240 seconds)
2020-12-01 16:20:01 +0100 <whataday> so Just Int, Just could be a new value constructor, and Int could be a defined type just like the second String jn String String
2020-12-01 16:20:06 +0100shad0w_(~Srain@160.202.37.72) (Remote host closed the connection)
2020-12-01 16:20:07 +0100 <merijn> Ugh...I should probably migrate my CI to Github Actions, but I don't wanna >.>
2020-12-01 16:20:27 +0100 <dminuoso> whataday: So "Just Int" on its own is misleading
2020-12-01 16:20:51 +0100 <dminuoso> If you wrote `data F = Just Int` then that declares a single type constructor named Just that takes a single parameter of type Int.
2020-12-01 16:21:25 +0100 <dminuoso> It admittedly is confusing that we juxtapose a value-level thing right next to a type-level thing
2020-12-01 16:22:38 +0100 <hseg> ok, so with the recommended changes now have http://ix.io/2Ga6
2020-12-01 16:22:46 +0100 <byorgey> this is one reason why GADT syntax is far superior
2020-12-01 16:23:23 +0100 <gagbo> Hello, I'm currently trying to put my xmonad config in modules to toy with cabal/stack. Trying to move the layoutHook out of xmonad.hs, I had to put a type annotation on it. Is it possible to write a partial type constraint and get the compiler to wait for call site before resolving it ? I have to put the concrete type to get it to compile instead of a simpler pattern, see
2020-12-01 16:23:25 +0100 <gagbo> https://paste.centos.org/view/1e10bea1
2020-12-01 16:23:33 +0100melkorGuest62909
2020-12-01 16:23:45 +0100 <boxscape> Did they write value constructors and type constructors both uppercase in the language that first introduced non-GADT syntax?
2020-12-01 16:24:01 +0100 <dminuoso> gagbo: You can use _
2020-12-01 16:24:07 +0100 <boxscape> I imagine if you don't do that (and don't do both lowercase) it's at least slightly less confusing
2020-12-01 16:24:28 +0100 <tomjaguarpaw> dminuoso: -xc sounds good, thanks
2020-12-01 16:24:29 +0100 <dminuoso> Though that might not behave as nicely here
2020-12-01 16:24:56 +0100 <byorgey> gagbo: the problem is, that type with 'l' promises that your definition will work for ANY layout, which is not true.
2020-12-01 16:25:15 +0100 <gagbo> dminuoso: thanks
2020-12-01 16:25:50 +0100 <gagbo> byorgey: yeah, I understood that and I did not want to promise more than necessary but I was getting a little stuck :(
2020-12-01 16:25:54 +0100 <dminuoso> Also, I have observed that GHC will not infer the same type with _ as it would without a type signature
2020-12-01 16:25:55 +0100 <byorgey> gagbo: you should be able to do what dminuoso suggests. Add {-# LANGUAGE PartialTypeSignatures #-} to the top of Layouts.hs and then write myLayouts :: _
2020-12-01 16:25:56 +0100 <dminuoso> Strangely
2020-12-01 16:26:05 +0100 <dminuoso> Which might be a GHC bug
2020-12-01 16:26:16 +0100 <gagbo> I really just wanted to provide a single implementation for the type
2020-12-01 16:26:22 +0100 <byorgey> gagbo: actually you should be able to just omit the type signature altogether --- does that work?
2020-12-01 16:27:18 +0100 <byorgey> gagbo: you said "I had to put a type annotation on it" --- why? What went wrong without one?
2020-12-01 16:27:23 +0100 <gagbo> it doesn't, the error becomes about the `Window` type at the end of the signature : it gets inferred as simply `a0` and ghc can't find the correct Eq instance
2020-12-01 16:27:46 +0100 <gagbo> I'll recompile and paste again to show
2020-12-01 16:27:55 +0100 <dminuoso> gagbo: Enable NoMonomorphismRestriction temporarily
2020-12-01 16:28:13 +0100myNameJeff(~myNameJef@94.6.147.197)
2020-12-01 16:28:23 +0100 <byorgey> Oh, I see. So yes, it might work to say myLayouts :: ModifiedLayout AvoidStruts _ Window (with PartialTypeSignatures enabled)
2020-12-01 16:28:23 +0100 <dminuoso> I found that extension to be a blessing when dealing with XMonad
2020-12-01 16:28:24 +0100darjeeling_(~darjeelin@115.215.41.204)
2020-12-01 16:28:30 +0100myNameJeff(~myNameJef@94.6.147.197) ()
2020-12-01 16:28:38 +0100 <dminuoso> byorgey: Mmm that could cause constraint errors
2020-12-01 16:28:43 +0100 <dminuoso> Which is wwhy I said "that might not behave as nicely"
2020-12-01 16:28:48 +0100 <gagbo> https://paste.centos.org/view/b690d3ed
2020-12-01 16:28:49 +0100 <dminuoso> It's probably better to.. uh move it into a nested binding
2020-12-01 16:29:20 +0100bitmagie(~Thunderbi@200116b806cac600156b24a29c060696.dip.versatel-1u1.de) (Quit: bitmagie)
2020-12-01 16:29:26 +0100 <byorgey> I've definitely gotten stuff like this to work, but I agree it can be a bit fiddly.
2020-12-01 16:29:47 +0100 <dminuoso> wish you could do something like
2020-12-01 16:29:55 +0100 <dminuoso> Or maybe you can!
2020-12-01 16:30:08 +0100 <gagbo> dminuoso: it's definitely the easier thing, I'm also toying with XMonad to discover hs, so I was trying to understand what's wrong
2020-12-01 16:30:10 +0100 <byorgey> gagbo: can you try my suggestion with ModifiedLayout AvoidStruts _ Window and let us know what that does?
2020-12-01 16:30:37 +0100 <dminuoso> % g :: (_ ~ f) => f Int; g = [1]
2020-12-01 16:30:37 +0100 <yahb> dminuoso: ; <interactive>:113:7: error:; Wildcard `_' not allowed in a constraint; except as the last top-level constraint of a type signature; e.g f :: (Eq a, _) => blah; in the type signature for `g'
2020-12-01 16:30:42 +0100 <dminuoso> Ahh what a shame
2020-12-01 16:30:52 +0100 <dminuoso> That would have been cool. :>
2020-12-01 16:31:06 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Remote host closed the connection)
2020-12-01 16:31:08 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-01 16:31:34 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-12-01 16:31:44 +0100 <gagbo> byorgey: it compiles as well. "_", "_ Window", and "ModifiedLayout AvoidStruts _ Window" all compile
2020-12-01 16:32:04 +0100 <byorgey> wait, just _ by itself compiles!? weird
2020-12-01 16:32:32 +0100 <byorgey> I am surprised that myLayouts :: _ compiles when leaving off the type signature does not
2020-12-01 16:32:34 +0100 <boxscape> % g :: _ :~: f -> f Int; g Refl = [1]
2020-12-01 16:32:34 +0100 <yahb> boxscape: ; <interactive>:114:6: error:; * Found type wildcard `_' standing for `_ :: * -> *'; Where: `_' is a rigid type variable bound by; the inferred type of g :: (_ :~: f) -> f Int; at <interactive>:114:24-35; To use the inferred type, enable PartialTypeSignatures; * In the first argument of `(:~:)', namely `_'; In the type `_ :~: f -> f Int'; In the
2020-12-01 16:32:45 +0100 <boxscape> % :set -XPartialTypeSignatures
2020-12-01 16:32:45 +0100 <yahb> boxscape:
2020-12-01 16:32:46 +0100 <boxscape> % g :: _ :~: f -> f Int; g Refl = [1]
2020-12-01 16:32:47 +0100 <yahb> boxscape: ; <interactive>:116:33: error:; * Couldn't match type `_' with `[]'; `_' is untouchable inside the constraints: f ~ _ bound by a pattern with constructor: Refl :: forall k (a :: k). a :~: a, in an equation for `g' at <interactive>:116:26-29; `_' is a rigid type variable bound by; the inferred type of g :: (_ :~: f) -> f Int; at <interactive>:116:24-35; Possible fix
2020-12-01 16:32:51 +0100 <dminuoso> byorgey: I've had the opposite happen recently, where GHC inferred more monomorphized with _ for inexplicable reasons leading to compilation errors
2020-12-01 16:32:55 +0100dhil(~dhil@78.156.97.38)
2020-12-01 16:33:01 +0100 <dminuoso> So `f :: _; f = ...` didnt type check
2020-12-01 16:33:05 +0100 <dminuoso> but `f = ...` did
2020-12-01 16:33:15 +0100 <byorgey> yeah, I don't quite understand the semantics of wildcards especially when constraints are involved.
2020-12-01 16:33:28 +0100 <merijn> byorgey: Does anyone? :p
2020-12-01 16:33:28 +0100 <dminuoso> interesting, perhaps wildcards were the same reason
2020-12-01 16:33:35 +0100Jonkimi727406120(~Jonkimi@115.44.7.41)
2020-12-01 16:33:58 +0100 <byorgey> merijn: possibly Richard Eisenberg does, but no one else
2020-12-01 16:35:17 +0100 <dminuoso> I have the biotech connections, so if anyone wants to participate in closing him..
2020-12-01 16:35:20 +0100 <gagbo> byorgey: I'm really puzzled as well
2020-12-01 16:35:24 +0100 <dminuoso> *cloning!
2020-12-01 16:36:25 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 256 seconds)
2020-12-01 16:36:29 +0100ClaudiusMaximus(~claude@198.123.199.146.dyn.plus.net)
2020-12-01 16:36:39 +0100ClaudiusMaximus(~claude@198.123.199.146.dyn.plus.net) (Changing host)
2020-12-01 16:36:39 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus)
2020-12-01 16:37:03 +0100 <gagbo> Thanks for the help in any case :D
2020-12-01 16:37:33 +0100 <byorgey> sure, glad it works =)
2020-12-01 16:38:09 +0100 <boxscape> % g :: [] :~: f -> f Int; g Refl = [1] -- at least this works
2020-12-01 16:38:09 +0100 <yahb> boxscape:
2020-12-01 16:38:21 +0100 <dminuoso> gagbo: Ill file a possibly related bug report in a few minutes if you'll stick around
2020-12-01 16:39:23 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2020-12-01 16:39:50 +0100Wuzzy(~Wuzzy@p549c9976.dip0.t-ipconnect.de)
2020-12-01 16:40:20 +0100ambidextrose(~fut-learn@mobile-166-170-50-182.mycingular.net)
2020-12-01 16:40:58 +0100threadlock(~threadloc@s91904426.blix.com)
2020-12-01 16:41:14 +0100thebnq(~bnq@herrokitty.com)
2020-12-01 16:42:32 +0100Ariakenom(~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se) (Read error: Connection reset by peer)
2020-12-01 16:43:05 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de)
2020-12-01 16:43:32 +0100 <gagbo> I'll check, but I'm 99% sure I won't understand
2020-12-01 16:43:36 +0100Jonkimi727406120(~Jonkimi@115.44.7.41) (Ping timeout: 240 seconds)
2020-12-01 16:44:16 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-01 16:44:56 +0100neiluj(~jco@unaffiliated/neiluj) (Ping timeout: 240 seconds)
2020-12-01 16:45:40 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-01 16:46:04 +0100neiluj(~jco@91-167-203-101.subs.proxad.net)
2020-12-01 16:46:32 +0100codeAlways(uid272474@gateway/web/irccloud.com/x-igjfxraslkgfeqlb)
2020-12-01 16:46:49 +0100 <dminuoso> gagbo: https://gitlab.haskell.org/ghc/ghc/-/issues/19013
2020-12-01 16:47:53 +0100ericsagnes(~ericsagne@2405:6580:0:5100:e153:5d61:7541:557d) (Ping timeout: 272 seconds)
2020-12-01 16:48:14 +0100s00pcan(~chris@075-133-056-178.res.spectrum.com) (Read error: Connection reset by peer)
2020-12-01 16:48:21 +0100 <dminuoso> ^- Also byorgey in case you're curious
2020-12-01 16:48:29 +0100fen(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
2020-12-01 16:48:41 +0100s00pcan(~chris@075-133-056-178.res.spectrum.com)
2020-12-01 16:48:55 +0100fen(5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Client Quit)
2020-12-01 16:50:08 +0100 <boxscape> dminuoso fwiw it seems like that ticket would be easier to read if you just copied the content of Main.hs into the ticket body
2020-12-01 16:50:22 +0100 <dminuoso> Mmm. I guess.
2020-12-01 16:51:42 +0100 <dminuoso> boxscape: Does it look better now?
2020-12-01 16:51:47 +0100 <boxscape> yes
2020-12-01 16:52:04 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60)
2020-12-01 16:52:34 +0100knupfer(~Thunderbi@mue-88-130-61-228.dsl.tropolys.de)
2020-12-01 16:52:41 +0100 <boxscape> dminuoso you also wrote tails instead of fails :)
2020-12-01 16:54:07 +0100shatriff(~vitaliish@176.52.219.10)
2020-12-01 16:54:33 +0100vicfred_(~vicfred@unaffiliated/vicfred)
2020-12-01 16:54:33 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-01 16:54:59 +0100vicfred(~vicfred@unaffiliated/vicfred) (Read error: Connection reset by peer)
2020-12-01 16:55:16 +0100vicfred_(~vicfred@unaffiliated/vicfred) (Remote host closed the connection)
2020-12-01 16:55:18 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-01 16:56:05 +0100Tsumo(~sven@2607:fea8:4f00:5080:d53c:9e7b:870c:ccec)
2020-12-01 16:56:49 +0100Tsumo(~sven@2607:fea8:4f00:5080:d53c:9e7b:870c:ccec) ()
2020-12-01 16:59:24 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 16:59:24 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-01 16:59:47 +0100u0_a298(~user@47.206.148.226)
2020-12-01 17:00:10 +0100ericsagnes(~ericsagne@2405:6580:0:5100:eb79:9e59:1d53:470c)
2020-12-01 17:01:18 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Ping timeout: 272 seconds)
2020-12-01 17:03:31 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-01 17:03:31 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 17:03:52 +0100u0_a298(~user@47.206.148.226)
2020-12-01 17:05:58 +0100 <gagbo> I see an encoded ' in the issue instead of ' (g :: Lens&#39; String Char)
2020-12-01 17:08:00 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 17:08:18 +0100u0_a298(~user@47.206.148.226)
2020-12-01 17:08:36 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-12-01 17:08:48 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-01 17:08:52 +0100sondr3(~sondr3@cm-84.211.56.132.getinternet.no) (Quit: Leaving)
2020-12-01 17:10:03 +0100urek(~urek@2804:7f1:e10a:9644:28f0:3bb:caef:43b3) (Ping timeout: 272 seconds)
2020-12-01 17:10:07 +0100urek__(~urek@2804:7f1:e10a:9644:61eb:9098:9107:ba2c)
2020-12-01 17:12:42 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-12-01 17:12:48 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Client Quit)
2020-12-01 17:13:11 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
2020-12-01 17:14:52 +0100adm(~adm@117.208.18.165) (Ping timeout: 260 seconds)
2020-12-01 17:15:59 +0100mapperr(~mapperr@vmi389916.contaboserver.net) (Remote host closed the connection)
2020-12-01 17:16:59 +0100mapperr(~mapperr@vmi389916.contaboserver.net)
2020-12-01 17:18:46 +0100Mathmoose(~mathias@31-208-78-204.cust.bredband2.com) (Ping timeout: 256 seconds)
2020-12-01 17:20:42 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2020-12-01 17:21:23 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-12-01 17:22:04 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-12-01 17:22:06 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
2020-12-01 17:23:25 +0100funkatronixxx(~funkatron@2001:981:f73:1:b048:68d2:a9f5:c605) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2020-12-01 17:24:44 +0100knupfer(~Thunderbi@mue-88-130-61-228.dsl.tropolys.de) (Ping timeout: 272 seconds)
2020-12-01 17:25:39 +0100nados(~dan@69-165-210-185.cable.teksavvy.com)
2020-12-01 17:26:56 +0100Feuermagier_(~Feuermagi@213.178.26.41)
2020-12-01 17:27:26 +0100vicfred(~vicfred@unaffiliated/vicfred) (Quit: Leaving)
2020-12-01 17:28:20 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Ping timeout: 265 seconds)
2020-12-01 17:28:45 +0100gagbo(~gagbo@unaffiliated/gagbo) (Quit: WeeChat 2.9)
2020-12-01 17:28:55 +0100jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2020-12-01 17:29:08 +0100Feuermagier(~Feuermagi@213.178.26.41) (Ping timeout: 260 seconds)
2020-12-01 17:29:53 +0100 <glguy> We had a good first day turn-out for AoC on the leaderboard I advertise here. 71 people have started. If you're the 72nd person solving the problems in Haskell you might join 43100-84040706
2020-12-01 17:30:07 +0100vicfred(~vicfred@unaffiliated/vicfred)
2020-12-01 17:30:11 +0100 https://www.haskell.org | https://wiki.haskell.org/IRC_channel | Paste code/errors: https://gist.github.com/ | Logs: http://tunes.org/~nef/logs/haskell/?C=M;O=D | https://www.reddit.com/r/haskell | Admin: #haskell-ops | Offtopic: #haskell-offtopic | https://downloads.haskell.org | Survey 2020: https://haskellweekly.news/survey/2020.html | AoC 43100-84040706
2020-12-01 17:30:15 +0100christo(~chris@81.96.113.213)
2020-12-01 17:31:00 +0100fendor(~fendor@178.165.130.113.wireless.dyn.drei.com)
2020-12-01 17:32:49 +0100 <boxscape> is the leaderboard unsorted at the moment?
2020-12-01 17:33:08 +0100 <boxscape> I would've expected the color of the star to line up with the rank
2020-12-01 17:33:29 +0100 <glguy> boxscape, pick a different ordering like "stars"
2020-12-01 17:33:38 +0100alp_(~alp@2a01:e0a:58b:4920:3ce6:db0:87ea:498) (Ping timeout: 264 seconds)
2020-12-01 17:33:40 +0100adm(~adm@117.230.143.4)
2020-12-01 17:33:40 +0100 <boxscape> ohh, thanks
2020-12-01 17:33:46 +0100 <merijn> boxscape: It's unranked, because first puzzle stars don't count
2020-12-01 17:33:51 +0100 <boxscape> I see
2020-12-01 17:33:55 +0100 <merijn> Due to an outage
2020-12-01 17:34:26 +0100 <merijn> glguy: 72nd? Did you make a new one?
2020-12-01 17:34:55 +0100 <merijn> Or did you mean the other people didn't solve them yet
2020-12-01 17:35:15 +0100 <glguy> 71 people had a star in 2020 on the board when I wrote that
2020-12-01 17:35:28 +0100 <Sose> 74 with atleast 1 star now
2020-12-01 17:35:28 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-01 17:35:29 +0100ShalokShalom(b9110d05@gateway/web/cgi-irc/kiwiirc.com/ip.185.17.13.5)
2020-12-01 17:36:01 +0100 <merijn> Yeah, I just realised you weren't talking about 72 people on the board, just 71 who completed things
2020-12-01 17:36:03 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-01 17:36:12 +0100ShalokShalom(b9110d05@gateway/web/cgi-irc/kiwiirc.com/ip.185.17.13.5) ()
2020-12-01 17:37:45 +0100 <tomsmeding> maerwald: someone on haskell-cafe complained that the ghcup installation script (not the ghcup binary itself) tries to install lots of things on the user, even if they want just e.g. HLS. https://mail.haskell.org/pipermail/haskell-cafe/2020-December/133052.html
2020-12-01 17:38:41 +0100 <tomsmeding> just a heads-up though you probably already saw that; in my opinion the installation script shouldn't assume the user wants to install any particular thing always, but maybe that was copied from rustup?
2020-12-01 17:38:43 +0100adm(~adm@117.230.143.4) (Read error: Connection reset by peer)
2020-12-01 17:38:59 +0100 <maerwald> should be an easy fix to make everything interactive
2020-12-01 17:39:17 +0100adm(~adm@117.230.143.4)
2020-12-01 17:39:18 +0100 <maerwald> not surewhy they use the mailing list to request features
2020-12-01 17:39:52 +0100thebnq(~bnq@herrokitty.com) (Ping timeout: 260 seconds)
2020-12-01 17:40:05 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-12-01 17:40:17 +0100toorevitimirp(~tooreviti@117.182.183.16) (Remote host closed the connection)
2020-12-01 17:40:37 +0100 <tomsmeding> heh, it wasn't a feature request; that thread was about "imagine you could dream up a haskell ide, what would you want" and people started talking about the existing stuff
2020-12-01 17:40:46 +0100thebnq(~bnq@herrokitty.com)
2020-12-01 17:40:48 +0100jlamothe(~jlamothe@198.251.55.207) (Remote host closed the connection)
2020-12-01 17:41:01 +0100 <tomsmeding> Sven responded to another email saying that you can "just use ghcup", which is true except for the installation script, apparently
2020-12-01 17:42:05 +0100 <maerwald> should be easy enough for them to provide a PR I guess
2020-12-01 17:42:09 +0100jess|(jess@freenode/staff/jess)
2020-12-01 17:42:10 +0100 <solonarv> I finally gave up on using jle's framework for AOC and just patched up mine from last year :/
2020-12-01 17:42:30 +0100jess|jess
2020-12-01 17:42:59 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-12-01 17:45:34 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 17:46:29 +0100u0_a298(~user@47.206.148.226)
2020-12-01 17:46:50 +0100boxscape(54a35f37@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.95.55) (Quit: Connection closed)
2020-12-01 17:47:10 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-rqemnoiqazmaxvua)
2020-12-01 17:49:19 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:690b:f4aa:bb1f:cfec) (Remote host closed the connection)
2020-12-01 17:49:19 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 17:49:23 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2020-12-01 17:49:37 +0100u0_a298(~user@47.206.148.226)
2020-12-01 17:50:34 +0100adm_(~adm@117.230.143.4)
2020-12-01 17:51:05 +0100hseg(~gesh@IGLD-84-228-238-34.inter.net.il) (Ping timeout: 240 seconds)
2020-12-01 17:51:09 +0100fendor_(~fendor@178.165.131.152.wireless.dyn.drei.com)
2020-12-01 17:51:56 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
2020-12-01 17:52:25 +0100adm(~adm@117.230.143.4) (Ping timeout: 240 seconds)
2020-12-01 17:52:47 +0100 <tomsmeding> dminuoso: there's a "&#39;" instead of a ' in the issue you just posted (#19013), just FYI :p
2020-12-01 17:52:49 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-12-01 17:53:16 +0100fendor(~fendor@178.165.130.113.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
2020-12-01 17:53:32 +0100 <dminuoso> tomsmeding: I hate terminals.
2020-12-01 17:53:34 +0100 <dminuoso> THanks
2020-12-01 17:53:54 +0100tomsmedingisn't sure how a html escape appearing in a code block is due to terminals somehow
2020-12-01 17:53:55 +0100 <dminuoso> Dunno why my terminal emulator even copies these escape sequences..
2020-12-01 17:54:10 +0100tomsmedinggets increasingly confused and scared
2020-12-01 17:54:11 +0100 <dminuoso> Or actually, it was copy/paste from emacs
2020-12-01 17:54:18 +0100 <dminuoso> Damn I have no clue.
2020-12-01 17:54:22 +0100 <dminuoso> Or maybe it was gitlab?
2020-12-01 17:54:29 +0100 <tomsmeding> ah emacs, that explains things
2020-12-01 17:54:33 +0100 <dminuoso> shush
2020-12-01 17:54:37 +0100 <tomsmeding> /s :p
2020-12-01 17:54:54 +0100 <dminuoso> You're just jealous I can run my window manager *inside* my editor
2020-12-01 17:55:01 +0100 <monochrom> haha
2020-12-01 17:55:28 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
2020-12-01 17:56:01 +0100 <tomsmeding> (the error log below the code snippet has the same html escape issue btw dminuoso)
2020-12-01 17:56:05 +0100tomboy64(~tomboy64@gateway/tor-sasl/tomboy64)
2020-12-01 17:56:35 +0100funkatronixxx(~funkatron@2001:981:f73:1:b048:68d2:a9f5:c605)
2020-12-01 17:56:51 +0100 <tomsmeding> even the non-ascii characters correctly, just ' was problematic it seems?
2020-12-01 17:57:24 +0100 <dminuoso> No these are ansi escape sequences for colors
2020-12-01 17:57:33 +0100conal(~conal@64.71.133.70)
2020-12-01 17:57:36 +0100 <dminuoso> Clearly the solution is to add a terminal emulator ontop of the gitlab issue viewer.
2020-12-01 17:57:46 +0100funkatronixxx(~funkatron@2001:981:f73:1:b048:68d2:a9f5:c605) (Client Quit)
2020-12-01 17:58:10 +0100 <tomsmeding> &#39; is not an ansi escape sequence
2020-12-01 17:58:25 +0100 <tomsmeding> \e[39m could've been
2020-12-01 17:58:32 +0100Feuermagier(~Feuermagi@213.178.26.41)
2020-12-01 17:58:37 +0100jmchael(~Chi1thang@87.112.60.168)
2020-12-01 17:58:48 +0100 <dminuoso> Well, remember I pasted this into the quirky mess of a gitlab editor.
2020-12-01 17:59:01 +0100 <tomsmeding> we shall blame gitlab
2020-12-01 17:59:59 +0100geekosaur(ac3a3b15@172.58.59.21)
2020-12-01 18:00:28 +0100 <dminuoso> Mmm
2020-12-01 18:00:30 +0100 <dminuoso> This makes type inference for inner bindings fragile;
2020-12-01 18:01:12 +0100 <dminuoso> Am I tripping into this? https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/jfp-outsidein.pdf
2020-12-01 18:01:50 +0100 <dminuoso> Mmm no MonoLocalBinds makes no difference
2020-12-01 18:01:59 +0100 <dminuoso> "fragile" is a strange term here
2020-12-01 18:03:15 +0100Sose(~sose@2a01:4f9:c010:e5da::1) (Ping timeout: 272 seconds)
2020-12-01 18:03:26 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-01 18:03:47 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl)
2020-12-01 18:05:08 +0100graf_blutwurst(~user@2001:171b:226e:adc0:8cf1:fdba:8ff:47f5) (Remote host closed the connection)
2020-12-01 18:05:51 +0100conal(~conal@64.71.133.70)
2020-12-01 18:06:41 +0100ubert(~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Quit: ubert)
2020-12-01 18:08:45 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 18:08:49 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-01 18:09:14 +0100u0_a298(~user@47.206.148.226)
2020-12-01 18:11:28 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-12-01 18:11:29 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 18:11:55 +0100u0_a298(~user@47.206.148.226)
2020-12-01 18:12:45 +0100hseg(~gesh@IGLD-84-228-238-34.inter.net.il)
2020-12-01 18:15:22 +0100cheater1(~user@unaffiliated/cheater)
2020-12-01 18:15:35 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 256 seconds)
2020-12-01 18:15:37 +0100cheater1cheater
2020-12-01 18:19:25 +0100Feuermagier_(~Feuermagi@213.178.26.41) (Quit: Leaving)
2020-12-01 18:20:19 +0100shinobi_(~shinobi@c-24-147-48-162.hsd1.ma.comcast.net)
2020-12-01 18:21:03 +0100adm_(~adm@117.230.143.4) (Remote host closed the connection)
2020-12-01 18:21:04 +0100jonatanb(~jonatanb@83.24.220.252.ipv4.supernova.orange.pl) (Read error: Connection reset by peer)
2020-12-01 18:21:13 +0100Ariakenom_(~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se) (Ping timeout: 264 seconds)
2020-12-01 18:21:44 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-01 18:21:48 +0100adm(~adm@117.230.143.4)
2020-12-01 18:23:26 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-12-01 18:23:43 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
2020-12-01 18:23:59 +0100Boomerang_(~Boomerang@xd520f68c.cust.hiper.dk)
2020-12-01 18:25:55 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-01 18:25:56 +0100adm(~adm@117.230.143.4) (Ping timeout: 240 seconds)
2020-12-01 18:26:38 +0100Spiff(~quassel@102.160.27.107) (Ping timeout: 260 seconds)
2020-12-01 18:26:42 +0100Boomerang(~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 256 seconds)
2020-12-01 18:27:18 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2020-12-01 18:27:27 +0100Spiff(~quassel@102.160.27.107)
2020-12-01 18:27:58 +0100 <shinobi_> So, I'm reading "Learn you a Haskell" online and find it really good at filling in some FP conceptual gaps coming from Scala. I just read the quicksort implementation and while I think it's awesome, it made me wonder about algorithm complexity. Imperative languages make big O easy to see, do functional programs hide complexity and performance issues? Or must you just read the code more closely do determine order of complexity? I'm
2020-12-01 18:27:58 +0100 <shinobi_> thinking specifically of comprehensions, they seem to pack a lot into a very little amount of code.
2020-12-01 18:28:23 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-01 18:29:06 +0100 <byorgey> glguy: I definitely won't be staying up until 11pm to do them as soon as they come out this year, but I do hope to solve all of them =)
2020-12-01 18:29:49 +0100 <byorgey> if only I lived in the Pacific time zone.
2020-12-01 18:30:07 +0100 <glguy> byorgey: it's the best time zone :nod:
2020-12-01 18:30:43 +0100 <glguy> It's probably healthier to live in a time zone that discourages racing the problems
2020-12-01 18:31:44 +0100howdoi(uid224@gateway/web/irccloud.com/x-ynxizjcdcvtgzlrl)
2020-12-01 18:31:51 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2020-12-01 18:32:21 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-01 18:32:56 +0100Boomerang_(~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 256 seconds)
2020-12-01 18:34:35 +0100funkatronixxx(~funkatron@2001:981:f73:1:b048:68d2:a9f5:c605)
2020-12-01 18:34:51 +0100bandali(znc@fsf/interns/bandali) (Quit: ZNC - https://znc.in)
2020-12-01 18:35:09 +0100 <dolio> What about imperative algorithms makes it easy to figure out complexity?
2020-12-01 18:35:34 +0100funkatronixxx(~funkatron@2001:981:f73:1:b048:68d2:a9f5:c605) (Client Quit)
2020-12-01 18:35:37 +0100hseg(~gesh@IGLD-84-228-238-34.inter.net.il) (Ping timeout: 264 seconds)
2020-12-01 18:36:26 +0100bandali(znc@fsf/interns/bandali)
2020-12-01 18:36:33 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-01 18:36:34 +0100 <ezzieyguywuf> why is `cabal run exe:MyExe` rebuilding everything if ghcid already built it?
2020-12-01 18:36:48 +0100conal(~conal@64.71.133.70)
2020-12-01 18:36:48 +0100 <byorgey> dolio, interesting question. I can't think of a reasonable answer off the top of my head.
2020-12-01 18:36:49 +0100timCF(~i.tkachuk@m91-129-97-3.cust.tele2.ee)
2020-12-01 18:36:54 +0100 <merijn> dolio: What makes you say complexity is easy in imperative algorithms?
2020-12-01 18:37:03 +0100 <dolio> Someone above said it.
2020-12-01 18:37:16 +0100 <merijn> ah, must've missed that
2020-12-01 18:37:35 +0100 <dolio> Is it easy to figure out that imperative union-find has complexity proportional to the inverse of the Ackermann function?
2020-12-01 18:37:56 +0100 <byorgey> shinobi_: generally, yes, I think you just have to read more closely.
2020-12-01 18:37:57 +0100funkatronixxx(~funkatron@2001:981:f73:1:b048:68d2:a9f5:c605)
2020-12-01 18:38:14 +0100Ariakenom(~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se)
2020-12-01 18:38:34 +0100Spiff(~quassel@102.160.27.107) (Ping timeout: 246 seconds)
2020-12-01 18:38:46 +0100funkatronixxx(~funkatron@2001:981:f73:1:b048:68d2:a9f5:c605) (Client Quit)
2020-12-01 18:39:02 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2020-12-01 18:39:37 +0100 <byorgey> I guess I would say that often (though not necessarily), imperative programs make control flow explicit in the code. So you can see *syntactically* where the loops are etc. Whereas functional programs tend to bury control flow a bit more, because you can just have e.g. higher-order operations over data structures instead of writing explicit loops
2020-12-01 18:40:06 +0100keltono(~keltono@x-160-94-179-178.acm.umn.edu) (Ping timeout: 272 seconds)
2020-12-01 18:40:06 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-01 18:40:16 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-01 18:41:16 +0100keltono(~keltono@x-160-94-179-178.acm.umn.edu)
2020-12-01 18:41:57 +0100 <glguy> I think it's probably easiest to reason in an execution model you understand.
2020-12-01 18:42:52 +0100 <bulters> byorgey: imperative languages usually have a higher code locality
2020-12-01 18:43:35 +0100 <shinobi_> dolio, Perhaps I shouldn't say easy, maybe easier for the reasons byorgey mentioned
2020-12-01 18:43:42 +0100 <merijn> bulters: How so?
2020-12-01 18:43:56 +0100 <dolio> That seems unrelated to whether or not things are imperative, and instead related to whether or not the language can usefully abstract over common control flow usages.
2020-12-01 18:44:20 +0100vfaronov(5f54d24e@broadband-95-84-210-78.ip.moscow.rt.ru)
2020-12-01 18:44:55 +0100 <bulters> Merijn: unless you’re using some dynamic scripting language (I’m pointing at you Ruby), you can sort of assume that the code you have to keep in memory (mental) to reason about what you’re doing is in the same unit of code
2020-12-01 18:45:09 +0100 <merijn> bulters: eh...
2020-12-01 18:45:16 +0100 <merijn> bulters: Hard disagree :)
2020-12-01 18:45:33 +0100 <shinobi_> Dolio, agreed. In my mind they seemed correlated.
2020-12-01 18:45:36 +0100jlamothe(~jlamothe@198.251.55.207)
2020-12-01 18:45:39 +0100 <merijn> bulters: I've worked on big C++ applications and the stuff I needed to reason about was almost never in the same file
2020-12-01 18:46:25 +0100 <ezzieyguywuf> also, why if `cabal repl --build time` builds the time package, does it get re-built when I add it to my `my-package.cabal` file?
2020-12-01 18:46:27 +0100 <bulters> but if you read a function. you can reason about that function right?
2020-12-01 18:46:30 +0100 <merijn> Hell, due to overloading and inheritance it can be unclear which different file behaviour is actually coming from :p
2020-12-01 18:46:36 +0100 <ezzieyguywuf> am I accidentally compiling/installing things in multiple places?
2020-12-01 18:46:39 +0100 <merijn> bulters: "Maybe"
2020-12-01 18:46:51 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:690b:f4aa:bb1f:cfec)
2020-12-01 18:46:58 +0100LKoen(~LKoen@105.175.9.109.rev.sfr.net)
2020-12-01 18:47:10 +0100 <ezzieyguywuf> s/--build/--build-depends/
2020-12-01 18:47:17 +0100 <merijn> ezzieyguywuf: Which version of time did you build via repl and which dependency did you add?
2020-12-01 18:47:20 +0100 <bulters> Merijn: I didn’t do enough c++ to know if this is true. but usually some other function is not meddling with the way your current function is executed right ?
2020-12-01 18:47:27 +0100 <merijn> ezzieyguywuf: Also, does your project specify any other GHC flags?
2020-12-01 18:47:31 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-12-01 18:47:58 +0100 <merijn> bulters: If you write concurrent/threaded code then *everything* is meddling with *everything* :)
2020-12-01 18:49:09 +0100 <bulters> fair enough. but the same applies to concurrent functional code.
2020-12-01 18:49:11 +0100 <merijn> ezzieyguywuf: Basically, cabal computes a build plan that consists of ALL your transitive dependencies, flags, etc. every package is installed with a hash derives from transitive dependencies, version, and flags. Different configuration = different hash = seperate installation
2020-12-01 18:49:13 +0100 <ezzieyguywuf> merijn: I didn't add a specific version to the `cabal run` command nor to my cabal file.
2020-12-01 18:49:26 +0100 <bulters> and let’s not get started on concurrent declarative stuff ;)
2020-12-01 18:49:29 +0100 <merijn> bulters: Less so in a pure language like Haskell, since mutability is "opt in"
2020-12-01 18:49:44 +0100 <ezzieyguywuf> merijn: I don't have any flags specified in my cabal file (I think maybe I should...)
2020-12-01 18:49:46 +0100 <merijn> bulters: So code only affects other code that "opts in" to being affected
2020-12-01 18:50:16 +0100 <merijn> ezzieyguywuf: Yes, say one of you dependencies has an upperbound on time (like "< 1.8") and you installed 1.9 in the repl
2020-12-01 18:50:20 +0100 <ezzieyguywuf> merijn: so really, cabal is going to "Just Work™" and take care of everything and I shouldn't worry about it?
2020-12-01 18:50:30 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de)
2020-12-01 18:50:36 +0100 <ezzieyguywuf> merijn: that makes sense.
2020-12-01 18:51:10 +0100 <merijn> ezzieyguywuf: With cabal-install 3.0 and later you can have infinitely many different versions (including same version, but different flags or same version, but different transitive dependencies) without them conflicting
2020-12-01 18:51:23 +0100 <bulters> merijn: sure. but that’s state. that’s sort-of related to code locality.
2020-12-01 18:51:36 +0100 <ezzieyguywuf> merijn: that's dope af.
2020-12-01 18:51:52 +0100 <ezzieyguywuf> in on v3.2.0.0 so I should be good
2020-12-01 18:51:59 +0100 <ezzieyguywuf> s/in on/I'm on/
2020-12-01 18:52:00 +0100 <merijn> ezzieyguywuf: When you build it solves the buildplan and if that exact version is already installed, then it uses that. If that exact version isn't installed, it gets installed. End result, different projects on the same machine can never get your dependencies to conflict/stuck/wahtever
2020-12-01 18:52:31 +0100 <bulters> merijn: didn’t know THAT.
2020-12-01 18:52:34 +0100 <ezzieyguywuf> merijn: the main tradeoff being I could end up with gigabytes worth or packages, many of them the same but with slightly different flags or something
2020-12-01 18:52:37 +0100 <ezzieyguywuf> which honestly I'm ok with.
2020-12-01 18:52:42 +0100 <ezzieyguywuf> it's a fair tradeoff
2020-12-01 18:53:00 +0100 <merijn> ezzieyguywuf: Only downside is that if you update very frequently your global store (in ~/.cabal/store/ghc-*) can get bloated, but usually I just nuke it when I upgrade GHC or once a year if it gets too big
2020-12-01 18:53:19 +0100 <bulters> should’ve been fixed 10 years ago. then I wouldn’t be doing (well paid, sure) Ruby on Rails updates where every dependency on the planet goes haywire.
2020-12-01 18:53:37 +0100 <merijn> ezzieyguywuf: Since, after nuking it, it will just happily reinstall anything missing
2020-12-01 18:53:51 +0100 <Boarders> is there a good way in criterion to benchmark something that prints to the screen without it printing constantly during the benchmark
2020-12-01 18:54:05 +0100 <ezzieyguywuf> merijn: after nuking, you may be in for a long wait though, right, if you have many deps that need to be built?
2020-12-01 18:54:05 +0100 <merijn> Boarders: Redirect stdout? :)
2020-12-01 18:54:11 +0100 <merijn> ezzieyguywuf: Sure
2020-12-01 18:54:24 +0100 <merijn> So, uh, don't do it have you have a deadline within 2 hours :p
2020-12-01 18:54:40 +0100 <ezzieyguywuf> do I need to do `cabal update` with any frequency? or just wait until something doesn't work or isn't new enough?
2020-12-01 18:55:21 +0100 <merijn> ezzieyguywuf: Naah, I update once every few months or when I need the latest version of something
2020-12-01 18:56:02 +0100ezzieyguywufnods
2020-12-01 18:56:15 +0100 <sm[m]> I would do it semi often, especially if you care about getting the latest of something
2020-12-01 18:56:34 +0100 <ezzieyguywuf> I'm not too interested in "the latest", I'm most interested in things just working
2020-12-01 18:56:51 +0100 <ezzieyguywuf> man, it's really pretty sweet working with cabal
2020-12-01 18:57:12 +0100 <ezzieyguywuf> I've only ever been exposed to c/c++ and python, and their systems (or lack thereof in the case of c/c++)
2020-12-01 18:57:17 +0100 <geekosaur> it'll remind you every so often
2020-12-01 18:57:28 +0100Boomerang_(~Boomerang@xd520f68c.cust.hiper.dk)
2020-12-01 18:57:40 +0100 <merijn> Yeah, I think after ~20 days it prints a reminder "hey, you last updated N days ago" when you build
2020-12-01 18:58:11 +0100 <monochrom> Yeah just wait for it to remind you.
2020-12-01 18:58:14 +0100 <solonarv> yeah I just update when cabal complains at me
2020-12-01 18:58:31 +0100 <merijn> ezzieyguywuf: cabal-install has it quirks and some learning curve, but it's so much better* then anything python related I ever used
2020-12-01 18:58:36 +0100 <dolio> Mine is complaining that I'm 60+ days out of date.
2020-12-01 18:58:52 +0100 <merijn> * - my definition of being better being "stable", "predictable", "reliable"
2020-12-01 18:59:41 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 265 seconds)
2020-12-01 19:00:08 +0100 <ezzieyguywuf> merijn: I agree with your statement and definitien of "better"
2020-12-01 19:00:09 +0100 <solonarv> I started doing AoC today and it complained about being 55 days behind
2020-12-01 19:00:31 +0100 <ezzieyguywuf> I can't say I can compare to some of the other newer languages though, like go and rust, though I've heard some horror stories and nodejs..
2020-12-01 19:00:46 +0100 <ezzieyguywuf> what is AoC this is like the 3rd time I've heard it mentioned
2020-12-01 19:00:55 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:690b:f4aa:bb1f:cfec) (Remote host closed the connection)
2020-12-01 19:00:59 +0100 <merijn> ezzieyguywuf: Advent of Code: https://adventofcode.com/
2020-12-01 19:01:05 +0100triteraflops(~triterafl@host-208-96-90-136.public.eastlink.ca) (Ping timeout: 240 seconds)
2020-12-01 19:01:17 +0100 <merijn> ezzieyguywuf: Advent calendar of programming puzzles, 2 each day
2020-12-01 19:01:39 +0100 <merijn> Bug glguy for the code to the #haskell leaderboard :p
2020-12-01 19:02:03 +0100 <ezzieyguywuf> OH NEAT! I thought it was like "the beggining of Code Time!" lol
2020-12-01 19:02:07 +0100 <ezzieyguywuf> it's like an Advent calendar!
2020-12-01 19:02:41 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-01 19:03:23 +0100 <glguy> merijn: code in /topic!
2020-12-01 19:03:36 +0100 <merijn> Guys, guys!
2020-12-01 19:03:45 +0100alp_(~alp@2a01:e0a:58b:4920:3d:91dc:2c69:eda)
2020-12-01 19:03:47 +0100 <jle`> :D
2020-12-01 19:03:59 +0100 <geekosaur> maybe time to replace the survey link with the AoC leaderboard (or code thereto)?
2020-12-01 19:04:00 +0100 <merijn> I managed to build a test with a (so far, after 8 runs) 100% reproduction rate of my race condition!
2020-12-01 19:04:13 +0100geekosaurwonders…
2020-12-01 19:04:16 +0100 <merijn> I'm a god of concurrent programming!
2020-12-01 19:04:47 +0100ChanServ+o geekosaur
2020-12-01 19:04:51 +0100 <merijn> Considering my original test suite caught it once every 50 runs...
2020-12-01 19:05:12 +0100Spiff(~quassel@102.160.27.107)
2020-12-01 19:06:03 +0100 <bulters> :’)
2020-12-01 19:06:14 +0100 <geekosaur> looks like I no longer have ops. that's probably good as it's been a couple years sce I hd any business having them
2020-12-01 19:06:54 +0100 <bulters> it’s nice to be on the bottom of the board. no expectations whatsoever :)
2020-12-01 19:07:00 +0100 <geekosaur> huh
2020-12-01 19:07:02 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius) (Quit: leaving)
2020-12-01 19:07:14 +0100xff0x(~fox@2001:1a81:52c4:e700:4c67:f849:ed85:83ba) (Ping timeout: 264 seconds)
2020-12-01 19:07:27 +0100 <merijn> bulters: There's currently no ranking yet
2020-12-01 19:07:28 +0100 <geekosaur> just slow here
2020-12-01 19:07:40 +0100 <merijn> The 1st day puzzles aren't giving any score due to an outage
2020-12-01 19:07:44 +0100 <bulters> not even for private ones?
2020-12-01 19:07:59 +0100xff0x(~fox@2001:1a81:52c4:e700:e7c4:2a2a:7acd:a7e4)
2020-12-01 19:08:05 +0100 <merijn> bulters: They're just in "join order" of the leaderboard :p
2020-12-01 19:08:12 +0100philopsos(~caecilius@gateway/tor-sasl/caecilius)
2020-12-01 19:08:15 +0100geekosaur-o geekosaur
2020-12-01 19:09:07 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Ping timeout: 272 seconds)
2020-12-01 19:09:10 +0100 <Franciman> because many used prolog, which is perfect for this task
2020-12-01 19:09:13 +0100 <Franciman> as opposed to haskell
2020-12-01 19:09:36 +0100Spiff(~quassel@102.160.27.107) (Ping timeout: 240 seconds)
2020-12-01 19:10:55 +0100 <merijn> Now I just gotta actually *fix* said race condition >.>
2020-12-01 19:12:45 +0100 <ezzieyguywuf> neaaaat I wanna do AoC now, lol.
2020-12-01 19:13:07 +0100 <ezzieyguywuf> but I'm hyper-focused on my hledger stuffies, b/c my wife keeps hassling me to stay up-to-date on our accounting 🤣
2020-12-01 19:13:47 +0100 <sm[m]> stay on target ezzieyguywuf!
2020-12-01 19:14:14 +0100chele(~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2020-12-01 19:14:36 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2020-12-01 19:14:48 +0100hseg(~gesh@IGLD-84-228-238-34.inter.net.il)
2020-12-01 19:15:09 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2020-12-01 19:15:14 +0100 <sm[m]> We can speed you up on #hledger to free up time for AoC
2020-12-01 19:15:35 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-01 19:16:00 +0100jmchael(~Chi1thang@87.112.60.168) (Ping timeout: 260 seconds)
2020-12-01 19:17:33 +0100Sheilong(uid293653@gateway/web/irccloud.com/x-awydjlcjvlqxqotf)
2020-12-01 19:17:34 +0100dyeplexer(~lol@unaffiliated/terpin) (Remote host closed the connection)
2020-12-01 19:17:57 +0100coot_(~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl)
2020-12-01 19:19:07 +0100 <monochrom> Oh! The survey link. I forgot.
2020-12-01 19:19:09 +0100ChanServ+o monochrom
2020-12-01 19:19:12 +0100 <bulters> ezzieyguywuf: or outsource your accounting. so you have time for AOC
2020-12-01 19:19:19 +0100 https://www.haskell.org | https://wiki.haskell.org/IRC_channel | Paste code/errors: https://gist.github.com/ | Logs: http://tunes.org/~nef/logs/haskell/?C=M;O=D | https://www.reddit.com/r/haskell | Admin: #haskell-ops | Offtopic: #haskell-offtopic | https://downloads.haskell.org | AoC 43100-84040706
2020-12-01 19:19:34 +0100 <jle`> alternatively outsouce your AOC so you have time for accounting
2020-12-01 19:19:45 +0100 <monochrom> And what AoC link would you like to be there?
2020-12-01 19:19:52 +0100 <bulters> :/ not sure about priorities
2020-12-01 19:20:16 +0100 <merijn> monochrom: It's already there at the end, no?
2020-12-01 19:20:44 +0100 <bulters> merijn: for me that’s not a link. but a number my phone tries to dial.
2020-12-01 19:20:56 +0100 <merijn> bulters: It's the code for the leaderboard
2020-12-01 19:20:56 +0100 <monochrom> That's a credit card number, not a URL :)
2020-12-01 19:21:03 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 240 seconds)
2020-12-01 19:21:08 +0100Spiff(~quassel@102.160.27.107)
2020-12-01 19:21:32 +0100 <bulters> yeah. I just joined. hence the on the bottom stuff.
2020-12-01 19:21:45 +0100 <geekosaur> yeh, I went to add it and foudit there already
2020-12-01 19:21:53 +0100coot(~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 256 seconds)
2020-12-01 19:21:54 +0100coot_coot
2020-12-01 19:22:05 +0100 <geekosaur> apparenty I still have ops for some reason
2020-12-01 19:22:52 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Quit: This computer has gone to sleep)
2020-12-01 19:23:00 +0100 <monochrom> Bah OK, there are enough ops here, I don't have to worry about it.
2020-12-01 19:23:04 +0100monochrom-o monochrom
2020-12-01 19:23:46 +0100ChaiTRex(~ChaiTRex@gateway/tor-sasl/chaitrex)
2020-12-01 19:23:57 +0100 <ezzieyguywuf> sm[m]: 😂 lol thanks.
2020-12-01 19:23:58 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2020-12-01 19:24:08 +0100 <sm[m]> ezzieyguywuf: and clearly you should budget and account for your AoC & accounting time
2020-12-01 19:24:18 +0100 <ezzieyguywuf> bulters: I've thought about it, but then I'd have to use quicken or something, I doubt I can find a plaintextaccountant
2020-12-01 19:24:19 +0100christo(~chris@81.96.113.213) (Remote host closed the connection)
2020-12-01 19:24:30 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-01 19:24:34 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2020-12-01 19:25:12 +0100 <monochrom> accounting for accounting time sounds like the rocket fuel equation.
2020-12-01 19:25:12 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-01 19:25:25 +0100 <sm[m]> I bet you could, on #plaintextaccounting. (For some value of "accountant")
2020-12-01 19:26:44 +0100 <ezzieyguywuf> I mean, my accountant is going to have access to all my personal finances, so it has to be somebody I trust, with accredidations or w/e
2020-12-01 19:26:55 +0100 <sm[m]> yup
2020-12-01 19:27:26 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Client Quit)
2020-12-01 19:27:36 +0100 <sm[m]> read only access, at least
2020-12-01 19:28:41 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2020-12-01 19:28:54 +0100Lowl3v3l(~Lowl3v3l@dslb-088-072-167-020.088.072.pools.vodafone-ip.de) (Remote host closed the connection)
2020-12-01 19:29:13 +0100Lowl3v3l(~Lowl3v3l@dslb-088-072-167-020.088.072.pools.vodafone-ip.de)
2020-12-01 19:30:42 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de)
2020-12-01 19:35:01 +0100z0k(~user@101.50.127.33) (Ping timeout: 264 seconds)
2020-12-01 19:35:01 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
2020-12-01 19:35:16 +0100Boomerang_(~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 246 seconds)
2020-12-01 19:35:18 +0100chkno(~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
2020-12-01 19:35:38 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-01 19:35:57 +0100z0k(~user@101.50.127.33)
2020-12-01 19:36:22 +0100ambidextrose(~fut-learn@mobile-166-170-50-182.mycingular.net) ()
2020-12-01 19:36:45 +0100lotuseater(~user@2a02:908:fbd1:b0a0:e509:2192:3b29:45fb) (Remote host closed the connection)
2020-12-01 19:37:00 +0100kritzefitz(~kritzefit@212.86.56.80) (Ping timeout: 260 seconds)
2020-12-01 19:39:07 +0100 <merijn> ah...rats
2020-12-01 19:39:30 +0100 <merijn> Now I need to migrate to GitHub Actions before releasing, because I ran out of credits >.>
2020-12-01 19:40:07 +0100ezzieyguywuf(~Unknown@unaffiliated/ezzieyguywuf) (Quit: leaving)
2020-12-01 19:40:32 +0100raichoo(~raichoo@213.240.178.58) (Quit: Lost terminal)
2020-12-01 19:42:16 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-01 19:43:22 +0100 <merijn> Clearly this is a sign from the universe to call it quits for today
2020-12-01 19:43:27 +0100tlaxkit(~kvirc@185.228.155.198)
2020-12-01 19:44:34 +0100 <bulters> merijn: 9 hours of refueling left ;)
2020-12-01 19:44:55 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60)
2020-12-01 19:45:23 +0100LKoen(~LKoen@105.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.”)
2020-12-01 19:45:49 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-01 19:46:37 +0100 <merijn> bulters: Do they even refill?
2020-12-01 19:47:07 +0100 <bulters> no until the next challenge.
2020-12-01 19:47:48 +0100 <bulters> gha minutes refuel in the next billing cycle ;)
2020-12-01 19:49:27 +0100kuribas(~user@ptr-25vy0i7f6k5lgkppukc.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2020-12-01 19:52:15 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Remote host closed the connection)
2020-12-01 19:52:15 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 19:52:40 +0100u0_a298(~user@47.206.148.226)
2020-12-01 19:53:39 +0100 <siraben> What's the optimal solution running time for AoC day 1 part 2?
2020-12-01 19:54:28 +0100 <siraben> Ah https://en.wikipedia.org/wiki/3SUM not linear? Hm.
2020-12-01 19:56:40 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
2020-12-01 19:57:20 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-01 20:00:29 +0100geekosaur(ac3a3b15@172.58.59.21) (Ping timeout: 245 seconds)
2020-12-01 20:02:02 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 265 seconds)
2020-12-01 20:02:57 +0100alp_(~alp@2a01:e0a:58b:4920:3d:91dc:2c69:eda) (Ping timeout: 272 seconds)
2020-12-01 20:03:03 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 244 seconds)
2020-12-01 20:03:22 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2020-12-01 20:03:31 +0100berberman(~berberman@unaffiliated/berberman)
2020-12-01 20:03:49 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2020-12-01 20:05:36 +0100Kaivo(~Kaivo@ec2-15-222-231-32.ca-central-1.compute.amazonaws.com) (Ping timeout: 240 seconds)
2020-12-01 20:06:29 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-01 20:06:41 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
2020-12-01 20:07:59 +0100Ariakenom(~Ariakenom@h-98-128-229-104.NA.cust.bahnhof.se) (Read error: Connection reset by peer)
2020-12-01 20:08:25 +0100Kaivo(~Kaivo@104-200-86-99.mc.derytele.com)
2020-12-01 20:09:46 +0100kritzefitz(~kritzefit@212.86.56.80)
2020-12-01 20:09:47 +0100urek(~urek@2804:7f1:e10a:9644:710f:7948:6aa6:d2da)
2020-12-01 20:10:32 +0100urek__(~urek@2804:7f1:e10a:9644:61eb:9098:9107:ba2c) (Ping timeout: 246 seconds)
2020-12-01 20:13:19 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-12-01 20:15:49 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 20:16:16 +0100u0_a298(~user@47.206.148.226)
2020-12-01 20:16:51 +0100geekosaur(ac3a3b5e@172.58.59.94)
2020-12-01 20:18:31 +0100Feuermagier(~Feuermagi@213.178.26.41) (Remote host closed the connection)
2020-12-01 20:18:33 +0100Feuermagier_(~Feuermagi@213.178.26.41)
2020-12-01 20:18:33 +0100borne(~fritjof@200116b864506b008cdf581d4c1cc02f.dip.versatel-1u1.de) (Ping timeout: 244 seconds)
2020-12-01 20:19:26 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2020-12-01 20:20:15 +0100jespada(~jespada@90.254.245.49) (Ping timeout: 256 seconds)
2020-12-01 20:20:23 +0100cheater(~user@unaffiliated/cheater) (Ping timeout: 260 seconds)
2020-12-01 20:21:45 +0100triteraflops(~triterafl@host-208-96-90-136.public.eastlink.ca)
2020-12-01 20:21:47 +0100jespada(~jespada@90.254.245.49)
2020-12-01 20:24:13 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 20:24:18 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-12-01 20:24:46 +0100u0_a298(~user@47.206.148.226)
2020-12-01 20:24:50 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2020-12-01 20:26:02 +0100cheater(~user@unaffiliated/cheater)
2020-12-01 20:28:32 +0100jonatanb(jonatanb@gateway/vpn/protonvpn/jonatanb)
2020-12-01 20:28:39 +0100zincy__(~tom@2a00:23c8:970a:3501:d1af:3726:ffca:e493)
2020-12-01 20:28:42 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-12-01 20:29:42 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2020-12-01 20:32:12 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 20:32:36 +0100u0_a298(~user@47.206.148.226)
2020-12-01 20:33:06 +0100jmchael(~Chi1thang@87.112.60.168)
2020-12-01 20:33:13 +0100borne(~fritjof@200116b864506b008cdf581d4c1cc02f.dip.versatel-1u1.de)
2020-12-01 20:33:21 +0100zincy_(~tom@2a00:23c8:970a:3501:49e9:cdf0:19c5:ddb0) (Ping timeout: 272 seconds)
2020-12-01 20:34:28 +0100dmiles(~dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Read error: Connection reset by peer)
2020-12-01 20:36:40 +0100dmiles(~dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
2020-12-01 20:38:40 +0100Vulfe(~vulfe@2600:1702:31b0:34e0:690b:f4aa:bb1f:cfec)
2020-12-01 20:41:01 +0100knupfer(~Thunderbi@200116b82c8796007c7334fffe488766.dip.versatel-1u1.de)
2020-12-01 20:41:01 +0100knupfer(~Thunderbi@200116b82c8796007c7334fffe488766.dip.versatel-1u1.de) (Client Quit)
2020-12-01 20:41:04 +0100Gurkenglas(~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 272 seconds)
2020-12-01 20:41:14 +0100knupfer(~Thunderbi@200116b82c879600255ef36d8e57f850.dip.versatel-1u1.de)
2020-12-01 20:43:50 +0100Spiff(~quassel@102.160.27.107) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2020-12-01 20:46:06 +0100codeAlways(uid272474@gateway/web/irccloud.com/x-igjfxraslkgfeqlb) (Quit: Connection closed for inactivity)
2020-12-01 20:48:25 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 20:48:43 +0100u0_a298(~user@47.206.148.226)
2020-12-01 20:52:08 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-01 20:52:23 +0100ocamler(3263cbdb@50.99.203.219)
2020-12-01 20:52:25 +0100 <ocamler> ```
2020-12-01 20:52:28 +0100Franciman(~francesco@host-212-171-88-43.pool212171.interbusiness.it) (Quit: Leaving)
2020-12-01 20:52:28 +0100 <ocamler> `mapOddEven :: (a -> b) -> (a -> b) -> [a] -> bmapOddEven fEven fOdd xs = let f (i, x) = if even i then fOdd x else fEven x in map f $ zip [1 ..] xs`
2020-12-01 20:52:45 +0100 <ocamler> sorry let me just look up how to format on here
2020-12-01 20:52:56 +0100 <monochrom> @where paste
2020-12-01 20:52:56 +0100 <lambdabot> Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com
2020-12-01 20:53:11 +0100juuandyy(~juuandyy@90.166.144.65)
2020-12-01 20:53:14 +0100conal(~conal@64.71.133.70)
2020-12-01 20:53:49 +0100 <ocamler> thanks! https://paste.tomsmeding.com/8d1KppnN
2020-12-01 20:54:20 +0100 <ocamler> I was wondering why this code doesn't compile with this error: https://paste.tomsmeding.com/z0OPbVsR
2020-12-01 20:54:38 +0100ericsagnes(~ericsagne@2405:6580:0:5100:eb79:9e59:1d53:470c) (Ping timeout: 264 seconds)
2020-12-01 20:54:56 +0100 <ocamler> thanks!
2020-12-01 20:55:15 +0100 <solonarv> ocamler: well, you wrote that your function's return type is b , surely you meant [b] ?
2020-12-01 20:55:22 +0100 <monochrom> That.
2020-12-01 20:55:58 +0100 <ocamler> lol
2020-12-01 20:56:03 +0100 <ocamler> thank you sorry about the dumb question
2020-12-01 20:56:11 +0100 <solonarv> the error message is basically GHC telling you "hey, I'm trying to figure out how b and [b] could be the same thing, but that's not possible"
2020-12-01 20:56:15 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-12-01 20:56:24 +0100 <solonarv> happens to all of us ;)
2020-12-01 20:57:06 +0100Boomerang_(~Boomerang@xd520f68c.cust.hiper.dk)
2020-12-01 20:57:25 +0100cads(~cads@ip-64-72-99-232.lasvegas.net)
2020-12-01 20:59:00 +0100Franciman(~francesco@host-212-171-88-43.pool212171.interbusiness.it)
2020-12-01 20:59:14 +0100 <jollygood2> @hoogle readMay
2020-12-01 20:59:15 +0100 <lambdabot> Safe readMay :: Read a => String -> Maybe a
2020-12-01 20:59:15 +0100 <lambdabot> ClassyPrelude readMay :: (Element c ~ Char, MonoFoldable c, Read a) => c -> Maybe a
2020-12-01 20:59:15 +0100 <lambdabot> BasicPrelude readMay :: Read a => Text -> Maybe a
2020-12-01 20:59:22 +0100 <jollygood2> there's something like this in base, isn't there?
2020-12-01 20:59:24 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-01 20:59:27 +0100 <merijn> :t Text.Read.readMaybe
2020-12-01 20:59:29 +0100 <lambdabot> Read a => String -> Maybe a
2020-12-01 20:59:32 +0100 <jollygood2> thanks
2020-12-01 20:59:45 +0100 <jollygood2> @hoogle Read a => String -> Maybe a
2020-12-01 20:59:45 +0100 <lambdabot> Text.Read readMaybe :: Read a => String -> Maybe a
2020-12-01 20:59:45 +0100 <lambdabot> Test.Tasty.Options safeRead :: Read a => String -> Maybe a
2020-12-01 20:59:45 +0100 <lambdabot> Distribution.Compat.Prelude.Internal readMaybe :: Read a => String -> Maybe a
2020-12-01 20:59:56 +0100 <merijn> Text.Read is in base :p
2020-12-01 20:59:58 +0100 <tomsmeding> that ClassyPrelude is certainly Class-y
2020-12-01 21:00:00 +0100 <jollygood2> hmm, could swear I tried that the other day
2020-12-01 21:00:20 +0100 <monochrom> It's why they called it Classy!
2020-12-01 21:00:31 +0100 <monochrom> I don't use hoogle anyway.
2020-12-01 21:00:36 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 240 seconds)
2020-12-01 21:01:48 +0100Deide(~Deide@217.155.19.23)
2020-12-01 21:01:56 +0100conal(~conal@64.71.133.70)
2020-12-01 21:02:06 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-01 21:03:31 +0100conal(~conal@64.71.133.70)
2020-12-01 21:03:40 +0100conal(~conal@64.71.133.70) (Client Quit)
2020-12-01 21:05:17 +0100conal(~conal@64.71.133.70)
2020-12-01 21:06:03 +0100ericsagnes(~ericsagne@2405:6580:0:5100:daf4:cb72:13f0:5bd2)
2020-12-01 21:06:04 +0100alp_(~alp@88.126.45.36)
2020-12-01 21:06:26 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-12-01 21:06:28 +0100inja(~inja@pd9f82e83.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2020-12-01 21:08:14 +0100justsomeguy(~justsomeg@216.186.218.241)
2020-12-01 21:08:14 +0100justsomeguy(~justsomeg@216.186.218.241) (Changing host)
2020-12-01 21:08:14 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311)
2020-12-01 21:08:16 +0100Franciman(~francesco@host-212-171-88-43.pool212171.interbusiness.it) (Ping timeout: 256 seconds)
2020-12-01 21:12:15 +0100Franciman(~francesco@host-212-171-88-43.retail.telecomitalia.it)
2020-12-01 21:14:34 +0100keltono(~keltono@x-160-94-179-178.acm.umn.edu) (Read error: Connection reset by peer)
2020-12-01 21:14:35 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 21:14:51 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Read error: Connection reset by peer)
2020-12-01 21:14:51 +0100keltono(~keltono@x-160-94-179-178.acm.umn.edu)
2020-12-01 21:15:09 +0100u0_a298(~user@47.206.148.226)
2020-12-01 21:15:32 +0100Lord_of_Life(~Lord@46.217.220.86)
2020-12-01 21:15:32 +0100Lord_of_Life(~Lord@46.217.220.86) (Changing host)
2020-12-01 21:15:32 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2020-12-01 21:17:50 +0100pavonia(~user@unaffiliated/siracusa)
2020-12-01 21:18:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
2020-12-01 21:18:48 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-01 21:19:58 +0100conal(~conal@64.71.133.70)
2020-12-01 21:20:07 +0100chaosmasttter(~chaosmast@p200300c4a708ba01a875fdca27dd920e.dip0.t-ipconnect.de)
2020-12-01 21:20:16 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
2020-12-01 21:21:25 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch)
2020-12-01 21:22:55 +0100britva(~britva@31-10-157-156.cgn.dynamic.upc.ch) (Client Quit)
2020-12-01 21:24:06 +0100 <ocamler> is there a data structure in haskell similar to a linked list in other languages, where I can iterate through in one direction, but also supports delete :: LList a -> Int -> LList a
2020-12-01 21:24:08 +0100Boomerang_(~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 256 seconds)
2020-12-01 21:24:21 +0100 <koz_> ocamler: List can do that.
2020-12-01 21:24:23 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
2020-12-01 21:25:00 +0100 <ocamler> oh I forgot to say that would be relatively fast (log n maybe?) isnt the list version O(n)
2020-12-01 21:25:11 +0100Jesin(~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
2020-12-01 21:25:18 +0100 <solonarv> it can't be faster than O(n) with a straightforward linked list
2020-12-01 21:25:57 +0100 <koz_> If you want log(n) deletions at an index, you want some kind of tree.
2020-12-01 21:26:06 +0100 <koz_> (a self-balancing one at that)
2020-12-01 21:26:12 +0100 <jle`> ocamler: do you mean like deleting at atn arbitrary location, or like deleting while you iterate?
2020-12-01 21:26:17 +0100 <koz_> But that's more constrained than a list.
2020-12-01 21:26:28 +0100 <koz_> If you want delete-while-iterating, a list zipper would work?
2020-12-01 21:26:38 +0100 <jle`> Seq is a nice ordered collection with arbitrary index delete and fast iteration
2020-12-01 21:26:50 +0100Boomerang_(~Boomerang@xd520f68c.cust.hiper.dk)
2020-12-01 21:26:56 +0100 <ocamler> deleting arbitrary location
2020-12-01 21:27:04 +0100 <ocamler> cool I'll check it out
2020-12-01 21:27:06 +0100 <koz_> Yeah, then Seq is probably the thing you want.
2020-12-01 21:27:08 +0100 <jle`> from 'containers'
2020-12-01 21:27:34 +0100 <koz_> Is Seq based on a finger tree or something?
2020-12-01 21:27:37 +0100Franciman(~francesco@host-212-171-88-43.retail.telecomitalia.it) (Ping timeout: 246 seconds)
2020-12-01 21:27:45 +0100 <geekosaur> yes
2020-12-01 21:27:59 +0100 <koz_> Oh, cool.
2020-12-01 21:29:19 +0100juuandyy(~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
2020-12-01 21:32:40 +0100Franciman(~francesco@host-212-171-88-43.retail.telecomitalia.it)
2020-12-01 21:35:39 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 21:36:11 +0100u0_a298(~user@47.206.148.226)
2020-12-01 21:36:30 +0100 <ocamler> I also found this: https://hackage.haskell.org/package/stm-linkedlist-0.1.0.0/docs/Data-STM-LinkedList.html
2020-12-01 21:37:08 +0100 <koz_> That's just a mutable linked list I think?
2020-12-01 21:37:14 +0100 <ocamler> yeah I think so
2020-12-01 21:37:53 +0100 <koz_> It won't give you log(n) at-index deletions.
2020-12-01 21:37:56 +0100 <koz_> Seq will.
2020-12-01 21:39:44 +0100 <monochrom> stm-linkedlist is a mutable thread-safe doubly-linked list if you study the source code
2020-12-01 21:40:00 +0100DataComputist(~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
2020-12-01 21:40:14 +0100 <merijn> monochrom: What is it if I don't study the source code?
2020-12-01 21:40:17 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2020-12-01 21:40:19 +0100 <monochrom> Therefore it comes with all the pros and cons of doubly linked lists.
2020-12-01 21:40:31 +0100 <monochrom> Then you pay someone to study for you.
2020-12-01 21:40:31 +0100 <koz_> merijn: A mystery wrapped in an enigma.
2020-12-01 21:40:52 +0100p-core(~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Remote host closed the connection)
2020-12-01 21:41:55 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-01 21:42:00 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-12-01 21:42:21 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
2020-12-01 21:42:28 +0100ocamler(3263cbdb@50.99.203.219) (Remote host closed the connection)
2020-12-01 21:42:50 +0100 <monochrom> Including for example if you don't have a list-wide pointer to the last node, then it takes linear time to reach the last node. For example stm-linkedlist has this problem.
2020-12-01 21:43:56 +0100 <monochrom> Err maybe not.
2020-12-01 21:44:47 +0100 <tomsmeding> that would be either a beginner's mistake, or a minor performance optimisation for very specific purposes
2020-12-01 21:45:27 +0100 <monochrom> This one pulls a strange trick. I can only say it optimizes for defining fewer types/wrappers.
2020-12-01 21:45:50 +0100AlterEgo-(~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
2020-12-01 21:46:20 +0100 <monochrom> Its node type is this record: ptr1, ptr2, Maybe a. Not ptr1, ptr2, a.
2020-12-01 21:46:55 +0100 <tomsmeding> lol it's circular
2020-12-01 21:46:59 +0100 <tomsmeding> that's indeed a strange trick
2020-12-01 21:47:10 +0100 <monochrom> It uses a sentinel node to store: ptr1 = pointer to first real node, ptr2 = pointer to last real node, Nothing
2020-12-01 21:48:11 +0100 <monochrom> If you conceptually have n items, then you have n+1 nodes, 1 node stores Nothing, n nodes store Just.
2020-12-01 21:48:27 +0100 <monochrom> This is going to be royally confusing to branch predictors.
2020-12-01 21:48:36 +0100 <tomsmeding> yeah that's a strange API, and also a pessimisation I think
2020-12-01 21:48:51 +0100 <tomsmeding> because now you've wrapped everything in a Maybe indirection that will never be Nothing
2020-12-01 21:49:23 +0100 <tomsmeding> ('never' meaning 'only if there is a bug')
2020-12-01 21:49:37 +0100codefaster(~codefaste@67.205.133.140) (Quit: WeeChat 2.8)
2020-12-01 21:49:41 +0100 <tomsmeding> s/branch predictors/users/ too
2020-12-01 21:49:58 +0100timCF(~i.tkachuk@m91-129-97-3.cust.tele2.ee) (Quit: leaving)
2020-12-01 21:50:18 +0100 <monochrom> Even 1st-year Java textbooks don't do this.
2020-12-01 21:50:28 +0100Franciman(~francesco@host-212-171-88-43.retail.telecomitalia.it) (Ping timeout: 260 seconds)
2020-12-01 21:52:00 +0100Lowl3v3l(~Lowl3v3l@dslb-088-072-167-020.088.072.pools.vodafone-ip.de) (Remote host closed the connection)
2020-12-01 21:54:11 +0100cosimone(~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
2020-12-01 21:54:31 +0100cosimone(~cosimone@93-47-228-249.ip115.fastwebnet.it)
2020-12-01 21:57:44 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 21:58:13 +0100u0_a298(~user@47.206.148.226)
2020-12-01 21:58:30 +0100michalz(~user@185.246.204.125) (Remote host closed the connection)
2020-12-01 21:58:57 +0100lassulus(~lassulus@NixOS/user/lassulus)
2020-12-01 22:00:31 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2020-12-01 22:00:52 +0100dagnabbit(~thelounge@140.82.8.179) (Quit: The Lounge - https://thelounge.chat)
2020-12-01 22:01:36 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-12-01 22:01:43 +0100dagnabbit(~thelounge@140.82.8.179)
2020-12-01 22:01:44 +0100vg(~vg@139.59.59.230)
2020-12-01 22:01:58 +0100vg(~vg@139.59.59.230) (Remote host closed the connection)
2020-12-01 22:02:11 +0100vg(~vg@139.59.59.230)
2020-12-01 22:02:25 +0100Lowl3v3l(~Lowl3v3l@dslb-088-072-167-020.088.072.pools.vodafone-ip.de)
2020-12-01 22:03:13 +0100cantstanya(~chatting@gateway/tor-sasl/cantstanya)
2020-12-01 22:05:16 +0100u0_a298(~user@47.206.148.226) (Read error: Connection reset by peer)
2020-12-01 22:05:43 +0100u0_a298(~user@47.206.148.226)
2020-12-01 22:06:45 +0100 <texasmynsted> I get an error "could not deduce (MonadFail m)" . . . on some code in a where clause. The code and the full error are here https://gist.github.com/mmynsted/2df78282ccd2ec4ac026b85e390d2d73
2020-12-01 22:07:08 +0100 <jle`> you probably need a MonadFail constraint on m
2020-12-01 22:07:25 +0100 <texasmynsted> Yes but can I do that in a where clause?
2020-12-01 22:07:38 +0100 <texasmynsted> Or rather, how do I do that?
2020-12-01 22:07:45 +0100 <jle`> (MonadFail m, MonadMetadata m) => ...
2020-12-01 22:08:09 +0100 <monochrom> getUpdatedUTC :: (MonadFail m, MonadMetadata m) => TimeLocale -> Identifier -> m Clock.UTCTime
2020-12-01 22:08:41 +0100 <texasmynsted> I can't add a signature to a where clause can I?
2020-12-01 22:08:48 +0100 <texasmynsted> OOOOH
2020-12-01 22:08:50 +0100 <texasmynsted> snap
2020-12-01 22:08:50 +0100 <merijn> sure you can
2020-12-01 22:08:51 +0100 <texasmynsted> okay
2020-12-01 22:08:53 +0100 <jle`> you can, but you want to constrain the m
2020-12-01 22:08:59 +0100 <jle`> that getUpdatedUTC uses
2020-12-01 22:09:01 +0100 <monochrom> You can, but irrelevant for this problem.
2020-12-01 22:09:25 +0100 <jle`> basically your original type signature was a lie
2020-12-01 22:09:30 +0100 <texasmynsted> I can not in a "let"?
2020-12-01 22:09:35 +0100 <texasmynsted> Hah
2020-12-01 22:09:41 +0100 <merijn> texasmynsted: You can have type signatures in let too
2020-12-01 22:09:42 +0100 <texasmynsted> that sound right
2020-12-01 22:09:43 +0100 <jle`> you claimed that getUpdatedUTC was supposed to work for all 'm', as long as m is an instance of MonadMetdata
2020-12-01 22:09:44 +0100 <monochrom> You can, but still irrelevant for this problem.
2020-12-01 22:09:53 +0100 <jle`> but as you implemented it, this is a broken promise
2020-12-01 22:09:59 +0100 <merijn> texasmynsted: In GHC 8.8 "fail" was moved out of the Monad class and into MonadFail
2020-12-01 22:10:10 +0100 <jle`> so you need to fix the promise that getUpdatedUTC is claiming, with its type signature
2020-12-01 22:10:11 +0100 <merijn> jle`: To be fair, if this is old code it wasn't a lie in the past :p
2020-12-01 22:10:30 +0100 <jle`> i'm not claiming any moral judgment :)
2020-12-01 22:10:35 +0100 <jle`> only cool people lie
2020-12-01 22:10:40 +0100 <texasmynsted> okay
2020-12-01 22:10:44 +0100 <mang0[m]> henlo
2020-12-01 22:10:46 +0100 <texasmynsted> thank you both
2020-12-01 22:11:06 +0100 <texasmynsted> I am not sure what I am thinking today
2020-12-01 22:11:10 +0100ezzieyguywuf_sys(~wolfie@cpe-24-163-39-58.nc.res.rr.com)
2020-12-01 22:11:13 +0100 <merijn> texasmynsted: fail is used for failing patterns in do notation (like "do { [] <- foo; stuff }" when foo returns a non-empty list)
2020-12-01 22:11:15 +0100Younder(~john@33.51-174-155.customer.lyse.net)
2020-12-01 22:11:23 +0100 <ezzieyguywuf_sys> does cabal "clean up after itself" i.e. delete stuff it no longer needs?
2020-12-01 22:11:32 +0100 <jle`> yeah, there miiight be a deeper issue here
2020-12-01 22:11:33 +0100 <sclv> no
2020-12-01 22:11:37 +0100 <geekosaur> not yet
2020-12-01 22:11:38 +0100 <jle`> but we'll see when it gets integrated
2020-12-01 22:11:42 +0100andi-(~andi-@NixOS/user/andi-) (Ping timeout: 244 seconds)
2020-12-01 22:11:45 +0100 <sclv> it doesn't know what you might need in the future
2020-12-01 22:12:08 +0100 <merijn> texasmynsted: Which is bad, since not all monads have "reasonable fail mode", so as of 8.8 partial patterns in do notation (and uses of "fail") infer a MonadFail constraint, in stead of just Monad
2020-12-01 22:12:12 +0100 <sclv> work on adding functionality to cabal would only be to let you _explicitly_ denote what you "still need" and don't
2020-12-01 22:12:24 +0100 <sclv> with some convenient ui for this
2020-12-01 22:12:31 +0100 <sclv> (and the "convenient" thing is what makes it hard)
2020-12-01 22:12:42 +0100iqubic(~user@2601:602:9500:4870:ed6c:ae7b:1487:9d5a) (Ping timeout: 260 seconds)
2020-12-01 22:12:53 +0100 <ezzieyguywuf_sys> so over time, my ~/.cabal directory is just going to grow and grow and grow?
2020-12-01 22:12:59 +0100 <monochrom> 8.6 too. My students ran into this by writing "do Just x <- ..."
2020-12-01 22:13:08 +0100 <sclv> well sure, but you can always delete the store whenever you want
2020-12-01 22:13:13 +0100 <sclv> and it'll recreate it as necessary
2020-12-01 22:13:15 +0100 <merijn> ezzieyguywuf_sys: Practically, yes, for now
2020-12-01 22:13:34 +0100 <texasmynsted> hmm
2020-12-01 22:13:35 +0100 <ezzieyguywuf_sys> merijn: that's why you nuke it from time to time?
2020-12-01 22:13:36 +0100 <sclv> this only doesn't work if you've cabal installed executables which keep data files there, and you can explicitly try to avoid them
2020-12-01 22:13:58 +0100 <merijn> ezzieyguywuf_sys: I usually nuke it when I upgrade GHC (note that ~/.cabal/store has separate subdirs for each GHC you use)
2020-12-01 22:14:07 +0100 <merijn> ezzieyguywuf_sys: Or when it gets excessively big
2020-12-01 22:14:13 +0100 <ezzieyguywuf_sys> sclv: what is "the store"? also, how is ~/.cabal different from ~/.ghcup, both seem to contain a lot of stuff
2020-12-01 22:14:50 +0100 <merijn> ezzieyguywuf_sys: The store is the directory/database with *all* (potentially conflicting) versions that cabal uses subsets off, hence the ~/.cabal/store directory
2020-12-01 22:15:04 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-01 22:15:11 +0100danso(~dan@69-165-210-185.cable.teksavvy.com)
2020-12-01 22:15:39 +0100 <sclv> ./ghcup contains the actual executables and data for ghc, cabal, etc
2020-12-01 22:15:47 +0100 <sclv> ~/.cabal/store contains libraries cabal has built
2020-12-01 22:15:57 +0100 <Younder> SPJ developes Haskell on ubuntu. Going to a rpm manager might be a problem, Any experiences with that?
2020-12-01 22:16:16 +0100 <merijn> Younder: SPJ on Ubuntu? That seems unlikely
2020-12-01 22:16:24 +0100 <merijn> Pretty sure he still uses Windows :p
2020-12-01 22:16:34 +0100 <Younder> merijn, He does not
2020-12-01 22:16:44 +0100 <sclv> if you want rpms for ghc use https://launchpad.net/~hvr/+archive/ubuntu/ghc
2020-12-01 22:17:00 +0100 <ezzieyguywuf_sys> and ~/.cabal/bin contains...well just ghcid for me. but why is it in there and not ~/.ghcup/bin?
2020-12-01 22:17:15 +0100 <sclv> because ghcup just manages installing ghc and cabal
2020-12-01 22:17:24 +0100 <ezzieyguywuf_sys> hm, I see
2020-12-01 22:17:26 +0100 <sclv> ~/.cabal/bin will contain executables you've installed _with_ cabal
2020-12-01 22:17:37 +0100 <ezzieyguywuf_sys> does ghcup install hoogle, b/c I have that but don't see it in ~/.cabal/bin
2020-12-01 22:17:51 +0100 <monochrom> could also be .local/bin
2020-12-01 22:18:15 +0100 <ezzieyguywuf_sys> woah yea it is
2020-12-01 22:18:30 +0100 <ezzieyguywuf_sys> as is hledger and ghcid (again?!?) and hlint
2020-12-01 22:18:34 +0100coot(~coot@37.30.53.191.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2020-12-01 22:18:36 +0100 <ezzieyguywuf_sys> why is ghcid in both places?
2020-12-01 22:18:47 +0100 <Younder> merijn, I know he workes for Microsoft Research in Cambridge. I also know he does his development in ubuntu and that his editor is emacs.
2020-12-01 22:19:08 +0100 <monochrom> v1 commands default to .cabal/bin, v2 commands default to .local/bin. Even this may be only an approximate short story.
2020-12-01 22:19:14 +0100 <ezzieyguywuf_sys> the ~/.cabal/bin/ghcid is a link to somewhere in ~/.cabal/store
2020-12-01 22:19:16 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-49-142-114-9-241.dsl.bell.ca)
2020-12-01 22:19:39 +0100 <ezzieyguywuf_sys> ok, so mostly I just won't worry about it, but it's good to know these things thank you all for your time
2020-12-01 22:20:01 +0100 <monochrom> I am not sure why SPJ is brought up in the first place.
2020-12-01 22:20:35 +0100 <monochrom> Ben Gamari is the one who does the releasing. Why not talk about him instead?
2020-12-01 22:21:14 +0100 <monochrom> And even then, the whole premise of singling out one single GHC dev for what they use seems royally irrelevant.
2020-12-01 22:22:14 +0100 <geekosaur> and the release packages come from CI, not from a personal dev build
2020-12-01 22:22:27 +0100 <monochrom> irrelevant for the purpose of how to use rpm to install GHC, since furthermore anyone who has followed either the haskell mailing list or the GHC download webpage for the past 2 years see that Fedora packages exist.
2020-12-01 22:22:50 +0100conal(~conal@64.71.133.70)
2020-12-01 22:22:50 +0100Franciman(~francesco@host-212-171-88-43.retail.telecomitalia.it)
2020-12-01 22:22:57 +0100 <monochrom> up to date Fedora packages, at that
2020-12-01 22:23:17 +0100 <monochrom> The question is full of non-sequitors and XY problems.
2020-12-01 22:23:18 +0100 <geekosaur> on multiple platforms.
2020-12-01 22:23:41 +0100iqubic(~user@2601:602:9500:4870:d783:bda7:f9aa:ba36)
2020-12-01 22:24:01 +0100 <dolio> Nobody uses rpm/deb for active work on a project anyway.
2020-12-01 22:24:16 +0100 <dolio> In any language.
2020-12-01 22:24:45 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 240 seconds)
2020-12-01 22:25:08 +0100knupfer(~Thunderbi@200116b82c879600255ef36d8e57f850.dip.versatel-1u1.de) (Ping timeout: 244 seconds)
2020-12-01 22:25:11 +0100andi-(~andi-@NixOS/user/andi-)
2020-12-01 22:26:26 +0100 <hekkaidekapus_> ezzieyguywuf_sys: The symlinks in $PATH might become dangling if you delete stuff willy-nilly from the store. For that reason, I’d recommend installing binaries this way: `cabal install foo --install-method=copy --overwrite-policy=always`.
2020-12-01 22:27:01 +0100hekkaidekapus_hekkaidekapus
2020-12-01 22:27:27 +0100 <bulters> dolio: I have some clients that would beg to differ ;)
2020-12-01 22:27:49 +0100 <sclv> your clients beg? very polite clients
2020-12-01 22:27:59 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2020-12-01 22:28:14 +0100 <dolio> Well, okay, maybe 'nobody uses' was overly broad. People who do should probably stop, though.
2020-12-01 22:28:16 +0100 <sclv> "please sir, may i have some work"
2020-12-01 22:28:25 +0100 <sclv> what if they beg you
2020-12-01 22:29:22 +0100 <hekkaidekapus> sclv: By the way, HVR’s PPA offers .deb not .rpm, doesn’t it?
2020-12-01 22:29:53 +0100xff0x(~fox@2001:1a81:52c4:e700:e7c4:2a2a:7acd:a7e4) (Ping timeout: 272 seconds)
2020-12-01 22:30:03 +0100 <dolio> PPA is an Ubuntu thing, so it would be unlikely to have rpms.
2020-12-01 22:30:12 +0100 <bulters> sclv: don’t know what would happen actually... probably the same as usual :/
2020-12-01 22:30:13 +0100xff0x(~fox@2001:1a81:52c4:e700:436e:8766:c72f:980)
2020-12-01 22:30:26 +0100 <sclv> fair enough they asked about ubuntu so that's why i replied, i guess i was confused
2020-12-01 22:30:30 +0100 <sclv> anyway there's rpms around too
2020-12-01 22:30:56 +0100 <hekkaidekapus> Ah, I didn’t know that.
2020-12-01 22:31:03 +0100 <geekosaur> no, they claimed SPJ used Ubuntu therefore there were no up to date RPMs
2020-12-01 22:31:09 +0100 <sclv> oh *eyeroll*
2020-12-01 22:31:18 +0100 <sclv> anyway i haven't worried about any of this since i switched to ghcup :-)
2020-12-01 22:31:31 +0100 <merijn> Also, he at least (also) uses WSL as of this summer :p
2020-12-01 22:31:58 +0100 <geekosaur> which is Ubuntu-ish, at least
2020-12-01 22:32:01 +0100 <merijn> And I'm pretty sure I've seen emails by him about people breaking his windows build before then, so I wonder where that "fact" comes from :p
2020-12-01 22:32:17 +0100 <geekosaur> on a somewhat regular basis
2020-12-01 22:32:26 +0100 <geekosaur> (breaking windows builds)
2020-12-01 22:32:48 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-01 22:33:37 +0100 <hekkaidekapus> Younder: We might seem piling on, but the gist is: ask a question about what you want to do, leave SPJ’s setup alone.
2020-12-01 22:34:19 +0100 <Younder> hekkaidekapus, lol never thought that would stir up such a can of worms.
2020-12-01 22:34:55 +0100 <hekkaidekapus> Wrong statements and assumptions tend to have that effect ;)
2020-12-01 22:35:08 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2020-12-01 22:35:22 +0100 <merijn> hekkaidekapus: Some right ones do too :p
2020-12-01 22:35:29 +0100 <hekkaidekapus> lol
2020-12-01 22:35:36 +0100 <Younder> hekkaidekapus, what was wrong exactly?
2020-12-01 22:35:45 +0100 <merijn> hekkaidekapus: https://i.imgur.com/oBkRDB0.jpg
2020-12-01 22:36:00 +0100 <hekkaidekapus> Younder: Let’s not there. What do you want to do?
2020-12-01 22:36:12 +0100 <hekkaidekapus> *not go there
2020-12-01 22:36:47 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2020-12-01 22:37:23 +0100dhil(~dhil@78.156.97.38) (Ping timeout: 256 seconds)
2020-12-01 22:37:25 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2020-12-01 22:38:36 +0100 <hekkaidekapus> merijn: The pictures seem oblique, might need a fix.
2020-12-01 22:39:22 +0100 <Younder> hekkaidekapus, decipher the type inference algorithm Haskell uses.
2020-12-01 22:39:48 +0100 <hekkaidekapus> Through RPM?
2020-12-01 22:40:16 +0100 <Younder> hekkaidekapus, Though the only one who truly understands it SPJ..
2020-12-01 22:40:29 +0100 <geekosaur> uh
2020-12-01 22:40:33 +0100 <hekkaidekapus> heh
2020-12-01 22:40:53 +0100 <Younder> Simon Petre Jones
2020-12-01 22:40:55 +0100 <merijn> If only someone had written a book about this...
2020-12-01 22:41:01 +0100 <merijn> @where tapl
2020-12-01 22:41:01 +0100 <lambdabot> "Types and Programming Languages" by Benjamin C. Pierce in 2002-02-01 at <https://www.cis.upenn.edu/~bcpierce/tapl/>
2020-12-01 22:41:04 +0100 <Younder> He did
2020-12-01 22:41:52 +0100seveg(~gabriel@2a02-ab04-0249-8d00-3603-db93-c217-257c.dynamic.v6.chello.sk)
2020-12-01 22:41:59 +0100 <sclv> TAPL's explanation of hindley milner is pretty nonrigorous and handwavy imh
2020-12-01 22:42:01 +0100 <sclv> imho
2020-12-01 22:42:13 +0100 <sclv> it was enough for me to sort of figure it out back in the day but its not the best book for it
2020-12-01 22:42:20 +0100ent(entgod@kapsi.fi) (Ping timeout: 256 seconds)
2020-12-01 22:42:27 +0100 <sclv> also ghc does a _ton_ more than that now
2020-12-01 22:42:31 +0100 <Younder> That's not the one. SPJ wrote several books on development of the Haskell language. But the type inference part is a mess.
2020-12-01 22:42:40 +0100 <sclv> the "typing haskell in haskell" paper gives a decent example
2020-12-01 22:42:50 +0100 <geekosaur> ben gamari's probably the best person to ask about ghc, but in some cases he'll point you to e.g. richard eisenberg
2020-12-01 22:42:53 +0100 <sclv> also spj's books are ancient and don't at all describe what ghc currently does
2020-12-01 22:43:01 +0100 <sclv> ben doesn't work on the type inference part
2020-12-01 22:43:07 +0100 <merijn> sclv: "Hindley-Milner" and "what Haskell does" are separate things
2020-12-01 22:43:10 +0100 <geekosaur> there are far more people than just SPJ involved with ghc
2020-12-01 22:43:24 +0100 <sclv> reading richard and spj's most recent papers and following references back gets you closest to the truth
2020-12-01 22:43:31 +0100 <geekosaur> right, but he knows who does mostly
2020-12-01 22:43:56 +0100 <sclv> also i know what HM and what haskell does are different, that's what i said! i only mentioned HM because that's all that's described in TAPL which you mentioned (and sketchily at best)
2020-12-01 22:43:59 +0100 <iqubic> So (<|>) for Maybe will return the first argument if the first argument is "Just x" and the second argmuent if the first argument is "Nothing". Right?
2020-12-01 22:44:23 +0100 <merijn> iqubic: Yes
2020-12-01 22:44:24 +0100 <sclv> also if you know nothing about type inference, HM is the right place to _start_
2020-12-01 22:44:26 +0100 <dminuoso> iqubic: try it out?
2020-12-01 22:44:32 +0100 <iqubic> I did.
2020-12-01 22:44:39 +0100 <sclv> > Just "hi" <|> Nothing
2020-12-01 22:44:41 +0100 <dminuoso> Well what answer do you expect from us then?
2020-12-01 22:44:41 +0100 <lambdabot> Just "hi"
2020-12-01 22:44:46 +0100liff(liff@kapsi.fi) (Ping timeout: 244 seconds)
2020-12-01 22:44:47 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
2020-12-01 22:44:52 +0100 <sclv> > Nothing <|> Just "hi"
2020-12-01 22:44:54 +0100 <lambdabot> Just "hi"
2020-12-01 22:44:56 +0100 <Younder> Just saying for maintenance purposes a petre net with forward chaining inference would provide a better basis for maintenance.
2020-12-01 22:45:02 +0100 <sclv> lmao
2020-12-01 22:45:20 +0100 <mang0[m]> hi
2020-12-01 22:45:39 +0100hiroaki(~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de)
2020-12-01 22:46:11 +0100knupfer(~Thunderbi@200116b82c8796009424fefffe114e1b.dip.versatel-1u1.de)
2020-12-01 22:46:21 +0100Franciman(~francesco@host-212-171-88-43.retail.telecomitalia.it) (Ping timeout: 272 seconds)
2020-12-01 22:47:09 +0100 <geekosaur> hi
2020-12-01 22:48:35 +0100knupfer(~Thunderbi@200116b82c8796009424fefffe114e1b.dip.versatel-1u1.de) (Remote host closed the connection)
2020-12-01 22:48:48 +0100knupfer(~Thunderbi@200116b82c87960055a9eac83cc0a774.dip.versatel-1u1.de)
2020-12-01 22:49:50 +0100dhil(~dhil@openvpn-125-1006.inf.ed.ac.uk)
2020-12-01 22:50:04 +0100geekosaur(ac3a3b5e@172.58.59.94) (Remote host closed the connection)
2020-12-01 22:52:16 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-01 22:52:48 +0100conal(~conal@64.71.133.70)
2020-12-01 22:53:51 +0100falafel__(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-12-01 22:54:26 +0100 <monochrom> For GHC's type inference algorithm, the OutsideIn paper and the "practical type inference for arbitrary-rank types" paper will get you started
2020-12-01 22:55:20 +0100Franciman(~francesco@host-212-171-88-43.retail.telecomitalia.it)
2020-12-01 22:56:05 +0100 <monochrom> For Haskell Report's type inference algorithm, there is almost none, unless you count Mark Jone's "typing haskell in haskell"
2020-12-01 22:57:01 +0100ezzieyguywuf_sysezzieyguywuf
2020-12-01 22:57:03 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2020-12-01 22:57:35 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2020-12-01 22:57:50 +0100ezzieyguywuf(~wolfie@cpe-24-163-39-58.nc.res.rr.com) (Changing host)
2020-12-01 22:57:50 +0100ezzieyguywuf(~wolfie@unaffiliated/ezzieyguywuf)
2020-12-01 22:58:24 +0100 <iqubic> is emacs + haskell LSP ready for use?
2020-12-01 22:58:39 +0100 <iqubic> And does it work well with Nix + Cabal?
2020-12-01 22:59:16 +0100Iceland_jack(~user@31.124.48.169) (Ping timeout: 240 seconds)
2020-12-01 23:00:13 +0100Franciman(~francesco@host-212-171-88-43.retail.telecomitalia.it) (Ping timeout: 260 seconds)
2020-12-01 23:00:35 +0100ericsagn1(~ericsagne@2405:6580:0:5100:ad64:8506:64d2:1c94)
2020-12-01 23:00:57 +0100conal(~conal@64.71.133.70) (Read error: Connection reset by peer)
2020-12-01 23:01:45 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 256 seconds)
2020-12-01 23:03:24 +0100ericsagnes(~ericsagne@2405:6580:0:5100:daf4:cb72:13f0:5bd2) (Ping timeout: 240 seconds)
2020-12-01 23:03:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2020-12-01 23:04:12 +0100hseg(~gesh@IGLD-84-228-238-34.inter.net.il) (Quit: WeeChat 2.9)
2020-12-01 23:05:57 +0100conal(~conal@64.71.133.70)
2020-12-01 23:07:22 +0100falafel_(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-12-01 23:07:58 +0100lassulus_(~lassulus@NixOS/user/lassulus)
2020-12-01 23:08:54 +0100Boomerang_(~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 256 seconds)
2020-12-01 23:09:41 +0100hyperisco(~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 256 seconds)
2020-12-01 23:10:08 +0100lassulus(~lassulus@NixOS/user/lassulus) (Ping timeout: 260 seconds)
2020-12-01 23:10:10 +0100lassulus_lassulus
2020-12-01 23:10:32 +0100falafel__(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net) (Ping timeout: 272 seconds)
2020-12-01 23:11:32 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2020-12-01 23:11:48 +0100u0_a298(~user@47.206.148.226) (Ping timeout: 272 seconds)
2020-12-01 23:12:16 +0100mystfox(~myst@focks.pw) (Quit: Restarting for updates...)
2020-12-01 23:12:58 +0100glowpelt(~myst@focks.pw)
2020-12-01 23:12:59 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2020-12-01 23:13:28 +0100fendor_fendor
2020-12-01 23:16:04 +0100borne(~fritjof@200116b864506b008cdf581d4c1cc02f.dip.versatel-1u1.de) (Ping timeout: 240 seconds)
2020-12-01 23:18:22 +0100 <koz_> @hoogle ($>)
2020-12-01 23:18:22 +0100 <lambdabot> Data.Functor ($>) :: Functor f => f a -> b -> f b
2020-12-01 23:18:22 +0100 <lambdabot> Data.Functor.Compat ($>) :: Functor f => f a -> b -> f b
2020-12-01 23:18:22 +0100 <lambdabot> Data.Functor.Apply ($>) :: Functor f => f a -> b -> f b
2020-12-01 23:21:44 +0100knupfer(~Thunderbi@200116b82c87960055a9eac83cc0a774.dip.versatel-1u1.de) (Ping timeout: 240 seconds)
2020-12-01 23:22:38 +0100chaosmasttter(~chaosmast@p200300c4a708ba01a875fdca27dd920e.dip0.t-ipconnect.de) (Quit: WeeChat 2.9)
2020-12-01 23:23:16 +0100shah^(shah@ip98-184-89-2.mc.at.cox.net) ()
2020-12-01 23:23:38 +0100 <koz_> Does takeTill (from Attoparsec) consume everything to end-of-input if its predicate is never satisfied?
2020-12-01 23:23:50 +0100 <newsham> off topic math question -- is there a name for constructing a matrix from two vectors as Cij = Ai * Bj?
2020-12-01 23:24:42 +0100 <monochrom> Is that kronecker outer product?
2020-12-01 23:25:08 +0100 <monochrom> maybe simpler outer product
2020-12-01 23:25:16 +0100 <monochrom> err, s/simpler/simply/
2020-12-01 23:25:18 +0100 <newsham> ty.
2020-12-01 23:25:50 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60) (Ping timeout: 264 seconds)
2020-12-01 23:30:33 +0100aidecoe(~aidecoe@unaffiliated/aidecoe)
2020-12-01 23:32:06 +0100ent(entgod@kapsi.fi)
2020-12-01 23:32:16 +0100Varis(~Tadas@unaffiliated/varis)
2020-12-01 23:32:31 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2020-12-01 23:32:32 +0100borne(~fritjof@200116b864506b008cdf581d4c1cc02f.dip.versatel-1u1.de)
2020-12-01 23:32:38 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de) (Quit: mputz)
2020-12-01 23:33:18 +0100liff(liff@kapsi.fi)
2020-12-01 23:33:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2020-12-01 23:34:11 +0100benjamin-l(~benjamin@2601:1c0:8800:67e0:fa16:54ff:febc:2e60)
2020-12-01 23:38:05 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 246 seconds)
2020-12-01 23:38:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2020-12-01 23:39:40 +0100heatsink(~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2020-12-01 23:43:02 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2020-12-01 23:43:27 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2020-12-01 23:44:30 +0100CMCDragonkai2(~Thunderbi@120.17.186.107)
2020-12-01 23:45:24 +0100Sonolin(~Sonolin@184.103.179.49)
2020-12-01 23:45:34 +0100conal(~conal@64.71.133.70)
2020-12-01 23:47:56 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds)
2020-12-01 23:48:54 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2020-12-01 23:48:55 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2020-12-01 23:49:05 +0100hololeap(~hololeap@unaffiliated/hololeap) (Ping timeout: 240 seconds)
2020-12-01 23:49:44 +0100Tario(~Tario@201.192.165.173)
2020-12-01 23:52:11 +0100hololeap(~hololeap@unaffiliated/hololeap)
2020-12-01 23:52:51 +0100hololeap(~hololeap@unaffiliated/hololeap) (Max SendQ exceeded)
2020-12-01 23:52:57 +0100Xnuk(~xnuk@45.76.202.58) (Quit: ZNC - https://znc.in)
2020-12-01 23:53:12 +0100Xnuk(~xnuk@45.76.202.58)
2020-12-01 23:53:17 +0100hololeap(~hololeap@unaffiliated/hololeap)
2020-12-01 23:54:20 +0100mputz(~Thunderbi@dslb-084-058-211-084.084.058.pools.vodafone-ip.de)
2020-12-01 23:57:57 +0100falafel__(~falafel@pool-71-182-130-97.pitbpa.fios.verizon.net)
2020-12-01 23:58:08 +0100sleblanc(~sleblanc@unaffiliated/sebleblanc)
2020-12-01 23:58:21 +0100Codaraxis(~Codaraxis@ip68-5-90-227.oc.oc.cox.net)