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