Logs: freenode/#haskell
| 2020-11-16 23:28:37 | × | conal quits (~conal@66.115.176.210) (Quit: Computer has gone to sleep.) |
| 2020-11-16 23:29:10 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2020-11-16 23:30:42 | → | ph88 joins (~ph88@2a02:8109:9e00:7e5c:bc50:2174:75e6:7e22) |
| 2020-11-16 23:30:47 | <aoei> | monochrom: lmao (sorry late reply, but you deserve the lols) |
| 2020-11-16 23:30:48 | → | conal joins (~conal@66.115.176.210) |
| 2020-11-16 23:31:01 | <dsal> | The paper was from nearly 30 years ago. It should be the new hotness any day now. |
| 2020-11-16 23:31:13 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 2020-11-16 23:31:41 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 2020-11-16 23:32:19 | <dolio> | I think it's part of a general fallacy among some Haskellers that things that closely match the categorical presentation are automatically nicer. But that is false. |
| 2020-11-16 23:33:05 | <dolio> | In fact, one of the reasons category theorists look for certain structures in categories is so that they can use languages that look more like type/set theory to reason about them. |
| 2020-11-16 23:33:50 | × | `slikts quits (~nelabs@wikipedia/reinis) (Ping timeout: 246 seconds) |
| 2020-11-16 23:33:59 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 2020-11-16 23:34:06 | → | Aquazi joins (uid312403@gateway/web/irccloud.com/x-paizsduyeybkbeqa) |
| 2020-11-16 23:34:20 | <dsal> | I didn't get very far in my recent recursion excursion. Part of the problem is Foldable and Traversable do a lot of the magic. The other is that my use case and uses are just slightly weird. I can't even remember how, but when I sit down to do something interesting, it's always, "Oh yeah, this is why that won't work." |
| 2020-11-16 23:34:46 | <dsal> | It doesn't help that my implementation is complete and already quite tidy. |
| 2020-11-16 23:34:47 | → | mananamenos joins (~mananamen@84.122.202.215.dyn.user.ono.com) |
| 2020-11-16 23:34:57 | → | shrug joins (~shrug@178.239.168.171) |
| 2020-11-16 23:35:26 | → | lagothrix joins (~lagothrix@unaffiliated/lagothrix) |
| 2020-11-16 23:36:43 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds) |
| 2020-11-16 23:37:28 | × | hiroaki quits (~hiroaki@ip4d168e73.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds) |
| 2020-11-16 23:37:34 | <dolio> | Recursion schemes can give elegant presentations of some things, don't get me wrong. But there's a reason people came up with recursion and pattern matching, and try to justify them in terms of things like folds. |
| 2020-11-16 23:38:38 | → | `slikts joins (~nelabs@wikipedia/reinis) |
| 2020-11-16 23:39:43 | <hololeap> | learning how to think of something from different angles is beneficial, even if the benefits aren't obvious. it gives you more flexibility in your thinking |
| 2020-11-16 23:41:17 | <hololeap> | i think a lot of people learn about recursion-schemes because it is a different angle to dealing with recursion than what they are used to, and after learning it realize that it's not that useful in and of itself. but learning about it isn't a waste of time imo. |
| 2020-11-16 23:41:25 | <dolio> | Yeah, they're cool to study. At least the original paper or two. |
| 2020-11-16 23:41:49 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 2020-11-16 23:42:03 | <dolio> | I think the fact that there are many papers introducing new schemes for recursive definitions that the previous ones didn't handle well is also telling. |
| 2020-11-16 23:43:33 | × | boxscape quits (86ab2c1f@gateway/web/cgi-irc/kiwiirc.com/ip.134.171.44.31) (Ping timeout: 256 seconds) |
| 2020-11-16 23:43:40 | × | vacm quits (~vacwm@70.23.92.191) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 2020-11-16 23:44:31 | → | superstar64 joins (6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net) |
| 2020-11-16 23:44:51 | <dolio> | Anyhow, I ask because it seems that lately there are a lot of 'which recursion-schemes pacakge should I use' type questions here, which I would expect because someone famous said to use one. :) |
| 2020-11-16 23:44:54 | × | conal quits (~conal@66.115.176.210) (Quit: Computer has gone to sleep.) |
| 2020-11-16 23:45:13 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2020-11-16 23:47:20 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 2020-11-16 23:48:44 | → | ronbrz joins (~ronbrz@207.229.174.134) |
| 2020-11-16 23:50:38 | <sshine> | dolio, I don't know if recursion schemes were recently hyped up :) |
| 2020-11-16 23:51:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 2020-11-16 23:51:40 | <sshine> | dolio, I guess I had to try for myself that this was a bit of a bother the moment I ran into a recursion scheme that the library (data-fix) didn't support. |
| 2020-11-16 23:52:06 | <dsal> | I was looking at recursion-schemes recently just because it was on my mind and I had a road trip, so I was trying to find explanations I could listen to. The concepts make plenty of sense. I've just not actually applied them to anything. |
| 2020-11-16 23:52:08 | <sshine> | dolio, I did ask which of the two to use a few weeks ago. |
| 2020-11-16 23:52:12 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:8491:5fed:8d7f:daad) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 2020-11-16 23:54:28 | <sshine> | dolio, "there's a reason people came up with recursion and pattern matching": well, you'd still be using pattern matching with data-fix. just not arbitrarily deep. and I guess you wouldn't be using arbitrary recursion much like a foldr wouldn't let you... so as long as you're fine with recursion constrained to certain schemes, it shouldn't make a big difference. except, yeah, suddenly I need to match two |
| 2020-11-16 23:54:34 | <sshine> | levels deep in my tree and I can't. >_< |
| 2020-11-16 23:55:14 | <sshine> | I think I'm just going to slowly back out and say that I had my experience with it. :) |
| 2020-11-16 23:55:44 | <sshine> | I'd switch from 'data-fix' to 'recursion-schemes' if it weren't because I think that this didn't just prove that I'm spending more energy rather than less. |
| 2020-11-16 23:56:06 | <dolio> | sshine: Yeah, I'm sure there's a something-morphism named for matching two levels deep. :) |
| 2020-11-16 23:56:08 | <sshine> | (also, this being totally researchy, I don't really mind that, it could have been a golden discovery since I happened to actually understand it.) |
| 2020-11-16 23:56:21 | <sshine> | dolio, para. it's in recursion-schemes, but not in data-fix. |
| 2020-11-16 23:56:36 | <dolio> | Well, para gives you the whole underlying value. |
| 2020-11-16 23:56:39 | <sshine> | sure |
| 2020-11-16 23:57:00 | <dolio> | You can publish another paper for one that only gives you the immediate level. :P |
| 2020-11-16 23:57:02 | <sshine> | I mean... I think they're somehow equivalent, so I could *make* a two-level-deep scheme from 'cata'. |
| 2020-11-16 23:57:02 | → | conal joins (~conal@66.115.176.210) |
| 2020-11-16 23:57:29 | <sshine> | and I could make it contain a whole bunch of '.'s and 'Fix . fmap f . fmap fmap fmap fmap' |
| 2020-11-16 23:57:42 | <superstar64> | if it's complicated, why not use vanilla recursion? |
| 2020-11-16 23:57:46 | <dolio> | Anyhow, recursion-schemes is probably fine for para, but I wouldn't hesitate to define some pattern synonyms for the one-step match. |
| 2020-11-16 23:57:51 | <sshine> | superstar64, that. |
| 2020-11-16 23:58:14 | <dolio> | Or just ditch the `Fix` version of the type if it's not paying off. |
| 2020-11-16 23:58:42 | <sshine> | dolio, yeah, I ended up defining a bunch of synonyms for my tree, which wasn't less work but made me recall one professor saying you actually want an abstract tree, and I realized, once I did all that boilerplate work, I could actually replace 'data-fix' with anything and not touch the synonyms. |
| 2020-11-16 23:58:50 | <sshine> | dolio, I'm gonna. |
| 2020-11-16 23:59:13 | → | Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas) |
| 2020-11-16 23:59:29 | <sshine> | superstar64, I was trying to find out if it was complicated. it sort of is. :-D |
| 2020-11-16 23:59:45 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 2020-11-17 00:00:02 | × | shrug quits (~shrug@178.239.168.171) () |
| 2020-11-17 00:00:56 | <dolio> | :) |
| 2020-11-17 00:01:18 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:8491:5fed:8d7f:daad) |
| 2020-11-17 00:02:28 | × | conal quits (~conal@66.115.176.210) (Quit: Computer has gone to sleep.) |
| 2020-11-17 00:03:31 | <monochrom> | Some of the recursion schemes enjoy very handy theorems. If you know your function fits a recursion scheme, then your function enjoys its theorems. This is a proof re-use. |
| 2020-11-17 00:04:12 | → | conal joins (~conal@66.115.176.210) |
| 2020-11-17 00:04:26 | × | cosimone quits (~cosimone@93-47-228-249.ip115.fastwebnet.it) (Ping timeout: 265 seconds) |
| 2020-11-17 00:04:47 | → | vacm joins (~vacwm@70.23.92.191) |
| 2020-11-17 00:05:13 | <monochrom> | For example for lists: foldr op z . map f = foldr (\x r -> op (f x) r) z. |
| 2020-11-17 00:05:54 | <monochrom> | If you wrote your own recursion instead of that foldr, you may or may not spot that property as easily, and you may or may not have an easy time proving it. |
| 2020-11-17 00:07:39 | <dolio> | Well, as always, my advice is not, "don't use folds ever." It is, "don't try to force yourself to structure all your code around folds regardless of context." |
| 2020-11-17 00:08:07 | <monochrom> | But my overall opinion is: cata and ana and Ralf Hinze's "adjoint folds and unfolds" are all you need to know for 99% of the cases. |
| 2020-11-17 00:08:16 | × | quarters quits (~quarters@unaffiliated/quarters) (Ping timeout: 256 seconds) |
| 2020-11-17 00:09:05 | <monochrom> | Outside that, the rest look like very niche and hair-splitting. |
| 2020-11-17 00:09:51 | <monochrom> | Even the adjoint folds and unfolds, if you have to conjure a very contrived obscure adjoint functor, you're stretching it, the benefit becomes slim. |
| 2020-11-17 00:10:37 | × | ericsagn1 quits (~ericsagne@2405:6580:0:5100:465:234f:7cb8:28a5) (Ping timeout: 260 seconds) |
| 2020-11-17 00:11:46 | → | jedws joins (~jedws@101.184.175.183) |
| 2020-11-17 00:11:53 | × | srk quits (sorki@unaffiliated/srk) (Ping timeout: 256 seconds) |
| 2020-11-17 00:11:55 | → | LKoen joins (~LKoen@9.253.88.92.rev.sfr.net) |
| 2020-11-17 00:12:23 | → | lucard joins (c8dd9d33@200.221.157.51) |
| 2020-11-17 00:12:24 | → | jiribenes_ joins (~jiribenes@rosa.jiribenes.com) |
| 2020-11-17 00:12:33 | <lucard> | Hello all, im working on the book Haskell programming form first principles, and i was wondering if you guys know any repo with test cases for exercises in the book. Any idea? |
| 2020-11-17 00:12:47 | × | jiribenes quits (~jiribenes@rosa.jiribenes.com) (Read error: Connection reset by peer) |
| 2020-11-17 00:12:49 | × | Adluc quits (Adluc@base48.cz) (Ping timeout: 272 seconds) |
| 2020-11-17 00:13:16 | jiribenes_ | is now known as jiribenes |
| 2020-11-17 00:14:06 | × | Rudd0 quits (~Rudd0@185.189.115.103) (Ping timeout: 265 seconds) |
| 2020-11-17 00:15:23 | → | Adluc joins (Adluc@base48.cz) |
| 2020-11-17 00:19:25 | × | christo quits (~chris@81.96.113.213) (Ping timeout: 264 seconds) |
| 2020-11-17 00:19:46 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving) |
| 2020-11-17 00:21:10 | × | Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 246 seconds) |
| 2020-11-17 00:22:04 | → | Amras joins (~Amras@unaffiliated/amras0000) |
| 2020-11-17 00:22:41 | → | ericsagn1 joins (~ericsagne@2405:6580:0:5100:3325:bf75:6ec4:84a6) |
| 2020-11-17 00:25:33 | → | Rudd0 joins (~Rudd0@185.189.115.103) |
| 2020-11-17 00:25:54 | → | srk joins (sorki@unaffiliated/srk) |
| 2020-11-17 00:27:12 | × | conal quits (~conal@66.115.176.210) (Quit: Computer has gone to sleep.) |
| 2020-11-17 00:28:00 | hackage | iproute 1.7.10 - IP Routing Table https://hackage.haskell.org/package/iproute-1.7.10 (KazuYamamoto) |
| 2020-11-17 00:29:24 | × | Boomerang quits (~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 272 seconds) |
All times are in UTC.