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