2022/03/15

2022-03-15 00:01:58 +0100daemonises(uid545329@id-545329.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-03-15 00:03:27 +0100Joaquin(~Joaquin@14.red-83-51-143.dynamicip.rima-tde.net)
2022-03-15 00:05:26 +0100Joaquin(~Joaquin@14.red-83-51-143.dynamicip.rima-tde.net) (Client Quit)
2022-03-15 00:05:57 +0100nexus_(~nexus@84-236-1-101.pool.digikabel.hu) (Ping timeout: 256 seconds)
2022-03-15 00:05:58 +0100tfeb(~tfb@cpc102388-sgyl38-2-0-cust817.18-2.cable.virginm.net)
2022-03-15 00:06:31 +0100doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
2022-03-15 00:07:40 +0100nexus_(~nexus@80-95-70-217.pool.digikabel.hu)
2022-03-15 00:11:11 +0100Joaquin(~Joaquin@14.red-83-51-143.dynamicip.rima-tde.net)
2022-03-15 00:19:13 +0100Pickchea(~private@user/pickchea) (Ping timeout: 256 seconds)
2022-03-15 00:20:37 +0100Joaquin(~Joaquin@14.red-83-51-143.dynamicip.rima-tde.net) (Quit: Client closed)
2022-03-15 00:20:48 +0100Joaquin(~Joaquin@14.red-83-51-143.dynamicip.rima-tde.net)
2022-03-15 00:26:26 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2022-03-15 00:26:27 +0100merijn(~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
2022-03-15 00:29:11 +0100acidjnk(~acidjnk@p200300d0c7049f84692835b345d10091.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-03-15 00:29:44 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 00:31:30 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-03-15 00:32:16 +0100Joaquin(~Joaquin@14.red-83-51-143.dynamicip.rima-tde.net) (Ping timeout: 256 seconds)
2022-03-15 00:34:09 +0100jgeerds(~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 252 seconds)
2022-03-15 00:34:42 +0100Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.)
2022-03-15 00:35:19 +0100michalz(~michalz@185.246.204.93) (Remote host closed the connection)
2022-03-15 00:38:10 +0100tfeb(~tfb@cpc102388-sgyl38-2-0-cust817.18-2.cable.virginm.net) (Quit: died)
2022-03-15 00:39:57 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
2022-03-15 00:58:26 +0100jao(~jao@45.134.142.199)
2022-03-15 01:03:00 +0100mrkajetanp(~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88) (Ping timeout: 240 seconds)
2022-03-15 01:04:12 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2022-03-15 01:05:41 +0100doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 256 seconds)
2022-03-15 01:16:42 +0100machinedgod(~machinedg@24.105.81.50)
2022-03-15 01:19:50 +0100mmhat(~mmh@55d4b6b1.access.ecotel.net) (Quit: WeeChat 3.4)
2022-03-15 01:22:15 +0100gdown(~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net)
2022-03-15 01:24:35 +0100the_proffesor(~theproffe@c-24-9-30-127.hsd1.co.comcast.net)
2022-03-15 01:26:05 +0100Guest27(~Guest27@2601:281:d47f:1590::6b90) (Ping timeout: 256 seconds)
2022-03-15 01:26:25 +0100theproffesor(~theproffe@c-24-9-30-127.hsd1.co.comcast.net) (Ping timeout: 256 seconds)
2022-03-15 01:26:32 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2022-03-15 01:32:06 +0100epolanski(uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2022-03-15 01:33:58 +0100InstX1(~Liam@2601:6c4:4080:3f80:ac7b:7176:d055:eccc)
2022-03-15 01:36:32 +0100ninioArtillero[m(~ninioarti@2001:470:69fc:105::1:d1ef) (Ping timeout: 240 seconds)
2022-03-15 01:36:32 +0100FernandoChu[m](~ryunaqmat@2001:470:69fc:105::1:4dc0) (Ping timeout: 240 seconds)
2022-03-15 01:36:36 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds)
2022-03-15 01:37:02 +0100Las[m](~lasmatrix@2001:470:69fc:105::74e) (Ping timeout: 240 seconds)
2022-03-15 01:37:02 +0100schuelermine[m](~schuelerm@user/schuelermine) (Ping timeout: 240 seconds)
2022-03-15 01:37:02 +0100MosheTeutsch[m](~moteutsch@2001:470:69fc:105::1:c250) (Ping timeout: 240 seconds)
2022-03-15 01:37:02 +0100bb010g(~bb010g@2001:470:69fc:105::9a5) (Ping timeout: 240 seconds)
2022-03-15 01:37:02 +0100VanceIsM7[m](~vanceism7@2001:470:69fc:105::3ad) (Ping timeout: 240 seconds)
2022-03-15 01:37:02 +0100pareto-optimal-d(~pareto-op@2001:470:69fc:105::1:b61f) (Ping timeout: 240 seconds)
2022-03-15 01:37:02 +0100zwro[m](~zwromatri@2001:470:69fc:105::1d4) (Ping timeout: 240 seconds)
2022-03-15 01:37:02 +0100marinelli[m](~marinelli@2001:470:69fc:105::2d8) (Ping timeout: 240 seconds)
2022-03-15 01:37:02 +0100jinsun_(~jinsun@user/jinsun) (Ping timeout: 240 seconds)
2022-03-15 01:37:02 +0100mahene[m](~mahenemat@2001:470:69fc:105::1:6a93) (Ping timeout: 240 seconds)
2022-03-15 01:37:04 +0100ninioArtillero[m(~ninioarti@2001:470:69fc:105::1:d1ef)
2022-03-15 01:37:17 +0100Inst(~Liam@2601:6c4:4080:3f80:dc06:54f2:d0a:6b8c) (Ping timeout: 240 seconds)
2022-03-15 01:39:36 +0100stefan-_(~cri@42dots.de) (Ping timeout: 252 seconds)
2022-03-15 01:40:36 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2022-03-15 01:43:46 +0100stefan-_(~cri@42dots.de)
2022-03-15 01:45:21 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-03-15 01:45:54 +0100johnw(~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0)
2022-03-15 01:50:07 +0100FernandoChu[m](~ryunaqmat@2001:470:69fc:105::1:4dc0)
2022-03-15 01:50:48 +0100MosheTeutsch[m](~moteutsch@2001:470:69fc:105::1:c250)
2022-03-15 01:50:57 +0100mahene[m](~mahenemat@2001:470:69fc:105::1:6a93)
2022-03-15 01:51:03 +0100jinsun_(~jinsun@user/jinsun)
2022-03-15 01:51:32 +0100pareto-optimal-d(~pareto-op@2001:470:69fc:105::1:b61f)
2022-03-15 01:51:40 +0100Las[m](~lasmatrix@2001:470:69fc:105::74e)
2022-03-15 01:51:44 +0100marinelli[m](~marinelli@2001:470:69fc:105::2d8)
2022-03-15 01:53:10 +0100VanceIsM7[m](~vanceism7@2001:470:69fc:105::3ad)
2022-03-15 01:54:19 +0100bb010g(~bb010g@2001:470:69fc:105::9a5)
2022-03-15 01:54:23 +0100schuelermine[m](~schuelerm@user/schuelermine)
2022-03-15 01:55:00 +0100zwro[m](~zwromatri@2001:470:69fc:105::1d4)
2022-03-15 01:59:00 +0100zmt00(~zmt00@user/zmt00) (Ping timeout: 240 seconds)
2022-03-15 02:00:46 +0100Everything(~Everythin@37.115.210.35)
2022-03-15 02:05:14 +0100 <neverwas> <Midjak> tried several hie.yaml configuration without succeed </Midjak> Replacing the contents with "cradle:\nstack:\n" worked for me. (Not sure why though. Seems like that'd make it a no-op.)
2022-03-15 02:11:02 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-03-15 02:12:05 +0100tremon(~tremon@83-84-18-241.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
2022-03-15 02:13:02 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 02:13:19 +0100mrkajetanp(~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88)
2022-03-15 02:14:23 +0100azimut_(~azimut@gateway/tor-sasl/azimut)
2022-03-15 02:14:33 +0100Guest27(~Guest27@2601:281:d47f:1590::6b90)
2022-03-15 02:15:16 +0100nexus_(~nexus@80-95-70-217.pool.digikabel.hu) (Ping timeout: 250 seconds)
2022-03-15 02:16:36 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2022-03-15 02:16:54 +0100nexus_(~nexus@84-236-60-119.pool.digikabel.hu)
2022-03-15 02:17:09 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-03-15 02:27:11 +0100TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com)
2022-03-15 02:29:11 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-15 02:34:49 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-03-15 02:35:21 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 02:35:52 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-03-15 02:40:19 +0100Guest27(~Guest27@2601:281:d47f:1590::6b90) (Ping timeout: 256 seconds)
2022-03-15 02:40:21 +0100haskl(~haskl@user/haskl) (Ping timeout: 245 seconds)
2022-03-15 02:40:35 +0100haskl(~haskl@user/haskl)
2022-03-15 02:42:56 +0100ss(~ss@187.83.249.216.dyn.smithville.net)
2022-03-15 02:42:58 +0100ssGuest7560
2022-03-15 02:43:06 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-03-15 02:43:31 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-03-15 02:43:37 +0100jamestmartin(~james@jtmar.me) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
2022-03-15 02:43:45 +0100jtmar(~james@jtmar.me)
2022-03-15 02:43:49 +0100meejah(~meejah@rutas.meejah.ca) (Ping timeout: 240 seconds)
2022-03-15 02:43:56 +0100sm[i](~user@plaintextaccounting/sm) (Ping timeout: 252 seconds)
2022-03-15 02:44:29 +0100bahamas(~lucian@84.232.140.158)
2022-03-15 02:44:48 +0100meejah(~meejah@rutas.meejah.ca)
2022-03-15 02:45:47 +0100tolt(~weechat-h@li219-154.members.linode.com) (Ping timeout: 250 seconds)
2022-03-15 02:47:31 +0100tolt(~weechat-h@li219-154.members.linode.com)
2022-03-15 02:47:35 +0100Unicorn_Princess(~Unicorn_P@46-54-248-191.static.kate-wing.si) (Remote host closed the connection)
2022-03-15 02:47:54 +0100Unicorn_Princess(~Unicorn_P@46-54-248-191.static.kate-wing.si)
2022-03-15 02:48:20 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-03-15 02:48:20 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-03-15 02:48:20 +0100wroathe(~wroathe@user/wroathe)
2022-03-15 02:48:38 +0100jao(~jao@45.134.142.199) (Ping timeout: 250 seconds)
2022-03-15 02:48:54 +0100bahamas(~lucian@84.232.140.158) (Ping timeout: 252 seconds)
2022-03-15 02:49:31 +0100sm[i](~user@plaintextaccounting/sm)
2022-03-15 02:49:55 +0100 <justsomeguy> lol, I just came across this in Data.ByteString https://hackage.haskell.org/package/bytestring-0.11.3.0/docs/src/Data.ByteString.Internal.html#acc…
2022-03-15 02:50:18 +0100zmt00(~zmt00@user/zmt00)
2022-03-15 02:50:37 +0100jao(~jao@45.134.142.225)
2022-03-15 02:51:15 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-15 02:51:37 +0100 <Guest7560> so i'm writing a function type signature with a spliced template haskell type, something like f :: $(foo) -> $(bar), where $(foo) is a Q Type splicing in Foo a and $(bar) is a Q Type splicing in Bar b. unfortunately, it seems like this isn't actually equivalent to writing f :: Foo a -> Bar b and doesn't compile, because a and b don't get implicitly
2022-03-15 02:51:37 +0100 <Guest7560> forall'd when spliced in. are my options basically writing a Q Type for the full signature or writing the quantifiers manually, or am I missing something?
2022-03-15 02:51:48 +0100 <byorgey> justsomeguy: =)
2022-03-15 02:55:00 +0100 <davean> justsomeguy: You can't talk about that
2022-03-15 02:55:16 +0100 <byorgey> I wonder who wrote that comment originally.
2022-03-15 02:55:22 +0100byorgeygoes digging in the commit history
2022-03-15 02:57:18 +0100 <byorgey> ah, it was dcoutts__ =) https://github.com/haskell/bytestring/commit/80ff4a3018cd8909abb1d4e0c32f012a523883ec
2022-03-15 02:58:27 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-03-15 02:58:59 +0100 <byorgey> Guest7560: I don't know much about TH, but it would be very strange to me if there was a way to splice in types with type variables like that and have the type variables bound at the outermost level like that. That is what would happen if you just spliced in those types "as text" but thankfully that's not how TH works, it splices at the level of syntax trees.
2022-03-15 02:59:33 +0100 <byorgey> I would think your best bet is to write a single Q Type that generates the entire signature.
2022-03-15 03:00:24 +0100 <byorgey> But you could perhaps turn your current 'foo' and 'bar' into functions that accept a type variable as input, so it wouldn't necessarily mean rewriting everything from scratch
2022-03-15 03:01:07 +0100 <byorgey> But I'm really just guessing here.
2022-03-15 03:03:33 +0100zmt00(~zmt00@user/zmt00) (Ping timeout: 256 seconds)
2022-03-15 03:04:26 +0100 <Guest7560> ah i figured as much; thanks! yeah, it's not too bad for me to try to generate the whole signature at once; that might be the best approach then
2022-03-15 03:04:41 +0100TonyStone(~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) (Ping timeout: 256 seconds)
2022-03-15 03:14:18 +0100 <Guest7560> it turned out to be as easy as f :: $(quantify [t| $(foo) -> $(bar)|]) where quantify :: Q Type -> Q Type! thanks again
2022-03-15 03:16:41 +0100TonyStone(~TonyStone@2603-7080-8607-c36a-a0f7-4a6c-9396-dfff.res6.spectrum.com)
2022-03-15 03:17:33 +0100rekahsoft(~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 268 seconds)
2022-03-15 03:18:23 +0100 <Axman6> justsomeguy: I can't believe you would even utter that!
2022-03-15 03:18:57 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:64ad:f021:a34e:c231) (Remote host closed the connection)
2022-03-15 03:20:42 +0100 <byorgey> Guest7560: ah, nice!
2022-03-15 03:21:15 +0100 <Axman6> justsomeguy: see also: https://github.com/well-typed/cborg/blob/master/.travis/dragon-bureaucrat.sh
2022-03-15 03:21:23 +0100bahamas(~lucian@84.232.140.158)
2022-03-15 03:22:46 +0100 <Axman6> note that this bureaucratic dragon can be fooled by adding "git grep" to a comment after you use of the incorrect spelling "serialize"
2022-03-15 03:24:45 +0100AlexNoo_(~AlexNoo@178.34.161.174)
2022-03-15 03:25:59 +0100bahamas(~lucian@84.232.140.158) (Ping timeout: 256 seconds)
2022-03-15 03:26:03 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:64ad:f021:a34e:c231)
2022-03-15 03:27:32 +0100AlexZenon(~alzenon@94.233.240.159) (Ping timeout: 240 seconds)
2022-03-15 03:27:39 +0100Alex_test(~al_test@94.233.240.159) (Ping timeout: 272 seconds)
2022-03-15 03:28:18 +0100 <jackdk> Guest7560: That's cool, I didn't know about `quantify`
2022-03-15 03:28:29 +0100AlexNoo(~AlexNoo@94.233.240.159) (Ping timeout: 252 seconds)
2022-03-15 03:29:57 +0100 <Guest7560> jackdk I don't think it's a function in a library or anything; i just meant it was easy enough to write out by hand heh
2022-03-15 03:30:33 +0100 <Guest7560> oh wait no way https://hackage.haskell.org/package/th-abstraction-0.4.3.0/docs/Language-Haskell-TH-Datatype.html#…
2022-03-15 03:30:50 +0100 <jackdk> Guest7560: Oh, right. I think you just hoogled the same thing as I did =)
2022-03-15 03:31:10 +0100Alex_test(~al_test@178.34.161.174)
2022-03-15 03:31:18 +0100AlexZenon(~alzenon@178.34.161.174)
2022-03-15 03:34:50 +0100zmt00(~zmt00@user/zmt00)
2022-03-15 03:37:21 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2022-03-15 03:38:24 +0100jao(~jao@45.134.142.225) (Ping timeout: 252 seconds)
2022-03-15 03:38:45 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:64ad:f021:a34e:c231) (Remote host closed the connection)
2022-03-15 03:41:56 +0100Guest7560(~ss@187.83.249.216.dyn.smithville.net) (Quit: Client closed)
2022-03-15 03:43:02 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:64ad:f021:a34e:c231)
2022-03-15 03:45:51 +0100ub(~Thunderbi@p200300ecdf19b70a55005d108b4dd460.dip0.t-ipconnect.de)
2022-03-15 03:46:42 +0100ubert(~Thunderbi@p200300ecdf19b765b1fc5a865b2694ae.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2022-03-15 03:46:43 +0100ububert
2022-03-15 03:47:23 +0100Henson(~kvirc@107-179-133-201.cpe.teksavvy.com)
2022-03-15 03:47:31 +0100ubert1(~Thunderbi@p200300ecdf19b7650b46467200086b86.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2022-03-15 03:49:13 +0100 <Henson> what's the paradigm if I'm using Pipes (or Conduit) if I have a stream of paired data (like tuples) and I want to turn the stream of pairs into a pair of streams and feed the elements through two pipelines that handle single items, and then combine them back together later? Is that something these libraries are designed to do, or there another paradigm I should be using?
2022-03-15 03:49:55 +0100mvk(~mvk@2607:fea8:5cc3:7e00::45ee)
2022-03-15 03:53:41 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:64ad:f021:a34e:c231) (Remote host closed the connection)
2022-03-15 03:59:52 +0100 <jackdk> Once you go from stream-of-pairs to pair-of-streams, you still need to process in lockstep otherwise you need to buffer one side of the data that comes in from teh initial stream
2022-03-15 04:00:47 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-03-15 04:01:21 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2022-03-15 04:01:29 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it)
2022-03-15 04:02:11 +0100 <jackdk> So I would probably push each side of the input stream into a separate bounded queue, then have streams that go Read inQueueA -> process A -> write outQueueA (and similar for B), and then have another stream that reads from outQueue{A,B} and emits the output. And run it all in parallel
2022-03-15 04:02:22 +0100 <jackdk> but I haven't done a lot of streaming work so I'm not 100% that this is a good idea
2022-03-15 04:03:42 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 252 seconds)
2022-03-15 04:03:42 +0100 <jackdk> Hm, `streaming` (which I'm least unfamiliar with) has a `zip :: Monad m => Stream (Of a) m r -> Stream (Of b) m r -> Stream (Of (a, b)) m r`
2022-03-15 04:04:43 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-03-15 04:04:43 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-03-15 04:04:43 +0100wroathe(~wroathe@user/wroathe)
2022-03-15 04:04:45 +0100 <jackdk> It also has an `unzip` with a curious type, to preserve streaming: https://hackage.haskell.org/package/streaming-0.2.3.1/docs/Streaming-Prelude.html#v:unzip
2022-03-15 04:07:36 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-03-15 04:09:24 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-03-15 04:10:36 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-03-15 04:11:33 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-03-15 04:12:10 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-03-15 04:12:32 +0100mbuf(~Shakthi@27.58.140.82)
2022-03-15 04:16:46 +0100Unicorn_Princess(~Unicorn_P@46-54-248-191.static.kate-wing.si) (Remote host closed the connection)
2022-03-15 04:18:07 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 04:19:36 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-15 04:20:21 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 04:25:00 +0100 <Henson> jackdk: thank you for the suggestion.
2022-03-15 04:25:43 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-03-15 04:25:43 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-03-15 04:25:43 +0100finn_elijaFinnElija
2022-03-15 04:25:56 +0100Henson(~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: goodnight)
2022-03-15 04:26:17 +0100nexus_(~nexus@84-236-60-119.pool.digikabel.hu) (Ping timeout: 256 seconds)
2022-03-15 04:26:36 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds)
2022-03-15 04:28:07 +0100nexus_(~nexus@178-164-188-12.pool.digikabel.hu)
2022-03-15 04:31:31 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-03-15 04:33:54 +0100Chai-T-Rex(~ChaiTRex@user/chaitrex) (Quit: Chai-T-Rex)
2022-03-15 04:34:31 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2022-03-15 04:36:46 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:64ad:f021:a34e:c231)
2022-03-15 04:38:13 +0100geranim0(~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Ping timeout: 240 seconds)
2022-03-15 04:40:24 +0100k8yun(~k8yun@user/k8yun)
2022-03-15 04:42:25 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-03-15 04:42:39 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 04:44:02 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2022-03-15 04:44:50 +0100pretty_d1(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4.1)
2022-03-15 04:45:16 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-03-15 04:47:47 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Read error: Connection reset by peer)
2022-03-15 04:47:57 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-03-15 04:48:04 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it)
2022-03-15 04:50:05 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-15 04:52:28 +0100lumberjack123(~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
2022-03-15 04:53:56 +0100mzan(~quassel@mail.asterisell.com) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-03-15 04:55:01 +0100mzan(~quassel@mail.asterisell.com)
2022-03-15 04:55:02 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-15 04:56:48 +0100lumberjack123(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-03-15 05:00:45 +0100yauhsien_(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 05:00:45 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
2022-03-15 05:03:49 +0100Flow(~none@gentoo/developer/flow) (Ping timeout: 250 seconds)
2022-03-15 05:04:51 +0100Flow(~none@gentoo/developer/flow)
2022-03-15 05:05:07 +0100eggplant_(~Eggplanta@2600:1700:bef1:5e10:fcf5:76ff:669c:b084)
2022-03-15 05:07:57 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:64ad:f021:a34e:c231) (Ping timeout: 240 seconds)
2022-03-15 05:13:33 +0100boborygmy_(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 252 seconds)
2022-03-15 05:13:33 +0100boborygmy(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 252 seconds)
2022-03-15 05:20:58 +0100Guest84(~Guest84@2601:602:87f:4220:c3f4:c3dc:6b1f:b324)
2022-03-15 05:21:33 +0100Guest84(~Guest84@2601:602:87f:4220:c3f4:c3dc:6b1f:b324) (Client Quit)
2022-03-15 05:24:38 +0100euandreh(~euandreh@2804:14c:33:9fe5:a4f7:3458:36c4:ffd7) (Ping timeout: 250 seconds)
2022-03-15 05:25:26 +0100yauhsien_(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-15 05:25:58 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 05:26:32 +0100euandreh(~euandreh@2804:14c:33:9fe5:e51b:ac6b:af96:5d6c)
2022-03-15 05:29:30 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
2022-03-15 05:30:42 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2022-03-15 05:31:46 +0100MironZ(~MironZ@nat-infra.ehlab.uk) (Quit: Ping timeout (120 seconds))
2022-03-15 05:31:56 +0100sus(zero@user/zeromomentum) (Quit: Ping timeout (120 seconds))
2022-03-15 05:32:06 +0100MironZ(~MironZ@nat-infra.ehlab.uk)
2022-03-15 05:32:07 +0100sus(zero@user/zeromomentum)
2022-03-15 05:33:55 +0100_xor(~xor@dsl-50-5-233-169.fuse.net) (Read error: Connection reset by peer)
2022-03-15 05:37:48 +0100_xor(~xor@dsl-50-5-233-169.fuse.net)
2022-03-15 05:41:11 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection)
2022-03-15 05:41:24 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net)
2022-03-15 05:43:16 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 250 seconds)
2022-03-15 05:45:00 +0100kaph_(~kaph@net-109-116-124-149.cust.vodafonedsl.it)
2022-03-15 05:46:00 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 252 seconds)
2022-03-15 05:47:39 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 252 seconds)
2022-03-15 05:56:29 +0100xkuru(~xkuru@user/xkuru)
2022-03-15 06:00:10 +0100kaph_(~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 250 seconds)
2022-03-15 06:02:21 +0100russruss(~russruss@my.russellmcc.com) (Quit: The Lounge - https://thelounge.chat)
2022-03-15 06:03:13 +0100Giovanni(~Giovanni@176.55.166.222) (Remote host closed the connection)
2022-03-15 06:07:44 +0100InstX1_(~Liam@2601:6c4:4080:3f80:51cd:6d8f:20a7:5eaa)
2022-03-15 06:07:54 +0100russruss(~russruss@my.russellmcc.com)
2022-03-15 06:11:17 +0100InstX1(~Liam@2601:6c4:4080:3f80:ac7b:7176:d055:eccc) (Ping timeout: 240 seconds)
2022-03-15 06:18:37 +0100tomku(~tomku@user/tomku) (Ping timeout: 240 seconds)
2022-03-15 06:21:13 +0100kaph_(~kaph@151.43.120.248)
2022-03-15 06:22:14 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-03-15 06:22:27 +0100nexus_(~nexus@178-164-188-12.pool.digikabel.hu) (Ping timeout: 256 seconds)
2022-03-15 06:24:08 +0100nexus_(~nexus@80-95-85-52.pool.digikabel.hu)
2022-03-15 06:24:27 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-03-15 06:24:35 +0100gabiruh_(~gabiruh@vps19177.publiccloud.com.br)
2022-03-15 06:25:18 +0100gabiruh(~gabiruh@vps19177.publiccloud.com.br) (Read error: Connection reset by peer)
2022-03-15 06:28:02 +0100jakalx(~jakalx@base.jakalx.net)
2022-03-15 06:28:15 +0100deadmarshal_(~deadmarsh@95.38.115.168)
2022-03-15 06:28:26 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-03-15 06:29:29 +0100img(~img@user/img)
2022-03-15 06:29:38 +0100mbuf(~Shakthi@27.58.140.82) (Quit: Leaving)
2022-03-15 06:31:02 +0100img(~img@user/img) (Client Quit)
2022-03-15 06:31:19 +0100cheater(~Username@user/cheater) (Ping timeout: 272 seconds)
2022-03-15 06:32:24 +0100img(~img@user/img)
2022-03-15 06:32:36 +0100deadmarshal_(~deadmarsh@95.38.115.168) (Ping timeout: 240 seconds)
2022-03-15 06:33:33 +0100kaph_(~kaph@151.43.120.248) (Read error: Connection reset by peer)
2022-03-15 06:34:26 +0100kaph(~kaph@151.43.120.248)
2022-03-15 06:41:44 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-03-15 06:46:25 +0100deadmarshal_(~deadmarsh@95.38.115.168)
2022-03-15 06:46:53 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 06:49:12 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-03-15 06:52:24 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 06:54:00 +0100shriekingnoise(~shrieking@201.231.16.156) (Quit: Quit)
2022-03-15 06:55:44 +0100tomku(~tomku@user/tomku)
2022-03-15 06:57:55 +0100kaph(~kaph@151.43.120.248) (Read error: Connection reset by peer)
2022-03-15 06:58:33 +0100cyphase(~cyphase@user/cyphase) (Ping timeout: 272 seconds)
2022-03-15 07:02:15 +0100cyphase(~cyphase@user/cyphase)
2022-03-15 07:09:33 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-03-15 07:11:21 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-03-15 07:14:06 +0100vglfr(~vglfr@46.96.161.0)
2022-03-15 07:17:45 +0100xkuru(~xkuru@user/xkuru)
2022-03-15 07:25:40 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-15 07:32:16 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-03-15 07:40:05 +0100x_kuru(xkuru@user/xkuru)
2022-03-15 07:43:29 +0100liz(~liz@2a00:23c5:9680:501:b62e:99ff:fee4:47fa)
2022-03-15 07:43:49 +0100xkuru(~xkuru@user/xkuru) (Ping timeout: 256 seconds)
2022-03-15 07:44:59 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-03-15 07:45:11 +0100k8yun(~k8yun@user/k8yun) (Ping timeout: 256 seconds)
2022-03-15 07:48:06 +0100deadmarshal_(~deadmarsh@95.38.115.168) (Ping timeout: 252 seconds)
2022-03-15 07:57:04 +0100notzmv(~zmv@user/notzmv)
2022-03-15 07:59:46 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-03-15 08:02:44 +0100liz(~liz@2a00:23c5:9680:501:b62e:99ff:fee4:47fa) (Remote host closed the connection)
2022-03-15 08:06:15 +0100cyphase(~cyphase@user/cyphase) (Ping timeout: 252 seconds)
2022-03-15 08:08:55 +0100cfricke(~cfricke@user/cfricke)
2022-03-15 08:09:18 +0100tomku(~tomku@user/tomku) (Ping timeout: 250 seconds)
2022-03-15 08:09:38 +0100coot(~coot@213.134.190.95)
2022-03-15 08:10:50 +0100feliix42_(~felix@gibbs.uberspace.de)
2022-03-15 08:11:13 +0100cyphase(~cyphase@user/cyphase)
2022-03-15 08:11:45 +0100feliix42(~felix@gibbs.uberspace.de) (Ping timeout: 252 seconds)
2022-03-15 08:18:46 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-03-15 08:22:00 +0100Pickchea(~private@user/pickchea)
2022-03-15 08:25:35 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-03-15 08:25:49 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 08:25:57 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-03-15 08:28:28 +0100_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-03-15 08:28:38 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-03-15 08:28:50 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-03-15 08:30:55 +0100michalz(~michalz@185.246.204.43)
2022-03-15 08:36:29 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 252 seconds)
2022-03-15 08:40:07 +0100jonathanx(~jonathan@c-5eea3758-74736162.cust.telenor.se)
2022-03-15 08:43:39 +0100nexus_(~nexus@80-95-85-52.pool.digikabel.hu) (Ping timeout: 252 seconds)
2022-03-15 08:44:50 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 250 seconds)
2022-03-15 08:45:32 +0100nexus_(~nexus@84-236-55-113.pool.digikabel.hu)
2022-03-15 08:47:41 +0100machinedgod(~machinedg@24.105.81.50)
2022-03-15 08:48:50 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-15 08:51:04 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 08:52:37 +0100jonathanx(~jonathan@c-5eea3758-74736162.cust.telenor.se) (Ping timeout: 256 seconds)
2022-03-15 08:56:06 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
2022-03-15 08:57:18 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:cecd:603d:2da7:a044)
2022-03-15 09:00:58 +0100MarcoBuster(~MarcoBust@37.161.174.126)
2022-03-15 09:01:04 +0100MajorBiscuit(~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e)
2022-03-15 09:02:31 +0100_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-03-15 09:03:00 +0100briandaed(~root@109.95.142.93.r.toneticgroup.pl)
2022-03-15 09:04:13 +0100 <MarcoBuster> Hi! I'm trying to learn Haskell for my first time. Can someone explain what this expression does?
2022-03-15 09:04:14 +0100 <MarcoBuster> λx.(case x of inl(y) -> x, inr(z) -> inl(z))
2022-03-15 09:04:14 +0100 <MarcoBuster> Thank you very much
2022-03-15 09:04:15 +0100mreh(~matthew@host86-172-33-212.range86-172.btcentralplus.com) (Quit: Lost terminal)
2022-03-15 09:11:19 +0100Pickchea(~private@user/pickchea) (Ping timeout: 256 seconds)
2022-03-15 09:11:41 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-03-15 09:14:20 +0100fendor(~fendor@178.165.206.62.wireless.dyn.drei.com)
2022-03-15 09:16:01 +0100tomku(~tomku@user/tomku)
2022-03-15 09:16:10 +0100alp(~alp@user/alp)
2022-03-15 09:16:27 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 09:18:26 +0100acidjnk(~acidjnk@pd9e0b763.dip0.t-ipconnect.de)
2022-03-15 09:21:12 +0100jinsun__(~jinsun@user/jinsun) ()
2022-03-15 09:25:01 +0100dextaa_(~dextaa@user/dextaa) (Remote host closed the connection)
2022-03-15 09:26:53 +0100gdown(~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection)
2022-03-15 09:27:17 +0100MarcoBuster(~MarcoBust@37.161.174.126) (Remote host closed the connection)
2022-03-15 09:27:19 +0100zmt01(~zmt00@user/zmt00)
2022-03-15 09:27:33 +0100MarcoBuster(~MarcoBust@37.161.174.126)
2022-03-15 09:28:12 +0100zmt00(~zmt00@user/zmt00) (Ping timeout: 240 seconds)
2022-03-15 09:28:55 +0100 <jackdk> MarcoBuster: do you have a link to where you saw that expression, because the lower-case `inl` and `inr` would not be valid
2022-03-15 09:30:26 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 09:33:34 +0100 <MarcoBuster> jackdk: in Haskell terms that is \x -> case x of { Left y -> x; Right z -> Left z }
2022-03-15 09:34:27 +0100 <jackdk> What parts of this expression do you understand? Specifically, do you understand what a lambda abstraction means, and what a case expression does?
2022-03-15 09:36:20 +0100chele(~chele@user/chele)
2022-03-15 09:36:39 +0100 <MarcoBuster> I think I don't really understood what a case expression does
2022-03-15 09:37:58 +0100 <MarcoBuster> I'm familiar with the case expression of non-functional programming languages of course but it can't map the concept to the Haskell "case"
2022-03-15 09:38:08 +0100 <jackdk> yeah, this is quite different
2022-03-15 09:39:27 +0100vglfr(~vglfr@46.96.161.0) (Read error: Connection reset by peer)
2022-03-15 09:39:55 +0100 <jackdk> A case expression means: look at the shape of the expression between `case` and `of` (the "scrutinee"). Working through the list of `pattern -> expression` clauses, in order, seeing if the pattern matches the scrutinee. If it does, assign the variables in the pattern and evaluate the right hand side of the `->`
2022-03-15 09:40:07 +0100 <jackdk> that's a lot of words, so let's do an example
2022-03-15 09:40:10 +0100vglfr(~vglfr@46.96.161.0)
2022-03-15 09:40:41 +0100 <jackdk> `(\x -> case x of { Left y -> x; Right z -> Left z }) (Right 3)`
2022-03-15 09:41:39 +0100 <jackdk> First step: evaluate the lambda, substituting `x`: `case Right 3 of { Left y -> Right 3; Right z -> Left z }`. Does `Right 3` match the pattern `Left y`?
2022-03-15 09:44:27 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
2022-03-15 09:45:34 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-15 09:46:13 +0100sander(~sander@user/sander) (Ping timeout: 240 seconds)
2022-03-15 09:49:21 +0100cheater(~Username@user/cheater)
2022-03-15 09:49:50 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-03-15 09:51:10 +0100kuribas(~user@ptr-25vy0i9smgbd9x89015.18120a2.ip6.access.telenet.be)
2022-03-15 09:52:57 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2022-03-15 09:52:57 +0100MarcoBuster(~MarcoBust@37.161.174.126) (Read error: Connection reset by peer)
2022-03-15 09:54:12 +0100deadmarshal_(~deadmarsh@95.38.115.168)
2022-03-15 09:54:21 +0100Guest16(~Guest16@89-64-88-131.dynamic.chello.pl)
2022-03-15 09:54:28 +0100Guest16HaskLove
2022-03-15 09:54:36 +0100 <dminuoso> Is there a way to delete a package candidate on hackage?
2022-03-15 09:54:51 +0100 <dminuoso> I specified an incorrect version, but I want to avoid accidentally ever publishing this in the future.
2022-03-15 09:55:13 +0100InstX1(~Liam@2601:6c4:4080:3f80:c5d8:5b17:fec2:5fb2)
2022-03-15 09:56:45 +0100 <HaskLove> Hello! Does anybody here have experience with time / space profiling? For some reason 52%time of my program is being taken up by the "MAIN <built-in>" cost center and I can't find any documentation that explicitly states what that cost center refers to. Appreciate any inputs!
2022-03-15 09:56:53 +0100 <dminuoso> Gah the hackage UX is so bizarre.
2022-03-15 09:57:19 +0100 <dminuoso> It's like people without a graphical browser designed it. :>
2022-03-15 09:58:16 +0100HaskLove(~Guest16@89-64-88-131.dynamic.chello.pl) (Client Quit)
2022-03-15 09:58:37 +0100InstX1_(~Liam@2601:6c4:4080:3f80:51cd:6d8f:20a7:5eaa) (Ping timeout: 240 seconds)
2022-03-15 09:59:54 +0100 <jackdk> dminuoso: click into the package candidate -> edit package information -> delete candidate
2022-03-15 10:00:06 +0100vglfr(~vglfr@46.96.161.0) (Ping timeout: 252 seconds)
2022-03-15 10:00:16 +0100lumberjack123(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-03-15 10:00:21 +0100 <dminuoso> jackdk: Ahh!
2022-03-15 10:00:25 +0100 <dminuoso> Thanks.
2022-03-15 10:00:38 +0100 <jackdk> dminuoso: not that I disagree with your complaint :->
2022-03-15 10:01:10 +0100 <[exa]> hackage admin interface isn't on gopher? ._.
2022-03-15 10:01:34 +0100 <jackdk> nah coz gopher's readonly iirc
2022-03-15 10:06:34 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-03-15 10:11:33 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-03-15 10:12:53 +0100alMalsamolumberjack13
2022-03-15 10:13:24 +0100 <[exa]> jackdk: you can actually smuggle in user data to scripts in the very same way as with old html (there's "search form" support :D )
2022-03-15 10:13:42 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-03-15 10:14:01 +0100Guest16(~Guest16@89-64-88-131.dynamic.chello.pl)
2022-03-15 10:14:09 +0100Guest16(~Guest16@89-64-88-131.dynamic.chello.pl) (Client Quit)
2022-03-15 10:14:37 +0100rond_(~rond_@90.254.208.190)
2022-03-15 10:15:14 +0100 <dminuoso> `ghcup: make: executeFile: does not exist (No such file or directory)`
2022-03-15 10:15:17 +0100mbuf(~Shakthi@122.174.246.23)
2022-03-15 10:15:23 +0100 <dminuoso> Does ghcup require manual installation of its dependencies beforehand?
2022-03-15 10:15:39 +0100 <dminuoso> Shouldn't it take care of that? (I really dont know, Im not a ghcup regular user)
2022-03-15 10:15:39 +0100 <jackdk> [exa]: oh noooooo
2022-03-15 10:16:03 +0100 <jackdk> dminuoso: depends on how you installed it, I would've through the installer script would do that
2022-03-15 10:16:30 +0100 <jackdk> (I also do not use it that much, having shed physical form and ascended to the nix plane)
2022-03-15 10:16:47 +0100 <merijn> dminuoso: Because it wasn't designed for browsers. There was an API designed, without a frontend and the frontend is mostly hacked on "as needed"
2022-03-15 10:17:46 +0100 <dminuoso> merijn: Okay that explains a few things
2022-03-15 10:19:14 +0100nishant(~Nishant@49.37.242.151)
2022-03-15 10:19:17 +0100 <merijn> dminuoso: So for awhile you would just sent manual REST requests to it for stuff like deleting candidates until someone hacked in a minimum viable webpage with a button
2022-03-15 10:19:28 +0100nishant(~Nishant@49.37.242.151) (Remote host closed the connection)
2022-03-15 10:19:58 +0100nishant(~Nishant@49.37.242.151)
2022-03-15 10:20:22 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 10:23:37 +0100 <geekosaur> re ghcuup deps, it's impossible to keep up with naming in different distros
2022-03-15 10:24:34 +0100ccntrq(~Thunderbi@2a01:c22:89c9:4f00:38e1:ceae:1fb6:a685)
2022-03-15 10:29:39 +0100Major_Biscuit(~MajorBisc@c-001-021-050.client.tudelft.eduvpn.nl)
2022-03-15 10:31:00 +0100MajorBiscuit(~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e) (Ping timeout: 240 seconds)
2022-03-15 10:32:10 +0100 <tomsmeding> I think the ghcup installer tries to print a list of required package names, but needs you to install them manually still
2022-03-15 10:40:47 +0100 <geekosaur> yes
2022-03-15 10:41:21 +0100 <geekosaur> and the list is only for the largest distros (I think debian-based,fedora-based, arch-based, otherwise you're on your own last I checked?)
2022-03-15 10:41:38 +0100 <maerwald> dminuoso: no
2022-03-15 10:41:50 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2022-03-15 10:42:00 +0100 <maerwald> invoking sudo, apt-get or any package manager is a declared non-goal
2022-03-15 10:42:20 +0100jonathanx(~jonathan@c-5eea3758-74736162.cust.telenor.se)
2022-03-15 10:43:42 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-03-15 10:43:48 +0100 <maerwald> `ghcup tool-requirements` can be of some help
2022-03-15 10:45:50 +0100 <geekosaur> ghcup aims to be installed by ordinary users,very few systems allow package managers to be run directly by an ordinary user (which is a good thing)
2022-03-15 10:46:36 +0100 <merijn> geekosaur: Hard disagree
2022-03-15 10:46:59 +0100 <merijn> The fact that linux package managers don't by default support user-specific installs is a terrible misfeature
2022-03-15 10:47:19 +0100 <maerwald> they do, but no one uses those
2022-03-15 10:47:31 +0100 <merijn> "let's make sure that on our multi-user OS only the admin can actually install stuff! Yeah!"
2022-03-15 10:47:32 +0100 <geekosaur> user-*specific* is a much more complicated design than what I'm talking about
2022-03-15 10:47:50 +0100 <maerwald> most package managers allow to define chroot targets
2022-03-15 10:47:56 +0100lumberjack13(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-03-15 10:47:57 +0100 <geekosaur> it's also largely obsolete these days
2022-03-15 10:48:08 +0100 <merijn> maerwald: Only with *a lot* of effort
2022-03-15 10:48:15 +0100 <dminuoso> merijn: Makes perfect sense. Thanks
2022-03-15 10:48:18 +0100 <dminuoso> Err maerwald!
2022-03-15 10:48:39 +0100 <maerwald> XDG spec is not usable for package managers
2022-03-15 10:48:46 +0100jonathanx(~jonathan@c-5eea3758-74736162.cust.telenor.se) (Ping timeout: 250 seconds)
2022-03-15 10:48:54 +0100 <maerwald> so it has to be a proper chroot
2022-03-15 10:49:27 +0100 <[exa]> kinda wondering how many of the computers in question are actually multiuser
2022-03-15 10:49:31 +0100 <merijn> Creating a "proper chroot" is a nightmare task as unprivileged user, though
2022-03-15 10:49:46 +0100 <maerwald> merijn: please ask your system administrator xD
2022-03-15 10:49:54 +0100 <geekosaur> I'm sorry,but to me this sounds like docker all over again
2022-03-15 10:50:01 +0100 <merijn> [exa]: All university clusters, where you most need user installs, because everything is 15 years old
2022-03-15 10:50:04 +0100 <tomsmeding> [exa]: I think if a user has no permissions to install system packages, it's likely to be an actual multi-user system
2022-03-15 10:50:18 +0100 <merijn> tomsmeding++
2022-03-15 10:50:51 +0100 <maerwald> tomsmeding: well... if you don't want users to install system packages, do you want them to be able to install arbitrary toolchains and install binaries?
2022-03-15 10:50:55 +0100 <maerwald> I don't think so
2022-03-15 10:51:14 +0100 <tomsmeding> well then you can usually only mess up your own user environment
2022-03-15 10:51:16 +0100 <maerwald> but that's not my problem :p
2022-03-15 10:51:18 +0100 <[exa]> tomsmeding: no like, if the user may just sudo, it's technically single user, there's just a tiny bit of user presence check
2022-03-15 10:51:18 +0100 <merijn> maerwald: I mean, that's exactly what people do on university clusters and supercomputers
2022-03-15 10:51:19 +0100 <tomsmeding> which is generally the whole point of that permission system
2022-03-15 10:51:28 +0100 <[exa]> merijn: valid but these provide at least LMod or something
2022-03-15 10:51:29 +0100 <maerwald> merijn: yeah, I consider those misconfigured
2022-03-15 10:51:39 +0100 <tomsmeding> [exa]: yes and we're taling about the systems where a user may _not_ just sudo, e.g. university systems
2022-03-15 10:51:40 +0100 <merijn> maerwald: They'd be useless in any other configuration
2022-03-15 10:51:57 +0100 <merijn> maerwald: wtf use is a cluster machine where you can't install the stuff you need??
2022-03-15 10:52:05 +0100 <maerwald> either they should disallow installing any binary or allow installing of system packages in a way that doesn't persist re-login or switching users
2022-03-15 10:52:22 +0100 <maerwald> anything in between makes no sense
2022-03-15 10:52:36 +0100 <[exa]> tomsmeding: ah so okay
2022-03-15 10:52:40 +0100 <tomsmeding> maerwald: "system package that doesn't persist switching users", i.e. user-local packages? :p
2022-03-15 10:52:43 +0100 <merijn> maerwald: And you think any admin can setup the latter satisfactory?
2022-03-15 10:52:51 +0100 <maerwald> tomsmeding: that can be achieved in a number of ways
2022-03-15 10:52:56 +0100 <merijn> tomsmeding: Get outta here with your logic!
2022-03-15 10:52:59 +0100 <maerwald> merijn: xD
2022-03-15 10:53:24 +0100 <dminuoso> maerwald: It would be nice if ghcup had some basic probing of used binaries. Something along the lines of "Missing `make`. Please install this yourself`
2022-03-15 10:53:25 +0100 <maerwald> they might not actually reside in $HOME
2022-03-15 10:53:31 +0100 <dminuoso> Would you be opposed of something along these lines?
2022-03-15 10:53:41 +0100 <maerwald> dminuoso: that's what the GHC configure script does, basically
2022-03-15 10:53:45 +0100 <maerwald> it checks your toolchain
2022-03-15 10:53:48 +0100 <dminuoso> [ ghc-make ] ghcup: make: executeFile: does not exist (No such file or directory)
2022-03-15 10:54:07 +0100 <[exa]> we had this once tbh
2022-03-15 10:54:08 +0100 <maerwald> that would be a bug in the configure script then
2022-03-15 10:54:35 +0100 <[exa]> Checking for make presence... no
2022-03-15 10:56:26 +0100 <maerwald> dminuoso: https://gitlab.haskell.org/ghc/ghc/-/blob/master/distrib/configure.ac.in
2022-03-15 10:56:47 +0100 <[exa]> kinda realizing that all custom packages I've got on the hpc here are autotools and I didn't even notice because all just worked. including the binary distribution of ghc lol
2022-03-15 10:58:03 +0100nunggu(~q@user/nunggu)
2022-03-15 10:59:25 +0100 <dminuoso> My autotools-fu is practically non-existent.
2022-03-15 10:59:38 +0100DNH(~DNH@2a02:8108:1100:16d8:2015:9361:6306:3ac4)
2022-03-15 10:59:41 +0100 <dminuoso> Im sure there's still a few greybearded GNU wizards that can understand .ac.in files
2022-03-15 10:59:50 +0100cosimone(~user@93-44-187-176.ip98.fastwebnet.it)
2022-03-15 11:00:13 +0100lumberjack13(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-03-15 11:01:01 +0100nexus_(~nexus@84-236-55-113.pool.digikabel.hu) (Ping timeout: 240 seconds)
2022-03-15 11:02:51 +0100kenran(~kenran@ip-037-024-119-190.um08.pools.vodafone-ip.de)
2022-03-15 11:02:54 +0100nexus_(~nexus@178-164-207-227.pool.digikabel.hu)
2022-03-15 11:03:46 +0100jinsun(~jinsun@user/jinsun)
2022-03-15 11:03:52 +0100 <[exa]> nah, it's not that bad
2022-03-15 11:04:08 +0100 <maerwald> https://gitlab.haskell.org/ghc/ghc/-/issues/21232
2022-03-15 11:06:23 +0100 <dminuoso> Ah interesting, Ill have to check why I couldnt find that issue
2022-03-15 11:07:04 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-15 11:08:09 +0100 <maerwald> because I just opened it
2022-03-15 11:08:26 +0100 <dminuoso> Oh hah
2022-03-15 11:08:40 +0100 <dminuoso> I totally read that "Created 2 minutes ago" as "Created 2 years ago"
2022-03-15 11:09:13 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 11:09:21 +0100zincy_(~zincy@2a00:23c8:970c:4801:6945:2980:3f53:dff8)
2022-03-15 11:09:49 +0100geekosauris pretty good at .ac.in files actually
2022-03-15 11:09:56 +0100 <geekosaur> been doing it for long enough
2022-03-15 11:10:52 +0100 <maerwald> I know autotools as well, but I'm not too keen about digging into it and debugging 15k LOC generated shell mess :p
2022-03-15 11:11:09 +0100jonathanx(~jonathan@c-5eea3758-74736162.cust.telenor.se)
2022-03-15 11:11:23 +0100chele_(~chele@user/chele)
2022-03-15 11:11:55 +0100 <maerwald> autotools is the reason for broken network package on windows too
2022-03-15 11:12:04 +0100 <maerwald> it's an abomination
2022-03-15 11:12:07 +0100jonathanx(~jonathan@c-5eea3758-74736162.cust.telenor.se) (Remote host closed the connection)
2022-03-15 11:12:18 +0100 <geekosaur> vi m4 even
2022-03-15 11:12:31 +0100zincy_(~zincy@2a00:23c8:970c:4801:6945:2980:3f53:dff8) (Remote host closed the connection)
2022-03-15 11:12:37 +0100 <geekosaur> *via
2022-03-15 11:13:48 +0100chele(~chele@user/chele) (Ping timeout: 252 seconds)
2022-03-15 11:15:49 +0100jonathanx(~jonathan@c-5eea3758-74736162.cust.telenor.se)
2022-03-15 11:16:13 +0100Guest14(~Guest14@185.249.168.124)
2022-03-15 11:16:37 +0100 <dminuoso> geekosaur: So I genuinely think that it's mostly older folks who come from that time that potentially have autotools experience. The younger generations don't even know how to build software anymore, they hand you a snapshot of an entire filesystem instead.
2022-03-15 11:17:06 +0100 <geekosaur> yeh. I made a docker comment earlier
2022-03-15 11:17:07 +0100 <dminuoso> Not that autotools is a pleasent experience, my previous remark was a bit of a hyperbole, but they are a tried mechanism of somewhat portably building software
2022-03-15 11:17:07 +0100 <maerwald> the only thing good about older times is that manpages and HTML documentations were actually useful
2022-03-15 11:17:29 +0100 <maerwald> now you just have blog posts and broken readmes
2022-03-15 11:17:51 +0100 <dminuoso> maerwald: Back then mostly stable APIs was a thing as well
2022-03-15 11:17:55 +0100 <maerwald> yes
2022-03-15 11:18:11 +0100rond_(~rond_@90.254.208.190) (Quit: Client closed)
2022-03-15 11:18:18 +0100 <maerwald> I keep arguing that PVP doesn't help with this, but I think no one understands what I mean
2022-03-15 11:18:48 +0100 <dminuoso> I guess PVP/semver is a symptom rather than a solution. The fact that we have to establish these rules in the first place happens because breaking APIs is a common practice.
2022-03-15 11:19:33 +0100 <dminuoso> Its a similar story with wayland
2022-03-15 11:19:36 +0100 <maerwald> I think it's hard to distinguish cause and effect. Because the early go ecosystem had very bad tooling wrt semver etc and you mostly just encountered stable APIs
2022-03-15 11:19:58 +0100 <dminuoso> You can critize X all you want, but it *is* completely standardized. Wayland is just a quickly moving mess
2022-03-15 11:20:14 +0100coot(~coot@213.134.190.95) (Quit: coot)
2022-03-15 11:20:14 +0100 <dminuoso> Whether your wayland app will work 6 months from now, nobody can say
2022-03-15 11:20:37 +0100 <maerwald> and because there was no good tooling to break API, people would publish new packages if they make backwards incompatible changes
2022-03-15 11:20:38 +0100InstX1_(~Liam@2601:6c4:4080:3f80:94f:38ab:47e0:127c)
2022-03-15 11:20:58 +0100 <maerwald> and that leads to thinking longer about your changes
2022-03-15 11:21:16 +0100jonathanx(~jonathan@c-5eea3758-74736162.cust.telenor.se) (Read error: Connection reset by peer)
2022-03-15 11:21:32 +0100 <maerwald> now, you just bump PVP and ignore the angry users on your github issue tracker
2022-03-15 11:21:34 +0100jonathanx(~jonathan@c-5eea3758-74736162.cust.telenor.se)
2022-03-15 11:22:20 +0100Evan_(~Evan@185.249.168.124)
2022-03-15 11:22:50 +0100 <dminuoso> Perhaps the main issue is that software development has been commercialized and managed to death. If management forces you to push software as fast as possible, and keep development cycles as short as possible, you quickly arrive at the fact that carefully designing things (takes time) and adhering to stable APIs (limits future features).
2022-03-15 11:22:55 +0100 <maerwald> Shame is actually a good driver for quality. E.g. bad releases used to be shameful. Now that everything is rolling, you just fix bugs quickly and make yet another release.
2022-03-15 11:23:02 +0100 <dminuoso> This trains an entire generation of software developers to work in that mind model
2022-03-15 11:23:38 +0100 <dminuoso> Much of old linux was not products of industrial work, but people doing this in their spare time. Things like API stability was just noble intent
2022-03-15 11:23:48 +0100InstX1(~Liam@2601:6c4:4080:3f80:c5d8:5b17:fec2:5fb2) (Ping timeout: 240 seconds)
2022-03-15 11:24:05 +0100 <dminuoso> Oh the previous remark was incomplete
2022-03-15 11:24:25 +0100 <dminuoso> ... you quickly arrive at the fact that carefully designing things (takes time) and adhering to stable APIs (limits future features) is incompatible and too expensive.
2022-03-15 11:24:32 +0100 <dminuoso> Ship now, worry about breaking later.
2022-03-15 11:25:07 +0100Evan_(~Evan@185.249.168.124) (Client Quit)
2022-03-15 11:25:26 +0100 <dminuoso> Amusingly, go folks work around this problem by pinning dependencies onto github references with commit hashes. Sticking to a particular commit is definitely stable.
2022-03-15 11:25:52 +0100 <dminuoso> (In some sense this is what nix ends up doing as well, but at least there exists workflows of easily updating said dependencies)
2022-03-15 11:25:54 +0100 <maerwald> The problem is that there are actually real studies out there proving that releasing often improves product quality. I've talked to a researcher who was part of this. There is some truth to it, apparently, but... it's a much more complicated topic to unpack.
2022-03-15 11:26:44 +0100Guest14(~Guest14@185.249.168.124) (Quit: Client closed)
2022-03-15 11:27:04 +0100 <dminuoso> Sure, from a business perspective there may be valid perspectives. Perhaps API stability is just a victim of capitalism in software development.
2022-03-15 11:27:30 +0100 <maerwald> Yes, I doubt that the main products they were considering were libraries or stdlibs.
2022-03-15 11:27:47 +0100 <maerwald> or kernel userpsace
2022-03-15 11:27:48 +0100 <kritzefitz> Releasing often doesn't necessarily imply breaking the API often.
2022-03-15 11:27:58 +0100 <maerwald> kritzefitz: exactly
2022-03-15 11:28:11 +0100 <merijn> maerwald: Joke's on you, I ignore angry users anyway! :D
2022-03-15 11:28:34 +0100 <dminuoso> kritzefitz: There is a direct correlation though. Releasing often makes it much harder to ship long overhauls. Or equivalently, if you need to ship a feature now, you also need to ship dependend APIs wit hit.
2022-03-15 11:28:35 +0100eggplant_(~Eggplanta@2600:1700:bef1:5e10:fcf5:76ff:669c:b084) (Remote host closed the connection)
2022-03-15 11:28:44 +0100 <merijn> "you broke our stuff!" 'oh, well, that sounds inconvenient for you...'
2022-03-15 11:28:48 +0100 <dminuoso> That might mean you might ship an incomplete or poorly designed API
2022-03-15 11:29:10 +0100 <dminuoso> Releasing often definitely promotes unstable APIs
2022-03-15 11:29:24 +0100 <dminuoso> Designing stable APIs with long foresight is hard.
2022-03-15 11:29:24 +0100 <merijn> maerwald: Your problem isn't with the PVP, your problem is with people not committing to longterm stability
2022-03-15 11:29:41 +0100 <merijn> And most people won't commit to that, PVP or no
2022-03-15 11:29:46 +0100 <dminuoso> merijn: Well, perhaps PVP should be tracked in cabal packages.
2022-03-15 11:29:49 +0100 <maerwald> merijn: well, PVP promotes unstable APIs as well, although you can use PVP differently
2022-03-15 11:29:53 +0100aplainze1akind(~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
2022-03-15 11:29:55 +0100aplainzetakind(~johndoe@captainludd.powered.by.lunarbnc.net)
2022-03-15 11:29:59 +0100 <dminuoso> In the sense that you mark a package as "respectsPVP"
2022-03-15 11:30:11 +0100 <kritzefitz> But does taking a long time to design an API really result in a good API? I don't know the actual history, but I bet PAM took a long time to design the API. Nowadays its API is rock solid, but basically good for nothing except UNIX authentication.
2022-03-15 11:30:14 +0100 <merijn> maerwald: Which is fine, because in reality, basically all open source APIs *are* unstable
2022-03-15 11:30:23 +0100 <maerwald> and the other thing is... no one really backports bugfixes to older PVP releases
2022-03-15 11:30:27 +0100 <kritzefitz> I.e. it completely failed at the design goal to become a general authentication framework.
2022-03-15 11:30:44 +0100 <maerwald> merijn: well, moreso in Haskell, because of the type system
2022-03-15 11:31:02 +0100 <maerwald> I mean, I can't imagine how servant would not break PVP regularly
2022-03-15 11:31:06 +0100 <dminuoso> kritzefitz: That argument doesnt quite follow. Im not saying that spending a lot of time leads to good APIs.
2022-03-15 11:31:14 +0100 <dminuoso> But spending *little* time likely leads to worse APIs.
2022-03-15 11:31:25 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2022-03-15 11:31:28 +0100 <dminuoso> Allowing yourself to spend more at least gives you better potential for a good API
2022-03-15 11:31:51 +0100 <merijn> maerwald: "nobody backports bugfixes" <- oh, I'm sorry, was I unclear when I licensed my code "as is"? :D
2022-03-15 11:31:56 +0100 <dminuoso> Of course we get into management debates now when to recognize that the API is in a good shape, and how to avoid overspending time on it
2022-03-15 11:32:38 +0100 <kritzefitz> Ok, yeah. Spending little time on an API probably won't improve it.
2022-03-15 11:33:13 +0100 <maerwald> merijn: you should treat the authors of the libraries you use like your enemies: know them well, eat and dine with them, know where they live :p
2022-03-15 11:33:17 +0100 <merijn> maerwald: A lot of your critique boils down to "I want people to commit to long-term stable APIs and long-term support of it". Which just will never happen in an open source context, unless you pay for it
2022-03-15 11:33:33 +0100shriekingnoise(~shrieking@201.231.16.156)
2022-03-15 11:33:41 +0100 <dminuoso> merijn: Never is a bit too strong, it does happen in open source context.
2022-03-15 11:33:45 +0100 <maerwald> merijn: I disagree with that
2022-03-15 11:33:51 +0100 <dminuoso> But there's usually no way to know whether the commitment has been done at all.
2022-03-15 11:33:54 +0100 <merijn> dminuoso: Mostly in cases where people get paid for it ;)
2022-03-15 11:34:04 +0100 <kritzefitz> But I think the actual thing that kills rigid-hard APIs such as PAM isn't their development time, but their rigidness. I don't think it's possible to design a good API without experience of how to use it, which you will necessarily only get in sufficient amounts once the API is done.
2022-03-15 11:34:05 +0100 <maerwald> I think it's more of a recent trend to not care, that's promoted by further tooling
2022-03-15 11:34:05 +0100 <dminuoso> Perhaps
2022-03-15 11:34:05 +0100 <merijn> maerwald: With what?
2022-03-15 11:34:07 +0100 <maerwald> an culture
2022-03-15 11:34:24 +0100 <maerwald> it wasn't always that way, when all you had is shitty C libraries
2022-03-15 11:34:30 +0100 <merijn> maerwald: I don't think so. It's just selection bias
2022-03-15 11:34:34 +0100 <kritzefitz> So I'd say practically you have the joist of incrementally improving your APIs and living with breaking changes or forever living with bad but stable APIs.
2022-03-15 11:34:44 +0100 <kritzefitz> * choice
2022-03-15 11:34:48 +0100 <merijn> maerwald: The only old stuff you remember/that is still around had long term commitment
2022-03-15 11:34:52 +0100 <dminuoso> kritzefitz: It's a complex topic, and depends on the subject. But if you start with a semantic model, and shape your API around that semantic model, usually that leads to great results.
2022-03-15 11:35:13 +0100 <maerwald> merijn: are you saying the only things that prevail are things that are stable?
2022-03-15 11:35:39 +0100 <dminuoso> kritzefitz: This is what X did for example. It's an API around designed semantics. Whether you like the semantics or not, not as long as the semantics allow you to model most windowing problems, its a great fit.
2022-03-15 11:35:51 +0100 <merijn> maerwald: Partially, sure
2022-03-15 11:35:55 +0100 <dminuoso> It's perhaps somewhat antiquated and has lots of design goals that dont quite fit nowadays problems anymore
2022-03-15 11:36:07 +0100 <merijn> maerwald: but "prevailing" is not always a goal when people release code
2022-03-15 11:36:12 +0100 <dminuoso> But it is standardized, rock stable, and has a semantic model. You dont need to fear breaking changes. :)
2022-03-15 11:36:20 +0100 <maerwald> merijn: what does that tell us about Haskell prevailing? xD
2022-03-15 11:36:47 +0100 <maerwald> people think the only way for Haskell to prevail is keep feeding the researchers and their motivation
2022-03-15 11:36:47 +0100 <merijn> maerwald: I mean, python is still around
2022-03-15 11:36:53 +0100 <kritzefitz> dminuoso: I don't think you can just brush away changing design goals as something you can ignore. The world keeps changing and lots of software that needs to deal with the world needs to follow it.
2022-03-15 11:37:02 +0100 <merijn> maerwald: I don't think anybody thinks that
2022-03-15 11:37:10 +0100 <maerwald> merijn: many people I talked to think that
2022-03-15 11:37:22 +0100 <merijn> maerwald: but most development is being done by 1) academic and 2) well-typed, so those *effectively* control what happens
2022-03-15 11:37:22 +0100InstX1(~Liam@2601:6c4:4080:3f80:501d:140:cf41:aa43)
2022-03-15 11:37:41 +0100 <dminuoso> kritzefitz: Dunno, so Im going to make a claim here. Agile development frequently leads to fragile software.
2022-03-15 11:37:49 +0100 <dminuoso> Makes sense since `agile` is in the word `fragile`
2022-03-15 11:37:56 +0100 <merijn> maerwald: Well, unless you come up with a way to replace (or outperform) the academic contribution to GHC, they will have a lot of control over where GHC goes
2022-03-15 11:38:16 +0100coot(~coot@213.134.190.95)
2022-03-15 11:38:21 +0100 <maerwald> I think competition to GHC would be great
2022-03-15 11:38:25 +0100 <dminuoso> kritzefitz: One of the big negative consequences of accepting "regular changes" is that it "regularly changes your product"
2022-03-15 11:38:43 +0100 <merijn> maerwald: Sure. But it doesn't exist, for the same reason academics largely shape GHCs development
2022-03-15 11:38:44 +0100 <dminuoso> And it leads to spending less time beforehand about what it is you're building
2022-03-15 11:38:49 +0100 <merijn> maerwald: Because no one wants to pay for it
2022-03-15 11:38:52 +0100 <dminuoso> As in "build now, lets see whether this is what we want later"
2022-03-15 11:38:55 +0100 <kritzefitz> dminuoso: Ok, I don't want to argue against that claim. But I also want to make the claim that agile software meets the requirements of its users.
2022-03-15 11:39:02 +0100 <dminuoso> Agile development is inherently incompatible with stable APIs.
2022-03-15 11:39:06 +0100 <geekosaur> does it?
2022-03-15 11:39:12 +0100 <maerwald> merijn: I can employ a compiler engineer for 3 months before I'm broke... will that be enough?
2022-03-15 11:39:21 +0100 <dminuoso> kritzefitz: agile software meets the *changing* requirements of its users.
2022-03-15 11:39:24 +0100InstX1_(~Liam@2601:6c4:4080:3f80:94f:38ab:47e0:127c) (Ping timeout: 240 seconds)
2022-03-15 11:39:28 +0100 <merijn> maerwald: No. Which is why GHC isn't going to be what you want anytime soon :)
2022-03-15 11:40:14 +0100 <kritzefitz> dminuoso: I don't know a case where someone knew their requirements well enough to cast into unchangeable software before the software was done.
2022-03-15 11:40:31 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com)
2022-03-15 11:41:04 +0100 <kritzefitz> But I don't even want to say that adaptability always trumps stability. It seems more like a dilemma to me. How can we have software that is both stable and adaptable?
2022-03-15 11:41:33 +0100 <dminuoso> kritzefitz: Well in GHC Haskell we have that situation. It's mostly stable, and we accept that we have shitty parts in the language. Of course we could get rid of `Read` and replace most String with Text. The breakage would be insane.
2022-03-15 11:42:06 +0100 <dminuoso> Its not necessarily about predicting the ideal requirements, but sometimes its okay to say "We would like to change the requirements, but that has a cost"
2022-03-15 11:42:31 +0100 <maerwald> dminuoso: good news, we're going to get rid of FilePath at some point :D
2022-03-15 11:42:57 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-03-15 11:43:01 +0100 <maerwald> like, in 20 years
2022-03-15 11:43:31 +0100 <dminuoso> Calendar entry done!
2022-03-15 11:43:46 +0100 <dminuoso> If its not there by then, I demand to be paid 10 cookies in damages
2022-03-15 11:44:36 +0100 <maerwald> feel free to help reviewing: https://github.com/haskell/filepath/pull/103
2022-03-15 11:44:52 +0100 <dminuoso> kritzefitz: And arguably, the linux kernel is a more prominent example. It has *extremely* poor APIs to the point where you think "couldn't you have spend 10 minutes to think about this insanity?" or "who the heck ever agreed to merge this"
2022-03-15 11:44:54 +0100 <dminuoso> But its stable.
2022-03-15 11:45:29 +0100 <dminuoso> Linux Kernel API is so stable, you can expect ioctl to still exist unchanged 30 years from now.
2022-03-15 11:45:38 +0100 <kritzefitz> dminuoso: Yes, changing requirements has a cost, just a depending on unstable software has a cost. So we have tools to reduce either of those costs. The dilemma seem to be unable to reduce both at the same time under a certain level.
2022-03-15 11:45:40 +0100 <dminuoso> Despite being the the worst API to have ever entered the kernel
2022-03-15 11:46:52 +0100 <maerwald> The main thing I remember about agile is an engineer working for german railway company and telling me in private they've considered leaking information to journalists about the state of the project. xD
2022-03-15 11:46:55 +0100zmt01(~zmt00@user/zmt00) (Ping timeout: 256 seconds)
2022-03-15 11:47:56 +0100 <dminuoso> And bizarrely I would prefer a bad but stable API over a good but unstable API.
2022-03-15 11:48:14 +0100 <dminuoso> Of course a stable good API is ideal, but those are hard to come by
2022-03-15 11:48:16 +0100lumberjack13(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-03-15 11:48:39 +0100 <maerwald> Doing bad work in software doesn't have enough legal implications.
2022-03-15 11:48:53 +0100 <dminuoso> Yes. There should be liability for software
2022-03-15 11:49:15 +0100 <dminuoso> I recommend reintroducing flogging.
2022-03-15 11:49:25 +0100 <dminuoso> Breaking PVP gives you 10 lashes.
2022-03-15 11:49:54 +0100 <maerwald> lol
2022-03-15 11:50:38 +0100 <Hecate> nice, I should do that more often
2022-03-15 11:50:55 +0100 <maerwald> ewww xD
2022-03-15 11:51:30 +0100 <kritzefitz> Yes, haham I get that it's hyperbole, but seriously? People put up stuff that they made in their free time for free and you want to shame them for doing it in a way they like?
2022-03-15 11:52:55 +0100mreh(~matthew@host86-172-33-212.range86-172.btcentralplus.com)
2022-03-15 11:53:16 +0100 <dminuoso> The liability part is not a joke.
2022-03-15 11:53:40 +0100 <dminuoso> Ask maerwald about liability in construction, for example with concrete
2022-03-15 11:53:44 +0100 <geekosaur> it'll be gamed
2022-03-15 11:54:04 +0100jonathanx_(~jonathan@dyn-2-sc.cdg.chalmers.se)
2022-03-15 11:54:06 +0100ccntrq(~Thunderbi@2a01:c22:89c9:4f00:38e1:ceae:1fb6:a685) (Remote host closed the connection)
2022-03-15 11:54:10 +0100 <kritzefitz> Yes, that's what I'm concerned about. That it's not a joke. If I was liable for software I make for free in my free time, I would stop doing software in my free time. Period.
2022-03-15 11:54:12 +0100gensyst(gensyst@user/gensyst)
2022-03-15 11:54:19 +0100 <maerwald> I think it starts at C30 or C35
2022-03-15 11:54:22 +0100 <dminuoso> I dont have a specific recommendation how liability would even work given how distant the author of a library and a resulting product using that library is
2022-03-15 11:54:24 +0100ccntrq(~Thunderbi@2a01:c22:89c9:4f00:38e1:ceae:1fb6:a685)
2022-03-15 11:54:49 +0100 <dminuoso> kritzefitz: Okay asked differently"
2022-03-15 11:55:15 +0100 <gensyst> My friends, can you help me decipher this time profile? https://paste.centos.org/view/d68cb444 Why is "otherFunc" directly below "someFunc" but with very low percentage figures?
2022-03-15 11:55:23 +0100 <dminuoso> I build a plane and that plane runs on casual usual npm hosted software.
2022-03-15 11:55:27 +0100 <maerwald> your software misbehaves and has no tests? => jail
2022-03-15 11:55:29 +0100 <gensyst> Is otherFunc an *actual* bottleneck or am I being fooled?
2022-03-15 11:55:41 +0100 <dminuoso> kritzefitz: Would you be opposed to that? Have any worries?
2022-03-15 11:56:00 +0100 <dminuoso> Who would be responsile if the plane crashes and *why*?
2022-03-15 11:56:01 +0100 <mreh> is there a way to express this type relationship? F (AppendSymbol "[]" s) = [F s]
2022-03-15 11:56:11 +0100 <dminuoso> kritzefitz: All I ask for is due diligence
2022-03-15 11:56:12 +0100 <gensyst> (Also, I even tried refactoring all calls to otherFunc into a separate intermediateFunc, but why does this not cause intermediateFunc to even show up in my profiler?)
2022-03-15 11:56:17 +0100jonathanx(~jonathan@c-5eea3758-74736162.cust.telenor.se) (Ping timeout: 240 seconds)
2022-03-15 11:56:22 +0100 <maerwald> dminuoso: tbf... a plane probably *could* run random npm software, given all the redundancy tricks in their architecture :p
2022-03-15 11:56:22 +0100 <kritzefitz> dminuoso: Of course I don't want that. But the people building a plane usually don't do it for free.
2022-03-15 11:56:53 +0100 <dminuoso> kritzefitz: that due diligence would include, but not be limited to, having tests, automated build processes, have a documented procedure and time table to respond to bug reports.
2022-03-15 11:56:55 +0100 <maerwald> I really don't buy this argument that money is what makes the main difference
2022-03-15 11:57:04 +0100 <maerwald> I don't apply half of my standards when working for money
2022-03-15 11:57:20 +0100 <maerwald> Because the customer/employer wouldn't even want that
2022-03-15 11:57:36 +0100 <dminuoso> kritzefitz: If I build electrical tools in my free time, there's tons of regulartions for that as well
2022-03-15 11:57:41 +0100 <dminuoso> Why should software be any different?
2022-03-15 11:57:50 +0100 <dminuoso> If that software has the potential to cause damages
2022-03-15 11:58:16 +0100 <maerwald> if you build a skyscraper for free, because you're a millionare, no one cares... it has to follow law regulations
2022-03-15 11:58:19 +0100 <dminuoso> Arguably software can have far wider reaching consequences due to how uniquitious it is
2022-03-15 11:58:49 +0100 <dminuoso> A poor wiring in an electric drill can only harm the user. A bug in a software plane can cause hundreds of deaths
2022-03-15 11:59:05 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-03-15 11:59:28 +0100 <dminuoso> Laws tend to regulate the producer, not the consumer part.
2022-03-15 11:59:29 +0100 <tomsmeding> but only because someone who actually works on the plane decided it was a good idea to use that npm package
2022-03-15 11:59:31 +0100 <dminuoso> Why would software be any different?
2022-03-15 12:00:04 +0100 <tomsmeding> mreh: is F a type family?
2022-03-15 12:00:22 +0100 <kritzefitz> I don't think you should put the blame for the crashing plane on the person who wrote the software, but on the people who put the software on a plane without making sure it's demonstratably up to the task.
2022-03-15 12:00:40 +0100 <dminuoso> mreh: Mmm I think you have to employ defunctionalization tricks
2022-03-15 12:00:41 +0100 <tomsmeding> what I said but then more eloquently
2022-03-15 12:01:02 +0100 <maerwald> kritzefitz: that depends. Liability in automotive industry depends on whether you followed the *process*.
2022-03-15 12:01:15 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-15 12:01:23 +0100 <maerwald> The process can described what kind of testing you need to do, how often in the product development, etc
2022-03-15 12:01:31 +0100 <maerwald> it doesn't describe the quality of the software itself
2022-03-15 12:01:42 +0100 <dminuoso> kritzefitz: as long as you follow due diligence with your software, you would be free of liability of damages resulting from it.
2022-03-15 12:01:49 +0100 <dminuoso> for example:
2022-03-15 12:02:22 +0100 <dminuoso> say someone reports a security bug to your software, and you have no response whatsoever to that, and as a result someone else takes damage, I think you should be liable to some degree
2022-03-15 12:03:03 +0100 <tomsmeding> if you somehow indicate with your software that it's ready to be used by others
2022-03-15 12:03:27 +0100 <tomsmeding> if it's some random repo on github with no real documentation, then the liability should IMO be with the person who decided to use that in a product
2022-03-15 12:04:40 +0100 <gensyst> BSD license fixes this in my end afaik
2022-03-15 12:04:45 +0100 <maerwald> yeah, I think no one is suggesting that you're liable for the *actual* quality of your product
2022-03-15 12:05:02 +0100 <maerwald> that's impossible to enforce and not reasonable
2022-03-15 12:05:48 +0100 <maerwald> but you have to demonstrate intent
2022-03-15 12:06:06 +0100 <kritzefitz> dminuoso: Yes, basically what tomsmeding said. I often am in a situation where I wouldn't be able to respond to a security problem in software I write. So should I keep all software I write for recreation secret, so no one might accidentally use it in their plane without checking it?
2022-03-15 12:06:09 +0100 <tomsmeding> "in no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software." -- mit license
2022-03-15 12:06:47 +0100 <tomsmeding> so at least currently, there's no liability
2022-03-15 12:07:18 +0100 <merijn> People *selling* devices that include software should be liable for the software.
2022-03-15 12:07:32 +0100 <dminuoso> merijn: This already exists in Germany at least.
2022-03-15 12:07:36 +0100 <tomsmeding> or actively marketing it as suitable for a purpose
2022-03-15 12:07:38 +0100 <dminuoso> At least partially
2022-03-15 12:07:48 +0100 <merijn> like, if you're Apple, you're liable for software blowing up the phone/exposing people's private info, the same way you're liable for the battery blowing up
2022-03-15 12:07:53 +0100 <dminuoso> Not complete liability, but at least obligations to provide security updates for 2 years.
2022-03-15 12:07:54 +0100 <kritzefitz> And this is why I think money helps with this problem. If I get paid for something it enables me to reliably make time for it in my day to day live.
2022-03-15 12:07:59 +0100 <dminuoso> which is a good first step at least
2022-03-15 12:08:03 +0100 <merijn> if you're tesla and your software crashes cars? liable
2022-03-15 12:08:42 +0100 <merijn> kritzefitz: Well, that circles back to my initial "aggressively no support" standpoint on open source ;)
2022-03-15 12:09:07 +0100 <maerwald> I think money here is really irrelevant
2022-03-15 12:09:15 +0100 <merijn> Open source as a "community effort" is great. People being merely consumers using open source, then demanding stuff...not fine
2022-03-15 12:09:54 +0100 <maerwald> I'd argue anyone publishing their software on github are *actively adverstising* its use
2022-03-15 12:10:11 +0100 <tomsmeding> maerwald: https://github.com/tomsmeding/tomjson/
2022-03-15 12:10:15 +0100 <merijn> maerwald: I disagree, the money is very relevant. If nobodies paying, I'm gonna do whatever the hell I want and provide the exact amount of support I want (which should be assumed to be zero)
2022-03-15 12:10:17 +0100 <kritzefitz> I think you're musing GitHub then.
2022-03-15 12:10:19 +0100 <merijn> maerwald: Hard disagree
2022-03-15 12:10:38 +0100 <maerwald> I have my own private gitea server
2022-03-15 12:10:38 +0100 <merijn> maerwald: I put my code on github because "someone might find it instructive or useful"
2022-03-15 12:10:40 +0100 <kritzefitz> *misusing
2022-03-15 12:10:44 +0100 <maerwald> if you pull from there, joke is on you
2022-03-15 12:10:54 +0100geekosaurcertainly hopes nobody else is trying to use his dotfiles that he put on github for multi-machine convenience
2022-03-15 12:11:04 +0100 <geekosaur> and that, yes
2022-03-15 12:11:18 +0100 <mreh> is this discussion OT?
2022-03-15 12:11:24 +0100 <maerwald> I just want to get merijn into jail xD
2022-03-15 12:11:40 +0100 <merijn> If you find my stuff on github useful, great! If you don't, well, eh, sucks to be you
2022-03-15 12:11:43 +0100 <geekosaur> mreh, not really since it goes back to the question as applied to ghc
2022-03-15 12:12:13 +0100 <merijn> Also, I think any discussion on programming practices/engineering are fairly on topic
2022-03-15 12:12:15 +0100 <geekosaur> and software on hackage
2022-03-15 12:12:41 +0100geekosaurwould have said something by now if it were off topic
2022-03-15 12:16:27 +0100 <kuribas> maerwald: yeah right, as if anyone ever looks at your github repos.
2022-03-15 12:20:08 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-03-15 12:20:52 +0100o-90(~o-90@gateway/tor-sasl/o-90)
2022-03-15 12:22:50 +0100 <maerwald[m]> kuribas: xD
2022-03-15 12:23:53 +0100o-90(~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
2022-03-15 12:24:19 +0100 <maerwald[m]> We could fix it locally and add a liability clause to hackage :p
2022-03-15 12:25:21 +0100 <maerwald[m]> Hackage trustees hire a lawyer and we're good to go
2022-03-15 12:25:47 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-03-15 12:25:47 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-03-15 12:25:47 +0100finn_elijaFinnElija
2022-03-15 12:25:56 +0100 <kritzefitz> maerwald[m]: I mean... we could. But I think effectively that would mean that most packages would have to vanish from hackage. I'm not sure that's what you want.
2022-03-15 12:26:52 +0100DNH(~DNH@2a02:8108:1100:16d8:2015:9361:6306:3ac4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-03-15 12:27:59 +0100 <maerwald[m]> Maybe I do xD
2022-03-15 12:29:19 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:a016:c70b:1497:f71c)
2022-03-15 12:29:45 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 12:30:43 +0100 <maerwald[m]> I'm pretty sure uncle bob doesn't have high reputation here, but he made a good point once saying "if we don't come up with some rules ourselves, someone else will". And the latter might be worse for us
2022-03-15 12:30:56 +0100gensyst(gensyst@user/gensyst) (Quit: Leaving)
2022-03-15 12:31:02 +0100 <tomsmeding> we'd go back to the early days of open source, where stuff is shared between people instead of dumped on a public server first thing
2022-03-15 12:31:04 +0100 <mreh> I thought OT meant "on topic", I was assuming good faith :)
2022-03-15 12:31:21 +0100 <tomsmeding> same starting letters :p
2022-03-15 12:32:43 +0100 <tomsmeding> for sure github would need less disk space in that universe
2022-03-15 12:32:48 +0100 <mreh> tomsmeding: yeah, it is a type family
2022-03-15 12:33:24 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:a016:c70b:1497:f71c) (Ping timeout: 240 seconds)
2022-03-15 12:33:40 +0100 <[exa]> tomsmeding: hey wanna send me tapes with your haskell :D
2022-03-15 12:33:47 +0100 <tomsmeding> :p
2022-03-15 12:34:00 +0100 <mreh> just wondering if I can do some boilerplate reduction for the defnitions for polymorphic types
2022-03-15 12:34:21 +0100 <tomsmeding> mreh: is this what you're looking for? https://hackage.haskell.org/package/symbols-0.3.0.0/docs/Data-Symbol-Ascii.html
2022-03-15 12:34:23 +0100 <kritzefitz> I mean, I wouldn't even be opposed to something like “Hackage Premium” existing, where uploads imply Liability. I just don't think there would be much on it.
2022-03-15 12:34:37 +0100 <tomsmeding> there would be almost nothing on it
2022-03-15 12:35:03 +0100 <tomsmeding> perhaps only the nasa Copilot stuff
2022-03-15 12:35:12 +0100 <mreh> tomsmeding: maybe, looks like you could do some type level parsing of Symbols with this
2022-03-15 12:35:24 +0100 <tomsmeding> mreh: yeah that's the idea
2022-03-15 12:35:29 +0100DNH(~DNH@2a02:8108:1100:16d8:2015:9361:6306:3ac4)
2022-03-15 12:35:37 +0100 <mreh> I just wanted a simple interface for a caching API and now I'm going down a rabbit hole
2022-03-15 12:35:52 +0100 <tomsmeding> also: https://gitlab.haskell.org/ghc/ghc/-/issues/11342
2022-03-15 12:36:58 +0100 <mreh> Is there a way to turn a type into a string other than a symbol?
2022-03-15 12:37:16 +0100 <maerwald[m]> tomsmeding: I could imagine that having your projects on that platform would quickly become a sign for employers to hire for those devs. Balls of steel and work ethics ^^
2022-03-15 12:37:18 +0100 <mreh> a type other than a symbol into a string, rather
2022-03-15 12:38:07 +0100Hemmo(~Hemmo@85-76-79-140-nat.elisa-mobile.fi)
2022-03-15 12:38:23 +0100 <Hemmo> Hello! This the proper place to ask newbie haskell questions?
2022-03-15 12:38:37 +0100 <[exa]> Hemmo: yes
2022-03-15 12:39:04 +0100 <mreh> > show (Proxy :: Proxy Int)
2022-03-15 12:39:06 +0100 <lambdabot> "Proxy"
2022-03-15 12:39:12 +0100 <mreh> :|
2022-03-15 12:40:34 +0100 <Hemmo> So I have a function that ought to return a "substring" of string 1 and 2 like this -> commonSubstring "XabcdefgY" "abcdefgXY"
2022-03-15 12:40:34 +0100 <Hemmo> = "XY"
2022-03-15 12:41:06 +0100rond_(~rond_@90.254.208.190)
2022-03-15 12:41:11 +0100 <[exa]> Hemmo: why wouldn't it return "abcdefg" instead? (it looks like a better substring to me)
2022-03-15 12:41:15 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 252 seconds)
2022-03-15 12:41:34 +0100 <mreh> sounds like homework :P
2022-03-15 12:41:37 +0100jgeerds(~jgeerds@55d4548e.access.ecotel.net)
2022-03-15 12:41:41 +0100 <Hemmo> Because this is one of my course exercises! It's a substring which isn't actually one
2022-03-15 12:41:47 +0100 <Hemmo> It is ! and I am not asking for answers!
2022-03-15 12:41:52 +0100 <Hemmo> I'm just absolutely stumped lol
2022-03-15 12:41:53 +0100 <[exa]> ok good :]
2022-03-15 12:41:56 +0100 <Hemmo> I'm trying to figure out
2022-03-15 12:41:57 +0100 <Hemmo> how to ask this
2022-03-15 12:42:16 +0100 <mreh> where are you studying?
2022-03-15 12:43:02 +0100 <Hemmo> I'm in Finland
2022-03-15 12:43:26 +0100 <Hemmo> And this is sort of a self-study course. There's nothing besides three lectures and a some problem sets
2022-03-15 12:43:31 +0100 <mreh> I'm just curious where they're teaching Haskell
2022-03-15 12:43:48 +0100 <Hemmo> Yeah this was an optional course for me
2022-03-15 12:43:52 +0100 <[exa]> mreh: btw this is probably a bit overkill-ish but at this point you might want to check how Servant does this, they certainly have a way to render the types in the API docs, somehow
2022-03-15 12:44:10 +0100 <Hemmo> Seemed interesting and possibly useful at some point ;D
2022-03-15 12:44:21 +0100 <mreh> [exa]: Servant can create docs?
2022-03-15 12:44:32 +0100 <tomsmeding> mreh: you're not secretly looking for Typeable, are you?
2022-03-15 12:44:50 +0100 <[exa]> mreh: many unis have dedicated haskell courses, even surpassing the usual "lets learn recursion lol" from 20 years ago
2022-03-15 12:44:52 +0100 <mreh> maybe?!
2022-03-15 12:45:19 +0100 <[exa]> yeah +1 for Typeable.
2022-03-15 12:45:24 +0100 <Hemmo> But back to my question. I can compare those strings in a "nested loop" kind of way, but I have no idea how to remove the characters I don't need anymore. This is what I have so far. commonSubstring s1 s2 = [x | x <- s1, y <- s2, x == y]
2022-03-15 12:45:38 +0100 <tomsmeding> > typeRep (Proxy @Int)
2022-03-15 12:45:39 +0100 <Hemmo> So I understand how that works, but
2022-03-15 12:45:39 +0100 <lambdabot> <hint>:1:16: error: parse error on input ‘@’
2022-03-15 12:45:45 +0100 <tomsmeding> % typeRep (Proxy @Int)
2022-03-15 12:45:46 +0100 <yahb> tomsmeding: Int
2022-03-15 12:45:59 +0100 <Hemmo> "The function removes c and all the characters before it in both strings, puts c in the output string, and continues."
2022-03-15 12:46:25 +0100 <Hemmo> Any help with how to remove characters at a certain point and before in a string??
2022-03-15 12:47:23 +0100 <mreh> tomsmeding: nice
2022-03-15 12:47:34 +0100 <[exa]> Hemmo: your code finds all letters of all matching letter pairs between s1 and s2. You might like `dropWhile` or something like that
2022-03-15 12:47:35 +0100 <mreh> % typeRep (Proxy @[Int])
2022-03-15 12:47:35 +0100 <yahb> mreh: [Int]
2022-03-15 12:47:54 +0100razetime(~quassel@117.193.4.244)
2022-03-15 12:48:04 +0100 <tomsmeding> mreh: essentially all monomorphic types have Typeable instances -- with emphasis on monomorphic
2022-03-15 12:48:05 +0100 <mreh> is that printing the TypeRep?
2022-03-15 12:48:10 +0100 <tomsmeding> % typeRep (Proxy @a)
2022-03-15 12:48:10 +0100 <yahb> tomsmeding: ; <interactive>:22:17: error: Not in scope: type variable `a'
2022-03-15 12:48:20 +0100 <tomsmeding> mreh: yeah just `show` on the TypeRep
2022-03-15 12:48:33 +0100 <mreh> print or show?
2022-03-15 12:48:40 +0100 <tomsmeding> :t print
2022-03-15 12:48:40 +0100 <lambdabot> Show a => a -> IO ()
2022-03-15 12:48:45 +0100 <tomsmeding> print calls show
2022-03-15 12:48:55 +0100 <mreh> yes, okay I'm with you
2022-03-15 12:49:18 +0100 <mreh> I can use `show` to get my String
2022-03-15 12:49:56 +0100 <mreh> I'm indexing the cache table by the type so values can be unserialised later
2022-03-15 12:50:26 +0100 <[exa]> Hemmo: if I get the task correctly, you take the first letter if s1, then either discard it and continue if it isn't in s2, or output it, discard the starting part of s2 up until that letter and and continue with the rest of s2, right?
2022-03-15 12:50:46 +0100 <mreh> :t putStrLn . show
2022-03-15 12:50:47 +0100 <lambdabot> Show a => a -> IO ()
2022-03-15 12:51:56 +0100 <Hemmo> That is correct exa! I'm currently looking into dropWhile. Seems promising.
2022-03-15 12:51:58 +0100 <[exa]> Hemmo: btw how do you get the `c` in your description?
2022-03-15 12:52:42 +0100 <Hemmo> c is just the common character
2022-03-15 12:52:55 +0100 <Hemmo> The actual function def is commonSubstring :: String -> String -> String
2022-03-15 12:53:24 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2022-03-15 12:56:05 +0100 <mreh> do you always need a forall a. to bring a into scope when using ScopedTypeVariables?
2022-03-15 12:56:23 +0100 <[exa]> Hemmo: how do you find `c` though? you've got 2 strings and there are many possible common characters (or none)
2022-03-15 12:57:00 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-03-15 12:58:02 +0100 <Hemmo> Right now I'm trying to solve it with this: commonSubstring s1 s2 = [x | x <- s1, y <- s2, x == y], so it takes x into the list if x==y. This is what you asked?
2022-03-15 12:58:59 +0100 <Hemmo> My thinking right now is, if x == y, I must drop every character before the common one + the common one as well from S1 and S2
2022-03-15 12:59:06 +0100 <tomsmeding> mreh: yes
2022-03-15 12:59:13 +0100 <Hemmo> and then run through the function again
2022-03-15 12:59:35 +0100 <tomsmeding> mreh: well in an instance declaration, the variables appearing in the instance head are already in scope without an explicit forall
2022-03-15 13:00:39 +0100 <[exa]> Hemmo: ah so you basically take the first common character from s1 as `c`, yeah that could work
2022-03-15 13:00:40 +0100 <dminuoso> mreh: Mind you this is a quirky historical artifact. If Haskell was designed from scratch, it's conceivable that type variables were brought into scope for sub-bindings automatically.
2022-03-15 13:00:49 +0100 <dminuoso> Without an explicit forall.
2022-03-15 13:01:25 +0100 <dminuoso> The need for forall is just to maintain backwards compatibility (such that enabling the flag will not break code that previously compiled, e.g. `f :: a ...; f = .. where g :: a ...; g = ...`)
2022-03-15 13:02:45 +0100 <[exa]> Hemmo: otoh it might be much cleaner (and easier) to patternmatch a bit. You can for example say that `commonSubstring "" _ = ""`, and then examine the other case, `commonSubstring (c:s1) s2 = if c `elem` s1 then ???? else ????`
2022-03-15 13:03:08 +0100 <[exa]> (uh I meant: c `elem` s2)
2022-03-15 13:03:36 +0100geranim0(~geranim0@modemcable242.171-178-173.mc.videotron.ca)
2022-03-15 13:06:48 +0100boborygmy_(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
2022-03-15 13:06:50 +0100boborygmy(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
2022-03-15 13:07:12 +0100kenran(~kenran@ip-037-024-119-190.um08.pools.vodafone-ip.de) (Quit: WeeChat info:version)
2022-03-15 13:12:14 +0100boborygmy_(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Quit: Leaving)
2022-03-15 13:12:14 +0100boborygmy(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Quit: Leaving)
2022-03-15 13:14:11 +0100 <mreh> pi types when?
2022-03-15 13:14:24 +0100 <mreh> :)
2022-03-15 13:14:43 +0100 <geekosaur> some would hope never
2022-03-15 13:17:03 +0100 <mreh> who are these people? /s
2022-03-15 13:18:40 +0100 <tomsmeding> the day of the Convergence
2022-03-15 13:19:10 +0100 <geekosaur> why do we need haskell to be a worse idris?
2022-03-15 13:19:20 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-03-15 13:19:45 +0100 <hpc> because not enough people use idris
2022-03-15 13:20:48 +0100 <mreh> is idris being used much in industry?
2022-03-15 13:21:10 +0100acidjnk(~acidjnk@pd9e0b763.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2022-03-15 13:21:37 +0100 <hpc> no clue, but i am not using it so tautologically not enough people are using idris :D
2022-03-15 13:21:56 +0100olle(~olle@c-8a89e455.034-536-6d6c6d4.bbcust.telenor.se)
2022-03-15 13:23:36 +0100rtsn(~nstr@h-98-128-229-174.NA.cust.bahnhof.se) (Remote host closed the connection)
2022-03-15 13:24:33 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 13:25:33 +0100 <mreh> I would like to be able to use Haskell for a living first. TypeScript is the best I can manage.
2022-03-15 13:25:45 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-03-15 13:25:46 +0100dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3)
2022-03-15 13:27:03 +0100zaquest(~notzaques@5.130.79.72)
2022-03-15 13:27:09 +0100 <maerwald[m]> geekosaur: ...
2022-03-15 13:28:58 +0100 <maerwald[m]> mreh: anything you use for a living loses its glamour
2022-03-15 13:29:28 +0100 <mreh> true enough
2022-03-15 13:29:32 +0100 <maerwald[m]> The best strategy is to only code as a hobby and, I dunno, do something else for a living
2022-03-15 13:29:32 +0100 <Hemmo> [exa]: commonSubstring (c:s1) s2 = if c `elem` s2
2022-03-15 13:29:33 +0100 <Hemmo> then commonSubstring (dropWhile (/=c) s1) (dropWhile (/=c) s2)
2022-03-15 13:29:33 +0100 <Hemmo> else ??
2022-03-15 13:29:47 +0100 <Hemmo> Do I need to create another string variable to save something to??
2022-03-15 13:29:55 +0100 <mreh> I have to get out the house for a bit, later
2022-03-15 13:30:13 +0100 <Hemmo> I don't know if I can return something without another variable?
2022-03-15 13:31:40 +0100 <olle> I'm trying to convert the tagless-final use-case to PHP
2022-03-15 13:31:56 +0100 <olle> Some notes here: https://old.reddit.com/r/PHP/comments/tdyf78/one_universal_dryrun_mockspy_ast_evaluator_to/
2022-03-15 13:32:20 +0100 <olle> Using a builder pattern, or expression builder, to generate an AST, and then you can inject different AST evaluators into the builder.
2022-03-15 13:33:27 +0100 <[exa]> Hemmo: you don't need to drop stuff from s1, also you forgot to push the 'c' to the output
2022-03-15 13:34:27 +0100 <[exa]> (returning something like this is a common pattern: `c:(commonSubstring ...)` )
2022-03-15 13:34:36 +0100nexus_(~nexus@178-164-207-227.pool.digikabel.hu) (Ping timeout: 252 seconds)
2022-03-15 13:35:08 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-03-15 13:36:33 +0100nexus_(~nexus@84-236-60-110.pool.digikabel.hu)
2022-03-15 13:36:40 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 13:38:08 +0100Everything(~Everythin@37.115.210.35) (Quit: leaving)
2022-03-15 13:40:22 +0100mreh(~matthew@host86-172-33-212.range86-172.btcentralplus.com) (Quit: Lost terminal)
2022-03-15 13:40:27 +0100 <Hemmo> [exa]: so it would be; then c : (commonSubstring s1 (dropWhile (/=c) s2))?
2022-03-15 13:41:46 +0100 <Hemmo> Oh yes I nearly got it to work
2022-03-15 13:41:51 +0100 <[exa]> seems so
2022-03-15 13:42:04 +0100tcard_(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp)
2022-03-15 13:42:18 +0100 <[exa]> I'd say you need to drop 1 extra character there (the c)
2022-03-15 13:42:19 +0100tcard(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Read error: Connection reset by peer)
2022-03-15 13:42:50 +0100 <[exa]> and the "else" case should be trivial, you just retry with the rest in s1, and don't do anything with s2
2022-03-15 13:44:43 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-03-15 13:45:03 +0100zmt00(~zmt00@user/zmt00)
2022-03-15 13:47:26 +0100 <Hemmo> [exa]: Thanks for the help! It's very difficult not to think in terms of loops just yet so I seem to overcomplicate these functions I make ;D
2022-03-15 13:47:48 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2022-03-15 13:48:23 +0100 <Hemmo> FP is such a different concept ;s
2022-03-15 13:48:37 +0100forell(~forell@user/forell)
2022-03-15 13:49:12 +0100 <merijn> Monthly (bi-weekly?) reminder that if you are physically close to NL, you should register for NL-FP ;)
2022-03-15 13:50:07 +0100forell_(~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Ping timeout: 256 seconds)
2022-03-15 13:53:26 +0100rond_(~rond_@90.254.208.190) (Quit: Client closed)
2022-03-15 13:54:29 +0100 <tomsmeding> ( https://wouter-swierstra.github.io/fp-dag/ )
2022-03-15 13:58:23 +0100chele_(~chele@user/chele) (Ping timeout: 256 seconds)
2022-03-15 13:59:51 +0100chele(~chele@user/chele)
2022-03-15 14:00:20 +0100 <[exa]> merijn: does luxembourg count?
2022-03-15 14:00:27 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds)
2022-03-15 14:00:40 +0100 <earthy> is the program any good this year?
2022-03-15 14:01:32 +0100 <earthy> exa: that'd be about a four hour drive...
2022-03-15 14:01:46 +0100AlexNoo_AlexNoo
2022-03-15 14:02:08 +0100 <earthy> (I remember the fp-dag when it was hosted by the royal dutch navy... at a navy compound in amsterdam... that was somewhat fun. :))
2022-03-15 14:02:21 +0100 <[exa]> yeah 350km ain't super close
2022-03-15 14:06:12 +0100 <maerwald[m]> merijn: when is it
2022-03-15 14:07:14 +0100 <[exa]> April 22
2022-03-15 14:09:49 +0100vglfr(~vglfr@88.155.82.72)
2022-03-15 14:10:05 +0100 <merijn> earthy: well, there is no program yet :p (since normally it's the first week of january, but it didn't happen last year, for obvious reasons :p)
2022-03-15 14:10:38 +0100 <merijn> [exa]: I mean, it depends on your personal definition of close and travelling budget :p
2022-03-15 14:10:59 +0100 <merijn> Participation is free anyway
2022-03-15 14:11:14 +0100 <[exa]> yeah like, let's check them buses
2022-03-15 14:11:50 +0100 <merijn> Should be interesting now that a bunch of the accelerate people moved from Australia to Utrecht :)
2022-03-15 14:12:10 +0100 <[exa]> whew
2022-03-15 14:25:42 +0100k8yun(~k8yun@user/k8yun)
2022-03-15 14:26:45 +0100son0p(~ff@181.136.122.143) (Remote host closed the connection)
2022-03-15 14:27:07 +0100 <merijn> Man...next time someone says tracking down spaceleaks in Haskell is hard I'm going to whack them with a hammer and ask them to try tracking down a space leak in python >.<
2022-03-15 14:28:16 +0100 <merijn> Consider this my annual prayer to the hero who implemented GHC's heap profiling tools >.>
2022-03-15 14:31:24 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-03-15 14:35:06 +0100 <maerwald> Matthew?
2022-03-15 14:35:38 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-03-15 14:36:02 +0100Midjak(~Midjak@82.66.147.146) (Remote host closed the connection)
2022-03-15 14:36:53 +0100 <merijn> I don't think so? Pretty sure they predate his involvement
2022-03-15 14:37:20 +0100 <merijn> I mean, his speedscope is nice too, but the heap profiling graphs predate that
2022-03-15 14:37:51 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-03-15 14:39:15 +0100 <kuribas> or that "haskell is slow".
2022-03-15 14:40:32 +0100ccntrq(~Thunderbi@2a01:c22:89c9:4f00:38e1:ceae:1fb6:a685) (Quit: ccntrq)
2022-03-15 14:40:37 +0100ccntrq1(~Thunderbi@dynamic-077-006-029-074.77.6.pool.telefonica.de)
2022-03-15 14:41:24 +0100 <maerwald> naive Haskell is slower than naive C, at least, sometimes by magnitudes. The maximum performance you can achieve with Haskell is almost unlimited though.
2022-03-15 14:42:30 +0100 <maerwald> often times that means abandoning idiomatic Haskell, though
2022-03-15 14:42:55 +0100ccntrq1ccntrq
2022-03-15 14:43:25 +0100 <maerwald> I think the xeno parser is a good example for this
2022-03-15 14:43:29 +0100 <dminuoso> "Language XYZ is slow" is not a major concern for the vast majority of users.
2022-03-15 14:43:37 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it)
2022-03-15 14:43:52 +0100 <kuribas> high level, highly abstract haskell is slower than low level optimized C code. No kidding.
2022-03-15 14:44:06 +0100 <dminuoso> If a billion devices run on (poorly written!) Java just fine, performance is not an issue for most peoplpe.
2022-03-15 14:44:25 +0100 <maerwald> kuribas: no, I'm talking about unoptimized C code
2022-03-15 14:44:30 +0100vglfr(~vglfr@88.155.82.72) (Ping timeout: 250 seconds)
2022-03-15 14:44:51 +0100 <dminuoso> maerwald: well, of course you have to abandon idiomatic code. Writing fast and performant code in any language means catering to the implementation and hardware.
2022-03-15 14:45:22 +0100 <dminuoso> Well there's of course algorithmic complexity, but once that's out of the way, all you end up doing is make sure the compiler and hardware is happy with it
2022-03-15 14:45:33 +0100kaph_(~kaph@net-109-116-124-149.cust.vodafonedsl.it)
2022-03-15 14:45:35 +0100 <dminuoso> That applies to any language out there
2022-03-15 14:46:08 +0100 <kuribas> dminuoso: "once that is out of the way" <= that would increase most projects performance by tenfold.
2022-03-15 14:46:18 +0100 <maerwald> optimized C code is, more or less, idiomatic =)
2022-03-15 14:46:23 +0100 <dminuoso> kuribas: And cache awareness can increase performance by a thousand fold.
2022-03-15 14:46:36 +0100 <merijn> maerwald[m]: No it's not
2022-03-15 14:46:36 +0100 <dminuoso> It's ridiculous how slow memory is.
2022-03-15 14:46:49 +0100 <kuribas> dminuoso: if that code is in an inner loop, and that inner loop is significant.
2022-03-15 14:46:55 +0100 <merijn> Optimised C looks nothing like what 80-90% of C programmers produce
2022-03-15 14:47:42 +0100 <dminuoso> Indeed, optimized C code is usually a bunch of ifdefs, using magical compiler primitives, relying on compiler behavior, assuming particular code generation, assuming particular architectural flaws..
2022-03-15 14:47:54 +0100 <dminuoso> Usually near unreadable
2022-03-15 14:48:12 +0100 <dminuoso> Sometimes I wonder why the authors dont just write out the assembly by hand
2022-03-15 14:48:13 +0100kaph(~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 268 seconds)
2022-03-15 14:48:32 +0100 <maerwald> anyway, my claim is that you can put a student with half a year of experience with C in front of a computer and their naive implementation will almost always outperform an equivalently naive Haskell implementation
2022-03-15 14:48:40 +0100 <maerwald> The C implementation will likely crash a lot more, though
2022-03-15 14:49:03 +0100 <dminuoso> And their implementation will take 2-4 times longer to write?
2022-03-15 14:49:03 +0100 <merijn> maerwald[m]: Have you worked with lots of students?
2022-03-15 14:49:05 +0100 <maerwald> emphasis on *naive* implementation
2022-03-15 14:49:10 +0100 <maerwald> merijn: yeah
2022-03-15 14:49:28 +0100 <merijn> maerwald[m]: In my experience students with even 1-2 years of C experience can barely produce a program that reliably doesn't crash >.>
2022-03-15 14:49:42 +0100 <maerwald> true
2022-03-15 14:49:55 +0100 <maerwald> it only works with the pre-defined input from the instructor
2022-03-15 14:49:58 +0100 <maerwald> anything else crashes
2022-03-15 14:51:12 +0100Sgeo(~Sgeo@user/sgeo)
2022-03-15 14:51:57 +0100k8yun(~k8yun@user/k8yun) (Read error: Connection reset by peer)
2022-03-15 14:52:02 +0100 <maerwald> I wonder how rust "performs" in that settings for students
2022-03-15 14:52:14 +0100 <maerwald> my guess is they will abuse 'unsafe'
2022-03-15 14:52:19 +0100 <maerwald> or RefCell
2022-03-15 14:54:38 +0100ccntrq1(~Thunderbi@2a01:c22:89c9:4f00:8f7e:228b:ee69:75c3)
2022-03-15 14:54:46 +0100 <Ferdirand> my experience is that they abuse .clone()
2022-03-15 14:54:52 +0100 <maerwald> ah
2022-03-15 14:55:19 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-03-15 14:56:25 +0100ccntrq(~Thunderbi@dynamic-077-006-029-074.77.6.pool.telefonica.de) (Ping timeout: 256 seconds)
2022-03-15 14:56:25 +0100ccntrq1ccntrq
2022-03-15 14:59:49 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 15:01:21 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2022-03-15 15:02:35 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net)
2022-03-15 15:06:14 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-15 15:08:06 +0100chele(~chele@user/chele) (Ping timeout: 252 seconds)
2022-03-15 15:09:31 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 245 seconds)
2022-03-15 15:09:39 +0100 <tomsmeding> performance of idiomatic haskell code also heavily depends on the application
2022-03-15 15:10:10 +0100 <tomsmeding> if you're talking about a tree-walking interpreter for a nice functional language, that's going to be super-readable and quite efficient
2022-03-15 15:10:52 +0100 <tomsmeding> if you're talking about an imperative bytecode interpreter, even my non-idiomatic version that has mutable unboxed arrays and tries to be somewhat memory-efficient was an order of magnitude slower than the natural C implementation
2022-03-15 15:11:06 +0100 <tomsmeding> profiling didn't turn up obvious bottlenecks
2022-03-15 15:11:37 +0100 <tomsmeding> (and that was without bounds checks on the array accesses)
2022-03-15 15:14:49 +0100 <maerwald> dminuoso: btw... this is relevant to our liability discussion https://github.com/haskellfoundation/stability/issues/7
2022-03-15 15:19:31 +0100 <kuribas> tomsmeding: maybe because of lazyness?
2022-03-15 15:20:09 +0100 <tomsmeding> kuribas: everything was in IO with unboxed mutable Word8 vectors, so I doubt there was much laziness around, but to be fair I didn't test -XStrict
2022-03-15 15:20:41 +0100 <kuribas> tomsmeding: hmm, I would expect this to be slower, but not an order of magnitude.
2022-03-15 15:20:45 +0100 <kuribas> Like 2x at most.
2022-03-15 15:20:47 +0100 <tomsmeding> precisely
2022-03-15 15:20:58 +0100 <kuribas> didi you inspect core?
2022-03-15 15:21:01 +0100 <tomsmeding> no
2022-03-15 15:21:01 +0100 <kuribas> or the assembly?
2022-03-15 15:21:13 +0100 <tomsmeding> probably I'd be able to find the answers there
2022-03-15 15:21:28 +0100 <tomsmeding> but that would be a Job :p
2022-03-15 15:21:42 +0100 <kuribas> I actually enjoy this :)
2022-03-15 15:21:55 +0100 <kuribas> I rarely get a chance to optimize for performance at work.
2022-03-15 15:22:02 +0100son0p(~ff@181.136.122.143)
2022-03-15 15:22:10 +0100mc47(~mc47@xmonad/TheMC47)
2022-03-15 15:22:35 +0100 <tomsmeding> usually I enjoy optimisation too, but this time I wasn't feeling like opening the large bulk of core that it would generate
2022-03-15 15:22:38 +0100 <kuribas> I mean aside from the obvious stuff.
2022-03-15 15:23:33 +0100chele(~chele@user/chele)
2022-03-15 15:23:51 +0100ski. o O ( "Tales of a Former Disassembly Addict" in 2009-10-18 at <https://prog21.dadgum.com/50.html>,"How Did Things Ever Get This Good?" in 2009-11-10 at <https://prog21.dadgum.com/51.html>,"Slow Languages Battle Across Time" in 2009-11-14 at <https://prog21.dadgum.com/52.html>, by James Hague )
2022-03-15 15:25:32 +0100k8yun(~k8yun@user/k8yun)
2022-03-15 15:25:34 +0100 <kuribas> tomsmeding: in such case, you could just use the C FFI as well :)
2022-03-15 15:25:48 +0100 <kuribas> as long as it's well contained.
2022-03-15 15:25:53 +0100 <tomsmeding> yes lol, but the whole point of the exercise was to see if Haskell could be fast as well
2022-03-15 15:26:10 +0100 <tomsmeding> and the (preliminary) answer was, not too easily
2022-03-15 15:26:35 +0100chele(~chele@user/chele) (Client Quit)
2022-03-15 15:27:19 +0100timCF(~timCF@200-149-20-81.sta.estpak.ee)
2022-03-15 15:29:17 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-03-15 15:29:17 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-03-15 15:37:53 +0100bahamas(~lucian@86.120.77.115)
2022-03-15 15:38:31 +0100ccntrq(~Thunderbi@2a01:c22:89c9:4f00:8f7e:228b:ee69:75c3) (Remote host closed the connection)
2022-03-15 15:38:48 +0100ccntrq(~Thunderbi@2a01:c22:89c9:4f00:8f7e:228b:ee69:75c3)
2022-03-15 15:39:01 +0100 <kuribas> I suppose the C could also use a jump table.
2022-03-15 15:41:17 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-15 15:42:48 +0100timCF(~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving)
2022-03-15 15:43:55 +0100Guest30(~Guest30@cpc151445-finc21-2-0-cust175.4-2.cable.virginm.net)
2022-03-15 15:45:30 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2022-03-15 15:45:30 +0100Guest30(~Guest30@cpc151445-finc21-2-0-cust175.4-2.cable.virginm.net) ()
2022-03-15 15:45:41 +0100troydm(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-03-15 15:49:10 +0100 <tomsmeding> I have no idea why the haskell would not be able to have a jump table when I write a case on a Word8
2022-03-15 15:52:02 +0100 <Ferdirand> how useful are jump tables these days ?
2022-03-15 15:52:15 +0100olle(~olle@c-8a89e455.034-536-6d6c6d4.bbcust.telenor.se) ()
2022-03-15 15:52:21 +0100olle(~olle@c-8a89e455.034-536-6d6c6d4.bbcust.telenor.se)
2022-03-15 15:52:36 +0100 <Ferdirand> don't indirect jumps ruin branching prediction ?
2022-03-15 15:57:17 +0100alp(~alp@user/alp) (Ping timeout: 240 seconds)
2022-03-15 15:57:23 +0100 <merijn> Ferdirand: "It Depends (TM)"
2022-03-15 15:57:49 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-03-15 15:57:56 +0100 <geekosaur> ghc can compile case-of to jumptables at least under some circumstances
2022-03-15 15:57:57 +0100 <merijn> tomsmeding: because Word8 is boxed ;)
2022-03-15 15:58:11 +0100 <merijn> But yeah, there's no reason GHC couldn't do that
2022-03-15 16:00:16 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-03-15 16:00:46 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 250 seconds)
2022-03-15 16:01:01 +0100kenran(~kenran@200116b82bb92e0095dde20ed8280a15.dip.versatel-1u1.de)
2022-03-15 16:01:36 +0100 <kuribas> maybe because GHC is not optimized for low level byte handling?
2022-03-15 16:01:49 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-03-15 16:02:39 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-15 16:03:24 +0100thyriaen(~thyriaen@ip5f5af2d7.dynamic.kabel-deutschland.de)
2022-03-15 16:03:25 +0100 <geekosaur> until 9.2 a "Word8" was really a machine word
2022-03-15 16:03:44 +0100 <geekosaur> (this includes Word8#)
2022-03-15 16:04:02 +0100thyriaen(~thyriaen@ip5f5af2d7.dynamic.kabel-deutschland.de) (Client Quit)
2022-03-15 16:05:46 +0100Giovanni(~Giovanni@176.219.119.243)
2022-03-15 16:09:04 +0100 <tomsmeding> geekosaur: right, fair point, but still that's not a reason why making a jump table would be impossible
2022-03-15 16:09:07 +0100 <raehik> geekosaur: what has changed in 9.2 regarding that? I'm curious
2022-03-15 16:10:16 +0100 <geekosaur> tomsmeding,just makes it seem more likely to me that bthey use the same code for all machine word stuff, which also catches Word8#. so this might now be somelow hanging fruit in the NCG
2022-03-15 16:10:44 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2022-03-15 16:10:57 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-03-15 16:11:17 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 16:11:42 +0100 <geekosaur> raehik, NCG Apple M1 support required support for native sized types, so for example a Word8# is now actually a byte instead of a machine word. this change is still shaking down, as above, and we may see some other improvements in its wake
2022-03-15 16:12:28 +0100 <raehik> oh, right, machine words aren't always 1 byte! interesting
2022-03-15 16:12:35 +0100 <geekosaur> (for example I think you still can't get a native Word8# vector without resorting to a ByteArray#)
2022-03-15 16:12:45 +0100Unicorn_Princess(~Unicorn_P@46-54-248-191.static.kate-wing.si)
2022-03-15 16:12:48 +0100cosimone(~user@93-44-187-176.ip98.fastwebnet.it) (Read error: Connection reset by peer)
2022-03-15 16:13:00 +0100 <geekosaur> machine word on most platforms these days, specifically including the M1, is 64 bits
2022-03-15 16:13:28 +0100 <raehik> oh yeah. I think I had some concepts mixed
2022-03-15 16:13:37 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-03-15 16:13:50 +0100 <geekosaur> standard machine register size, basically
2022-03-15 16:14:01 +0100 <raehik> yes, right
2022-03-15 16:14:23 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-03-15 16:23:37 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-03-15 16:26:33 +0100 <merijn> raehik: machine words are basically never 1 byte? :p
2022-03-15 16:26:58 +0100 <geekosaur> 6502, 6809, 8080 :þ
2022-03-15 16:27:06 +0100 <raehik> merijn: yeah, I was thinking in Word terms, and forgot the context xd
2022-03-15 16:28:18 +0100 <geekosaur> should have said 6800, the 6809 was 8/16 hybrid
2022-03-15 16:32:28 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85fc:5466:5112:8a92)
2022-03-15 16:34:17 +0100__monty__(~toonn@user/toonn)
2022-03-15 16:36:53 +0100jao(~jao@45.134.142.199)
2022-03-15 16:37:10 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85fc:5466:5112:8a92) (Ping timeout: 260 seconds)
2022-03-15 16:39:02 +0100nexus_(~nexus@84-236-60-110.pool.digikabel.hu) (Ping timeout: 260 seconds)
2022-03-15 16:39:31 +0100jgeerds(~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 250 seconds)
2022-03-15 16:41:16 +0100nishant(~Nishant@49.37.242.151) (Quit: Leaving)
2022-03-15 16:46:04 +0100nexus_(~nexus@80-95-86-2.pool.digikabel.hu)
2022-03-15 16:49:13 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer)
2022-03-15 16:50:37 +0100jakalx(~jakalx@base.jakalx.net) ()
2022-03-15 16:50:45 +0100lbseale(~ep1ctetus@user/ep1ctetus)
2022-03-15 16:50:51 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-15 16:57:03 +0100Giovanni(~Giovanni@176.219.119.243) (Read error: Connection reset by peer)
2022-03-15 16:58:23 +0100xdej_xdej
2022-03-15 16:58:52 +0100Giovanni(~Giovanni@176.219.119.243)
2022-03-15 17:00:06 +0100jakalx(~jakalx@base.jakalx.net)
2022-03-15 17:00:08 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-15 17:04:25 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 17:04:48 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-03-15 17:06:21 +0100bahamas(~lucian@86.120.77.115) (Ping timeout: 268 seconds)
2022-03-15 17:11:09 +0100Giovanni(~Giovanni@176.219.119.243) (Read error: Connection reset by peer)
2022-03-15 17:13:35 +0100Giovanni(~Giovanni@176.219.119.243)
2022-03-15 17:14:58 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2022-03-15 17:15:05 +0100jonathanx__(~jonathan@c-5eea3758-74736162.cust.telenor.se)
2022-03-15 17:15:50 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:cecd:603d:2da7:a044) (Quit: WeeChat 2.8)
2022-03-15 17:16:24 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85fc:5466:5112:8a92)
2022-03-15 17:17:54 +0100jonathanx_(~jonathan@dyn-2-sc.cdg.chalmers.se) (Ping timeout: 252 seconds)
2022-03-15 17:18:19 +0100Hemmo(~Hemmo@85-76-79-140-nat.elisa-mobile.fi) (Remote host closed the connection)
2022-03-15 17:27:08 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 17:28:08 +0100benin(~benin@183.82.26.94) (Quit: The Lounge - https://thelounge.chat)
2022-03-15 17:30:15 +0100Midjak(~Midjak@82.66.147.146)
2022-03-15 17:32:37 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-03-15 17:34:52 +0100joo-__(~joo-_@80-62-117-227-mobile.dk.customer.tdc.net)
2022-03-15 17:34:52 +0100joo-__(~joo-_@80-62-117-227-mobile.dk.customer.tdc.net) (Changing host)
2022-03-15 17:34:52 +0100joo-__(~joo-_@fsf/member/joo--)
2022-03-15 17:37:01 +0100InstX1(~Liam@2601:6c4:4080:3f80:501d:140:cf41:aa43) (Ping timeout: 240 seconds)
2022-03-15 17:41:39 +0100raym(~raym@user/raym) (Ping timeout: 256 seconds)
2022-03-15 17:42:42 +0100raym(~raym@user/raym)
2022-03-15 17:43:13 +0100nexus_(~nexus@80-95-86-2.pool.digikabel.hu) (Ping timeout: 250 seconds)
2022-03-15 17:45:08 +0100bahamas(~lucian@84.232.140.158)
2022-03-15 17:45:09 +0100nexus_(~nexus@80-95-86-2.pool.digikabel.hu)
2022-03-15 17:46:17 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-03-15 17:52:57 +0100Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi)
2022-03-15 17:59:57 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds)
2022-03-15 18:00:52 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85fc:5466:5112:8a92) (Remote host closed the connection)
2022-03-15 18:00:53 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com)
2022-03-15 18:01:51 +0100razetime(~quassel@117.193.4.244) (Ping timeout: 250 seconds)
2022-03-15 18:02:07 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85fc:5466:5112:8a92)
2022-03-15 18:02:24 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-03-15 18:02:41 +0100 <maerwald> does IsElem not work with NamedRoutes?
2022-03-15 18:09:42 +0100ccntrq(~Thunderbi@2a01:c22:89c9:4f00:8f7e:228b:ee69:75c3) (Remote host closed the connection)
2022-03-15 18:12:30 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2022-03-15 18:19:17 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-15 18:20:06 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 18:20:11 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-15 18:20:14 +0100 <maerwald> how do you print the url of a servant route? The only SO answer I could find doesn't work anymore
2022-03-15 18:21:13 +0100Giovanni(~Giovanni@176.219.119.243) (Remote host closed the connection)
2022-03-15 18:21:38 +0100Giovanni(~Giovanni@176.67.166.45)
2022-03-15 18:24:48 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2022-03-15 18:25:01 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-03-15 18:26:35 +0100Major_Biscuit(~MajorBisc@c-001-021-050.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.4)
2022-03-15 18:26:52 +0100alp(~alp@user/alp)
2022-03-15 18:28:17 +0100Giovanni(~Giovanni@176.67.166.45) (Ping timeout: 250 seconds)
2022-03-15 18:28:58 +0100Giovanni(~Giovanni@176.219.119.243)
2022-03-15 18:29:39 +0100_xor(~xor@dsl-50-5-233-169.fuse.net) (Read error: Connection reset by peer)
2022-03-15 18:30:02 +0100_xor(~xor@dsl-50-5-233-169.fuse.net)
2022-03-15 18:30:13 +0100kaph_(~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 268 seconds)
2022-03-15 18:31:08 +0100jonathanx__(~jonathan@c-5eea3758-74736162.cust.telenor.se) (Ping timeout: 250 seconds)
2022-03-15 18:38:45 +0100raym(~raym@user/raym) (Ping timeout: 252 seconds)
2022-03-15 18:41:29 +0100raym(~raym@user/raym)
2022-03-15 18:43:10 +0100kenran(~kenran@200116b82bb92e0095dde20ed8280a15.dip.versatel-1u1.de) (Quit: WeeChat info:version)
2022-03-15 18:45:16 +0100 <maerwald> https://hackage.haskell.org/package/servant-0.19/docs/Servant-Links.html#v:linkURI ...with NamedRoutes you also have to make sure to select the correct record after type-level matching. I also had to add a custom `IsElem'` instance.
2022-03-15 18:46:25 +0100econo(uid147250@user/econo)
2022-03-15 18:48:11 +0100zincy_(~zincy@2a00:23c8:970c:4801:6945:2980:3f53:dff8)
2022-03-15 18:52:11 +0100zincy_(~zincy@2a00:23c8:970c:4801:6945:2980:3f53:dff8) (Remote host closed the connection)
2022-03-15 18:52:21 +0100slaydr(~seriley@75.164.66.230)
2022-03-15 18:53:00 +0100zmt00(~zmt00@user/zmt00) (Ping timeout: 240 seconds)
2022-03-15 18:54:00 +0100zincy_(~zincy@host86-160-236-152.range86-160.btcentralplus.com)
2022-03-15 18:57:38 +0100aeka(~aeka@user/hiruji) (Ping timeout: 260 seconds)
2022-03-15 18:59:31 +0100slaydr(~seriley@75.164.66.230) (Ping timeout: 256 seconds)
2022-03-15 19:02:22 +0100kadenwolff[m](~kadenwolf@2001:470:69fc:105::1:d97f)
2022-03-15 19:04:22 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Read error: Connection reset by peer)
2022-03-15 19:04:41 +0100ec(~ec@gateway/tor-sasl/ec)
2022-03-15 19:07:07 +0100_xor(~xor@dsl-50-5-233-169.fuse.net) (Read error: Connection reset by peer)
2022-03-15 19:07:27 +0100vglfr(~vglfr@88.155.82.72)
2022-03-15 19:08:50 +0100olle(~olle@c-8a89e455.034-536-6d6c6d4.bbcust.telenor.se) (Ping timeout: 250 seconds)
2022-03-15 19:12:13 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-15 19:12:40 +0100_xor(~xor@dsl-50-5-233-169.fuse.net)
2022-03-15 19:13:29 +0100mbuf(~Shakthi@122.174.246.23) (Quit: Leaving)
2022-03-15 19:25:59 +0100jjhoo_jjhoo
2022-03-15 19:27:51 +0100aeka(~aeka@user/hiruji)
2022-03-15 19:30:18 +0100_xor(~xor@dsl-50-5-233-169.fuse.net) (Read error: Connection reset by peer)
2022-03-15 19:30:59 +0100jgeerds(~jgeerds@55d4548e.access.ecotel.net)
2022-03-15 19:32:40 +0100aeka(~aeka@user/hiruji) (Ping timeout: 250 seconds)
2022-03-15 19:33:07 +0100ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2022-03-15 19:33:25 +0100aeka(~aeka@user/hiruji)
2022-03-15 19:33:40 +0100zmt00(~zmt00@user/zmt00)
2022-03-15 19:34:42 +0100_xor(~xor@dsl-50-5-233-169.fuse.net)
2022-03-15 19:40:54 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Ping timeout: 250 seconds)
2022-03-15 19:41:47 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-03-15 19:43:17 +0100hyiltiz(~quassel@31.220.5.250) (Ping timeout: 240 seconds)
2022-03-15 19:44:09 +0100Akiva(~Akiva@user/Akiva)
2022-03-15 19:46:41 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-03-15 19:47:30 +0100nexus_(~nexus@80-95-86-2.pool.digikabel.hu) (Ping timeout: 252 seconds)
2022-03-15 19:47:59 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-03-15 19:48:46 +0100 <justsomeguy> Is there a shell meant for interactive use that lets you intermix commands and haskell code, kind of like https://xon.sh does?
2022-03-15 19:49:16 +0100nexus_(~nexus@178-164-207-111.pool.digikabel.hu)
2022-03-15 19:50:03 +0100jackhill_jackhill
2022-03-15 19:50:33 +0100hyiltiz(~quassel@31.220.5.250)
2022-03-15 19:54:46 +0100hyiltiz(~quassel@31.220.5.250) (Ping timeout: 250 seconds)
2022-03-15 19:59:02 +0100cosimone(~user@93-44-187-176.ip98.fastwebnet.it)
2022-03-15 20:00:56 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
2022-03-15 20:03:30 +0100slaydr(~slaydr@75.164.66.230)
2022-03-15 20:04:56 +0100 <slaydr> I'm a long time Vim user and am trying to switch to emacs. What packages are you emacs users using?
2022-03-15 20:05:36 +0100 <monochrom> I use haskell-mode. Can be installed from melpa.
2022-03-15 20:05:51 +0100 <monochrom> Actually I use the melpa-stable version.
2022-03-15 20:06:29 +0100 <slaydr> thanks. Any others? I had a vim feature that auto indented keywords like 'when'
2022-03-15 20:06:53 +0100 <slaydr> or maybe I missed a setting in haskell-mode?
2022-03-15 20:07:48 +0100ec(~ec@gateway/tor-sasl/ec)
2022-03-15 20:08:52 +0100waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-03-15 20:09:23 +0100 <monochrom> I don't know and don't use auto-indent.
2022-03-15 20:09:58 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 20:10:14 +0100ec(~ec@gateway/tor-sasl/ec) (Client Quit)
2022-03-15 20:10:15 +0100 <monochrom> I think I know that haskell-mode doesn't do auto-indent.
2022-03-15 20:10:22 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-03-15 20:11:25 +0100vglfr(~vglfr@88.155.82.72) (Ping timeout: 240 seconds)
2022-03-15 20:12:02 +0100 <monochrom> It does semi-auto. You still have to press the tab key. But you can press it many times to traverse choices.
2022-03-15 20:12:30 +0100 <slaydr> thank you
2022-03-15 20:12:32 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 250 seconds)
2022-03-15 20:13:20 +0100 <monochrom> And you can press it after you have entered something on the line. Then it takes into account what's already on the line, e.g., if it begins with "where" it is honoured.
2022-03-15 20:16:15 +0100 <slaydr> that's good to know
2022-03-15 20:18:08 +0100jlamothe(~jlamothe@198.251.61.229) (Ping timeout: 268 seconds)
2022-03-15 20:18:20 +0100Guest|20(~Guest|20@tmo-100-189.customers.d1-online.com)
2022-03-15 20:18:21 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Read error: Connection reset by peer)
2022-03-15 20:18:34 +0100jlamothe(~jlamothe@198.251.61.229)
2022-03-15 20:19:11 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 20:19:38 +0100 <Guest|20> Hi im totally new in IT and only wrote HTML
2022-03-15 20:19:59 +0100hyiltiz(~quassel@31.220.5.250)
2022-03-15 20:20:27 +0100 <Guest|20> How do I use Haskell?
2022-03-15 20:20:59 +0100mastarija(~mastarija@2a05:4f46:e04:6000:6118:54b1:a270:d89b)
2022-03-15 20:21:16 +0100 <monochrom> It is a programming language.
2022-03-15 20:21:48 +0100 <mastarija> is there a function in base that rounds towards zero?
2022-03-15 20:22:06 +0100 <monochrom> I think truncate.
2022-03-15 20:22:07 +0100 <mastarija> e.g. for positive numbers it behaves like `floor` and for negative as `ciel`?
2022-03-15 20:22:14 +0100 <monochrom> > truncate (-0.9)
2022-03-15 20:22:16 +0100 <lambdabot> 0
2022-03-15 20:22:17 +0100 <Guest|20> Yes, thank you. That is one of a few things I know☺️
2022-03-15 20:22:33 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-03-15 20:22:34 +0100 <Guest|20> How can I install haskell?
2022-03-15 20:22:36 +0100 <mastarija> monochrom, thx
2022-03-15 20:25:05 +0100 <maerwald> Guest|20: did you follow the instructions?
2022-03-15 20:26:50 +0100 <Guest|20> I did not figure out yet how to follow them properly
2022-03-15 20:27:20 +0100vglfr(~vglfr@88.155.82.72)
2022-03-15 20:28:03 +0100Guest|20(~Guest|20@tmo-100-189.customers.d1-online.com) (Quit: Connection closed)
2022-03-15 20:28:36 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-15 20:31:37 +0100 <janus> maralorn: how can i reach Ellie on the Nix Haskell calendar?
2022-03-15 20:32:15 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 20:37:47 +0100 <maralorn> janus: We are all in #haskell:nixos.org .
2022-03-15 20:38:05 +0100 <maralorn> Oh, wait, you asked that question from irc.^^
2022-03-15 20:38:21 +0100 <janus> i can jump on matrix
2022-03-15 20:38:29 +0100 <maralorn> Still, the answer holds. You can find us in that Matrix channel.
2022-03-15 20:39:29 +0100kuribas(~user@ptr-25vy0i9smgbd9x89015.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2022-03-15 20:40:07 +0100namkeleser(~namkelese@101.175.155.55)
2022-03-15 20:40:22 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-03-15 20:42:14 +0100MironZ(~MironZ@nat-infra.ehlab.uk) (Quit: The Lounge - https://thelounge.chat)
2022-03-15 20:42:26 +0100zmt00(~zmt00@user/zmt00) (Ping timeout: 250 seconds)
2022-03-15 20:43:09 +0100MironZ(~MironZ@nat-infra.ehlab.uk)
2022-03-15 20:44:32 +0100MironZ(~MironZ@nat-infra.ehlab.uk) (Client Quit)
2022-03-15 20:44:56 +0100dextaa_(~dextaa@user/dextaa)
2022-03-15 20:46:28 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-15 20:47:16 +0100MironZ(~MironZ@nat-infra.ehlab.uk)
2022-03-15 20:47:37 +0100vglfr(~vglfr@88.155.82.72) (Ping timeout: 240 seconds)
2022-03-15 20:47:38 +0100xff0x(~xff0x@dslb-094-222-029-254.094.222.pools.vodafone-ip.de) (Ping timeout: 250 seconds)
2022-03-15 20:48:02 +0100slaydr(~slaydr@75.164.66.230) (Quit: leaving)
2022-03-15 20:48:11 +0100zmt01(~zmt00@user/zmt00)
2022-03-15 20:51:10 +0100Guest27(~Guest27@2601:281:d47f:1590::6b90)
2022-03-15 20:53:00 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-03-15 20:54:46 +0100 <dpratt> I'm rather ignorant of building/linking concerns on linux, so with that in mind, i tried to build some Haskell code in a docker container and run it on the host and it produced: "output/bms-pi: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by output/bms-pi)"; is there an easy way to resolve this error?
2022-03-15 20:56:28 +0100 <dpratt> I assume this is related to the fact that "ldd --version" reports "ldd (GNU libc) 2.26" on the host and "ldd (Debian GLIBC 2.28-10) 2.28" in the container
2022-03-15 20:57:57 +0100bahamas(~lucian@84.232.140.158) (Ping timeout: 256 seconds)
2022-03-15 20:59:03 +0100 <maerwald> yes
2022-03-15 20:59:20 +0100 <maerwald> you can either link statically in an alpine container or use an older debian
2022-03-15 20:59:31 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-03-15 20:59:31 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-03-15 20:59:31 +0100wroathe(~wroathe@user/wroathe)
2022-03-15 21:02:01 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 245 seconds)
2022-03-15 21:02:48 +0100 <hololeap> anyone know how to parse a natural number from a bytestring in parsec?
2022-03-15 21:03:01 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-03-15 21:03:08 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 21:04:07 +0100bahamas(~lucian@84.232.140.158)
2022-03-15 21:05:18 +0100Henson(~kvirc@107-179-133-201.cpe.teksavvy.com)
2022-03-15 21:06:41 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85fc:5466:5112:8a92) (Remote host closed the connection)
2022-03-15 21:07:17 +0100 <Henson> is there a way I can use Lens or Optics with a data structure like this [Foo K X] to use a function like Bar :: [X] -> [Y] to generate a [Foo K Y] where Foo contains other data K that should be copied from the input to the output
2022-03-15 21:07:27 +0100 <hololeap> muchWow $ many digit
2022-03-15 21:08:37 +0100bahamas(~lucian@84.232.140.158) (Ping timeout: 240 seconds)
2022-03-15 21:11:47 +0100 <[exa]> Henson: does Foo have lenses?
2022-03-15 21:11:56 +0100 <dpratt> maerwald: thanks; for clarification, is it not possibly to statically link on a debian distribution?
2022-03-15 21:12:10 +0100 <maerwald> not really with glibc
2022-03-15 21:12:19 +0100 <Henson> [exa]: yes
2022-03-15 21:12:43 +0100xff0x(~xff0x@dslb-094-222-029-254.094.222.pools.vodafone-ip.de)
2022-03-15 21:13:06 +0100 <[exa]> Henson: is there a single lens that accesses an X-typed element? (or more of them?)
2022-03-15 21:13:09 +0100 <Henson> [exa]: it would be easy if I wanted bar :: X -> Y, but I want [X] -> [Y], so it reaches into the ensemble of inputs and manipulates their individual values all at once
2022-03-15 21:13:35 +0100 <Henson> [exa]: while copying all the rest of the data that is not related to the manipulation
2022-03-15 21:13:47 +0100 <dpratt> maerwald: ah, ok; and static linking is going to be "what will happen" from an alpine image?
2022-03-15 21:13:47 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2022-03-15 21:13:52 +0100 <Henson> [exa]: there's a single one
2022-03-15 21:14:04 +0100gentauro(~gentauro@user/gentauro)
2022-03-15 21:14:31 +0100thyriaen(~thyriaen@ip5f5af2d7.dynamic.kabel-deutschland.de)
2022-03-15 21:14:50 +0100 <maerwald> dpratt: you pass --ghc-options='-optl-static' to cabal and then yes
2022-03-15 21:15:04 +0100 <[exa]> Henson: hm I see. can you model that [X]->[Y] as a fold or an (indexed) traversal or something?
2022-03-15 21:15:10 +0100 <dpratt> maerwald: very helpful, thanks!
2022-03-15 21:15:18 +0100nucranium(~nucranium@2a02:8010:6173:0:1518:15e2:d1d7:f9f8)
2022-03-15 21:16:14 +0100 <Henson> [exa]: I'll just write a custom function to do what I want. I thought there might be a way to do it with Lens/Optics using something I'm unfamiliar with.
2022-03-15 21:16:56 +0100 <Henson> [exa]: the toList Traversal function gets me part of the way there, but it loses all of the structure and extra data.
2022-03-15 21:17:11 +0100 <[exa]> Henson: it should be simple, I guess `traverseOf` does the trick
2022-03-15 21:17:41 +0100cosimone(~user@93-44-187-176.ip98.fastwebnet.it) (Read error: Connection reset by peer)
2022-03-15 21:18:58 +0100 <hololeap> % :t (\f -> sequence . fmap f . sequence) :: Monoid k => ([x] -> [y]) -> [(k,x)] -> [(k,y)] -- Henson
2022-03-15 21:18:59 +0100 <yahb> hololeap: Monoid k => ([x] -> [y]) -> [(k, x)] -> [(k, y)]
2022-03-15 21:19:51 +0100 <hololeap> hm maybe that wouldn't work
2022-03-15 21:19:57 +0100ec(~ec@gateway/tor-sasl/ec)
2022-03-15 21:24:09 +0100 <[exa]> Henson: for that traverseOf -- you could put in a lazy State that creates the value that you want to know of _all_ elements, and at the same time use that value for deciding what to change. Not sure if there's a lens combinator for doing precisely this though.
2022-03-15 21:25:20 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2022-03-15 21:25:58 +0100 <janus> hololeap: have you seen Data.Attoparsec.Text? it has `decimal :: Integral a => Parser a`
2022-03-15 21:26:27 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-15 21:28:06 +0100coot(~coot@213.134.190.95) (Quit: coot)
2022-03-15 21:28:35 +0100jespada(~jespada@cpc121022-nmal24-2-0-cust171.19-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com)
2022-03-15 21:28:54 +0100 <Hecate> yes it's good
2022-03-15 21:30:15 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2022-03-15 21:31:34 +0100olle(~olle@c-8a89e455.034-536-6d6c6d4.bbcust.telenor.se)
2022-03-15 21:31:36 +0100hololeap(~hololeap@user/hololeap)
2022-03-15 21:33:57 +0100 <ski> > [M.fromList [(0,"zero")],M.fromList [(1,"one"),(2,"two")]] & partsOf (traverse . traverse) %~ reverse -- Henson, maybe something like this ?
2022-03-15 21:33:58 +0100 <lambdabot> [fromList [(0,"two")],fromList [(1,"one"),(2,"zero")]]
2022-03-15 21:34:19 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 21:36:36 +0100nucranium(~nucranium@2a02:8010:6173:0:1518:15e2:d1d7:f9f8) (Ping timeout: 250 seconds)
2022-03-15 21:37:46 +0100nucranium(~nucranium@2a02:8010:6173:0:1518:15e2:d1d7:f9f8)
2022-03-15 21:37:48 +0100 <ski> (or perhaps using `unsafePartsOf' in place of `partsOf', which will error out if your `bar' produces too few elements (too many will ignore the excess ones, for either combinator))
2022-03-15 21:38:58 +0100 <ski> @. hoogle type (sequence .) . fmap
2022-03-15 21:39:00 +0100 <lambdabot> Prelude mapM :: (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b)
2022-03-15 21:39:00 +0100 <lambdabot> Control.Monad mapM :: (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b)
2022-03-15 21:39:00 +0100 <lambdabot> Data.Traversable mapM :: (Traversable t, Monad m) => (a -> m b) -> t a -> m (t b)
2022-03-15 21:39:06 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
2022-03-15 21:40:05 +0100 <[exa]> oh unsafePartsOf can change the type, cool.
2022-03-15 21:40:22 +0100nucranium(~nucranium@2a02:8010:6173:0:1518:15e2:d1d7:f9f8) (Client Quit)
2022-03-15 21:41:52 +0100 <Henson> ski: hmm, it looks like partsOf might be what I need, I'll experiment with that and see where it gets me.
2022-03-15 21:42:16 +0100azimut_(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2022-03-15 21:42:32 +0100 <ski> Henson : assuming you have `Traversable (Foo K)', obviously
2022-03-15 21:42:51 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl)
2022-03-15 21:43:55 +0100acidjnk(~acidjnk@p200300d0c7049f99c07e6a42421e5c0c.dip0.t-ipconnect.de)
2022-03-15 21:47:27 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 21:47:36 +0100zincy_(~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection)
2022-03-15 21:48:46 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-15 21:49:00 +0100 <ski> hm, now i'm wondering if there's `Functor f => Traversing (->) f s t a b -> exists t. Traversable t *> LensLike f s t (t a) (t b)' or `(Functor f,Traversable t) => ATraversal s t a b -> (t a -> f (t b)) -> s -> f t' (possibly with `a = b')
2022-03-15 21:50:27 +0100alx741(~alx741@host-181-198-243-130.netlife.ec) (Read error: Connection reset by peer)
2022-03-15 21:51:01 +0100alx741(~alx741@host-181-198-243-130.netlife.ec)
2022-03-15 21:51:06 +0100 <ski> er, accidentally used the same tyvar `t' for two different things. and the latter one was wrong anyway. try `Functor f => Traversing (->) f s t a b -> exists g. Traversable g *> LensLike f s t (g a) (g b)' or `Functor f => ATraversal s t a b -> (forall g. Traversable g => g a -> f (g b)) -> s -> f t' (possibly with `a = b'), rather
2022-03-15 21:52:31 +0100 <Henson> I don't actually need to the type change. In my application Y = X, so partsOf should work
2022-03-15 21:52:32 +0100olle(~olle@c-8a89e455.034-536-6d6c6d4.bbcust.telenor.se) (Remote host closed the connection)
2022-03-15 21:53:14 +0100 <Henson> ski: yeah, I'm writing all of these types myself, so I can make the necessary instances.
2022-03-15 21:53:20 +0100 <ski> @type let partsOf'_ :: Functor f => ATraversal s t a a -> (forall g. Traversable g => g a -> f (g a)) -> s -> f t; partsOf'_ = partsOf' in partsOf'_
2022-03-15 21:53:21 +0100 <lambdabot> Functor f => ATraversal s t a a -> (forall (g :: * -> *). Traversable g => g a -> f (g a)) -> s -> f t
2022-03-15 21:53:26 +0100 <ski> seems legit ..
2022-03-15 21:53:56 +0100mastarija(~mastarija@2a05:4f46:e04:6000:6118:54b1:a270:d89b) (Quit: Leaving)
2022-03-15 21:54:18 +0100 <ski> of course, you can't easily use `reverse' with this variant
2022-03-15 21:54:26 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net)
2022-03-15 21:55:39 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-03-15 21:55:42 +0100 <ski> (you could probably do a `Control.Monad.State.Lazy' trick, along the lines of what [exa] suggested)
2022-03-15 21:56:27 +0100 <ski> Henson : well, i was thinking maybe you'd prefer it to error out if `bar' returned a shorter list
2022-03-15 21:57:16 +0100 <ski> (not sure if there's an easy way to also make it error out if it returns a longer list .. that's what got me thinking about using an abstract `Traversible' `g', rather than the concrete `[]')
2022-03-15 21:59:00 +0100yauhsien(~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-03-15 21:59:01 +0100 <Henson> ski: thanks for the suggestion, but that would make things even more complicated. The returned list should always be the same size so I'm not concerned with it changing shape.
2022-03-15 21:59:34 +0100nexus_(~nexus@178-164-207-111.pool.digikabel.hu) (Ping timeout: 250 seconds)
2022-03-15 22:00:29 +0100 <ski> yea, the `Traversable g' stuff was more of a side rumination, than an actual suggestion for you
2022-03-15 22:01:34 +0100nexus(~nexus@176-241-62-204.pool.digikabel.hu)
2022-03-15 22:05:42 +0100namkeleser(~namkelese@101.175.155.55) (Quit: Client closed)
2022-03-15 22:07:04 +0100 <ski> hm, perhaps one could add `Representable g' (or something ?) in addition to `Traversable g' ..
2022-03-15 22:07:07 +0100 <jackdk> Henson: How'd you go with your streaming stuff yesterday?
2022-03-15 22:07:13 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-03-15 22:07:27 +0100vorpuni(~pvorp@2001:861:3881:c690:c81a:b383:83c1:b919)
2022-03-15 22:08:21 +0100Everything(~Everythin@37.115.210.35)
2022-03-15 22:08:49 +0100ph88(~ph88@84-30-78-253.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2022-03-15 22:09:01 +0100alp(~alp@user/alp) (Ping timeout: 240 seconds)
2022-03-15 22:09:35 +0100Pickchea(~private@user/pickchea)
2022-03-15 22:10:38 +0100 <Henson> jackdk: well, this Optics thing is a way to try to get around that. Instead of splitting the things into separate streams, I'm trying to manipulate the data in one go using something like "over".
2022-03-15 22:12:19 +0100Giovanni(~Giovanni@176.219.119.243) (Ping timeout: 250 seconds)
2022-03-15 22:12:20 +0100 <[exa]> ski: actually I'm not sure now if lazy state would even help there
2022-03-15 22:12:34 +0100Giovanni(~Giovanni@176.54.32.122)
2022-03-15 22:13:38 +0100 <ski> exists a. C a *> (Foo a -> Bar) >---> (forall a. C a => Foo a) -> Bar
2022-03-15 22:13:44 +0100 <ski> exists a. C a *> (Foo a -> Bar) ===== forall o. ((exists a. C a *> (Foo a -> Bar)) -> o) -> o
2022-03-15 22:13:47 +0100 <ski> ===== forall o. (forall a. C a => (Foo a -> Bar) -> o) -> o
2022-03-15 22:13:53 +0100 <ski> .. hmm
2022-03-15 22:14:04 +0100pavonia(~user@user/siracusa)
2022-03-15 22:14:05 +0100 <ski> (how to make a commuting diagram ?)
2022-03-15 22:15:20 +0100 <ski> [exa] : hm, wouldn't TyingTheKnot work, you think ?
2022-03-15 22:15:44 +0100 <[exa]> yeah just wondering how to get all the values out correctly at once
2022-03-15 22:16:24 +0100yauhsien(~yauhsien@61-231-56-96.dynamic-ip.hinet.net)
2022-03-15 22:16:57 +0100merijn(~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-03-15 22:17:08 +0100 <jackdk> Henson: so the item type of your stream is a `Foo K X` and you want to go to `Foo K Y`?
2022-03-15 22:20:57 +0100 <ski> Henson : hm, your list is an incrementally produced stream ? i'd guess that the `partsOf' solution(s) above are bulky, rather than incremental (so waits for the end of the list/stream, before producing the first `Foo K Y' output element) (i haven't tested this, it's just a guess)
2022-03-15 22:21:45 +0100alp(~alp@user/alp)
2022-03-15 22:22:35 +0100 <ski> @hoogle (a,b -> c) -> (a -> b) -> c
2022-03-15 22:22:36 +0100 <lambdabot> No results found
2022-03-15 22:22:36 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 240 seconds)
2022-03-15 22:22:40 +0100 <ski> @djinn (a,b -> c) -> (a -> b) -> c
2022-03-15 22:22:40 +0100 <lambdabot> f (a, b) c = b (c a)
2022-03-15 22:22:43 +0100 <ski> @hoogle a -> (b -> c) -> (a -> b) -> c
2022-03-15 22:22:44 +0100 <lambdabot> No results found
2022-03-15 22:22:45 +0100thyriaen(~thyriaen@ip5f5af2d7.dynamic.kabel-deutschland.de) (Quit: Leaving)
2022-03-15 22:23:16 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com)
2022-03-15 22:24:37 +0100hpc(~juzz@ip98-169-35-13.dc.dc.cox.net)
2022-03-15 22:24:38 +0100cosimone(~user@93-44-187-176.ip98.fastwebnet.it)
2022-03-15 22:27:26 +0100vorpuni(~pvorp@2001:861:3881:c690:c81a:b383:83c1:b919) (Quit: bye)
2022-03-15 22:29:21 +0100 <[exa]> ski: any thoughts on de-abominating this?--
2022-03-15 22:29:22 +0100 <[exa]> > let (d,r) = traverseByOf (traverse._2) (\x->(mempty,x)) (<*>) (\x -> ([x],x++(concat d))) [('a',"bcd"),('c',"def")] in r
2022-03-15 22:29:24 +0100 <lambdabot> [('a',"bcdbcddef"),('c',"defbcddef")]
2022-03-15 22:30:36 +0100 <[exa]> okay there's one very explicit `pure`
2022-03-15 22:31:00 +0100 <[exa]> which makes it traverseOf I guess....
2022-03-15 22:31:26 +0100worldhelloworld1(uid543174@id-543174.helmsley.irccloud.com)
2022-03-15 22:34:47 +0100 <[exa]> > let (d,r) = traverseOf (traverse._2) (\x -> ([x],show (x*sum d))) [('A',1),('B',2)] in r
2022-03-15 22:34:48 +0100 <lambdabot> [('A',"3"),('B',"6")]
2022-03-15 22:36:53 +0100x_kuru_(~xkuru@user/xkuru)
2022-03-15 22:37:22 +0100 <[exa]> (,) is the best type ever and I can sleep now.
2022-03-15 22:37:37 +0100 <ski> > sequence ["01","ab"]
2022-03-15 22:37:38 +0100 <lambdabot> ["0a","0b","1a","1b"]
2022-03-15 22:37:46 +0100 <ski> > getZipList `map` [ZipList [\case False -> '0'; True -> '1',\case False -> 'a'; True -> 'b'] <*> ZipList ij | ij <- replicateM 2 [False,True]]
2022-03-15 22:37:47 +0100 <lambdabot> ["0a","0b","1a","1b"]
2022-03-15 22:37:52 +0100 <ski> % :set -XApplicativeDo
2022-03-15 22:37:52 +0100 <yahb> ski:
2022-03-15 22:37:57 +0100 <ski> % getZipList `map` getZipList (do ij <- replicateM 2 (ZipList [False,True]); return (ZipList [\case False -> '0'; True -> '1',\case False -> 'a'; True -> 'b'] <*> ZipList ij))
2022-03-15 22:37:57 +0100 <yahb> ski: ["0a","1b"]
2022-03-15 22:38:23 +0100 <ski> @type sequence
2022-03-15 22:38:24 +0100 <lambdabot> (Traversable t, Monad m) => t (m a) -> m (t a)
2022-03-15 22:38:26 +0100 <ski> @type (<*>)
2022-03-15 22:38:27 +0100 <lambdabot> Applicative f => f (a -> b) -> f a -> f b
2022-03-15 22:38:53 +0100yauhsien(~yauhsien@61-231-56-96.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-03-15 22:41:05 +0100x_kuru(xkuru@user/xkuru) (Ping timeout: 256 seconds)
2022-03-15 22:41:36 +0100 <nf> int-e: could you take a look at https://github.com/lambdabot/lambdabot/pull/204 when you have a minute?
2022-03-15 22:42:30 +0100 <sm> nice, https://hackage.haskell.org/package/ihp-hsx on hackage now
2022-03-15 22:42:35 +0100yauhsien(~yauhsien@61-231-56-96.dynamic-ip.hinet.net)
2022-03-15 22:42:56 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds)
2022-03-15 22:45:03 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-03-15 22:45:22 +0100_xor(~xor@dsl-50-5-233-169.fuse.net) (Read error: Connection reset by peer)
2022-03-15 22:50:15 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-03-15 22:50:51 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-03-15 22:50:53 +0100lavaman(~lavaman@98.38.249.169)
2022-03-15 22:50:57 +0100 <ski> > let (d,r) = [('A',1),('B',2)] & traverse._2 %%~ \x -> ([x],show (x * sum d)) in r
2022-03-15 22:50:58 +0100 <lambdabot> [('A',"3"),('B',"6")]
2022-03-15 22:51:00 +0100 <ski> > let (r,d) = runWriter ([('A',1),('B',2)] & traverse._2 %%~ \x -> do tell [x]; return (show (x * sum d))) in r
2022-03-15 22:51:02 +0100 <lambdabot> [('A',"3"),('B',"6")]
2022-03-15 22:51:04 +0100 <shapr> oh wow, a lambdabot plugin I wrote no longer works with ghc 9?!
2022-03-15 22:51:20 +0100 <ski> [exa] : took me a bit to decipher it
2022-03-15 22:52:09 +0100 <shapr> nf: I think the fortune plugin was written in 2002 it's had a long life!
2022-03-15 22:53:19 +0100 <ski> @fortune
2022-03-15 22:53:19 +0100 <lambdabot> May you have many beautiful and obedient daughters.
2022-03-15 22:54:11 +0100 <ski> @palomer
2022-03-15 22:54:11 +0100 <lambdabot> (_|_)
2022-03-15 22:54:30 +0100 <shapr> hahaha
2022-03-15 22:54:48 +0100skistill remembers palomer,Keal
2022-03-15 22:54:52 +0100 <ski> @keal
2022-03-15 22:54:52 +0100 <lambdabot> i aint running that on my puter
2022-03-15 22:55:52 +0100michalz(~michalz@185.246.204.43) (Remote host closed the connection)
2022-03-15 22:55:54 +0100TonyStone(~TonyStone@2603-7080-8607-c36a-a0f7-4a6c-9396-dfff.res6.spectrum.com) (Ping timeout: 250 seconds)
2022-03-15 22:58:27 +0100michalz(~michalz@185.246.204.41)
2022-03-15 22:58:43 +0100michalz(~michalz@185.246.204.41) (Remote host closed the connection)
2022-03-15 22:59:03 +0100 <[exa]> ski: we should have some syntax for marking important and arbitrary bits in the examples :] but I guess it's nailed there with the Writer
2022-03-15 22:59:45 +0100skistill isn't really familiar with `lens'
2022-03-15 23:00:17 +0100 <nf> shapr: are you saying it's had a long life and it needs to die or the opposite :D
2022-03-15 23:00:35 +0100gehmehgeh(~user@user/gehmehgeh)
2022-03-15 23:01:13 +0100michalz(~michalz@185.246.204.43)
2022-03-15 23:02:31 +0100ski. o O ( ‟That is not dead which can eternal lie,And with strange aeons even death may die.” )
2022-03-15 23:02:47 +0100 <c_wraith> ski: the best thing about your examples is that (%%~) = id
2022-03-15 23:03:37 +0100 <jackdk> How much of lens is secretly `id` at this point?
2022-03-15 23:03:52 +0100 <c_wraith> only like about 10 things
2022-03-15 23:04:11 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:85fc:5466:5112:8a92)
2022-03-15 23:04:12 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-03-15 23:04:19 +0100 <[exa]> yup the rest is just Identity
2022-03-15 23:04:32 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-03-15 23:05:16 +0100 <c_wraith> (and runIdentity)
2022-03-15 23:05:37 +0100 <[exa]> :]
2022-03-15 23:05:37 +0100 <ski> c_wraith : figured that'd look nicer, in the operator salad version :p
2022-03-15 23:06:03 +0100 <jackdk> Axman6: see, I knew it!
2022-03-15 23:06:04 +0100 <nf> that which is not id is (.), and that which is not (.) is id
2022-03-15 23:06:31 +0100 <ski> (although, i'm pretty tired atm, so i only noticed it could be omitted, in passing, then promptly forgot about it again, when presenting the finished examples)
2022-03-15 23:06:50 +0100michalz(~michalz@185.246.204.43) (Remote host closed the connection)
2022-03-15 23:07:05 +0100 <[exa]> btw, now when seeing this, I might already have asked and forgot-- what was the reason the tuple is "reversed" in State and Writer?
2022-03-15 23:07:20 +0100 <ski> (.. i had to check my backlog, to notice that i had already noticed before)
2022-03-15 23:07:26 +0100 <c_wraith> I don't think there is a good reason
2022-03-15 23:07:38 +0100 <c_wraith> Other than "it doesn't matter since it's behind a newtype anyway"
2022-03-15 23:07:43 +0100 <[exa]> (reversed as in "unlike the usual functor position")
2022-03-15 23:08:32 +0100 <ski> well, i suppose it's just an (unhappy) accident
2022-03-15 23:08:43 +0100TonyStone(~TonyStone@2603-7080-8607-c36a-a0f7-4a6c-9396-dfff.res6.spectrum.com)
2022-03-15 23:09:15 +0100 <[exa]> maybe a safety precaution against misusing fmaps&others from actual (,) where they don't belong?
2022-03-15 23:09:31 +0100 <[exa]> my best hypothesis so far ^
2022-03-15 23:09:39 +0100 <ski> (perhaps, for the `Writer' case, it could be because there was a slight preference to writing the larger output expressions after the smaller result expression .. but that's focusing on convenience for implementation, rather than user interface ..)
2022-03-15 23:09:57 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-03-15 23:09:59 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-03-15 23:10:15 +0100 <monochrom> I heard the reason, but I forgot. Let me see if I can find it in my logs.
2022-03-15 23:10:32 +0100 <ski> if `Writer' and `State' were to be redone, i'd advocate for swapping it around
2022-03-15 23:10:36 +0100 <[exa]> yeah the question's been around already
2022-03-15 23:10:47 +0100 <geekosaur> wasn't it some CT thing?
2022-03-15 23:10:54 +0100 <geekosaur> vague memory
2022-03-15 23:11:25 +0100 <ski> my bet would be on "hysterical raisins"
2022-03-15 23:12:12 +0100 <shapr> nf: I don't know! It's a nice plugin I guess?
2022-03-15 23:12:16 +0100 <shapr> @fortune
2022-03-15 23:12:16 +0100 <lambdabot> "I say we take off; nuke the site from orbit. It's the only way to be sure."
2022-03-15 23:12:16 +0100 <lambdabot> - Corporal Hicks, in "Aliens"
2022-03-15 23:12:27 +0100 <ski> @yow
2022-03-15 23:12:27 +0100 <lambdabot> Do I have a lifestyle yet?
2022-03-15 23:12:49 +0100 <ski> perhaps there could be slightly more bot abuse in the channel
2022-03-15 23:13:11 +0100 <shapr> When I first wrote that plugin it (and @quote) had an off by one error that persistent for years. Ten years later I jumped in to finally fix it, and found it HAD BEEN FIXED and someone had saved the off by one error as a quote?!?!?
2022-03-15 23:13:37 +0100 <nf> @yow
2022-03-15 23:13:37 +0100 <lambdabot> I'm also against BODY-SURFING!!
2022-03-15 23:13:50 +0100jespada(~jespada@cpc121022-nmal24-2-0-cust171.19-2.cable.virginm.net)
2022-03-15 23:13:53 +0100Everything(~Everythin@37.115.210.35) (Quit: leaving)
2022-03-15 23:14:03 +0100 <nf> @arr
2022-03-15 23:14:03 +0100 <lambdabot> Keelhaul the swabs!
2022-03-15 23:14:05 +0100 <nf> @yarr
2022-03-15 23:14:05 +0100 <lambdabot> Yo ho ho, and a bottle of rum!
2022-03-15 23:14:07 +0100 <shapr> Yeah, that plugin came from testing the quote plugin with zippy the pinhead quotes that shipped with emacs!
2022-03-15 23:14:15 +0100 <shapr> @protontorpedo
2022-03-15 23:14:15 +0100 <lambdabot> hakell is not lisp or ml right?
2022-03-15 23:14:23 +0100 <ski> @v
2022-03-15 23:14:23 +0100 <lambdabot> "\"\\\"\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\\\\"
2022-03-15 23:14:34 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-03-15 23:15:24 +0100 <ski> @pinky
2022-03-15 23:15:24 +0100 <lambdabot> I think so, Brain, but, the Rockettes? I mean, it's mostly girls, isn't it?
2022-03-15 23:15:29 +0100 <nf> fine i'll make a shell wrapper
2022-03-15 23:16:19 +0100 <shapr> The fortune / quote / yow / etc plugin was the second plugin that worked, @echo was the first
2022-03-15 23:16:34 +0100 <shapr> @echo hello
2022-03-15 23:16:34 +0100 <lambdabot> echo; msg:IrcMessage {ircMsgServer = "libera", ircMsgLBName = "lambdabot", ircMsgPrefix = "shapr!~user@pool-173-73-44-186.washdc.fios.verizon.net", ircMsgCommand = "PRIVMSG", ircMsgParams = ["#
2022-03-15 23:16:34 +0100 <lambdabot> haskell",":@echo hello"]} target:#haskell rest:"hello"
2022-03-15 23:17:17 +0100 <shapr> nf: if you're interested, there's a bit of history about lambdabot in the most recent cofree coffee podcast
2022-03-15 23:17:33 +0100 <nf> i don't like history
2022-03-15 23:17:39 +0100 <shapr> fair enough
2022-03-15 23:17:39 +0100_xor(~xor@dsl-50-5-233-169.fuse.net)
2022-03-15 23:18:40 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-03-15 23:18:40 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-03-15 23:18:40 +0100finn_elijaFinnElija
2022-03-15 23:19:22 +0100 <shapr> though at least one person recently active in this channel did get their PhD from figuring out how to hot-reload lambdabot plugins
2022-03-15 23:20:57 +0100 <hpc> i didn't think PhD work could be specific in that particular way
2022-03-15 23:21:07 +0100 <nf> lol
2022-03-15 23:21:13 +0100Guest|20(~Guest|20@dynamic-046-114-001-168.46.114.pool.telefonica.de)
2022-03-15 23:21:26 +0100Guest|20(~Guest|20@dynamic-046-114-001-168.46.114.pool.telefonica.de) (Client Quit)
2022-03-15 23:21:31 +0100ski. o O ( "Les Horribles Cernettes" <https://web.archive.org/web/20120101010055/http://musiclub.web.cern.ch/MusiClub/bands/cernettes> )
2022-03-15 23:24:13 +0100Guest27(~Guest27@2601:281:d47f:1590::6b90) (Quit: Client closed)
2022-03-15 23:28:50 +0100k8yun(~k8yun@user/k8yun) (Ping timeout: 250 seconds)
2022-03-15 23:30:41 +0100 <monochrom> This: https://ircbrowse.tomsmeding.com/day/lchaskell/2022/01/22?id=388992#trid388992
2022-03-15 23:34:06 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2022-03-15 23:35:40 +0100ski. o O ( "Types and Reflection" (Masters thesis) by Lauri Emil Alanko in 2004-11-08 at <https://web.archive.org/web/20130510183001if_/http://www.cs.helsinki.fi/u/lealanko/alanko04types.p…>,<http://lambda-the-ultimate.org/node/219> )
2022-03-15 23:36:30 +0100romesrf(~romes@44.190.189.46.rev.vodafone.pt)
2022-03-15 23:36:48 +0100 <shapr> Are you figuring out which thesis was about hot reloading lambdabot plugins?
2022-03-15 23:36:48 +0100 <ski> monochrom : oh, that recently ..
2022-03-15 23:37:50 +0100 <ski> shapr : i don't recall / i'm not sure which one you had in mind (note the above was not a Ph. D. thesis, so perhaps you were thinking about something else) .. it's just what i reminisced, when you mentioned that
2022-03-15 23:37:59 +0100 <shapr> ah, fair enough
2022-03-15 23:38:03 +0100 <shapr> I was curious
2022-03-15 23:38:11 +0100 <ski> (although i was foiled for a little while, since i misremembered the surname as "Alenko")
2022-03-15 23:38:19 +0100boborygmy(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
2022-03-15 23:38:24 +0100boborygmy_(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net)
2022-03-15 23:38:41 +0100boborygmy_(~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Client Quit)
2022-03-15 23:40:44 +0100 <ski> @wn trefoil
2022-03-15 23:40:44 +0100 <lambdabot> *** "trefoil" wn "WordNet (r) 3.0 (2006)"
2022-03-15 23:40:44 +0100 <lambdabot> trefoil
2022-03-15 23:40:44 +0100 <lambdabot> n 1: any of several Old World herbs of the genus Medicago having
2022-03-15 23:40:44 +0100 <lambdabot> small flowers and trifoliate compound leaves [syn: {medic},
2022-03-15 23:40:44 +0100 <lambdabot> {medick}, {trefoil}]
2022-03-15 23:40:46 +0100 <lambdabot> [3 @more lines]
2022-03-15 23:41:01 +0100 <ski> @more
2022-03-15 23:41:02 +0100 <lambdabot> 2: a plant of the genus Trifolium [syn: {clover}, {trefoil}]
2022-03-15 23:41:02 +0100 <lambdabot> 3: an architectural ornament in the form of three arcs arranged
2022-03-15 23:41:02 +0100 <lambdabot> in a circle
2022-03-15 23:41:41 +0100 <ski> reading that backlog, i'm surprised i remember the conversation about `readme'
2022-03-15 23:42:01 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection)
2022-03-15 23:42:09 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
2022-03-15 23:42:16 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection)
2022-03-15 23:42:23 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
2022-03-15 23:42:32 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection)
2022-03-15 23:42:39 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
2022-03-15 23:42:52 +0100skinotes shapr was the one initiating that LtU thread, though
2022-03-15 23:43:42 +0100 <shapr> uh oh
2022-03-15 23:45:01 +0100 <dons> moin moin
2022-03-15 23:45:27 +0100 <shapr> howdy dons ! How you doin?
2022-03-15 23:45:38 +0100 <dons> hey d00d. pretty good. been a while.
2022-03-15 23:45:48 +0100 <shapr> looks like the link to your PhD thesis is broken from your homepage
2022-03-15 23:45:52 +0100 <shapr> yeah, it's been years!
2022-03-15 23:45:53 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection)
2022-03-15 23:46:03 +0100 <dons> oh yeah i need to update some links.
2022-03-15 23:46:15 +0100 <dons> i think all the stuff was hosted on code.haskell.org
2022-03-15 23:47:19 +0100 <monochrom> Here is an earlier one: https://ircbrowse.tomsmeding.com/day/lchaskell/2022/01/14?id=374888#trid374888
2022-03-15 23:47:56 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 240 seconds)
2022-03-15 23:48:08 +0100 <shapr> dons: are you taking a break from management to write code?
2022-03-15 23:48:27 +0100 <geekosaur> right, that;s the one I half-remembered
2022-03-15 23:48:30 +0100 <dons> i most certainly am :) extended break i guess at this point (~2 years)
2022-03-15 23:48:35 +0100 <shapr> oh nice!
2022-03-15 23:49:01 +0100 <dons> moved back to australia, remote IC working on dev infra stuff for Meta still. code search/navigation/IDE things
2022-03-15 23:49:05 +0100 <ski> yea, just found the reference to "Plugging Haskell In" by André Pang,Don Stewart,Sean Seefried,Manuel Chakravarty in 2004-09, in the references/bibliography of the Alanko thesis
2022-03-15 23:49:16 +0100 <shapr> ski: yup! you're getting close!
2022-03-15 23:50:33 +0100ix(~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe)
2022-03-15 23:54:47 +0100DNH(~DNH@2a02:8108:1100:16d8:2015:9361:6306:3ac4) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-03-15 23:55:01 +0100machinedgod(~machinedg@24.105.81.50)
2022-03-15 23:59:16 +0100 <ski> ah, i guess it's available at <https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.9.7627>
2022-03-15 23:59:38 +0100 <ski> (a draft version, anyway)