2022/03/26

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 +0100acidjnk(~acidjnk@p200300d0c7049f68816ae2824fdd5aac.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-03-26 00:03:54 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
2022-03-26 00:04:31 +0100jgeerds(~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 256 seconds)
2022-03-26 00:09:37 +0100lainon(~lainon@2601:7c0:c500:4d20::2ff6) (Killed (zirconium.libera.chat (Nickname regained by services)))
2022-03-26 00:10:00 +0100Guest8730(~lainon@2601:7c0:c500:4d20::2ff6)
2022-03-26 00:14:46 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 272 seconds)
2022-03-26 00:19:17 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
2022-03-26 00:20:26 +0100alp(~alp@user/alp)
2022-03-26 00:20:35 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 00:20:36 +0100zeenk(~zeenk@2a02:2f04:a110:7d00:2011:cfed:bad7:3c94) (Quit: Konversation terminated!)
2022-03-26 00:20:38 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-03-26 00:26:44 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-03-26 00:27:00 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-03-26 00:29:26 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-26 00:29:29 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2022-03-26 00:30:18 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
2022-03-26 00:31:10 +0100waleee(~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 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2022-03-26 00:40:37 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 00:43:40 +0100finsternis(~X@23.226.237.192) (Read error: Connection reset by peer)
2022-03-26 00:44:28 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-03-26 00:45:16 +0100Pickchea(~private@user/pickchea)
2022-03-26 00:47:09 +0100mvk(~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 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 272 seconds)
2022-03-26 00:53:16 +0100ober(~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 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-26 01:01:55 +0100lavaman(~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 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 240 seconds)
2022-03-26 01:05:27 +0100ober_(~ober@c-73-68-74-41.hsd1.ma.comcast.net)
2022-03-26 01:05:43 +0100aliosablack(~chomwitt@94.66.60.177) (Ping timeout: 256 seconds)
2022-03-26 01:07:59 +0100ober(~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 260 seconds)
2022-03-26 01:09:59 +0100ober__(~ober@c-73-68-74-41.hsd1.ma.comcast.net)
2022-03-26 01:11:24 +0100pnotequalnp(~kevin@user/pnotequalnp) (Ping timeout: 240 seconds)
2022-03-26 01:11:56 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com)
2022-03-26 01:12:40 +0100ober_(~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 260 seconds)
2022-03-26 01:14:31 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2022-03-26 01:15:31 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 01:15:36 +0100jakalx(~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 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 240 seconds)
2022-03-26 01:19:27 +0100ober_(~ober@c-73-68-74-41.hsd1.ma.comcast.net)
2022-03-26 01:19:35 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-03-26 01:22:17 +0100Tuplanolla(~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 +0100ober__(~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 +0100ober__(~ober@c-73-68-74-41.hsd1.ma.comcast.net)
2022-03-26 01:28:31 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2022-03-26 01:29:31 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 01:31:19 +0100ober_(~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 260 seconds)
2022-03-26 01:31:54 +0100gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
2022-03-26 01:34:36 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
2022-03-26 01:35:50 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 01:37:27 +0100ober_(~ober@c-73-68-74-41.hsd1.ma.comcast.net)
2022-03-26 01:37:49 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-26 01:40:16 +0100ober__(~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 272 seconds)
2022-03-26 01:41:17 +0100lainon(~lainon@2601:7c0:c500:4d20::2ff6)
2022-03-26 01:41:21 +0100Guest8730(~lainon@2601:7c0:c500:4d20::2ff6) (Quit: Leaving)
2022-03-26 01:41:28 +0100ober__(~ober@c-73-68-74-41.hsd1.ma.comcast.net)
2022-03-26 01:42:15 +0100nicbk(~nicbk@user/nicbk) (Ping timeout: 240 seconds)
2022-03-26 01:43:55 +0100crazazy(~user@130.89.171.62) (Ping timeout: 260 seconds)
2022-03-26 01:44:15 +0100ober_(~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 256 seconds)
2022-03-26 01:44:30 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Quit: Leaving)
2022-03-26 01:47:17 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
2022-03-26 01:48:40 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 01:49:34 +0100tcard(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Quit: Leaving)
2022-03-26 01:53:37 +0100alp(~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 +0100tcard(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp)
2022-03-26 01:55:28 +0100ober__(~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Quit: Leaving)
2022-03-26 02:00:37 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-26 02:03:23 +0100Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-03-26 02:04:57 +0100jakalx(~jakalx@base.jakalx.net)
2022-03-26 02:05:04 +0100harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2022-03-26 02:08:13 +0100geranim0(~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Remote host closed the connection)
2022-03-26 02:08:32 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-03-26 02:09:27 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-26 02:11:21 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-03-26 02:12:57 +0100mvk(~mvk@2607:fea8:5cc3:7e00::7980) (Ping timeout: 240 seconds)
2022-03-26 02:13:24 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
2022-03-26 02:14:39 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 02:17:28 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-03-26 02:19:52 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Read error: Connection reset by peer)
2022-03-26 02:20:10 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-03-26 02:25:43 +0100razetime(~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 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-03-26 02:38:31 +0100zyklotomic(~ethan@res380d-128-61-85-225.res.gatech.edu) (Ping timeout: 260 seconds)
2022-03-26 02:40:33 +0100zyklotomic(~ethan@r4-128-61-90-5.res.gatech.edu)
2022-03-26 02:42:21 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-26 02:42:43 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2022-03-26 02:43:34 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 02:43:36 +0100vglfr(~vglfr@46.96.132.108) (Ping timeout: 272 seconds)
2022-03-26 02:52:41 +0100deadmarshal_(~deadmarsh@95.38.113.36)
2022-03-26 02:56:57 +0100deadmarshal_(~deadmarsh@95.38.113.36) (Ping timeout: 240 seconds)
2022-03-26 03:00:51 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-26 03:01:03 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-26 03:08:49 +0100chenqisu1(~chenqisu1@183.217.201.88)
2022-03-26 03:09:57 +0100nicbk(~nicbk@user/nicbk)
2022-03-26 03:10:47 +0100[_](~itchyjunk@user/itchyjunk/x-7353470)
2022-03-26 03:11:11 +0100pnotequalnp(~kevin@user/pnotequalnp)
2022-03-26 03:11:31 +0100Akiva(~Akiva@user/Akiva)
2022-03-26 03:13:29 +0100vglfr(~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 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-03-26 03:36:17 +0100lainon(~lainon@2601:7c0:c500:4d20::2ff6) (Remote host closed the connection)
2022-03-26 03:42:11 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
2022-03-26 03:46:36 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
2022-03-26 03:47:17 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-03-26 03:47:43 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-03-26 03:47:51 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 03:49:38 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-26 03:49:55 +0100nicbk(~nicbk@user/nicbk) (Ping timeout: 240 seconds)
2022-03-26 03:52:53 +0100auri(~quassel@fsf/member/auri) (Quit: auri)
2022-03-26 03:53:28 +0100auri(~quassel@fsf/member/auri)
2022-03-26 03:53:35 +0100nicbk(~nicbk@user/nicbk)
2022-03-26 03:54:04 +0100auri(~quassel@fsf/member/auri) (Client Quit)
2022-03-26 03:57:35 +0100[_][itchyjunk]
2022-03-26 03:58:10 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4.1)
2022-03-26 03:58:36 +0100vglfr(~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 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
2022-03-26 04:19:15 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-26 04:25:01 +0100Macbethwin(~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 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 04:27:27 +0100Chargen(~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 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-26 04:39:23 +0100jlamothe(~jlamothe@198.251.61.229) (Ping timeout: 260 seconds)
2022-03-26 04:40:58 +0100jlamothe(~jlamothe@198.251.61.229)
2022-03-26 04:41:15 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2022-03-26 04:42:13 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 04:45:55 +0100Macbethwin(~chargen@8.21.8.240) (Ping timeout: 260 seconds)
2022-03-26 04:54:09 +0100dsrt^(~dsrt@96-91-136-49-static.hfc.comcastbusiness.net)
2022-03-26 04:58:31 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 260 seconds)
2022-03-26 05:00:21 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-26 05:00:22 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
2022-03-26 05:00:55 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 05:01:50 +0100deadmarshal_(~deadmarsh@95.38.113.36)
2022-03-26 05:02:33 +0100boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-03-26 05:05:31 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-03-26 05:07:22 +0100Akiva(~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 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 256 seconds)
2022-03-26 05:11:54 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 05:18:58 +0100Natch(~natch@c-67bae255.014-297-73746f25.bbcust.telenor.se) (Remote host closed the connection)
2022-03-26 05:21:26 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-26 05:21:44 +0100vglfr(~vglfr@46.96.132.108)
2022-03-26 05:22:07 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 05:24:21 +0100Natch(~natch@c-67bae255.014-297-73746f25.bbcust.telenor.se)
2022-03-26 05:30:55 +0100nicbk(~nicbk@user/nicbk) (Ping timeout: 240 seconds)
2022-03-26 05:32:46 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-26 05:35:21 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 05:40:03 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
2022-03-26 05:40:35 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-26 05:40:53 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 256 seconds)
2022-03-26 05:41:57 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 05:45:22 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-03-26 05:47:57 +0100pnotequalnp(~kevin@user/pnotequalnp) (Ping timeout: 240 seconds)
2022-03-26 05:49:17 +0100vglfr(~vglfr@46.96.132.108) (Ping timeout: 240 seconds)
2022-03-26 06:04:16 +0100vysn(~vysn@user/vysn)
2022-03-26 06:04:22 +0100deadmarshal_(~deadmarsh@95.38.113.36) (Ping timeout: 272 seconds)
2022-03-26 06:11:07 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 06:16:24 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds)
2022-03-26 06:22:42 +0100zmt00(~zmt00@user/zmt00) (Quit: Leaving)
2022-03-26 06:25:17 +0100zmt00(~zmt00@user/zmt00)
2022-03-26 06:28:16 +0100mbuf(~Shakthi@171.61.236.231)
2022-03-26 06:28:37 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
2022-03-26 06:29:48 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 06:32:06 +0100mikoto-chan(~mikoto-ch@213.177.151.239)
2022-03-26 06:37:51 +0100cdman(~dcm@user/dmc/x-4369397)
2022-03-26 06:39:24 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
2022-03-26 06:40:26 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 06:42:13 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
2022-03-26 06:42:47 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 06:43:56 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-26 06:44:24 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 06:44:31 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
2022-03-26 06:48:08 +0100gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de)
2022-03-26 07:06:51 +0100gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
2022-03-26 07:06:55 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com)
2022-03-26 07:28:54 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-26 07:31:25 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 07:35:33 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-03-26 07:35:37 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-03-26 07:41:17 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-26 07:46:37 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
2022-03-26 07:48:00 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 07:52:02 +0100cdman(~dcm@user/dmc/x-4369397) (Ping timeout: 272 seconds)
2022-03-26 07:59:41 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-03-26 08:09:35 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-03-26 08:14:45 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 250 seconds)
2022-03-26 08:16:02 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 08:16:06 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-03-26 08:18:33 +0100acidjnk(~acidjnk@p200300d0c7049f68816ae2824fdd5aac.dip0.t-ipconnect.de)
2022-03-26 08:19:00 +0100cdman(~dcm@user/dmc/x-4369397)
2022-03-26 08:20:21 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-03-26 08:25:43 +0100razetime(~quassel@117.254.34.132) (Ping timeout: 260 seconds)
2022-03-26 08:28:27 +0100vglfr(~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 +0100cdman(~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 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-03-26 08:37:38 +0100aliosablack(~chomwitt@2a02:587:dc18:da00:eb71:868b:3400:4636)
2022-03-26 08:38:16 +0100jakalx(~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 +0100cdman(~dcm@user/dmc/x-4369397)
2022-03-26 08:42:07 +0100Quenty(uid14882@id-14882.helmsley.irccloud.com)
2022-03-26 08:47:19 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 08:48:04 +0100jakalx(~jakalx@base.jakalx.net)
2022-03-26 08:49:58 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-03-26 08:50:55 +0100zyklotomic(~ethan@r4-128-61-90-5.res.gatech.edu) (Ping timeout: 260 seconds)
2022-03-26 08:52:52 +0100zyklotomic(~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 +0100razetime(~quassel@117.254.35.76)
2022-03-26 08:56:45 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-03-26 08:57:37 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-03-26 08:57:59 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-03-26 09:01:23 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-03-26 09:01:39 +0100img(~img@user/img)
2022-03-26 09:02:05 +0100gehmehgeh(~user@user/gehmehgeh)
2022-03-26 09:02:35 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-03-26 09:18:07 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-03-26 09:24:42 +0100Pickchea(~private@user/pickchea)
2022-03-26 09:30:00 +0100deadmarshal_(~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 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-26 09:37:17 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2022-03-26 09:44:15 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-26 09:45:45 +0100shailangsa(~shailangs@host165-120-169-51.range165-120.btcentralplus.com) (Ping timeout: 268 seconds)
2022-03-26 09:49:35 +0100namkeleser(~namkelese@101.175.155.55)
2022-03-26 09:54:16 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 09:54:23 +0100vglfr(~vglfr@46.96.132.108) (Ping timeout: 260 seconds)
2022-03-26 09:54:52 +0100vglfr(~vglfr@37.73.58.115)
2022-03-26 09:59:57 +0100deadmarshal_(~deadmarsh@95.38.113.36) (Ping timeout: 240 seconds)
2022-03-26 10:00:14 +0100phuegrvs[m](~phuegrvsm@2001:470:69fc:105::1:65e4) (Quit: You have been kicked for being idle)
2022-03-26 10:00:24 +0100alp(~alp@user/alp)
2022-03-26 10:00:24 +0100Morrow[m](~morrowmma@2001:470:69fc:105::1d0) (Quit: You have been kicked for being idle)
2022-03-26 10:00:54 +0100karim(~karim@102.40.222.144)
2022-03-26 10:01:39 +0100jgeerds(~jgeerds@55d4548e.access.ecotel.net)
2022-03-26 10:05:55 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
2022-03-26 10:06:10 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-26 10:10:35 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2022-03-26 10:11:54 +0100chenqisu1(~chenqisu1@183.217.201.88) (Quit: Leaving)
2022-03-26 10:17:39 +0100jgeerds(~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 256 seconds)
2022-03-26 10:25:08 +0100Sgeo_(~Sgeo@user/sgeo)
2022-03-26 10:27:24 +0100Sgeo(~Sgeo@user/sgeo) (Ping timeout: 240 seconds)
2022-03-26 10:28:35 +0100shailangsa(~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 +0100karim(~karim@102.40.222.144) (Ping timeout: 240 seconds)
2022-03-26 10:34:39 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4.1)
2022-03-26 10:37:07 +0100gurkenglas(~gurkengla@dslb-178-012-018-212.178.012.pools.vodafone-ip.de)
2022-03-26 10:37:51 +0100benin(~benin@183.82.24.110)
2022-03-26 10:38:00 +0100yosef36(~yosefweis@2001:470:69fc:105::1:e501)
2022-03-26 10:41:34 +0100kuribas(~user@ptr-25vy0i9dlr6d4pgg05u.18120a2.ip6.access.telenet.be)
2022-03-26 10:42:13 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-03-26 10:45:43 +0100acidjnk(~acidjnk@p200300d0c7049f68816ae2824fdd5aac.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-03-26 10:49:35 +0100Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi)
2022-03-26 10:50:36 +0100Quenty(uid14882@id-14882.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2022-03-26 10:53:57 +0100mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 240 seconds)
2022-03-26 10:56:55 +0100gdd(~gdd@129.199.146.230) (Ping timeout: 260 seconds)
2022-03-26 10:57:44 +0100gehmehgeh(~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 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
2022-03-26 11:00:50 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-03-26 11:01:51 +0100hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8)
2022-03-26 11:01:52 +0100vglfr(~vglfr@37.73.58.115) (Read error: Connection reset by peer)
2022-03-26 11:02:58 +0100vglfr(~vglfr@37.73.58.115)
2022-03-26 11:06:31 +0100hughjfchen(~hughjfche@vmi556545.contaboserver.net)
2022-03-26 11:09:47 +0100vglfr(~vglfr@37.73.58.115) (Ping timeout: 256 seconds)
2022-03-26 11:10:17 +0100Everything(~Everythin@37.115.210.35)
2022-03-26 11:10:32 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-03-26 11:11:36 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds)
2022-03-26 11:13:37 +0100mon_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 +0100merijn(~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 +0100mcgroin(~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 +0100dextaa_(~dextaa@user/dextaa)
2022-03-26 11:30:08 +0100vglfr(~vglfr@37.73.58.115)
2022-03-26 11:30:16 +0100shailangsa(~shailangs@host86-162-150-212.range86-162.btcentralplus.com) ()
2022-03-26 11:32:23 +0100gurkenglas(~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 +0100alp(~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 +0100Sgeo_(~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 +0100vglfr(~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 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Remote host closed the connection)
2022-03-26 11:51:31 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-03-26 11:53:05 +0100zeenk(~zeenk@2a02:2f04:a110:7d00:2011:cfed:bad7:3c94)
2022-03-26 11:53:10 +0100xkuru(~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 +0100razetime(~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 +0100mbuf(~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 +0100shailangsa(~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 +0100gdd(~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 +0100vglfr(~vglfr@37.73.58.115)
2022-03-26 12:15:08 +0100mc47(~mc47@xmonad/TheMC47)
2022-03-26 12:15:37 +0100 <abastro[m]> Oh this discussion came from OOP
2022-03-26 12:15:42 +0100vglfr(~vglfr@37.73.58.115) (Read error: Connection reset by peer)
2022-03-26 12:15:55 +0100vglfr(~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 +0100razetime(~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 +0100pottsy(~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 +0100vysn(~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 +0100infinity0(~infinity0@occupy.ecodis.net) (Remote host closed the connection)
2022-03-26 12:28:26 +0100infinity0(~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 +0100vglfr(~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 +0100dut(~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 +0100tiferrei(~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 +0100tiferrei(~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 +0100mbuf(~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 +0100mbuf(~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 +0100deadmarshal_(~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 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-03-26 13:01:44 +0100deadmarshal_(~deadmarsh@95.38.113.36) (Ping timeout: 272 seconds)
2022-03-26 13:03:10 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-03-26 13:03:40 +0100xkuru(~xkuru@user/xkuru)
2022-03-26 13:07:47 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-26 13:08:22 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 13:09:46 +0100benin(~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 +0100cosimone(~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 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-03-26 13:14:36 +0100merijn(~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 +0100bahamas(~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 +0100yauhsien(~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 +0100machinedgod(~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 +0100bahamas(~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 +0100zincy_(~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 +0100benin(~benin@183.82.24.110)
2022-03-26 13:44:28 +0100hololeap(~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 +0100hololeap(~hololeap@user/hololeap)
2022-03-26 13:46:18 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-03-26 13:47:25 +0100bahamas(~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 +0100merijn(~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 +0100Everything(~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 +0100bahamas(~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 +0100geekosaur(~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 +0100zincy_(~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection)
2022-03-26 14:06:41 +0100bitmapper(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 +0100namkeleser(~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 +0100zincy(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684) (Remote host closed the connection)
2022-03-26 14:30:11 +0100bahamas(~lucian@84.232.140.158)
2022-03-26 14:32:40 +0100tiferrei(~tiferrei@user/tiferrei) (Remote host closed the connection)
2022-03-26 14:32:40 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-03-26 14:32:40 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
2022-03-26 14:32:40 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2022-03-26 14:32:40 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-03-26 14:32:40 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-03-26 14:32:55 +0100tiferrei(~tiferrei@user/tiferrei)
2022-03-26 14:32:55 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-03-26 14:33:02 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2022-03-26 14:33:03 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-03-26 14:34:07 +0100hololeap(~hololeap@user/hololeap)
2022-03-26 14:34:55 +0100bahamas(~lucian@84.232.140.158) (Ping timeout: 256 seconds)
2022-03-26 14:35:12 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2022-03-26 14:38:09 +0100zeenk(~zeenk@2a02:2f04:a110:7d00:2011:cfed:bad7:3c94) (Quit: Konversation terminated!)
2022-03-26 14:38:33 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-26 14:40:48 +0100rtpg(sid443069@id-443069.ilkley.irccloud.com) (Konversation terminated!)
2022-03-26 14:41:48 +0100Pickchea(~private@user/pickchea) (Ping timeout: 272 seconds)
2022-03-26 14:41:57 +0100razetime(~quassel@117.254.34.132) (Read error: Connection reset by peer)
2022-03-26 14:45:57 +0100dsrt^(~dsrt@96-91-136-49-static.hfc.comcastbusiness.net) (Remote host closed the connection)
2022-03-26 14:49:44 +0100dextaa_(~dextaa@user/dextaa) (Remote host closed the connection)
2022-03-26 14:56:24 +0100kuribas(~user@ptr-25vy0i9dlr6d4pgg05u.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2022-03-26 15:02:41 +0100Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 256 seconds)
2022-03-26 15:09:03 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 15:13:48 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-03-26 15:18:37 +0100Maxdamantus(~Maxdamant@user/maxdamantus)
2022-03-26 15:21:47 +0100mikoto-chan(~mikoto-ch@213.177.151.239)
2022-03-26 15:24:37 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 240 seconds)
2022-03-26 15:32:25 +0100MironZ(~MironZ@nat-infra.ehlab.uk) (Quit: The Lounge - https://thelounge.chat)
2022-03-26 15:33:55 +0100MironZ(~MironZ@nat-infra.ehlab.uk)
2022-03-26 15:39:00 +0100pranshukhandal(pranshukha@envs.net) (Quit: the lounge - https://webirc.envs.net)
2022-03-26 15:39:00 +0100sus(zero@user/zeromomentum) (Quit: the lounge - https://webirc.envs.net)
2022-03-26 15:39:26 +0100pranshukhandal(pranshukha@envs.net)
2022-03-26 15:39:34 +0100sus(zero@user/zeromomentum)
2022-03-26 15:43:16 +0100seydar(~seydar@154-27-113-252.starry-inc.net)
2022-03-26 15:43:59 +0100zmt01(~zmt00@user/zmt00)
2022-03-26 15:44:36 +0100zmt00(~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 +0100bahamas(~lucian@84.232.140.158)
2022-03-26 15:45:13 +0100merijn(~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 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-03-26 15:49:17 +0100bahamas(~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 +0100alp(~alp@user/alp)
2022-03-26 15:51:21 +0100 <seydar> thank you [exa], abastro[m]
2022-03-26 15:51:25 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-03-26 15:51:51 +0100n3t(~n3t@s45.mydevil.net) (Changing host)
2022-03-26 15:51:51 +0100n3t(~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 +0100mon_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 +0100pavonia(~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 +0100bahamas(~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 +0100vglfr(~vglfr@37.73.58.115)
2022-03-26 16:12:16 +0100Topsi(~Tobias@dyndsl-095-033-022-251.ewe-ip-backbone.de)
2022-03-26 16:15:55 +0100tubogram4(~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 +0100vglfr(~vglfr@37.73.58.115) (Ping timeout: 256 seconds)
2022-03-26 16:19:36 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
2022-03-26 16:20:10 +0100tubogram4(~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 +0100vysn(~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 +0100deadmarshal_(~deadmarsh@95.38.113.36)
2022-03-26 16:33:23 +0100wolfshappen(~waff@irc.furworks.de) (Quit: later)
2022-03-26 16:37:04 +0100wolfshappen(~waff@irc.furworks.de)
2022-03-26 16:39:00 +0100bahamas(~lucian@84.232.140.158) (Ping timeout: 240 seconds)
2022-03-26 16:39:16 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-26 16:43:24 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2022-03-26 16:46:22 +0100cdman(~dcm@user/dmc/x-4369397) (Quit: Leaving)
2022-03-26 16:47:15 +0100tzh(~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 +0100Pickchea(~private@user/pickchea)
2022-03-26 16:55:04 +0100Unicorn_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 +0100seydar(~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 +0100eggplantade(~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 +0100FragByte_(~christian@user/fragbyte)
2022-03-26 17:14:41 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 17:15:01 +0100FragByte(~christian@user/fragbyte) (Ping timeout: 240 seconds)
2022-03-26 17:15:01 +0100FragByte_FragByte
2022-03-26 17:15:04 +0100boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de)
2022-03-26 17:17:21 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-03-26 17:19:30 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 272 seconds)
2022-03-26 17:20:49 +0100mon_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 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-03-26 17:35:58 +0100nicbk(~nicbk@user/nicbk)
2022-03-26 17:36:08 +0100notzmv(~zmv@user/notzmv)
2022-03-26 17:36:12 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-03-26 17:41:41 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-26 17:48:08 +0100mikoto-chan(~mikoto-ch@213.177.151.239) (Quit: mikoto-chan)
2022-03-26 17:48:22 +0100mikoto-chan(~mikoto-ch@213.177.151.239)
2022-03-26 17:50:33 +0100razetime(~quassel@117.254.34.132)
2022-03-26 17:51:58 +0100razetime(~quassel@117.254.34.132) (Client Quit)
2022-03-26 17:52:14 +0100rustacean(~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 +0100econo(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 +0100zaquest(~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 +0100nicbk(~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 +0100zaquest(~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 +0100orcus(~orcus@user/brprice) (Quit: ZNC 1.8.2 - https://znc.in)
2022-03-26 18:07:06 +0100dispater(~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 +0100dispater(~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 +0100orcus(~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 +0100zyklotomic(~ethan@res380d-128-61-81-155.res.gatech.edu) (Ping timeout: 260 seconds)
2022-03-26 18:15:45 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-26 18:17:11 +0100zyklotomic(~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 +0100rond_(~rond_@90.254.208.190)
2022-03-26 18:23:02 +0100fendor__(~fendor@91.141.65.26.wireless.dyn.drei.com)
2022-03-26 18:23:45 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-03-26 18:25:51 +0100fendor_(~fendor@91.141.68.132.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
2022-03-26 18:26:16 +0100jakalx(~jakalx@base.jakalx.net)
2022-03-26 18:28:57 +0100Pickchea(~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 +0100weekOldRoadkill(~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 +0100bahamas(~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 +0100pnotequalnp(~kevin@user/pnotequalnp)
2022-03-26 18:50:42 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-03-26 18:52:02 +0100fendor__fendor
2022-03-26 19:06:15 +0100alp(~alp@user/alp) (Ping timeout: 252 seconds)
2022-03-26 19:07:44 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Quit: WeeChat 3.4)
2022-03-26 19:07:54 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
2022-03-26 19:09:26 +0100rond_(~rond_@90.254.208.190) (Quit: Client closed)
2022-03-26 19:09:43 +0100rustacean(~quassel@117.254.34.132) (Ping timeout: 260 seconds)
2022-03-26 19:12:28 +0100Sgeo(~Sgeo@user/sgeo)
2022-03-26 19:14:45 +0100Enrico63(~Enrico63@81.109.143.226)
2022-03-26 19:15:00 +0100fef(~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 +0100Enrico63(~Enrico63@81.109.143.226) (Quit: Client closed)
2022-03-26 19:29:01 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-03-26 19:33:08 +0100deadmarshal_(~deadmarsh@95.38.113.36) (Ping timeout: 272 seconds)
2022-03-26 19:34:09 +0100seydar(~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 +0100epolanski(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 +0100ProfSimm(~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 +0100ProfSimm(~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 +0100califax(~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 +0100weekOldRoadkill(~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 +0100justOkay(~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 +0100justOkay(~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 +0100Igloo(~ian@matrix.chaos.earth.li) (Ping timeout: 250 seconds)
2022-03-26 19:56:00 +0100Igloo(~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 +0100euandreh(~euandreh@2804:14c:33:9fe5:4042:4584:26e0:bc36) (Quit: WeeChat 3.4.1)
2022-03-26 20:09:02 +0100euandreh(~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 +0100jespada(~jespada@cpc121022-nmal24-2-0-cust171.19-2.cable.virginm.net) (Ping timeout: 240 seconds)
2022-03-26 20:16:44 +0100lavaman(~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 +0100jespada(~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 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-26 20:23:39 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-26 20:23:47 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-03-26 20:27:00 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 240 seconds)
2022-03-26 20:27:43 +0100Pickchea(~private@user/pickchea)
2022-03-26 20:36:01 +0100alp(~alp@user/alp)
2022-03-26 20:37:55 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2022-03-26 20:38:57 +0100califax(~califax@user/califx) (Remote host closed the connection)
2022-03-26 20:39:10 +0100califax(~califax@user/califx)
2022-03-26 20:39:17 +0100bahamas(~lucian@84.232.140.158) (Ping timeout: 240 seconds)
2022-03-26 20:40:56 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2022-03-26 20:41:37 +0100acidjnk(~acidjnk@p200300d0c7049f68c1d0bc0d753b520f.dip0.t-ipconnect.de)
2022-03-26 20:45:39 +0100seydar(~seydar@154-27-113-252.starry-inc.net) (Quit: leaving)
2022-03-26 20:45:49 +0100acidjnk(~acidjnk@p200300d0c7049f68c1d0bc0d753b520f.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-03-26 20:46:33 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-26 20:47:55 +0100fef(~thedawn@user/thedawn) (Ping timeout: 240 seconds)
2022-03-26 20:48:36 +0100Jeanne-Kamikaze(~Jeanne-Ka@142.147.89.247)
2022-03-26 20:48:36 +0100Jeanne-Kamikaze(~Jeanne-Ka@142.147.89.247) (Client Quit)
2022-03-26 20:53:54 +0100jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-03-26 20:58:38 +0100boxscape_(~boxscape_@p4ff0b60b.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-03-26 21:11:01 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
2022-03-26 21:12:03 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-03-26 21:15:46 +0100simendsjo(~user@84.211.91.241)
2022-03-26 21:21:24 +0100ShalokShalom(~ShalokSha@2a02:1748:dd5e:7f60:b02d:5b89:5217:758a)
2022-03-26 21:21:26 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 272 seconds)
2022-03-26 21:22:48 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 21:23:38 +0100bahamas(~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 +0100lavaman(~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 +0100bahamas(~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 +0100yauhsien(~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 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2022-03-26 21:31:11 +0100tiferrei(~tiferrei@user/tiferrei) (Remote host closed the connection)
2022-03-26 21:31:25 +0100tiferrei(~tiferrei@user/tiferrei)
2022-03-26 21:32:37 +0100hololeap(~hololeap@user/hololeap)
2022-03-26 21:33:29 +0100mohy(~mohy@85-207-122-4.static.bluetone.cz)
2022-03-26 21:33:58 +0100mohy(~mohy@85-207-122-4.static.bluetone.cz) (Client Quit)
2022-03-26 21:34:11 +0100mohy(~mohy@85-207-122-4.static.bluetone.cz)
2022-03-26 21:35:57 +0100simendsjo(~user@84.211.91.241) (Ping timeout: 256 seconds)
2022-03-26 21:38:16 +0100alp(~alp@user/alp) (Ping timeout: 245 seconds)
2022-03-26 21:38:52 +0100ShalokShalom(~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 +0100boxscape_(~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 +0100mohy(~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 +0100dut(~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 +0100pavonia(~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 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-26 22:05:42 +0100 <sm> ah
2022-03-26 22:06:39 +0100lavaman(~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 +0100abhixec(~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 +0100polyphem(~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 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-03-26 22:13:21 +0100michalz(~michalz@185.246.204.107)
2022-03-26 22:15:43 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-03-26 22:18:51 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net)
2022-03-26 22:20:31 +0100Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2022-03-26 22:21:37 +0100dut(~dut@user/dut)
2022-03-26 22:22:36 +0100polyphem(~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
2022-03-26 22:22:57 +0100yauhsien(~yauhsien@61-231-25-68.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-03-26 22:23:01 +0100gehmehgeh(~user@user/gehmehgeh)
2022-03-26 22:26:01 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2022-03-26 22:27:25 +0100hololeap(~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 +0100shapr`(~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 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2022-03-26 22:34:17 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-03-26 22:38:02 +0100jgeerds(~jgeerds@55d4548e.access.ecotel.net)
2022-03-26 22:42:51 +0100alp(~alp@user/alp)
2022-03-26 22:43:35 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds)
2022-03-26 22:45:34 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-03-26 22:49:59 +0100mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 260 seconds)
2022-03-26 22:54:13 +0100shapr`(~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection)
2022-03-26 22:54:26 +0100shapr`(~user@pool-173-73-44-186.washdc.fios.verizon.net)
2022-03-26 22:56:23 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net)
2022-03-26 22:56:23 +0100acidjnk(~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 +0100shapr`shapr
2022-03-26 23:16:31 +0100michalz(~michalz@185.246.204.107) (Remote host closed the connection)
2022-03-26 23:16:49 +0100AkechiShiro(~licht@user/akechishiro)
2022-03-26 23:17:07 +0100merijn(~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 +0100jgeerds(~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 250 seconds)
2022-03-26 23:24:21 +0100fendor(~fendor@91.141.65.26.wireless.dyn.drei.com) (Remote host closed the connection)
2022-03-26 23:31:18 +0100fluxit(~fluxit@techsmix.net) (Quit: Bye!)
2022-03-26 23:31:47 +0100lumberjack123(~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
2022-03-26 23:31:47 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2022-03-26 23:32:08 +0100lumberjack123(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-03-26 23:33:22 +0100hololeap(~hololeap@user/hololeap)
2022-03-26 23:34:36 +0100lavaman(~lavaman@c-174-63-118-52.hsd1.ma.comcast.net) (Ping timeout: 240 seconds)
2022-03-26 23:38:42 +0100vysn(~vysn@user/vysn)
2022-03-26 23:45:55 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-03-26 23:47:23 +0100jakalx(~jakalx@base.jakalx.net)
2022-03-26 23:49:48 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-03-26 23:51:23 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-03-26 23:52:07 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)