Logs on 2022-03-26 (liberachat/#haskell)
| 00:00:53 | <Sqaure> | geekosaur, thanks. ill look that up |
| 00:01:03 | <toulene> | what is the most popular way to learn haskell? |
| 00:01:22 | <toulene> | sorry for the annoying question |
| 00:01:42 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 00:01:55 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 00:03:28 | <sm> | toulene: there are a lot of ways to answer that :) |
| 00:03:37 | × | Akiva quits (~Akiva@user/Akiva) (Ping timeout: 240 seconds) |
| 00:05:27 | → | ober_ joins (~ober@c-73-68-74-41.hsd1.ma.comcast.net) |
| 00:05:43 | × | aliosablack quits (~chomwitt@94.66.60.177) (Ping timeout: 256 seconds) |
| 00:07:59 | × | ober quits (~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 260 seconds) |
| 00:09:59 | → | ober__ joins (~ober@c-73-68-74-41.hsd1.ma.comcast.net) |
| 00:11:24 | × | pnotequalnp quits (~kevin@user/pnotequalnp) (Ping timeout: 240 seconds) |
| 00:11:56 | → | szkl joins (uid110435@id-110435.uxbridge.irccloud.com) |
| 00:12:40 | × | ober_ quits (~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 260 seconds) |
| 00:14:31 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
| 00:15:31 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 00:15:36 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 00:16:38 | <toulene> | i know there are a lot of ways hence i am undecided |
| 00:16:46 | <toulene> | hard to choose |
| 00:18:36 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 240 seconds) |
| 00:19:27 | → | ober_ joins (~ober@c-73-68-74-41.hsd1.ma.comcast.net) |
| 00:19:35 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 00:22:17 | × | Tuplanolla quits (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:22:28 | <hololeap> | choose a beginners book and once you think you understand the syntax well enough, start using haskell to get through some programming challenges e.g. advent of code, hackerrank, etc. |
| 00:22:32 | × | ober__ quits (~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 272 seconds) |
| 00:23:42 | <hololeap> | I also recommend using haskell-language-server for your editor because that will point out errors as you code in realtime, which might help the learning process |
| 00:28:29 | → | ober__ joins (~ober@c-73-68-74-41.hsd1.ma.comcast.net) |
| 00:28:31 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
| 00:29:31 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 00:31:19 | × | ober_ quits (~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 260 seconds) |
| 00:31:54 | × | gurkenglas quits (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 252 seconds) |
| 00:34:36 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds) |
| 00:35:50 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 00:37:27 | → | ober_ joins (~ober@c-73-68-74-41.hsd1.ma.comcast.net) |
| 00:37:49 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 00:40:16 | × | ober__ quits (~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 272 seconds) |
| 00:41:17 | → | lainon joins (~lainon@2601:7c0:c500:4d20::2ff6) |
| 00:41:21 | × | Guest8730 quits (~lainon@2601:7c0:c500:4d20::2ff6) (Quit: Leaving) |
| 00:41:28 | → | ober__ joins (~ober@c-73-68-74-41.hsd1.ma.comcast.net) |
| 00:42:15 | × | nicbk quits (~nicbk@user/nicbk) (Ping timeout: 240 seconds) |
| 00:43:55 | × | crazazy quits (~user@130.89.171.62) (Ping timeout: 260 seconds) |
| 00:44:15 | × | ober_ quits (~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 256 seconds) |
| 00:44:30 | × | lbseale quits (~ep1ctetus@user/ep1ctetus) (Quit: Leaving) |
| 00:47:17 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds) |
| 00:48:40 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 00:49:34 | × | tcard quits (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving) |
| 00:53:37 | × | alp quits (~alp@user/alp) (Ping timeout: 240 seconds) |
| 00:53:47 | <aviladev[m]> | <toulene> "i know there are a lot of ways..." <- I started from the Learn You A Haskell book, it's being great so far. |
| 00:54:14 | → | tcard joins (~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) |
| 00:55:28 | × | ober__ quits (~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Quit: Leaving) |
| 01:00:37 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 01:03:23 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 01:04:57 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 01:05:04 | → | harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) |
| 01:08:13 | × | geranim0 quits (~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Remote host closed the connection) |
| 01:08:32 | → | cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) |
| 01:09:27 | × | ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
| 01:11:21 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:12:57 | × | mvk quits (~mvk@2607:fea8:5cc3:7e00::7980) (Ping timeout: 240 seconds) |
| 01:13:24 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds) |
| 01:14:39 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 01:17:28 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:19:52 | × | Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Read error: Connection reset by peer) |
| 01:20:10 | → | Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net) |
| 01:25:43 | → | razetime joins (~quassel@117.254.34.132) |
| 01:26:08 | <abastro[m]> | I heard that while LYAH looks childish in its cover, its explanation, while easier than alternatives, is still quite hard to grasp. Is this true? |
| 01:26:18 | <Sqaure> | What would be bad with using GADTs like this for a traceable avaluation? https://paste.tomsmeding.com/6FKxcRh8 |
| 01:27:06 | <Sqaure> | will it break down for types with many parameters? |
| 01:33:00 | <Sqaure> | easier to read : https://paste.tomsmeding.com/zlPScFMe |
| 01:35:15 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 01:38:31 | × | zyklotomic quits (~ethan@res380d-128-61-85-225.res.gatech.edu) (Ping timeout: 260 seconds) |
| 01:40:33 | → | zyklotomic joins (~ethan@r4-128-61-90-5.res.gatech.edu) |
| 01:42:21 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 01:42:43 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
| 01:43:34 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 01:43:36 | × | vglfr quits (~vglfr@46.96.132.108) (Ping timeout: 272 seconds) |
| 01:52:41 | → | deadmarshal_ joins (~deadmarsh@95.38.113.36) |
| 01:56:57 | × | deadmarshal_ quits (~deadmarsh@95.38.113.36) (Ping timeout: 240 seconds) |
| 02:00:51 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 02:01:03 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 02:08:49 | → | chenqisu1 joins (~chenqisu1@183.217.201.88) |
| 02:09:57 | → | nicbk joins (~nicbk@user/nicbk) |
| 02:10:47 | → | [_] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 02:11:11 | → | pnotequalnp joins (~kevin@user/pnotequalnp) |
| 02:11:31 | → | Akiva joins (~Akiva@user/Akiva) |
| 02:13:29 | → | vglfr joins (~vglfr@46.96.132.108) |
| 02:14:17 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds) |
| 02:31:29 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 02:36:17 | × | lainon quits (~lainon@2601:7c0:c500:4d20::2ff6) (Remote host closed the connection) |
| 02:42:11 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection) |
| 02:46:36 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds) |
| 02:47:17 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds) |
| 02:47:43 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 02:47:51 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 02:49:38 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 02:49:55 | × | nicbk quits (~nicbk@user/nicbk) (Ping timeout: 240 seconds) |
| 02:52:53 | × | auri quits (~quassel@fsf/member/auri) (Quit: auri) |
| 02:53:28 | → | auri joins (~quassel@fsf/member/auri) |
| 02:53:35 | → | nicbk joins (~nicbk@user/nicbk) |
| 02:54:04 | × | auri quits (~quassel@fsf/member/auri) (Client Quit) |
| 02:57:35 | [_] | is now known as [itchyjunk] |
| 02:58:10 | × | pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4.1) |
| 02:58:36 | × | vglfr quits (~vglfr@46.96.132.108) (Ping timeout: 240 seconds) |
| 03:05:13 | <mon_aaraj> | I've been told LYAH isn't as good as the purple book, but I am not really quite sure |
| 03:10:55 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4) |
| 03:19:15 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 03:25:01 | → | Macbethwin joins (~chargen@8.21.8.240) |
| 03:26:34 | <sm> | toulene: would you like to read online ? read a paper book ? watch video ? listen to audio ? get free coaching in chat ? find a mentor ? pay for professional training ? get on-the-job training ? |
| 03:27:09 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 03:27:27 | × | Chargen quits (~chargen@D964062A.static.ziggozakelijk.nl) (Ping timeout: 256 seconds) |
| 03:27:57 | <sm> | or, learn by self-study ? discussion ? watching ? doing ? |
| 03:28:40 | <sm> | I know you asked "most popular", if that's really what you want to know I'll attempt it :) |
| 03:31:07 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 03:39:23 | × | jlamothe quits (~jlamothe@198.251.61.229) (Ping timeout: 260 seconds) |
| 03:40:58 | → | jlamothe joins (~jlamothe@198.251.61.229) |
| 03:41:15 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
| 03:42:13 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 03:45:55 | × | Macbethwin quits (~chargen@8.21.8.240) (Ping timeout: 260 seconds) |
| 03:54:09 | → | dsrt^ joins (~dsrt@96-91-136-49-static.hfc.comcastbusiness.net) |
| 03:58:31 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds) |
| 04:00:21 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 04:00:22 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
| 04:00:55 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 04:01:50 | → | deadmarshal_ joins (~deadmarsh@95.38.113.36) |
| 04:02:33 | × | boxscape_ quits (~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 04:05:31 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
| 04:07:22 | × | Akiva quits (~Akiva@user/Akiva) (Ping timeout: 272 seconds) |
| 04:08:05 | <abastro[m]> | I think I heard of a good monoid for computing `group`, but forgot it |
| 04:08:45 | <abastro[m]> | By `group`, I mean something like [a, b, b, c, c, c, d] => [(a, 1), (b, 2), (c, 3), (d, 1)] |
| 04:08:59 | <abastro[m]> | What is a good monoid for such a calculation? |
| 04:10:51 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 256 seconds) |
| 04:11:54 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 04:18:58 | × | Natch quits (~natch@c-67bae255.014-297-73746f25.bbcust.telenor.se) (Remote host closed the connection) |
| 04:21:26 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 04:21:44 | → | vglfr joins (~vglfr@46.96.132.108) |
| 04:22:07 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 04:24:21 | → | Natch joins (~natch@c-67bae255.014-297-73746f25.bbcust.telenor.se) |
| 04:30:55 | × | nicbk quits (~nicbk@user/nicbk) (Ping timeout: 240 seconds) |
| 04:32:46 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 04:35:21 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 04:40:03 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
| 04:40:35 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 04:40:53 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 256 seconds) |
| 04:41:57 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 04:45:22 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 04:47:57 | × | pnotequalnp quits (~kevin@user/pnotequalnp) (Ping timeout: 240 seconds) |
| 04:49:17 | × | vglfr quits (~vglfr@46.96.132.108) (Ping timeout: 240 seconds) |
| 05:04:16 | → | vysn joins (~vysn@user/vysn) |
| 05:04:22 | × | deadmarshal_ quits (~deadmarsh@95.38.113.36) (Ping timeout: 272 seconds) |
| 05:11:07 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 05:16:24 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds) |
| 05:22:42 | × | zmt00 quits (~zmt00@user/zmt00) (Quit: Leaving) |
| 05:25:17 | → | zmt00 joins (~zmt00@user/zmt00) |
| 05:28:16 | → | mbuf joins (~Shakthi@171.61.236.231) |
| 05:28:37 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds) |
| 05:29:48 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 05:32:06 | → | mikoto-chan joins (~mikoto-ch@213.177.151.239) |
| 05:37:51 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 05:39:24 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds) |
| 05:40:26 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 05:42:13 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
| 05:42:47 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 05:43:56 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 05:44:24 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 05:44:31 | × | Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection) |
| 05:48:08 | → | gurkenglas joins (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) |
| 06:06:51 | × | gurkenglas quits (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 260 seconds) |
| 06:06:55 | → | bitmapper joins (uid464869@id-464869.lymington.irccloud.com) |
| 06:28:54 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 06:31:25 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 06:35:33 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:35:37 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 06:41:17 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 06:46:37 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds) |
| 06:48:00 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 06:52:02 | × | cdman quits (~dcm@user/dmc/x-4369397) (Ping timeout: 272 seconds) |
| 06:59:41 | × | zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!) |
| 07:09:35 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 07:14:45 | × | troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 250 seconds) |
| 07:16:02 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 07:16:06 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 07:18:33 | → | acidjnk joins (~acidjnk@p200300d0c7049f68816ae2824fdd5aac.dip0.t-ipconnect.de) |
| 07:19:00 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 07:20:21 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
| 07:25:43 | × | razetime quits (~quassel@117.254.34.132) (Ping timeout: 260 seconds) |
| 07:28:27 | → | vglfr joins (~vglfr@46.96.132.108) |
| 07:29:35 | <jackdk> | abastro[m]: `MonoidalMap k (Sum v)`, using `Sum` from `Data.Monoid` and `MonoidalMap` from `monoidal-containers` |
| 07:30:16 | → | _dmc_ joins (~dcm@27.2.216.148) |
| 07:30:16 | <abastro[m]> | Oh my, I should have said that |
| 07:30:20 | <abastro[m]> | It is more like group |
| 07:30:33 | × | cdman quits (~dcm@user/dmc/x-4369397) (Ping timeout: 256 seconds) |
| 07:30:47 | <abastro[m]> | So, [a,a,a,b,a] => [(a,3), (b,1), (a,1)] |
| 07:32:30 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 07:37:38 | → | aliosablack joins (~chomwitt@2a02:587:dc18:da00:eb71:868b:3400:4636) |
| 07:38:16 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 07:40:33 | × | _dmc_ quits (~dcm@27.2.216.148) (Quit: Leaving) |
| 07:40:51 | → | cdman joins (~dcm@user/dmc/x-4369397) |
| 07:42:07 | → | Quenty joins (uid14882@id-14882.helmsley.irccloud.com) |
| 07:47:19 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 07:48:04 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 07:49:58 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 07:50:55 | × | zyklotomic quits (~ethan@r4-128-61-90-5.res.gatech.edu) (Ping timeout: 260 seconds) |
| 07:52:52 | → | zyklotomic joins (~ethan@res380d-128-61-81-155.res.gatech.edu) |
| 07:53:41 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 07:56:38 | → | razetime joins (~quassel@117.254.35.76) |
| 07:56:45 | × | szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
| 07:57:37 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 07:57:59 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 08:01:23 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 08:01:39 | → | img joins (~img@user/img) |
| 08:02:05 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 08:02:35 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 08:18:07 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 08:24:42 | → | Pickchea joins (~private@user/pickchea) |
| 08:30:00 | → | deadmarshal_ joins (~deadmarsh@95.38.113.36) |
| 08:32:37 | → | _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl) |
| 08:33:13 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 08:37:17 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 08:44:15 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 08:45:45 | × | shailangsa quits (~shailangs@host165-120-169-51.range165-120.btcentralplus.com) (Ping timeout: 268 seconds) |
| 08:49:35 | → | namkeleser joins (~namkelese@101.175.155.55) |
| 08:54:16 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 08:54:23 | × | vglfr quits (~vglfr@46.96.132.108) (Ping timeout: 260 seconds) |
| 08:54:52 | → | vglfr joins (~vglfr@37.73.58.115) |
| 08:59:57 | × | deadmarshal_ quits (~deadmarsh@95.38.113.36) (Ping timeout: 240 seconds) |
| 09:00:14 | × | phuegrvs[m] quits (~phuegrvsm@2001:470:69fc:105::1:65e4) (Quit: You have been kicked for being idle) |
| 09:00:24 | → | alp joins (~alp@user/alp) |
| 09:00:24 | × | Morrow[m] quits (~morrowmma@2001:470:69fc:105::1d0) (Quit: You have been kicked for being idle) |
| 09:00:54 | → | karim joins (~karim@102.40.222.144) |
| 09:01:39 | → | jgeerds joins (~jgeerds@55d4548e.access.ecotel.net) |
| 09:05:55 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds) |
| 09:06:10 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 09:10:35 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 09:11:54 | × | chenqisu1 quits (~chenqisu1@183.217.201.88) (Quit: Leaving) |
| 09:17:39 | × | jgeerds quits (~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 256 seconds) |
| 09:25:08 | → | Sgeo_ joins (~Sgeo@user/sgeo) |
| 09:27:24 | × | Sgeo quits (~Sgeo@user/sgeo) (Ping timeout: 240 seconds) |
| 09:28:35 | → | shailangsa joins (~shailangs@host86-162-150-212.range86-162.btcentralplus.com) |
| 09:28:40 | <xerox> | > M.toList . M.fromListWith (+) . map (\x -> (x,1)) $ "abcbacbca" -- abastro[m] |
| 09:28:42 | <lambdabot> | [('a',3),('b',3),('c',3)] |
| 09:34:36 | × | karim quits (~karim@102.40.222.144) (Ping timeout: 240 seconds) |
| 09:34:39 | × | perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4.1) |
| 09:37:07 | → | gurkenglas joins (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) |
| 09:37:51 | → | benin joins (~benin@183.82.24.110) |
| 09:38:00 | → | yosef36 joins (~yosefweis@2001:470:69fc:105::1:e501) |
| 09:41:34 | → | kuribas joins (~user@ptr-25vy0i9dlr6d4pgg05u.18120a2.ip6.access.telenet.be) |
| 09:42:13 | → | perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 09:45:43 | × | acidjnk quits (~acidjnk@p200300d0c7049f68816ae2824fdd5aac.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 09:49:35 | → | Tuplanolla joins (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) |
| 09:50:36 | × | Quenty quits (uid14882@id-14882.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
| 09:53:57 | × | mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds) |
| 09:56:55 | × | gdd quits (~gdd@129.199.146.230) (Ping timeout: 260 seconds) |
| 09:57:44 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 09:58:03 | <kuribas> | I am trying to "noobify" my code, but I am hesitating between Either and Exceptions. |
| 09:58:18 | <kuribas> | Exceptions are easier to understand for outsiders, but I don't like that they are invisible in haskell. |
| 09:58:35 | <kuribas> | "foo :: IO Int " does it throw an exception? |
| 10:00:31 | × | wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection) |
| 10:00:50 | → | wyrd joins (~wyrd@gateway/tor-sasl/wyrd) |
| 10:01:51 | × | hughjfchen quits (~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8) |
| 10:01:52 | × | vglfr quits (~vglfr@37.73.58.115) (Read error: Connection reset by peer) |
| 10:02:58 | → | vglfr joins (~vglfr@37.73.58.115) |
| 10:06:31 | → | hughjfchen joins (~hughjfche@vmi556545.contaboserver.net) |
| 10:09:47 | × | vglfr quits (~vglfr@37.73.58.115) (Ping timeout: 256 seconds) |
| 10:10:17 | → | Everything joins (~Everythin@37.115.210.35) |
| 10:10:32 | × | econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity) |
| 10:11:36 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds) |
| 10:13:37 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 10:16:40 | <abastro[m]> | <kuribas> ""foo :: IO Int " does it throw..." <- Google java checked exception criticism |
| 10:17:25 | <kuribas> | I kind of like javas checked exceptions |
| 10:17:48 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
| 10:17:53 | <abastro[m]> | Yea but (maybe sadly) many hated it |
| 10:18:16 | <kuribas> | not surprisingly |
| 10:18:16 | <abastro[m]> | And now they say result type is better because part of return type, not the function signature |
| 10:18:28 | → | mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
| 10:24:53 | <abastro[m]> | Not surprising? |
| 10:25:34 | <kuribas> | yeah, but then handling becomes painful without monads. |
| 10:26:24 | <abastro[m]> | Result monad without the m-word tho |
| 10:27:08 | <abastro[m]> | Anyway, for "noobify" I think you need to cater to many ppl's perception |
| 10:29:46 | → | dextaa_ joins (~dextaa@user/dextaa) |
| 10:30:08 | → | vglfr joins (~vglfr@37.73.58.115) |
| 10:30:16 | × | shailangsa quits (~shailangs@host86-162-150-212.range86-162.btcentralplus.com) () |
| 10:32:23 | × | gurkenglas quits (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 260 seconds) |
| 10:32:37 | <kuribas> | yeah, then the mainstream solution would be custom syntax for handling errors |
| 10:33:04 | <abastro[m]> | Eh, Result type isn't custom syntax isn't it |
| 10:33:21 | <kuribas> | the type no. |
| 10:33:38 | <kuribas> | But to handle it gracefully you'll need monadic bind. |
| 10:33:47 | × | alp quits (~alp@user/alp) (Ping timeout: 260 seconds) |
| 10:33:54 | <abastro[m]> | `.flatMap` |
| 10:35:03 | <kuribas> | so do mainstream programmers chain .flatMaps? |
| 10:35:36 | <kuribas> | Funny how people still end up with monads, despite a general consensus that they are "too academic". |
| 10:36:38 | <abastro[m]> | Well, I mean |
| 10:36:46 | <abastro[m]> | Mainstream is still just throwing unchecked exception. |
| 10:37:10 | <abastro[m]> | Simply that some of them are saying that Result type is better than checked exception |
| 10:38:43 | <abastro[m]> | But yea they began using map and filter at least |
| 10:39:21 | <kuribas> | funny how functional idioms have been trinkling in other languages steadily. |
| 10:40:17 | <abastro[m]> | Yea, think object-oriented idioms are coming into ours as well tho |
| 10:40:34 | <kuribas> | are they? |
| 10:41:22 | <kuribas> | haven't seen many, but then I probably actively avoid them... |
| 10:41:40 | <abastro[m]> | Encapsulation, type&data grouping |
| 10:41:45 | × | Sgeo_ quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 10:42:05 | <abastro[m]> | I mean type&behavior grouping |
| 10:42:19 | <kuribas> | records with functions? |
| 10:42:31 | <abastro[m]> | Also row-type polymorphism I guess |
| 10:42:57 | <abastro[m]> | I meant having a type and behavior on the type listed in proximity. |
| 10:44:41 | × | _________ quits (~nobody@user/noodly) (Ping timeout: 256 seconds) |
| 10:47:08 | <abastro[m]> | IIRC, one could do OOP in any FP language that is not haskell. |
| 10:47:23 | <kuribas> | one can do it in haskell as well. |
| 10:47:33 | <kuribas> | just closures are enough. |
| 10:47:38 | × | vglfr quits (~vglfr@37.73.58.115) (Ping timeout: 272 seconds) |
| 10:47:41 | <Franciman> | let over lambda pattern |
| 10:47:43 | <Franciman> | amirite? |
| 10:47:55 | <kuribas> | rite |
| 10:48:22 | <kuribas> | the primary thing I don't like about OO is inheritance. |
| 10:48:48 | <Franciman> | there are many articles explaining that it's not part of OO, but just an hack to gain reuse and GC friendliness |
| 10:48:49 | <kuribas> | I find interfaces are much more flexible in adding functionality. |
| 10:49:03 | <Franciman> | so you can do away |
| 10:49:25 | <kuribas> | rigid class hierarchies make for rigid and hard to maintain code. |
| 10:49:35 | <Franciman> | interfaces are gorg |
| 10:49:47 | <abastro[m]> | Well some ppl are genuinely offputted by haskell's inability at inheritance tho |
| 10:50:14 | <kuribas> | because it doesn't play well with type inference. |
| 10:50:14 | <Franciman> | functions are very powerful organizing mechanism |
| 10:50:50 | × | mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Remote host closed the connection) |
| 10:51:31 | → | ProfSimm joins (~ProfSimm@87.227.196.109) |
| 10:53:05 | → | zeenk joins (~zeenk@2a02:2f04:a110:7d00:2011:cfed:bad7:3c94) |
| 10:53:10 | → | xkuru joins (~xkuru@user/xkuru) |
| 10:53:11 | <abastro[m]> | Anyway yeah, encapsulation is perhaps the crux of OOP ppl like. Problem is that it is usually encapsulation of local mutable state. |
| 10:53:26 | <abastro[m]> | Haskell does not like local mutable state |
| 10:53:37 | <kuribas> | You can use an IORef. |
| 10:53:40 | <Franciman> | why, there is ST monad |
| 10:53:43 | <Franciman> | for local mutable state |
| 10:53:56 | <Franciman> | ah you would still retain referential trasparency |
| 10:55:29 | → | _________ joins (~nobody@user/noodly) |
| 10:55:48 | <kuribas> | IMO haskell is the best imperative language :) |
| 10:55:53 | <kuribas> | also the best dynamic language. |
| 10:55:54 | <abastro[m]> | You can't have a state in ST monad which carries over multiple call |
| 10:56:05 | <Franciman> | you are right |
| 10:56:07 | <Franciman> | sorry |
| 11:00:23 | <abastro[m]> | Btw personal grudge on IORef: laziness could get you into trouble |
| 11:00:36 | <Franciman> | laziness is lol |
| 11:00:38 | <Franciman> | how to put it |
| 11:00:42 | <Franciman> | well it's lol |
| 11:00:56 | <Franciman> | full of fake promises, but with a bunch of DAMN NEADO use cases |
| 11:02:11 | <kuribas> | abastro[m]: your not using unsafePerformIO, do you? ;-) |
| 11:02:54 | <abastro[m]> | Ofc not |
| 11:03:10 | <kuribas> | Then how could lazyness have an effect on the IORef? |
| 11:03:16 | <kuribas> | Or do you mean a space leak? |
| 11:03:19 | <abastro[m]> | I mean, you'd usually not think of thunks from IORef |
| 11:03:27 | <abastro[m]> | And that leads to performance degradation |
| 11:03:33 | <abastro[m]> | Ofc I mean space leak |
| 11:03:42 | <abastro[m]> | Oh right, there are other problems of laziness |
| 11:03:53 | <abastro[m]> | But I don't mean those |
| 11:04:45 | × | razetime quits (~quassel@117.254.35.76) (Ping timeout: 256 seconds) |
| 11:04:57 | <kuribas> | It can also be an advantage, for example in a concurrency setting. |
| 11:05:11 | × | _xor quits (~xor@74.215.232.169) (Quit: WeeChat 3.4) |
| 11:05:13 | <kuribas> | You don't need to hold the MVar, because the lazy update is nearly instantanuous. |
| 11:05:53 | × | mbuf quits (~Shakthi@171.61.236.231) (Ping timeout: 256 seconds) |
| 11:06:55 | <kuribas> | abastro[m]: but note that the space leak is due to holding on to a value, not due to the nature of an IORef. |
| 11:07:04 | <kuribas> | abastro[m]: you'ld have the same problem with StateT. |
| 11:07:26 | <kuribas> | I think stateless systems are the way to go. |
| 11:07:40 | <kuribas> | It will also help with reducing GC time. |
| 11:07:53 | <kuribas> | Just use a database to persist data. |
| 11:07:54 | <abastro[m]> | I mean, ppl simply expect IORef to be strict |
| 11:07:59 | <abastro[m]> | But ofc it is not. |
| 11:10:27 | <abastro[m]> | Sounds like using electric drill to change a lightbulb |
| 11:11:41 | → | shailangsa joins (~shailangs@host86-162-150-212.range86-162.btcentralplus.com) |
| 11:11:57 | <kuribas> | the favour of IORef is that it is easy to use when you already have IO. |
| 11:12:14 | → | gdd joins (~gdd@129.199.146.230) |
| 11:12:19 | <kuribas> | "StateT s IO" is redundant, also doesn't play well with exceptions. |
| 11:14:05 | → | vglfr joins (~vglfr@37.73.58.115) |
| 11:15:08 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 11:15:37 | <abastro[m]> | Oh this discussion came from OOP |
| 11:15:42 | × | vglfr quits (~vglfr@37.73.58.115) (Read error: Connection reset by peer) |
| 11:15:55 | → | vglfr joins (~vglfr@37.73.58.115) |
| 11:16:12 | <abastro[m]> | What is the reason you think that OOP is considered important for many? |
| 11:16:25 | <abastro[m]> | (For code structuring at large) |
| 11:17:08 | <kuribas> | who does? I don't think that... |
| 11:17:20 | <geekosaur> | I think a lot of it is that it's just what they learned. also that for many it was the first thing they encountered after C, with all its limitations |
| 11:17:24 | → | razetime joins (~quassel@117.254.34.132) |
| 11:17:40 | <geekosaur> | (or BASIC, with all *its* limitations) |
| 11:17:47 | <abastro[m]> | I mean, if you learn C and think for a while |
| 11:18:04 | <kuribas> | Well, I think the original ideas work well on larger levels. Like immutable message passing, hidden state, concurrency, etc... |
| 11:18:05 | <abastro[m]> | You would think that it would be cool to have encapsulating "classes" |
| 11:18:13 | <abastro[m]> | Which hides the local state. |
| 11:18:32 | <kuribas> | It just doesn't make sense to me to use message passing in order to "append a string", or "sum two numbers". |
| 11:19:22 | × | pottsy quits (~pottsy@2400:4050:b560:3700:fe0:b422:790d:35f6) (Ping timeout: 265 seconds) |
| 11:19:55 | <kuribas> | But having "ReaderT env IO" for large components involving state is fine IMO... |
| 11:19:59 | <kuribas> | No need for classes. |
| 11:20:00 | <abastro[m]> | Indeed, I hope no one does that either |
| 11:20:10 | <kuribas> | abastro[m]: smalltalk :) |
| 11:20:15 | <abastro[m]> | Wait does many ppl do that |
| 11:20:18 | <abastro[m]> | Oh |
| 11:20:20 | <abastro[m]> | I mean |
| 11:20:36 | <abastro[m]> | Smalltalk was a trial, so what about e.g. Java |
| 11:22:05 | <kuribas> | Most modern OO languages are just bastardisations. |
| 11:22:19 | <kuribas> | like C++, C#, java, ... |
| 11:22:33 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 252 seconds) |
| 11:24:03 | <kuribas> | At least smalltalk is conceptually consistent. |
| 11:24:36 | <abastro[m]> | They are so popular though, and used for designing real software |
| 11:26:46 | <kuribas> | that's not what I mean. They are bastardisations of the original OO principles. |
| 11:27:16 | <kuribas> | objective C is closer to them. |
| 11:27:49 | × | infinity0 quits (~infinity0@occupy.ecodis.net) (Remote host closed the connection) |
| 11:28:26 | → | infinity0 joins (~infinity0@occupy.ecodis.net) |
| 11:29:05 | <abastro[m]> | I mean, if we were to recognize what OOP is, we should focus on how it is used |
| 11:29:36 | <abastro[m]> | Btw I just found a material which grows my depression: https://www.quora.com/Why-didnt-Haskell-do-for-FP-what-Smalltalk-did-for-OOP?share=1 |
| 11:31:28 | <kuribas> | abastro[m]: yeah, for most people OOP is java, C#, or python |
| 11:31:30 | <Hecate> | damn |
| 11:31:34 | <Hecate> | I ain't reading this :D |
| 11:32:17 | <abastro[m]> | I wish I did not |
| 11:32:31 | <kuribas> | haskell is more like the common lisp of lazy functional languages. |
| 11:32:38 | <abastro[m]> | Tho I mean, they could have valid logic and they might be right |
| 11:33:22 | <kuribas> | haskell is not the only purely function language, but it is the canonical one. |
| 11:34:19 | <kuribas> | hehe: "Actually I made up the term "object-oriented ", and I can tell you I did not have C++ in mind. ~ Alan Kay" |
| 11:34:19 | <kuribas> | |
| 11:36:18 | <abastro[m]> | I mean yea, but academics do not always have things right |
| 11:36:35 | <kuribas> | for whatever "right" means. |
| 11:36:47 | × | vglfr quits (~vglfr@37.73.58.115) (Ping timeout: 260 seconds) |
| 11:36:49 | <kuribas> | But IMO academics is about exploring, not about "right". |
| 11:37:19 | <abastro[m]> | Yep |
| 11:37:30 | <abastro[m]> | Maybe Alan Key was wrong on what should be OOP |
| 11:38:18 | <geekosaur> | keep in mind, for an example of that, that Kay may have made up the term but SIMULA was arguably the first language with what isnow called OOP |
| 11:38:38 | → | dut joins (~dut@user/dut) |
| 11:39:10 | <kuribas> | I don't agree much with Alan Key, he is a bit of an ass by dismissing FP. |
| 11:41:35 | × | tiferrei quits (~tiferrei@user/tiferrei) (Ping timeout: 240 seconds) |
| 11:42:04 | <kuribas> | And I find the idea of comparing logical building blocks with biological cells a bit disingenious. |
| 11:42:21 | <kuribas> | cells are incredibly complex, perhaps more complex than a whole computer. |
| 11:42:44 | <kuribas> | The idea that you just make a computer language, and it "organically does the right thing", is very confused. |
| 11:42:47 | → | tiferrei joins (~tiferrei@user/tiferrei) |
| 11:42:59 | <kuribas> | Still people love the "origanical" analogy. |
| 11:43:19 | <geekosaur> | just cell walls are more complex than an entire computer, tbh |
| 11:45:53 | <abastro[m]> | We can scale down to individual proteins then.. wait |
| 11:46:56 | <[exa]> | depends on how you measure that, the complexity needed to keep the cells running is insanely astronomical, yet still you can't reasonably ask it for adding a few numbers together |
| 11:47:03 | <abastro[m]> | (IIRC proteins usually only do one signaling/one reaction and carries only simple states) |
| 11:49:16 | <[exa]> | haha no |
| 11:49:41 | <kuribas> | [exa]: can't brain cells? |
| 11:49:53 | <abastro[m]> | So that is better analogy for OOP then |
| 11:50:04 | <[exa]> | there's a bit of bias in that, the proteins are so insanely tiny and dodgy that people are nowadays happy that they have at least 1 kinda function for some |
| 11:50:12 | → | mbuf joins (~Shakthi@110.225.247.221) |
| 11:50:34 | <abastro[m]> | So OOP classes are like proteins |
| 11:51:16 | <[exa]> | while it is clear that the functionality is literally open, everything dynamically reacts to a very open set of tiny changes everywhere |
| 11:51:42 | <[exa]> | quantifying that with "internal" and "external" state is basically impossible |
| 11:51:43 | <abastro[m]> | Which still does fine job at operating a cell |
| 11:52:25 | × | mbuf quits (~Shakthi@110.225.247.221) (Remote host closed the connection) |
| 11:52:38 | <abastro[m]> | I mean, e.g. DNAs have a bit of encapsulation |
| 11:52:54 | <[exa]> | well |
| 11:53:03 | <[exa]> | you can monkeypatch it with whatever chemistry you want |
| 11:53:26 | <[exa]> | there's metagenomics, wild stuff that happens in non-coding sequences, ... |
| 11:54:24 | <abastro[m]> | Yea, still encapsulates and "passes messages" |
| 11:54:39 | <[exa]> | trying to make a correspondence to computer programs KINDA works because stuff really gets compiled somehow there, BUT people tend to underestimate the few billions of years of evolution that was randomly finding random solutions for random problems and encoding them in a random way to random places |
| 11:55:05 | <[exa]> | which is the main driving force of biology, not some kind of fun tangible transcriptions |
| 11:55:23 | <abastro[m]> | That's true. Though they also often assume that biological solution is great |
| 11:55:36 | <[exa]> | yeah it survived™ |
| 11:56:24 | <[exa]> | anyway sorry I just wanted to share my opinion on how the comparisons between life and computers are kinda off-scale |
| 11:56:40 | → | deadmarshal_ joins (~deadmarsh@95.38.113.36) |
| 11:57:21 | <[exa]> | btw re OOP, I found it useful to refer to actual OOP properties, a bit like message/agent-oriented programming and encapsulation-based programming, which are indeed 2 separate directions in OOP |
| 11:58:51 | <kuribas> | [exa]: wouldn't the agent need to be encapsulated? |
| 11:59:15 | <kuribas> | microservices is a bit look OOP, only in a clumsy way... |
| 11:59:44 | <abastro[m]> | Did JS have private fields in the past |
| 12:00:42 | <[exa]> | it's kinda more about the way you contain the complexity, imagine having a 10-stage data processing pipeline, and you can either represent it as wrapping 10 layers of "input chewing objects", or connecting 10 small objects together to send the messages |
| 12:01:32 | × | xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
| 12:01:44 | × | deadmarshal_ quits (~deadmarsh@95.38.113.36) (Ping timeout: 272 seconds) |
| 12:03:10 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 12:03:40 | → | xkuru joins (~xkuru@user/xkuru) |
| 12:07:47 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 12:08:22 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 12:09:46 | × | benin quits (~benin@183.82.24.110) (Quit: The Lounge - https://thelounge.chat) |
| 12:09:50 | <abastro[m]> | Anyway there should be a reason why OOP is popular and fairing well now |
| 12:09:55 | × | cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 260 seconds) |
| 12:11:17 | <abastro[m]> | No way so many ppl are misled and became evangelist on those |
| 12:11:27 | <geekosaur> | why? there may be no more reason than C becoming popular before OOP just because it wss more easily available than other languages |
| 12:12:37 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 12:14:36 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 12:15:48 | <abastro[m]> | I'd say, C is a single language, but OOP is a whole paradigm |
| 12:17:08 | <geekosaur> | is it, though? OOP looks a wholelot different in Java than it does in Python, which in turn is a whole lot different than C++, etc. |
| 12:18:43 | <geekosaur> | and even if you ignore that, there are at least two different OOP paradigms, represented by Smalltalk vs. SIMULA |
| 12:19:25 | <abastro[m]> | What is simula's oop |
| 12:19:31 | <geekosaur> | actor model |
| 12:20:12 | → | bahamas joins (~lucian@84.232.140.158) |
| 12:21:33 | <nomagno> | I don't see messages nor actors being used explicitly in any modern OOP language, honestly |
| 12:24:06 | <nomagno> | Method calls will always be messages no matter the surrounding context I guess |
| 12:24:59 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 12:26:31 | <abastro[m]> | Hmm, true |
| 12:26:39 | <geekosaur> | "message" is more a conceptual view. You can view even C/Algol style programming as "message passing" with a very restrictive view of how messages associate with classes/types (and this is even used practically; see gtk+) |
| 12:26:57 | <abastro[m]> | Method calls are somewhat unlike the image I get when I hear "message passing" |
| 12:27:08 | <abastro[m]> | Btw I dislike how I can even find OOP folks dismissing FP in a reply in Bartosz's blog |
| 12:27:22 | <geekosaur> | they're scared :) |
| 12:28:31 | <geekosaur> | [26 10:39:21] <kuribas> funny how functional idioms have been trinkling in other languages steadily. |
| 12:28:57 | <nomagno> | Not just idioms, many languages are solidly 25% functional at this point |
| 12:29:01 | <abastro[m]> | Scared? What do you mean |
| 12:30:11 | <geekosaur> | they're used to OOP think, but you have things like not-openly-called-monadic idioms trickling in to make exception handling easier, to use an earlier observation |
| 12:30:18 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 12:30:19 | <kuribas> | scared of the unknown likely. |
| 12:30:30 | <abastro[m]> | Hmm, makes sense |
| 12:30:33 | <geekosaur> | the rules are changing and of course people become scared when the rules start to change around them |
| 12:30:36 | <kuribas> | or that they have to relearn how to program. |
| 12:30:44 | <maerwald> | tomsmeding: https://imgur.com/YmMxtHE.png |
| 12:30:46 | <abastro[m]> | Though I wonder if the reaction is from scare |
| 12:31:02 | <geekosaur> | it'sa typical fear reaction |
| 12:31:14 | <abastro[m]> | Hmmm |
| 12:31:28 | <geekosaur> | pretty sure there's a chart from fear to acceptancemirroring the chart for grieving, somewhere |
| 12:31:47 | <abastro[m]> | Also OOP folks have successful upcoming languages like Go |
| 12:31:53 | <abastro[m]> | Wait is that more procedural |
| 12:31:57 | <nomagno> | I'm lowkey only good at purely procedural&imperative thinking, not going to lie |
| 12:32:01 | <nomagno> | Working on that |
| 12:33:42 | <abastro[m]> | Maybe perspectives depend on how to classify rust |
| 12:34:17 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 256 seconds) |
| 12:35:28 | <geekosaur> | "classification" is another partof the problem (and why you get fear reactions here) |
| 12:35:37 | <geekosaur> | people like to pigeonhole things |
| 12:36:08 | <geekosaur> | then the holes start to leak, like FP concepts leaking into OOP languages and cross-paradigm languages like Rust appearing |
| 12:37:54 | <nomagno> | Rust is procedural and imperative with functional and object-oriented constructs, but honestly not that many. |
| 12:38:29 | <nomagno> | I don't like whatever that borrow-checker paradigm they invented is supposed to be, at all |
| 12:39:04 | <nomagno> | I can't really read Rust code from most projects, it allows you to write abysmal code with its compiler guidance |
| 12:39:41 | <nomagno> | Every project I've seen has been architecturally clean but its implementations have been less than admirable |
| 12:39:45 | → | zincy_ joins (~zincy@host86-160-236-152.range86-160.btcentralplus.com) |
| 12:40:54 | <kuribas> | tbf, haskell allows you to write abysmal code. |
| 12:41:16 | <geekosaur> | "you can write fortran in any language" |
| 12:41:39 | <maerwald> | rust has overall lower readability, unless you're reading haskell type level code |
| 12:41:42 | <maerwald> | then haskell is worse |
| 12:41:57 | <nomagno> | Agreed there |
| 12:42:05 | <maerwald> | but it's not really a problem in rust |
| 12:42:20 | <maerwald> | it's just noisy and verbose, like C. You get used to it |
| 12:42:42 | <nomagno> | Strangely enough I can deal with C no problem |
| 12:43:09 | <nomagno> | But, like, I don't have a real interest in writing Rust, so it's tough getting up to speed enough to follow codebases around |
| 12:43:22 | <maerwald> | then invest your time in something else :D |
| 12:44:15 | → | benin joins (~benin@183.82.24.110) |
| 12:44:28 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 12:44:31 | <nomagno> | Fair. I should probably continue getting familiar with Scheme, else I'll just keep whining recursiveness is scary forever! |
| 12:46:15 | → | hololeap joins (~hololeap@user/hololeap) |
| 12:46:18 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
| 12:47:25 | → | bahamas joins (~lucian@84.232.140.158) |
| 12:48:13 | <abastro[m]> | Well I mean, many people would consider rust more readable than haskell with its mathematical abstractions |
| 12:49:14 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 12:49:27 | <maerwald> | it's for sure more pragmatic, although there were some forces pushing for more fancy features as well... I'm not following that closely anymore, but I'm guessing they left |
| 12:49:59 | <maerwald> | probably for the better |
| 12:50:31 | × | Everything quits (~Everythin@37.115.210.35) (Quit: leaving) |
| 12:50:33 | <maerwald> | I don't believe in language evolution |
| 12:51:13 | <abastro[m]> | I heard haskell got worse off due trying to integrate more features |
| 12:51:21 | <abastro[m]> | That and aggressive refactoring |
| 12:51:46 | <exarkun> | How would you measure something like "worse off" |
| 12:51:46 | <maerwald> | I just think you're better off desiging a new language than retro-fitting toys onto an existing one. There may be exceptions. |
| 12:51:48 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 240 seconds) |
| 12:52:02 | <exarkun> | And after you did, how would you attribute changes to a cause like "trying to integrate more features" |
| 12:52:26 | <maerwald> | But when you add stuff to anything, you're usually not considering the entirety of the design-space, but that tiny space that's open due to historical implementation decisions |
| 12:52:33 | <maerwald> | how can that lead to something better? I don't know |
| 12:52:37 | <abastro[m]> | Well I am not arguing for it, just that many people did think it was one of the biggest problems |
| 12:53:05 | <abastro[m]> | Many I met argued that haskell is not a worthy language except for lab settings because it changes too frequently |
| 12:53:15 | → | geekosaur joins (~geekosaur@xmonad/geekosaur) |
| 12:53:16 | <maerwald> | I can sympathize |
| 12:53:36 | <maerwald> | I just use older compilers :D |
| 12:53:53 | <abastro[m]> | Hugs? |
| 12:54:04 | <maerwald> | ghc 8.10.7 |
| 12:55:37 | <abastro[m]> | How is 8.10.7 "Old" |
| 12:55:49 | <maerwald> | 9.4 is coming soon, 9.6 is already planned |
| 12:56:16 | <abastro[m]> | I mean, I found that even HLS does not work well on 9.0+ |
| 12:56:20 | <abastro[m]> | For now* |
| 12:56:25 | <maerwald> | yeah, I don't bother either atm |
| 12:56:30 | <maerwald> | but M1 users have to |
| 12:56:40 | <maerwald> | because 8.10.7 doesn't get the native codegen |
| 12:56:50 | <abastro[m]> | Usually the argument is that haskell as language has changed too much in 10 years |
| 12:57:18 | <abastro[m]> | They(I guess enterprise ppl) say it is not production ready if it cannot compile a program from 10 years ago |
| 12:58:00 | <maerwald> | there is https://github.com/haskellfoundation/stability |
| 12:59:55 | <abastro[m]> | Yep, it is a great step forward |
| 13:03:02 | × | zincy_ quits (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection) |
| 13:06:41 | × | bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 13:09:12 | <abastro[m]> | Hm I still did not find a `Monoid` which can do: |
| 13:09:12 | <abastro[m]> | `[a, a, a, b, b, a, c, b]` => `[(a, 3), (b, 2), (a, 1), (c, 1), (b, 1)]` |
| 13:11:35 | <abastro[m]> | Or well, I should better say, summarizing it as `((a, 3), 2 = max[2,1,1], (b, 1))` |
| 13:12:42 | <geekosaur> | I'm missing why you would want a Monoid? (off the top of my head I don't see what mempty would be, unless the first element of the tuple is a Maybe) |
| 13:12:54 | <geekosaur> | and it just looks like `group` to me |
| 13:13:24 | <abastro[m]> | Yep, it is a group but I want a monoid for a reason |
| 13:14:02 | <abastro[m]> | Basically, I want to built up the tree for the monoid calculation |
| 13:14:26 | <abastro[m]> | Then change one leaf, which triggers update of the result in O(log n) |
| 13:17:53 | × | namkeleser quits (~namkelese@101.175.155.55) (Quit: Client closed) |
| 13:24:12 | <abastro[m]> | I got it nearly done, but I am struggling to make this datatype: |
| 13:24:38 | <abastro[m]> | One representing `(a, numberOfOccurrence)` |
| 13:24:57 | <abastro[m]> | Along with nil-like one for 0 occurrence |
| 13:26:39 | × | zincy quits (~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Remote host closed the connection) |
| 13:30:11 | → | bahamas joins (~lucian@84.232.140.158) |
| 13:32:40 | × | tiferrei quits (~tiferrei@user/tiferrei) (Remote host closed the connection) |
| 13:32:40 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 13:32:40 | × | wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection) |
| 13:32:40 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 13:32:40 | × | stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 13:32:40 | × | ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
| 13:32:55 | → | tiferrei joins (~tiferrei@user/tiferrei) |
| 13:32:55 | → | wyrd joins (~wyrd@gateway/tor-sasl/wyrd) |
| 13:33:02 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 13:33:03 | → | stiell joins (~stiell@gateway/tor-sasl/stiell) |
| 13:34:07 | → | hololeap joins (~hololeap@user/hololeap) |
| 13:34:55 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 256 seconds) |
| 13:35:12 | → | ChaiTRex joins (~ChaiTRex@user/chaitrex) |
| 13:38:09 | × | zeenk quits (~zeenk@2a02:2f04:a110:7d00:2011:cfed:bad7:3c94) (Quit: Konversation terminated!) |
| 13:38:33 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 13:40:48 | ← | rtpg parts (sid443069@id-443069.ilkley.irccloud.com) (Konversation terminated!) |
| 13:41:48 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 272 seconds) |
| 13:41:57 | × | razetime quits (~quassel@117.254.34.132) (Read error: Connection reset by peer) |
| 13:45:57 | × | dsrt^ quits (~dsrt@96-91-136-49-static.hfc.comcastbusiness.net) (Remote host closed the connection) |
| 13:49:44 | × | dextaa_ quits (~dextaa@user/dextaa) (Remote host closed the connection) |
| 13:56:24 | × | kuribas quits (~user@ptr-25vy0i9dlr6d4pgg05u.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 14:02:41 | × | Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds) |
| 14:09:03 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 14:13:48 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 14:18:37 | → | Maxdamantus joins (~Maxdamant@user/maxdamantus) |
| 14:21:47 | → | mikoto-chan joins (~mikoto-ch@213.177.151.239) |
| 14:24:37 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 240 seconds) |
| 14:32:25 | × | MironZ quits (~MironZ@nat-infra.ehlab.uk) (Quit: The Lounge - https://thelounge.chat) |
| 14:33:55 | → | MironZ joins (~MironZ@nat-infra.ehlab.uk) |
| 14:39:00 | × | pranshukhandal quits (pranshukha@envs.net) (Quit: the lounge - https://webirc.envs.net) |
| 14:39:00 | × | sus quits (zero@user/zeromomentum) (Quit: the lounge - https://webirc.envs.net) |
| 14:39:26 | → | pranshukhandal joins (pranshukha@envs.net) |
| 14:39:34 | → | sus joins (zero@user/zeromomentum) |
| 14:43:16 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 14:43:59 | → | zmt01 joins (~zmt00@user/zmt00) |
| 14:44:36 | × | zmt00 quits (~zmt00@user/zmt00) (Ping timeout: 240 seconds) |
| 14:44:52 | <seydar> | I'm trying to translate `(++) <$> Just "john" <*> Just "travolta"` into fmaps, but I'm really struggling. I can come up with `let a = fmap (++) (Just "john"); fmap a (Just "travolta")` but -- and this may shock you -- it doesn't work. What am I missing/misphrasing in my fmap construction? |
| 14:45:04 | → | bahamas joins (~lucian@84.232.140.158) |
| 14:45:13 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 14:46:46 | <[exa]> | seydar: you need Applicatives to be able to actually combine the functor-ish "wrappers", just Functor is not sufficient to do this |
| 14:46:47 | <seydar> | As per usual, now that I typed out my question into IRC, I think what I'm seeing is that I *can't* rewrite it with fmaps |
| 14:47:26 | <seydar> | [exa]: and it's because I don't have access to the real component of `Just`, right? I'd have to be inside a function definition for that |
| 14:48:05 | <seydar> | a :: Maybe ([Char] -> [Char]), thus it's not a candidate for the supplied function in fmap |
| 14:48:11 | <[exa]> | not sure what does "access to the real component" mean but it might make sense |
| 14:48:17 | <abastro[m]> | Hm, this is a bit hard to explain I think |
| 14:48:37 | <seydar> | [exa]: what's the term for the `x` part of `Just x`? |
| 14:48:40 | <[exa]> | it's nice to have a look at the types of map/fmap/<*>/>>= aligned next to each other, the intuition of what each of these can do is then pretty clean |
| 14:48:49 | <[exa]> | lemme google |
| 14:49:00 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 14:49:17 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 240 seconds) |
| 14:49:40 | <abastro[m]> | But yeah you can only deal with single `f a` with fmap, you cannot combine `f a` and `f b` and get some `f (a, b)` or something |
| 14:49:55 | → | alp joins (~alp@user/alp) |
| 14:51:21 | <seydar> | thank you [exa], abastro[m] |
| 14:51:25 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds) |
| 14:51:51 | × | n3t quits (~n3t@s45.mydevil.net) (Changing host) |
| 14:51:51 | → | n3t joins (~n3t@user/n3t) |
| 14:53:16 | <[exa]> | seydar: https://paste.tomsmeding.com/9UMQd1Un I failed to google this so pastebinned |
| 14:53:25 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 14:53:49 | <[exa]> | btw the first Monad should be `Monad f`, whoops. |
| 14:56:10 | <[exa]> | seydar: a fun little exercise is to see how the <*> and >>= are convertible to/from liftA2 and join, using fmap |
| 14:57:08 | <seydar> | oh boy, i'm just getting into liftA2 now -- i'll give it a shot |
| 14:58:23 | <seydar> | [exa]: wait, that's exactly what I was trying to do with converting (++) <$> Just "a" <*> Just "b" to fmap. I thought it couldn't be done? |
| 14:58:42 | <seydar> | (since lifta2 is just f <$> a <*>) |
| 14:58:46 | <seydar> | (since lifta2 is just f <$> a <*> b)8 |
| 14:58:55 | <[exa]> | you can do it ofcourse, but just `fmap` isn't sufficient. You need applicative tools to be able to combine the 2 Justs |
| 14:58:56 | <seydar> | god dammit i'm not correcting my correction any further |
| 14:59:05 | <seydar> | hm okay, i'll dig in |
| 14:59:38 | <[exa]> | or you basically need to somehow reimplement the applicative yourself by patternmatching |
| 14:59:46 | <[exa]> | which was not the task I guess. :D |
| 15:00:17 | <seydar> | [exa]: yeah, i think the pattern-matching part was what I needed |
| 15:00:50 | <seydar> | now that I'm actually trying to implement liftA2 in terms of fmap, it actually feels... easy? I'm prolly doing it wrong. stand by for pastebin |
| 15:01:52 | <seydar> | ah. not so easy. running into the same issue as last time, where now my partially-applied function is wrapped in a functor |
| 15:02:39 | <[exa]> | yap, you will eventually need to patternmatch on the 2 Maybes manually to be able to decide what to do with them |
| 15:02:40 | <geekosaur> | right, you just hit the part that requires Applicative. liftA (or liftA1 if you like) is just fmap, but the higher ones need Applicative |
| 15:03:43 | <seydar> | [exa]: and my implementation will be specific to the Maybe monad, right? I won't be able to generalize my implementation of liftA2 in terms of fmap? |
| 15:03:49 | → | pavonia joins (~user@user/siracusa) |
| 15:04:09 | <seydar> | I'm guessing it's cheating to use `lift` in my definition of `liftA2` a la fmap? |
| 15:04:25 | <[exa]> | yes, liftA2 literally can't be implemented in terms of fmap without either cheating or losing polymorphism |
| 15:05:05 | <seydar> | "implement liftA2 in terms of fmap, they said. it'll be fun, they said" |
| 15:05:25 | <geekosaur> | well, you'll certainly learn something,just not what you might have expected |
| 15:05:44 | <[exa]> | like, there's a theoretical reason why functor is a superclass of applicative, which is a superclass of monad :] |
| 15:06:25 | <[exa]> | technically, you may kinda look at this (esp. with simpler types like Maybe) as abstracting common kinds of patternmatches |
| 15:07:19 | <[exa]> | Functor gives you a way to "pattermatch" { f (Just a) = doSomething a; f Nothing = Nothing }, only a single Maybe gets in there |
| 15:07:41 | <[exa]> | Applicative does the patternmatch over 2 Maybes, like {f (Just a) (Just b) = ....} |
| 15:08:04 | → | bahamas joins (~lucian@84.232.140.158) |
| 15:08:05 | <[exa]> | Monad patternmatches {f (Just (Just a)) = .....; ...} |
| 15:09:22 | <[exa]> | (for the record, I forgot a Just$ in the functor part, before doSomething, but I hope the point is still visible) |
| 15:10:19 | <seydar> | https://paste.tomsmeding.com/FwoTYOui |
| 15:10:54 | <seydar> | i'm close, but my pattern-matching is inexhaustive (`liftA2' (:) (Just 3) (Just [4])` is my test case) |
| 15:11:42 | → | vglfr joins (~vglfr@37.73.58.115) |
| 15:12:16 | → | Topsi joins (~Tobias@dyndsl-095-033-022-251.ewe-ip-backbone.de) |
| 15:15:55 | × | tubogram4 quits (~tubogram@user/tubogram) (Quit: See ya later!) |
| 15:17:31 | <Franciman> | are you using adjoint functors in haskell? |
| 15:17:37 | <Franciman> | if so, i'd like to watch them happen |
| 15:18:23 | × | vglfr quits (~vglfr@37.73.58.115) (Ping timeout: 256 seconds) |
| 15:19:36 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
| 15:20:10 | → | tubogram4 joins (~tubogram@user/tubogram) |
| 15:23:30 | <maerwald[m]> | Franciman: sup |
| 15:23:56 | <Franciman> | ohy maerwald[m] |
| 15:25:01 | → | vysn joins (~vysn@user/vysn) |
| 15:27:22 | <seydar> | Franciman: what are adjoint functors and how can i try to use them in a way that will be entertaining? |
| 15:28:41 | <Franciman> | seydar: i was asking exactly to know the answer to your latter question |
| 15:29:08 | <Franciman> | as per the former https://en.wikipedia.org/wiki/Adjoint_functors |
| 15:33:14 | → | deadmarshal_ joins (~deadmarsh@95.38.113.36) |
| 15:33:23 | × | wolfshappen quits (~waff@irc.furworks.de) (Quit: later) |
| 15:37:04 | → | wolfshappen joins (~waff@irc.furworks.de) |
| 15:39:00 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 240 seconds) |
| 15:39:16 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 15:43:24 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 15:46:22 | × | cdman quits (~dcm@user/dmc/x-4369397) (Quit: Leaving) |
| 15:47:15 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 15:51:57 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 15:53:29 | <juri_> | how alive is data parallel haskell? |
| 15:54:21 | → | Pickchea joins (~private@user/pickchea) |
| 15:55:04 | → | Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net) |
| 15:55:08 | <geekosaur> | dead and removed from recent ghcs, iirc |
| 15:56:10 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Quit: leaving) |
| 15:56:20 | <juri_> | ah, thanks. |
| 15:58:32 | <geekosaur> | if I recall the ghc side of things correctly, potentially it could go back in, but someone would have to commit to supporting it. as things were, it was getting in the way of maintaining ghc and nobody who understood it was supporting it |
| 15:59:07 | <juri_> | not-it. i'd rather have the Herbie GHC plugin back. |
| 15:59:33 | <abastro[m]> | What is data parallel haskell? |
| 15:59:52 | → | eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
| 16:02:39 | <geekosaur> | https://wiki.haskell.org/GHC/Data_Parallel_Haskell |
| 16:03:14 | <geekosaur> | you have to use ghc7.x to get it |
| 16:12:27 | → | FragByte_ joins (~christian@user/fragbyte) |
| 16:14:41 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 16:15:01 | × | FragByte quits (~christian@user/fragbyte) (Ping timeout: 240 seconds) |
| 16:15:01 | FragByte_ | is now known as FragByte |
| 16:15:04 | → | boxscape_ joins (~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) |
| 16:17:21 | → | troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua) |
| 16:19:30 | × | mon_aaraj quits (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds) |
| 16:20:49 | → | mon_aaraj joins (~MonAaraj@user/mon-aaraj/x-4416475) |
| 16:31:20 | <sm> | g'day all. Can cabal build show just a count of packages remaining, without all the logging - like stack build --verbosity error ? |
| 16:33:52 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 16:35:58 | → | nicbk joins (~nicbk@user/nicbk) |
| 16:36:08 | → | notzmv joins (~zmv@user/notzmv) |
| 16:36:12 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 240 seconds) |
| 16:41:41 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection) |
| 16:48:08 | × | mikoto-chan quits (~mikoto-ch@213.177.151.239) (Quit: mikoto-chan) |
| 16:48:22 | → | mikoto-chan joins (~mikoto-ch@213.177.151.239) |
| 16:50:33 | → | razetime joins (~quassel@117.254.34.132) |
| 16:51:58 | × | razetime quits (~quassel@117.254.34.132) (Client Quit) |
| 16:52:14 | → | rustacean joins (~quassel@117.254.34.132) |
| 16:52:50 | <rustacean> | hello |
| 16:53:17 | <[exa]> | o/ |
| 16:53:21 | <rustacean> | are there any guides on obfuscated haskell? |
| 16:53:36 | <maerwald> | is that a dialect? |
| 16:53:44 | <Franciman> | one could argue that regular haskell is already well obfuscated |
| 16:53:47 | <[exa]> | like obfusacted C? |
| 16:53:48 | <Franciman> | but i won't argue that |
| 16:53:58 | → | econo joins (uid147250@user/econo) |
| 16:54:16 | <rustacean> | yes, akin to obfuscated C |
| 16:54:39 | <rustacean> | like defining map as (<$>((:[])<$>))(=<<) |
| 16:56:15 | <[exa]> | I don't recall anyone spending much time publicly with that, but ofcourse you can complicate anything to any level of complexity you want (cf. SK calculus & lambda equivalence) |
| 16:56:39 | × | _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Quit: No Ping reply in 180 seconds.) |
| 16:56:43 | <Franciman> | looks regular haskell to me, rustacean |
| 16:57:11 | <rustacean> | well then i would like some help with regular haskell then |
| 16:57:34 | <[exa]> | Franciman: "resembles a tribal totem from 90deg angle" is now regular haskell :] |
| 16:57:41 | <Franciman> | ^^ |
| 16:57:55 | → | _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl) |
| 16:58:34 | <rustacean> | i'd like to define foldl in a manner similar to this but i don't exactly understand the tribal totem myself |
| 16:59:16 | <Franciman> | an obfuscated foldl i saw is defining foldl in terms of foldr |
| 16:59:21 | <rustacean> | or reverse |
| 16:59:23 | <Franciman> | but it is not as obfuscated as your example |
| 16:59:26 | <rustacean> | interesting! |
| 16:59:42 | <[exa]> | rustacean: the expression you have there is an ugly mess of tricks but you can see that the parts make sense, for example (:[]) is basically "make a singleton list", then there's 2 fmaps (aka <$>) that apparently apply it to the list making a (I'd say) kinda list of lists, and (=<<) may at that point be used as a concat |
| 16:59:44 | × | zaquest quits (~notzaques@5.130.79.72) (Remote host closed the connection) |
| 17:00:07 | <[exa]> | (because >>= for lists is concatMap) |
| 17:00:24 | <rustacean> | indeed, what i'm wondering is how the recursion happens there |
| 17:00:48 | <[exa]> | rustacean: it's in the fmaps and =<< |
| 17:00:55 | × | nicbk quits (~nicbk@user/nicbk) (Ping timeout: 240 seconds) |
| 17:01:03 | <Franciman> | iiuc the idea is to create a singleton for each element of the initial list |
| 17:01:06 | <[exa]> | highly recommend to take the expression apart and check types of stuff, it helps a lot |
| 17:01:12 | <Franciman> | then you use concatMap |
| 17:01:21 | <Franciman> | to apply your function to each singleton and finally concat them |
| 17:01:28 | <Franciman> | +1 [exa] |
| 17:01:29 | <[exa]> | :t ((:[])<$>) -- for example, rustacean |
| 17:01:30 | <lambdabot> | Functor f => f a -> f [a] |
| 17:01:44 | → | zaquest joins (~notzaques@5.130.79.72) |
| 17:01:59 | <rustacean> | i see |
| 17:02:16 | <[exa]> | and yeah the obvious trickery everywhere are the operator sections, (whatever <$>) is basically (\x -> whatever <$> x) |
| 17:05:02 | <Franciman> | rustacean: http://wiki.haskell.org/Foldl_as_foldr |
| 17:05:18 | <Franciman> | not sure it's what you want, but it is tricky |
| 17:06:20 | <[exa]> | rustacean: ah one extra trick, the first `<$>` there actually works on functions, not lists |
| 17:06:27 | <rustacean> | it is tricky, and funnier in pointfree |
| 17:06:51 | <[exa]> | rustacean: easiest way to guess subexpression types btw is to use holes, try this in ghci: |
| 17:06:51 | <Franciman> | point free can be nicely obfuscating |
| 17:06:54 | <[exa]> | :t (\x -> (fmap::_) x ((:[])<$>))(=<<) |
| 17:06:55 | <lambdabot> | (a -> b) -> [a] -> [b] |
| 17:07:01 | <Franciman> | also contiunations |
| 17:07:06 | × | orcus quits (~orcus@user/brprice) (Quit: ZNC 1.8.2 - https://znc.in) |
| 17:07:06 | × | dispater quits (~dispater@user/brprice) (Quit: ZNC 1.8.2 - https://znc.in) |
| 17:07:13 | <[exa]> | (it would also report how `fmap` specializes) |
| 17:08:14 | <rustacean> | "To use the inferred type, enable PartialTypeSignatures" it says |
| 17:08:23 | <geekosaur> | :t (\x -> ?fmap x ((:[])<$>))(=<<) -- another way to do it |
| 17:08:25 | <lambdabot> | (?fmap::((a1 -> m b) -> m a1 -> m b) -> (f a2 -> f [a2]) -> t, Monad m, Functor f) => t |
| 17:08:37 | <geekosaur> | but it reports a more general type |
| 17:08:46 | → | dispater joins (~dispater@user/brprice) |
| 17:08:49 | <[exa]> | rustacean: there should be "Found type wildcard `_` standing for: ...." |
| 17:09:16 | <rustacean> | standing for ‘(a1 -> b1) -> ((a -> b) -> a1) -> (a -> b) -> b1’ ah ok |
| 17:09:17 | → | orcus joins (~orcus@user/brprice) |
| 17:11:06 | <[exa]> | rustacean: which is the fmap instance for `Functor ((->) (a -> b))` |
| 17:12:52 | <[exa]> | spoiler: fmap for functions is equivalent to (.), so your totem simplifies to: (.((:[])<$>))(=<<) |
| 17:15:07 | × | zyklotomic quits (~ethan@res380d-128-61-81-155.res.gatech.edu) (Ping timeout: 260 seconds) |
| 17:15:45 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 17:17:11 | → | zyklotomic joins (~ethan@res388d-128-61-91-192.res.gatech.edu) |
| 17:18:31 | <[exa]> | rustacean: just following the typing rules and definitory substitutions, you'd eventually get to something like `totem fn = concatMap $ ((:[]) . fn)`, at which point it's a bit easier to see that the concat + (:[]) kinda cancels out, leaving just `map fn` |
| 17:19:07 | <[exa]> | a good topic for a long ghci adventure tho. |
| 17:19:30 | <rustacean> | my shallow haskell knowledge is still quivering at this |
| 17:22:25 | → | rond_ joins (~rond_@90.254.208.190) |
| 17:23:02 | → | fendor__ joins (~fendor@91.141.65.26.wireless.dyn.drei.com) |
| 17:23:45 | ← | jakalx parts (~jakalx@base.jakalx.net) (Error from remote client) |
| 17:25:51 | × | fendor_ quits (~fendor@91.141.68.132.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
| 17:26:16 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 17:28:57 | × | Pickchea quits (~private@user/pickchea) (Ping timeout: 256 seconds) |
| 17:32:59 | <[exa]> | rustacean: writing obfuscated and hard-to-parse code should be avoided anyway, so I wouldn't worry. :D |
| 17:33:31 | <rustacean> | yeah indeed, the book i'm reading is called "Real world haskell" |
| 17:34:00 | → | weekOldRoadkill joins (~weekOldRo@pool-108-50-225-254.nwrknj.fios.verizon.net) |
| 17:34:04 | <rustacean> | but i am doing this as a one-off thing and i want to do it right (and maybe learn some forbidden knowledge along the way) |
| 17:37:52 | → | bahamas joins (~lucian@84.232.140.158) |
| 17:38:49 | <Sqaure> | What would be using thing this GADT approach to create traceable evaluation expressions? Is there some obvious case in which it will break down? https://paste.tomsmeding.com/zlPScFMe |
| 17:39:10 | <Sqaure> | What would be BAD* |
| 17:45:42 | → | pnotequalnp joins (~kevin@user/pnotequalnp) |
| 17:50:42 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 17:52:02 | fendor__ | is now known as fendor |
| 18:06:15 | × | alp quits (~alp@user/alp) (Ping timeout: 252 seconds) |
| 18:07:44 | × | ix quits (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Quit: WeeChat 3.4) |
| 18:07:54 | → | ix joins (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
| 18:09:26 | × | rond_ quits (~rond_@90.254.208.190) (Quit: Client closed) |
| 18:09:43 | × | rustacean quits (~quassel@117.254.34.132) (Ping timeout: 260 seconds) |
| 18:12:28 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 18:14:45 | → | Enrico63 joins (~Enrico63@81.109.143.226) |
| 18:15:00 | → | fef joins (~thedawn@user/thedawn) |
| 18:16:37 | × | _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
| 18:19:26 | → | _ht joins (~quassel@231-169-21-31.ftth.glasoperator.nl) |
| 18:19:49 | × | Enrico63 quits (~Enrico63@81.109.143.226) (Quit: Client closed) |
| 18:29:01 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 18:33:08 | × | deadmarshal_ quits (~deadmarsh@95.38.113.36) (Ping timeout: 272 seconds) |
| 18:34:09 | → | seydar joins (~seydar@154-27-113-252.starry-inc.net) |
| 18:35:34 | <seydar> | I'm implementing lift2A in fmap for Maybe, but I'm getting a non-exhaustive pattern error. I think I'm missing something obvious: https://paste.tomsmeding.com/rK4RurLY |
| 18:35:55 | → | epolanski joins (uid312403@id-312403.helmsley.irccloud.com) |
| 18:38:22 | <[exa]> | :t \ f a (Just x) -> fmap (flip x) (fmap f a) -- seydar: does the type of this match expectations? |
| 18:38:23 | <lambdabot> | Functor f => (a1 -> b) -> f a1 -> Maybe (a2 -> b -> c) -> f (a2 -> c) |
| 18:41:52 | × | ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
| 18:41:59 | <seydar> | [exa]: hm i guess not |
| 18:42:12 | → | ProfSimm joins (~ProfSimm@87.227.196.109) |
| 18:42:33 | <[exa]> | the (fmap f a) is okay imo |
| 18:42:51 | <[exa]> | gets you a `Maybe (b->c)` |
| 18:43:12 | <[exa]> | you just need to throw the `x` to that function inside of Maybe |
| 18:43:30 | <[exa]> | one nice hint how to do that: |
| 18:43:41 | <[exa]> | > ($ 5) (1+) |
| 18:43:42 | <lambdabot> | 6 |
| 18:43:51 | <seydar> | [exa]: but then doesn't x get used twice? |
| 18:43:59 | <[exa]> | (translates to (1+) $ 5 which is (1+) 5 etc |
| 18:44:01 | <seydar> | wait i think i misunderstand |
| 18:44:25 | <[exa]> | seydar: no the `flip x` doesn't make much sense there because you can't assume that `x` is a function |
| 18:44:48 | → | califax joins (~califax@user/califx) |
| 18:44:50 | <seydar> | oh, i thought that was the point -- i was assuming x wasn't a function |
| 18:45:28 | <[exa]> | `x` in your case is literally just of type `b`, you can't do anything with it except for throwing it into `f` as a second argument |
| 18:46:48 | <[exa]> | :t liftA2 -- just to be sure that we know what we're aiming at |
| 18:46:49 | <lambdabot> | Applicative f => (a -> b -> c) -> f a -> f b -> f c |
| 18:47:36 | <seydar> | do i have my arguments backwards? |
| 18:48:28 | <[exa]> | no I guess they are okay, in fact just the (flip x) does a bit different flip than what you want |
| 18:50:36 | <[exa]> | (see the hint with $ above) |
| 18:50:45 | <seydar> | i'm having trouble understanding why flip isn't right: ((:) 3) [4] seems to be correct to me, but `flip [4] ((:) 3)` fails for me |
| 18:51:14 | <[exa]> | continuing on what I posted before: |
| 18:51:31 | <[exa]> | > ($ [4]) ((:) 3) |
| 18:51:33 | <lambdabot> | [3,4] |
| 18:51:35 | <seydar> | so switching (flip x) to ($ x) works, but i don't understand why |
| 18:51:53 | <[exa]> | let's follow the types: |
| 18:52:01 | × | weekOldRoadkill quits (~weekOldRo@pool-108-50-225-254.nwrknj.fios.verizon.net) (Quit: Leaving) |
| 18:52:02 | <seydar> | ah well it appears i'm an idiot |
| 18:52:07 | <[exa]> | :t \f a (Just x) -> fmap f a |
| 18:52:08 | <lambdabot> | Functor f => (a1 -> b) -> f a1 -> Maybe a2 -> f b |
| 18:52:10 | <seydar> | flip is simply not the right function |
| 18:52:15 | <seydar> | because of the types, as you said |
| 18:52:20 | <seydar> | :t flip |
| 18:52:20 | <lambdabot> | (a -> b -> c) -> b -> a -> c |
| 18:52:40 | <[exa]> | nah, the many kinds of flips are surprising |
| 18:52:49 | <seydar> | :t ($) |
| 18:52:50 | <lambdabot> | (a -> b) -> a -> b |
| 18:52:55 | × | justOkay quits (~justache@user/justache) (Read error: Connection reset by peer) |
| 18:53:07 | <[exa]> | the magic goes with the operator section there which kinda flips it for yourself |
| 18:53:13 | <[exa]> | :t \x -> ($x) |
| 18:53:14 | <lambdabot> | a -> (a -> b) -> b |
| 18:53:56 | → | justOkay joins (~justache@user/justache) |
| 18:54:14 | <[exa]> | @pl \x f -> f x |
| 18:54:14 | <lambdabot> | flip id |
| 18:54:24 | <[exa]> | tada |
| 18:55:01 | × | Igloo quits (~ian@matrix.chaos.earth.li) (Ping timeout: 250 seconds) |
| 18:56:00 | → | Igloo joins (~ian@matrix.chaos.earth.li) |
| 18:57:08 | <[exa]> | anyway, the other way would be to do it in one `fmap`, you can flip your `f` so that it accepts `x` as the first argument, and then it's easy |
| 19:00:34 | <[exa]> | > (`elem` [1,2,3]) 5 -- extra codegolfing hint |
| 19:00:36 | <lambdabot> | False |
| 19:05:10 | × | euandreh quits (~euandreh@2804:14c:33:9fe5:4042:4584:26e0:bc36) (Quit: WeeChat 3.4.1) |
| 19:09:02 | → | euandreh joins (~euandreh@2804:14c:33:9fe5:a3d9:5253:a1a8:660f) |
| 19:10:52 | <seydar> | [exa]: beautiful trick, i should try that |
| 19:11:13 | <seydar> | i guess i'm still confused about why my error was "non-exhaustive pattern matching" when i feel like it should've been a type mismatch |
| 19:11:33 | <seydar> | (flip id x) works |
| 19:11:52 | <seydar> | same with (`id` x) |
| 19:12:20 | <seydar> | thank you [exa]! this has been super informative and i like the tricks i've learned! |
| 19:15:02 | × | jespada quits (~jespada@cpc121022-nmal24-2-0-cust171.19-2.cable.virginm.net) (Ping timeout: 240 seconds) |
| 19:16:44 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 19:17:33 | <[exa]> | seydar: np, it's actually from a pretty common bag of tricks that I don't know if it's written down somewhere |
| 19:19:11 | → | jespada joins (~jespada@cpc121022-nmal24-2-0-cust171.19-2.cable.virginm.net) |
| 19:19:27 | <[exa]> | as an extra useful truth btw, it's good to notice that in this context `($)` is the same as `id` (in fact `($) = id` is a valid definition, though a bit too overly polymorphic) |
| 19:21:18 | <seydar> | oh wow |
| 19:23:25 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 19:23:39 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 19:23:47 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 19:27:00 | × | waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds) |
| 19:27:43 | → | Pickchea joins (~private@user/pickchea) |
| 19:36:01 | → | alp joins (~alp@user/alp) |
| 19:37:55 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
| 19:38:57 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 19:39:10 | → | califax joins (~califax@user/califx) |
| 19:39:17 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 240 seconds) |
| 19:40:56 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 19:41:37 | → | acidjnk joins (~acidjnk@p200300d0c7049f68c1d0bc0d753b520f.dip0.t-ipconnect.de) |
| 19:45:39 | × | seydar quits (~seydar@154-27-113-252.starry-inc.net) (Quit: leaving) |
| 19:45:49 | × | acidjnk quits (~acidjnk@p200300d0c7049f68c1d0bc0d753b520f.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 19:46:33 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 19:47:55 | × | fef quits (~thedawn@user/thedawn) (Ping timeout: 240 seconds) |
| 19:48:36 | → | Jeanne-Kamikaze joins (~Jeanne-Ka@142.147.89.247) |
| 19:48:36 | × | Jeanne-Kamikaze quits (~Jeanne-Ka@142.147.89.247) (Client Quit) |
| 19:53:54 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 19:58:38 | × | boxscape_ quits (~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Ping timeout: 272 seconds) |
| 20:11:01 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds) |
| 20:12:03 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 20:15:46 | → | simendsjo joins (~user@84.211.91.241) |
| 20:21:24 | → | ShalokShalom joins (~ShalokSha@2a02:1748:dd5e:7f60:b02d:5b89:5217:758a) |
| 20:21:26 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds) |
| 20:22:48 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 20:23:38 | → | bahamas joins (~lucian@84.232.140.158) |
| 20:25:29 | <sm> | would anyone feel like updating base64 for ghc 9.2 ? Possibly a small fix: https://github.com/emilypi/base64/issues/40 |
| 20:26:13 | <sm> | I suspect it will unlock a bunch of stuff in stackage nightly |
| 20:27:38 | <tomsmeding> | maerwald: awesome work! Sorry for nonresponsiveness, will have a look tonight and perhaps tomorrow if I don't make it all |
| 20:28:19 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 20:28:38 | <maerwald> | sm: that is already fixed in master |
| 20:29:07 | <sm> | oh, thanks, I didn't realise |
| 20:29:40 | × | bahamas quits (~lucian@84.232.140.158) (Ping timeout: 272 seconds) |
| 20:30:15 | <sm> | what's Emily |
| 20:30:21 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 252 seconds) |
| 20:30:24 | <sm> | 's nick, I wonder |
| 20:31:11 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 20:31:11 | × | tiferrei quits (~tiferrei@user/tiferrei) (Remote host closed the connection) |
| 20:31:25 | → | tiferrei joins (~tiferrei@user/tiferrei) |
| 20:32:37 | → | hololeap joins (~hololeap@user/hololeap) |
| 20:33:29 | → | mohy joins (~mohy@85-207-122-4.static.bluetone.cz) |
| 20:33:58 | × | mohy quits (~mohy@85-207-122-4.static.bluetone.cz) (Client Quit) |
| 20:34:11 | → | mohy joins (~mohy@85-207-122-4.static.bluetone.cz) |
| 20:35:57 | × | simendsjo quits (~user@84.211.91.241) (Ping timeout: 256 seconds) |
| 20:38:16 | × | alp quits (~alp@user/alp) (Ping timeout: 245 seconds) |
| 20:38:52 | × | ShalokShalom quits (~ShalokSha@2a02:1748:dd5e:7f60:b02d:5b89:5217:758a) (Quit: Client closed) |
| 20:44:15 | <janus> | sm: try /whois tapas |
| 20:44:44 | <sm> | thanks! |
| 20:47:04 | → | boxscape_ joins (~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) |
| 20:47:50 | <tomsmeding> | maerwald: was my code acceptable to work in :p |
| 20:48:22 | <tapas> | sm: yo will you people chill? I have a life you know |
| 20:48:33 | <tapas> | i'll have a release out this weekend |
| 20:48:43 | <hpc> | nobody on irc has a life :P |
| 20:50:34 | <sm> | uh.. sorry |
| 20:50:35 | <Hecate> | agreed |
| 20:52:02 | × | mohy quits (~mohy@85-207-122-4.static.bluetone.cz) (Quit: Leaving) |
| 20:52:26 | <boxscape_> | % (proc x -> (| \(a, (s, ())) -> x |) "oeu") |
| 20:52:26 | <yahb> | boxscape_: ; <interactive>:22:32: error:; * Variable not in scope: x; * Perhaps you meant `x' (line 22) |
| 20:52:28 | <boxscape_> | perhaps I did |
| 20:53:31 | × | dut quits (~dut@user/dut) (Ping timeout: 260 seconds) |
| 20:54:04 | <hpc> | ... how? |
| 20:54:43 | <boxscape_> | not sure |
| 20:56:49 | <sm> | maerwald: ✔✔ GHC 9.2.2 latest,base-4.16.1.0 hls-powered <- what's this ? |
| 20:57:00 | <tomsmeding> | the hls-powered? |
| 20:57:04 | <sm> | yup |
| 20:57:10 | <tomsmeding> | means that the ghcup-distributed HLS has support for that GHC |
| 20:57:30 | → | pavonia joins (~user@user/siracusa) |
| 20:57:35 | <tomsmeding> | s/support/a working compiled binary/ |
| 20:57:58 | <tomsmeding> | oh, apparently not "the ghcup-distributed" but "the currently ghcup-installed" |
| 20:58:09 | <sm> | cool. This is an HLS I just built and installed in place of ghcup's. I guess ideally I'd be seeing hls-powered for all my ghcs |
| 20:58:27 | <tomsmeding> | ah, I put my self-compiled HLSs in a different directory :p |
| 20:58:42 | <maerwald> | tomsmeding: there's `ghcup compile hls` |
| 20:58:59 | <sm> | how do you ensure the right HLS gets invoked per project, tomsmeding |
| 20:59:25 | <tomsmeding> | sm: I name them haskell-language-server-9.2.2, and then haskell-language-server-wrapper does the right thing :p |
| 20:59:30 | <maerwald> | sm: there's `ghcup run --hls <ver> -- code .` :D |
| 20:59:44 | <tomsmeding> | maerwald: I learned that after I was already doing it this way |
| 20:59:53 | <sm> | man, these version dependencies always have been confusing and always will be confusing, even though ghcup is a boon |
| 21:00:17 | <maerwald> | tomsmeding: well, but I think the point is that for supporting ghc 8.10.4 for example, you need to downgrade HLS |
| 21:00:26 | <maerwald> | the vscode extension takes care of that for example |
| 21:00:28 | <sm> | tomsmeding: any haskell-language-server-wrapper ? built with any ghc version ? |
| 21:00:48 | <maerwald> | at least with official binaries |
| 21:00:52 | <tomsmeding> | maerwald: ah right, then I'm fortunate that I'm only dealing with 8.10.7 and 9 onwards |
| 21:01:01 | <tomsmeding> | sm: I _think_ so |
| 21:01:24 | <tomsmeding> | the wrapper doesn't do very much, it just detects your project setup and then invokes haskell-language-server-<the inferred ghc version> AFAIK |
| 21:01:58 | <tomsmeding> | (well, "just detects your project setup" is quite involved, of course, but then that's not really ghc-version bound) |
| 21:02:10 | <sm> | and yet it's a 250M binary :) |
| 21:02:26 | <tomsmeding> | haskell (tm) |
| 21:02:43 | <tomsmeding> | well it links against most of the ide infrastructure to do the project setup detection thing probably |
| 21:02:59 | <sm> | I notice my new haskell-language-server binary is only 400K though, that one must be dynamic |
| 21:03:05 | <maerwald> | sm: there's your reason why no one uses Haskell in embedded :D |
| 21:03:12 | <maerwald> | yeah |
| 21:04:15 | <tomsmeding> | maerwald: O.o that lds-roller |
| 21:04:29 | <maerwald> | tomsmeding: yeah, i copy pasted it from somewhere |
| 21:04:35 | <maerwald> | real frontend engineering |
| 21:04:39 | <tomsmeding> | did that somewhere have a license |
| 21:04:41 | <tomsmeding> | :p yes |
| 21:04:59 | <maerwald> | CC0 |
| 21:05:03 | <tomsmeding> | nice |
| 21:05:05 | <sm> | I guess maybe haskell-language-server-wrapper-1.6.1.1 detects haskell-language-server-~1.6.1.1, and not haskell-language-server-~1.6.1.0 |
| 21:05:08 | <maerwald> | https://loading.io/css/ |
| 21:05:21 | <maerwald> | sm: no, anything with ~ is ghcup internal |
| 21:05:38 | → | waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
| 21:05:42 | <sm> | ah |
| 21:06:39 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 252 seconds) |
| 21:09:04 | <tomsmeding> | maerwald: I'll try fixing my own review stuff |
| 21:09:19 | <maerwald> | tomsmeding: the code was not too bad :p |
| 21:09:27 | <tomsmeding> | no :p |
| 21:09:41 | <tomsmeding> | though I don't have a /home/hasufell |
| 21:09:51 | <maerwald> | you could create one |
| 21:09:55 | <tomsmeding> | I _could_ |
| 21:09:56 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving) |
| 21:09:58 | <sm> | why not tomsmeding |
| 21:10:03 | <tomsmeding> | good question |
| 21:10:13 | × | polyphem quits (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Ping timeout: 250 seconds) |
| 21:10:16 | <tomsmeding> | I guess I'd have to learn German first |
| 21:11:43 | × | _ht quits (~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection) |
| 21:12:55 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
| 21:13:21 | → | michalz joins (~michalz@185.246.204.107) |
| 21:15:43 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 21:18:51 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 21:20:31 | × | Midjak quits (~Midjak@82.66.147.146) (Quit: This computer has gone to sleep) |
| 21:21:37 | → | dut joins (~dut@user/dut) |
| 21:22:36 | → | polyphem joins (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) |
| 21:22:57 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
| 21:23:01 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 21:26:01 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 21:27:25 | → | hololeap joins (~hololeap@user/hololeap) |
| 21:29:44 | <tomsmeding> | maerwald: where did you get that dpkg-reconfigure command from |
| 21:30:20 | <maerwald> | tomsmeding: from the internet, you know |
| 21:30:32 | <tomsmeding> | "bash: dpkg-reconfigure: command not found" |
| 21:30:48 | → | shapr` joins (~user@pool-173-73-44-186.washdc.fios.verizon.net) |
| 21:30:58 | <geekosaur> | what platform? |
| 21:31:02 | <tomsmeding> | ubuntu 20.04 |
| 21:31:08 | <maerwald> | tomsmeding: debconf |
| 21:31:33 | <geekosaur> | it's in /usr/sbin on my system |
| 21:31:34 | <tomsmeding> | # apt install debconf && dpkg-reconfigure -> ... command not found |
| 21:31:42 | <tomsmeding> | aaaah |
| 21:31:45 | <tomsmeding> | geekosaur: thanks |
| 21:31:55 | <geekosaur> | (also 20.04) |
| 21:32:37 | × | shapr quits (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
| 21:34:17 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:38:02 | → | jgeerds joins (~jgeerds@55d4548e.access.ecotel.net) |
| 21:42:51 | → | alp joins (~alp@user/alp) |
| 21:43:35 | × | wyrd quits (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds) |
| 21:45:34 | → | wyrd joins (~wyrd@gateway/tor-sasl/wyrd) |
| 21:49:59 | × | mikoto-chan quits (~mikoto-ch@213.177.151.239) (Ping timeout: 260 seconds) |
| 21:54:13 | × | shapr` quits (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection) |
| 21:54:26 | → | shapr` joins (~user@pool-173-73-44-186.washdc.fios.verizon.net) |
| 21:56:23 | → | lavaman joins (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) |
| 21:56:23 | → | acidjnk joins (~acidjnk@p200300d0c7049f68c1d0bc0d753b520f.dip0.t-ipconnect.de) |
| 21:58:07 | <tomsmeding> | maerwald: again thanks for all the work |
| 22:05:46 | shapr` | is now known as shapr |
| 22:16:31 | × | michalz quits (~michalz@185.246.204.107) (Remote host closed the connection) |
| 22:16:49 | → | AkechiShiro joins (~licht@user/akechishiro) |
| 22:17:07 | → | merijn joins (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
| 22:20:23 | <maerwald> | tomsmeding: are we seeing a beta release? |
| 22:20:51 | × | jgeerds quits (~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 250 seconds) |
| 22:24:21 | × | fendor quits (~fendor@91.141.65.26.wireless.dyn.drei.com) (Remote host closed the connection) |
| 22:31:18 | × | fluxit quits (~fluxit@techsmix.net) (Quit: Bye!) |
| 22:31:47 | × | lumberjack123 quits (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection) |
| 22:31:47 | × | hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection) |
| 22:32:08 | → | lumberjack123 joins (~alMalsamo@gateway/tor-sasl/almalsamo) |
| 22:33:22 | → | hololeap joins (~hololeap@user/hololeap) |
| 22:34:36 | × | lavaman quits (~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 240 seconds) |
| 22:38:42 | → | vysn joins (~vysn@user/vysn) |
| 22:45:55 | ← | jakalx parts (~jakalx@base.jakalx.net) () |
| 22:47:23 | → | jakalx joins (~jakalx@base.jakalx.net) |
| 22:49:48 | × | vysn quits (~vysn@user/vysn) (Ping timeout: 240 seconds) |
| 22:51:23 | × | merijn quits (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
| 22:52:07 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 23:03:34 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 272 seconds) |
| 23:04:31 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 23:07:17 | → | yauhsien joins (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) |
| 23:13:02 | → | deadmarshal_ joins (~deadmarsh@95.38.230.121) |
| 23:13:04 | × | yauhsien quits (~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 272 seconds) |
| 23:17:17 | × | deadmarshal_ quits (~deadmarsh@95.38.230.121) (Ping timeout: 240 seconds) |
| 23:18:12 | × | sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 240 seconds) |
| 23:29:45 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 23:31:14 | × | eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 23:32:11 | × | Unicorn_Princess quits (~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Ping timeout: 256 seconds) |
| 23:32:19 | → | gurkenglas joins (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) |
| 23:33:07 | → | Unicorn_Princess joins (~Unicorn_P@93-103-228-248.dynamic.t-2.net) |
| 23:34:37 | × | acidjnk quits (~acidjnk@p200300d0c7049f68c1d0bc0d753b520f.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 23:35:16 | → | sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) |
| 23:42:26 | × | alp quits (~alp@user/alp) (Ping timeout: 245 seconds) |
| 23:47:36 | → | mvk joins (~mvk@2607:fea8:5cc3:7e00::7980) |
| 23:52:56 | → | rawley joins (~rawley@216-197-141-102.nbfr.hsdb.sasknet.sk.ca) |
| 23:57:11 | × | gurkenglas quits (~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Read error: Connection reset by peer) |
| 23:57:23 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 23:59:20 | → | DNH joins (~DNH@8.44.0.63) |
All times are in UTC on 2022-03-26.