2022-03-15 00:01:58 +0100 | daemonises | (uid545329@id-545329.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2022-03-15 00:03:27 +0100 | Joaquin | (~Joaquin@14.red-83-51-143.dynamicip.rima-tde.net) |
2022-03-15 00:05:26 +0100 | Joaquin | (~Joaquin@14.red-83-51-143.dynamicip.rima-tde.net) (Client Quit) |
2022-03-15 00:05:57 +0100 | nexus_ | (~nexus@84-236-1-101.pool.digikabel.hu) (Ping timeout: 256 seconds) |
2022-03-15 00:05:58 +0100 | tfeb | (~tfb@cpc102388-sgyl38-2-0-cust817.18-2.cable.virginm.net) |
2022-03-15 00:06:31 +0100 | doyougnu | (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) |
2022-03-15 00:07:40 +0100 | nexus_ | (~nexus@80-95-70-217.pool.digikabel.hu) |
2022-03-15 00:11:11 +0100 | Joaquin | (~Joaquin@14.red-83-51-143.dynamicip.rima-tde.net) |
2022-03-15 00:19:13 +0100 | Pickchea | (~private@user/pickchea) (Ping timeout: 256 seconds) |
2022-03-15 00:20:37 +0100 | Joaquin | (~Joaquin@14.red-83-51-143.dynamicip.rima-tde.net) (Quit: Client closed) |
2022-03-15 00:20:48 +0100 | Joaquin | (~Joaquin@14.red-83-51-143.dynamicip.rima-tde.net) |
2022-03-15 00:26:26 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds) |
2022-03-15 00:26:27 +0100 | merijn | (~merijn@c-001-001-005.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
2022-03-15 00:29:11 +0100 | acidjnk | (~acidjnk@p200300d0c7049f84692835b345d10091.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2022-03-15 00:29:44 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-03-15 00:31:30 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-03-15 00:32:16 +0100 | Joaquin | (~Joaquin@14.red-83-51-143.dynamicip.rima-tde.net) (Ping timeout: 256 seconds) |
2022-03-15 00:34:09 +0100 | jgeerds | (~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 252 seconds) |
2022-03-15 00:34:42 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) (Quit: Leaving.) |
2022-03-15 00:35:19 +0100 | michalz | (~michalz@185.246.204.93) (Remote host closed the connection) |
2022-03-15 00:38:10 +0100 | tfeb | (~tfb@cpc102388-sgyl38-2-0-cust817.18-2.cable.virginm.net) (Quit: died) |
2022-03-15 00:39:57 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 240 seconds) |
2022-03-15 00:58:26 +0100 | jao | (~jao@45.134.142.199) |
2022-03-15 01:03:00 +0100 | mrkajetanp | (~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88) (Ping timeout: 240 seconds) |
2022-03-15 01:04:12 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
2022-03-15 01:05:41 +0100 | doyougnu | (~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Ping timeout: 256 seconds) |
2022-03-15 01:16:42 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-03-15 01:19:50 +0100 | mmhat | (~mmh@55d4b6b1.access.ecotel.net) (Quit: WeeChat 3.4) |
2022-03-15 01:22:15 +0100 | gdown | (~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net) |
2022-03-15 01:24:35 +0100 | the_proffesor | (~theproffe@c-24-9-30-127.hsd1.co.comcast.net) |
2022-03-15 01:26:05 +0100 | Guest27 | (~Guest27@2601:281:d47f:1590::6b90) (Ping timeout: 256 seconds) |
2022-03-15 01:26:25 +0100 | theproffesor | (~theproffe@c-24-9-30-127.hsd1.co.comcast.net) (Ping timeout: 256 seconds) |
2022-03-15 01:26:32 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2022-03-15 01:32:06 +0100 | epolanski | (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2022-03-15 01:33:58 +0100 | InstX1 | (~Liam@2601:6c4:4080:3f80:ac7b:7176:d055:eccc) |
2022-03-15 01:36:32 +0100 | ninioArtillero[m | (~ninioarti@2001:470:69fc:105::1:d1ef) (Ping timeout: 240 seconds) |
2022-03-15 01:36:32 +0100 | FernandoChu[m] | (~ryunaqmat@2001:470:69fc:105::1:4dc0) (Ping timeout: 240 seconds) |
2022-03-15 01:36:36 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
2022-03-15 01:37:02 +0100 | Las[m] | (~lasmatrix@2001:470:69fc:105::74e) (Ping timeout: 240 seconds) |
2022-03-15 01:37:02 +0100 | schuelermine[m] | (~schuelerm@user/schuelermine) (Ping timeout: 240 seconds) |
2022-03-15 01:37:02 +0100 | MosheTeutsch[m] | (~moteutsch@2001:470:69fc:105::1:c250) (Ping timeout: 240 seconds) |
2022-03-15 01:37:02 +0100 | bb010g | (~bb010g@2001:470:69fc:105::9a5) (Ping timeout: 240 seconds) |
2022-03-15 01:37:02 +0100 | VanceIsM7[m] | (~vanceism7@2001:470:69fc:105::3ad) (Ping timeout: 240 seconds) |
2022-03-15 01:37:02 +0100 | pareto-optimal-d | (~pareto-op@2001:470:69fc:105::1:b61f) (Ping timeout: 240 seconds) |
2022-03-15 01:37:02 +0100 | zwro[m] | (~zwromatri@2001:470:69fc:105::1d4) (Ping timeout: 240 seconds) |
2022-03-15 01:37:02 +0100 | marinelli[m] | (~marinelli@2001:470:69fc:105::2d8) (Ping timeout: 240 seconds) |
2022-03-15 01:37:02 +0100 | jinsun_ | (~jinsun@user/jinsun) (Ping timeout: 240 seconds) |
2022-03-15 01:37:02 +0100 | mahene[m] | (~mahenemat@2001:470:69fc:105::1:6a93) (Ping timeout: 240 seconds) |
2022-03-15 01:37:04 +0100 | ninioArtillero[m | (~ninioarti@2001:470:69fc:105::1:d1ef) |
2022-03-15 01:37:17 +0100 | Inst | (~Liam@2601:6c4:4080:3f80:dc06:54f2:d0a:6b8c) (Ping timeout: 240 seconds) |
2022-03-15 01:39:36 +0100 | stefan-_ | (~cri@42dots.de) (Ping timeout: 252 seconds) |
2022-03-15 01:40:36 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-03-15 01:43:46 +0100 | stefan-_ | (~cri@42dots.de) |
2022-03-15 01:45:21 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
2022-03-15 01:45:54 +0100 | johnw | (~johnw@2607:f6f0:3004:1:c8b4:50ff:fef8:6bf0) |
2022-03-15 01:50:07 +0100 | FernandoChu[m] | (~ryunaqmat@2001:470:69fc:105::1:4dc0) |
2022-03-15 01:50:48 +0100 | MosheTeutsch[m] | (~moteutsch@2001:470:69fc:105::1:c250) |
2022-03-15 01:50:57 +0100 | mahene[m] | (~mahenemat@2001:470:69fc:105::1:6a93) |
2022-03-15 01:51:03 +0100 | jinsun_ | (~jinsun@user/jinsun) |
2022-03-15 01:51:32 +0100 | pareto-optimal-d | (~pareto-op@2001:470:69fc:105::1:b61f) |
2022-03-15 01:51:40 +0100 | Las[m] | (~lasmatrix@2001:470:69fc:105::74e) |
2022-03-15 01:51:44 +0100 | marinelli[m] | (~marinelli@2001:470:69fc:105::2d8) |
2022-03-15 01:53:10 +0100 | VanceIsM7[m] | (~vanceism7@2001:470:69fc:105::3ad) |
2022-03-15 01:54:19 +0100 | bb010g | (~bb010g@2001:470:69fc:105::9a5) |
2022-03-15 01:54:23 +0100 | schuelermine[m] | (~schuelerm@user/schuelermine) |
2022-03-15 01:55:00 +0100 | zwro[m] | (~zwromatri@2001:470:69fc:105::1d4) |
2022-03-15 01:59:00 +0100 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 240 seconds) |
2022-03-15 02:00:46 +0100 | Everything | (~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 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-03-15 02:12:05 +0100 | tremon | (~tremon@83-84-18-241.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in) |
2022-03-15 02:13:02 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-03-15 02:13:19 +0100 | mrkajetanp | (~mrkajetan@2a01:4b00:ea36:6c00:7994:941c:3f5d:2b88) |
2022-03-15 02:14:23 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) |
2022-03-15 02:14:33 +0100 | Guest27 | (~Guest27@2601:281:d47f:1590::6b90) |
2022-03-15 02:15:16 +0100 | nexus_ | (~nexus@80-95-70-217.pool.digikabel.hu) (Ping timeout: 250 seconds) |
2022-03-15 02:16:36 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
2022-03-15 02:16:54 +0100 | nexus_ | (~nexus@84-236-60-119.pool.digikabel.hu) |
2022-03-15 02:17:09 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-03-15 02:27:11 +0100 | TonyStone | (~TonyStone@cpe-74-76-51-197.nycap.res.rr.com) |
2022-03-15 02:29:11 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-15 02:34:49 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-03-15 02:35:21 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-03-15 02:35:52 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-03-15 02:40:19 +0100 | Guest27 | (~Guest27@2601:281:d47f:1590::6b90) (Ping timeout: 256 seconds) |
2022-03-15 02:40:21 +0100 | haskl | (~haskl@user/haskl) (Ping timeout: 245 seconds) |
2022-03-15 02:40:35 +0100 | haskl | (~haskl@user/haskl) |
2022-03-15 02:42:56 +0100 | ss | (~ss@187.83.249.216.dyn.smithville.net) |
2022-03-15 02:42:58 +0100 | ss | Guest7560 |
2022-03-15 02:43:06 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-03-15 02:43:31 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-03-15 02:43:37 +0100 | jamestmartin | (~james@jtmar.me) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in) |
2022-03-15 02:43:45 +0100 | jtmar | (~james@jtmar.me) |
2022-03-15 02:43:49 +0100 | meejah | (~meejah@rutas.meejah.ca) (Ping timeout: 240 seconds) |
2022-03-15 02:43:56 +0100 | sm[i] | (~user@plaintextaccounting/sm) (Ping timeout: 252 seconds) |
2022-03-15 02:44:29 +0100 | bahamas | (~lucian@84.232.140.158) |
2022-03-15 02:44:48 +0100 | meejah | (~meejah@rutas.meejah.ca) |
2022-03-15 02:45:47 +0100 | tolt | (~weechat-h@li219-154.members.linode.com) (Ping timeout: 250 seconds) |
2022-03-15 02:47:31 +0100 | tolt | (~weechat-h@li219-154.members.linode.com) |
2022-03-15 02:47:35 +0100 | Unicorn_Princess | (~Unicorn_P@46-54-248-191.static.kate-wing.si) (Remote host closed the connection) |
2022-03-15 02:47:54 +0100 | Unicorn_Princess | (~Unicorn_P@46-54-248-191.static.kate-wing.si) |
2022-03-15 02:48:20 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-03-15 02:48:20 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-03-15 02:48:20 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-03-15 02:48:38 +0100 | jao | (~jao@45.134.142.199) (Ping timeout: 250 seconds) |
2022-03-15 02:48:54 +0100 | bahamas | (~lucian@84.232.140.158) (Ping timeout: 252 seconds) |
2022-03-15 02:49:31 +0100 | sm[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 +0100 | zmt00 | (~zmt00@user/zmt00) |
2022-03-15 02:50:37 +0100 | jao | (~jao@45.134.142.225) |
2022-03-15 02:51:15 +0100 | ProfSimm | (~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 +0100 | byorgey | goes 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 +0100 | merijn | (~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 +0100 | zmt00 | (~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 +0100 | TonyStone | (~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 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-a0f7-4a6c-9396-dfff.res6.spectrum.com) |
2022-03-15 03:17:33 +0100 | rekahsoft | (~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 +0100 | eggplantade | (~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 +0100 | bahamas | (~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 +0100 | AlexNoo_ | (~AlexNoo@178.34.161.174) |
2022-03-15 03:25:59 +0100 | bahamas | (~lucian@84.232.140.158) (Ping timeout: 256 seconds) |
2022-03-15 03:26:03 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:64ad:f021:a34e:c231) |
2022-03-15 03:27:32 +0100 | AlexZenon | (~alzenon@94.233.240.159) (Ping timeout: 240 seconds) |
2022-03-15 03:27:39 +0100 | Alex_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 +0100 | AlexNoo | (~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 +0100 | Alex_test | (~al_test@178.34.161.174) |
2022-03-15 03:31:18 +0100 | AlexZenon | (~alzenon@178.34.161.174) |
2022-03-15 03:34:50 +0100 | zmt00 | (~zmt00@user/zmt00) |
2022-03-15 03:37:21 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2022-03-15 03:38:24 +0100 | jao | (~jao@45.134.142.225) (Ping timeout: 252 seconds) |
2022-03-15 03:38:45 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:64ad:f021:a34e:c231) (Remote host closed the connection) |
2022-03-15 03:41:56 +0100 | Guest7560 | (~ss@187.83.249.216.dyn.smithville.net) (Quit: Client closed) |
2022-03-15 03:43:02 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:64ad:f021:a34e:c231) |
2022-03-15 03:45:51 +0100 | ub | (~Thunderbi@p200300ecdf19b70a55005d108b4dd460.dip0.t-ipconnect.de) |
2022-03-15 03:46:42 +0100 | ubert | (~Thunderbi@p200300ecdf19b765b1fc5a865b2694ae.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2022-03-15 03:46:43 +0100 | ub | ubert |
2022-03-15 03:47:23 +0100 | Henson | (~kvirc@107-179-133-201.cpe.teksavvy.com) |
2022-03-15 03:47:31 +0100 | ubert1 | (~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 +0100 | mvk | (~mvk@2607:fea8:5cc3:7e00::45ee) |
2022-03-15 03:53:41 +0100 | eggplantade | (~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 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-03-15 04:01:21 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Read error: Connection reset by peer) |
2022-03-15 04:01:29 +0100 | kaph | (~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 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-03-15 04:04:43 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-03-15 04:04:43 +0100 | wroathe | (~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 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-03-15 04:09:24 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-03-15 04:10:36 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-03-15 04:11:33 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2022-03-15 04:12:10 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-03-15 04:12:32 +0100 | mbuf | (~Shakthi@27.58.140.82) |
2022-03-15 04:16:46 +0100 | Unicorn_Princess | (~Unicorn_P@46-54-248-191.static.kate-wing.si) (Remote host closed the connection) |
2022-03-15 04:18:07 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-03-15 04:19:36 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-15 04:20:21 +0100 | yauhsien | (~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 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2022-03-15 04:25:43 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2022-03-15 04:25:43 +0100 | finn_elija | FinnElija |
2022-03-15 04:25:56 +0100 | Henson | (~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: goodnight) |
2022-03-15 04:26:17 +0100 | nexus_ | (~nexus@84-236-60-119.pool.digikabel.hu) (Ping timeout: 256 seconds) |
2022-03-15 04:26:36 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 240 seconds) |
2022-03-15 04:28:07 +0100 | nexus_ | (~nexus@178-164-188-12.pool.digikabel.hu) |
2022-03-15 04:31:31 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-03-15 04:33:54 +0100 | Chai-T-Rex | (~ChaiTRex@user/chaitrex) (Quit: Chai-T-Rex) |
2022-03-15 04:34:31 +0100 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-03-15 04:36:46 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:64ad:f021:a34e:c231) |
2022-03-15 04:38:13 +0100 | geranim0 | (~geranim0@modemcable242.171-178-173.mc.videotron.ca) (Ping timeout: 240 seconds) |
2022-03-15 04:40:24 +0100 | k8yun | (~k8yun@user/k8yun) |
2022-03-15 04:42:25 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-03-15 04:42:39 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-03-15 04:44:02 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
2022-03-15 04:44:50 +0100 | pretty_d1 | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4.1) |
2022-03-15 04:45:16 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) |
2022-03-15 04:47:47 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Read error: Connection reset by peer) |
2022-03-15 04:47:57 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds) |
2022-03-15 04:48:04 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) |
2022-03-15 04:50:05 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-03-15 04:52:28 +0100 | lumberjack123 | (~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection) |
2022-03-15 04:53:56 +0100 | mzan | (~quassel@mail.asterisell.com) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2022-03-15 04:55:01 +0100 | mzan | (~quassel@mail.asterisell.com) |
2022-03-15 04:55:02 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-15 04:56:48 +0100 | lumberjack123 | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-03-15 05:00:45 +0100 | yauhsien_ | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) |
2022-03-15 05:00:45 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
2022-03-15 05:03:49 +0100 | Flow | (~none@gentoo/developer/flow) (Ping timeout: 250 seconds) |
2022-03-15 05:04:51 +0100 | Flow | (~none@gentoo/developer/flow) |
2022-03-15 05:05:07 +0100 | eggplant_ | (~Eggplanta@2600:1700:bef1:5e10:fcf5:76ff:669c:b084) |
2022-03-15 05:07:57 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:64ad:f021:a34e:c231) (Ping timeout: 240 seconds) |
2022-03-15 05:13:33 +0100 | boborygmy_ | (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 252 seconds) |
2022-03-15 05:13:33 +0100 | boborygmy | (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Ping timeout: 252 seconds) |
2022-03-15 05:20:58 +0100 | Guest84 | (~Guest84@2601:602:87f:4220:c3f4:c3dc:6b1f:b324) |
2022-03-15 05:21:33 +0100 | Guest84 | (~Guest84@2601:602:87f:4220:c3f4:c3dc:6b1f:b324) (Client Quit) |
2022-03-15 05:24:38 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:a4f7:3458:36c4:ffd7) (Ping timeout: 250 seconds) |
2022-03-15 05:25:26 +0100 | yauhsien_ | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-15 05:25:58 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) |
2022-03-15 05:26:32 +0100 | euandreh | (~euandreh@2804:14c:33:9fe5:e51b:ac6b:af96:5d6c) |
2022-03-15 05:29:30 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
2022-03-15 05:30:42 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
2022-03-15 05:31:46 +0100 | MironZ | (~MironZ@nat-infra.ehlab.uk) (Quit: Ping timeout (120 seconds)) |
2022-03-15 05:31:56 +0100 | sus | (zero@user/zeromomentum) (Quit: Ping timeout (120 seconds)) |
2022-03-15 05:32:06 +0100 | MironZ | (~MironZ@nat-infra.ehlab.uk) |
2022-03-15 05:32:07 +0100 | sus | (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 +0100 | shapr | (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Remote host closed the connection) |
2022-03-15 05:41:24 +0100 | shapr | (~user@pool-173-73-44-186.washdc.fios.verizon.net) |
2022-03-15 05:43:16 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 250 seconds) |
2022-03-15 05:45:00 +0100 | kaph_ | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) |
2022-03-15 05:46:00 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 252 seconds) |
2022-03-15 05:47:39 +0100 | kaph | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 252 seconds) |
2022-03-15 05:56:29 +0100 | xkuru | (~xkuru@user/xkuru) |
2022-03-15 06:00:10 +0100 | kaph_ | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 250 seconds) |
2022-03-15 06:02:21 +0100 | russruss | (~russruss@my.russellmcc.com) (Quit: The Lounge - https://thelounge.chat) |
2022-03-15 06:03:13 +0100 | Giovanni | (~Giovanni@176.55.166.222) (Remote host closed the connection) |
2022-03-15 06:07:44 +0100 | InstX1_ | (~Liam@2601:6c4:4080:3f80:51cd:6d8f:20a7:5eaa) |
2022-03-15 06:07:54 +0100 | russruss | (~russruss@my.russellmcc.com) |
2022-03-15 06:11:17 +0100 | InstX1 | (~Liam@2601:6c4:4080:3f80:ac7b:7176:d055:eccc) (Ping timeout: 240 seconds) |
2022-03-15 06:18:37 +0100 | tomku | (~tomku@user/tomku) (Ping timeout: 240 seconds) |
2022-03-15 06:21:13 +0100 | kaph_ | (~kaph@151.43.120.248) |
2022-03-15 06:22:14 +0100 | jakalx | (~jakalx@base.jakalx.net) () |
2022-03-15 06:22:27 +0100 | nexus_ | (~nexus@178-164-188-12.pool.digikabel.hu) (Ping timeout: 256 seconds) |
2022-03-15 06:24:08 +0100 | nexus_ | (~nexus@80-95-85-52.pool.digikabel.hu) |
2022-03-15 06:24:27 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-03-15 06:24:35 +0100 | gabiruh_ | (~gabiruh@vps19177.publiccloud.com.br) |
2022-03-15 06:25:18 +0100 | gabiruh | (~gabiruh@vps19177.publiccloud.com.br) (Read error: Connection reset by peer) |
2022-03-15 06:28:02 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-03-15 06:28:15 +0100 | deadmarshal_ | (~deadmarsh@95.38.115.168) |
2022-03-15 06:28:26 +0100 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-03-15 06:29:29 +0100 | img | (~img@user/img) |
2022-03-15 06:29:38 +0100 | mbuf | (~Shakthi@27.58.140.82) (Quit: Leaving) |
2022-03-15 06:31:02 +0100 | img | (~img@user/img) (Client Quit) |
2022-03-15 06:31:19 +0100 | cheater | (~Username@user/cheater) (Ping timeout: 272 seconds) |
2022-03-15 06:32:24 +0100 | img | (~img@user/img) |
2022-03-15 06:32:36 +0100 | deadmarshal_ | (~deadmarsh@95.38.115.168) (Ping timeout: 240 seconds) |
2022-03-15 06:33:33 +0100 | kaph_ | (~kaph@151.43.120.248) (Read error: Connection reset by peer) |
2022-03-15 06:34:26 +0100 | kaph | (~kaph@151.43.120.248) |
2022-03-15 06:41:44 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-03-15 06:46:25 +0100 | deadmarshal_ | (~deadmarsh@95.38.115.168) |
2022-03-15 06:46:53 +0100 | lavaman | (~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 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) |
2022-03-15 06:54:00 +0100 | shriekingnoise | (~shrieking@201.231.16.156) (Quit: Quit) |
2022-03-15 06:55:44 +0100 | tomku | (~tomku@user/tomku) |
2022-03-15 06:57:55 +0100 | kaph | (~kaph@151.43.120.248) (Read error: Connection reset by peer) |
2022-03-15 06:58:33 +0100 | cyphase | (~cyphase@user/cyphase) (Ping timeout: 272 seconds) |
2022-03-15 07:02:15 +0100 | cyphase | (~cyphase@user/cyphase) |
2022-03-15 07:09:33 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-03-15 07:11:21 +0100 | xkuru | (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
2022-03-15 07:14:06 +0100 | vglfr | (~vglfr@46.96.161.0) |
2022-03-15 07:17:45 +0100 | xkuru | (~xkuru@user/xkuru) |
2022-03-15 07:25:40 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-15 07:32:16 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2022-03-15 07:40:05 +0100 | x_kuru | (xkuru@user/xkuru) |
2022-03-15 07:43:29 +0100 | liz | (~liz@2a00:23c5:9680:501:b62e:99ff:fee4:47fa) |
2022-03-15 07:43:49 +0100 | xkuru | (~xkuru@user/xkuru) (Ping timeout: 256 seconds) |
2022-03-15 07:44:59 +0100 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2022-03-15 07:45:11 +0100 | k8yun | (~k8yun@user/k8yun) (Ping timeout: 256 seconds) |
2022-03-15 07:48:06 +0100 | deadmarshal_ | (~deadmarsh@95.38.115.168) (Ping timeout: 252 seconds) |
2022-03-15 07:57:04 +0100 | notzmv | (~zmv@user/notzmv) |
2022-03-15 07:59:46 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
2022-03-15 08:02:44 +0100 | liz | (~liz@2a00:23c5:9680:501:b62e:99ff:fee4:47fa) (Remote host closed the connection) |
2022-03-15 08:06:15 +0100 | cyphase | (~cyphase@user/cyphase) (Ping timeout: 252 seconds) |
2022-03-15 08:08:55 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-03-15 08:09:18 +0100 | tomku | (~tomku@user/tomku) (Ping timeout: 250 seconds) |
2022-03-15 08:09:38 +0100 | coot | (~coot@213.134.190.95) |
2022-03-15 08:10:50 +0100 | feliix42_ | (~felix@gibbs.uberspace.de) |
2022-03-15 08:11:13 +0100 | cyphase | (~cyphase@user/cyphase) |
2022-03-15 08:11:45 +0100 | feliix42 | (~felix@gibbs.uberspace.de) (Ping timeout: 252 seconds) |
2022-03-15 08:18:46 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2022-03-15 08:22:00 +0100 | Pickchea | (~private@user/pickchea) |
2022-03-15 08:25:35 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-03-15 08:25:49 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-03-15 08:25:57 +0100 | lavaman | (~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 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-03-15 08:28:50 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-03-15 08:30:55 +0100 | michalz | (~michalz@185.246.204.43) |
2022-03-15 08:36:29 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 252 seconds) |
2022-03-15 08:40:07 +0100 | jonathanx | (~jonathan@c-5eea3758-74736162.cust.telenor.se) |
2022-03-15 08:43:39 +0100 | nexus_ | (~nexus@80-95-85-52.pool.digikabel.hu) (Ping timeout: 252 seconds) |
2022-03-15 08:44:50 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 250 seconds) |
2022-03-15 08:45:32 +0100 | nexus_ | (~nexus@84-236-55-113.pool.digikabel.hu) |
2022-03-15 08:47:41 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-03-15 08:48:50 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-15 08:51:04 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) |
2022-03-15 08:52:37 +0100 | jonathanx | (~jonathan@c-5eea3758-74736162.cust.telenor.se) (Ping timeout: 256 seconds) |
2022-03-15 08:56:06 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Ping timeout: 268 seconds) |
2022-03-15 08:57:18 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:cecd:603d:2da7:a044) |
2022-03-15 09:00:58 +0100 | MarcoBuster | (~MarcoBust@37.161.174.126) |
2022-03-15 09:01:04 +0100 | MajorBiscuit | (~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 +0100 | briandaed | (~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 +0100 | mreh | (~matthew@host86-172-33-212.range86-172.btcentralplus.com) (Quit: Lost terminal) |
2022-03-15 09:11:19 +0100 | Pickchea | (~private@user/pickchea) (Ping timeout: 256 seconds) |
2022-03-15 09:11:41 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-03-15 09:14:20 +0100 | fendor | (~fendor@178.165.206.62.wireless.dyn.drei.com) |
2022-03-15 09:16:01 +0100 | tomku | (~tomku@user/tomku) |
2022-03-15 09:16:10 +0100 | alp | (~alp@user/alp) |
2022-03-15 09:16:27 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) |
2022-03-15 09:18:26 +0100 | acidjnk | (~acidjnk@pd9e0b763.dip0.t-ipconnect.de) |
2022-03-15 09:21:12 +0100 | jinsun__ | (~jinsun@user/jinsun) () |
2022-03-15 09:25:01 +0100 | dextaa_ | (~dextaa@user/dextaa) (Remote host closed the connection) |
2022-03-15 09:26:53 +0100 | gdown | (~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net) (Remote host closed the connection) |
2022-03-15 09:27:17 +0100 | MarcoBuster | (~MarcoBust@37.161.174.126) (Remote host closed the connection) |
2022-03-15 09:27:19 +0100 | zmt01 | (~zmt00@user/zmt00) |
2022-03-15 09:27:33 +0100 | MarcoBuster | (~MarcoBust@37.161.174.126) |
2022-03-15 09:28:12 +0100 | zmt00 | (~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 +0100 | lavaman | (~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 +0100 | chele | (~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 +0100 | vglfr | (~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 +0100 | vglfr | (~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 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4) |
2022-03-15 09:45:34 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-15 09:46:13 +0100 | sander | (~sander@user/sander) (Ping timeout: 240 seconds) |
2022-03-15 09:49:21 +0100 | cheater | (~Username@user/cheater) |
2022-03-15 09:49:50 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2022-03-15 09:51:10 +0100 | kuribas | (~user@ptr-25vy0i9smgbd9x89015.18120a2.ip6.access.telenet.be) |
2022-03-15 09:52:57 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2022-03-15 09:52:57 +0100 | MarcoBuster | (~MarcoBust@37.161.174.126) (Read error: Connection reset by peer) |
2022-03-15 09:54:12 +0100 | deadmarshal_ | (~deadmarsh@95.38.115.168) |
2022-03-15 09:54:21 +0100 | Guest16 | (~Guest16@89-64-88-131.dynamic.chello.pl) |
2022-03-15 09:54:28 +0100 | Guest16 | HaskLove |
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 +0100 | InstX1 | (~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 +0100 | HaskLove | (~Guest16@89-64-88-131.dynamic.chello.pl) (Client Quit) |
2022-03-15 09:58:37 +0100 | InstX1_ | (~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 +0100 | vglfr | (~vglfr@46.96.161.0) (Ping timeout: 252 seconds) |
2022-03-15 10:00:16 +0100 | lumberjack123 | (~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 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-03-15 10:11:33 +0100 | alMalsamo | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-03-15 10:12:53 +0100 | alMalsamo | lumberjack13 |
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 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-03-15 10:14:01 +0100 | Guest16 | (~Guest16@89-64-88-131.dynamic.chello.pl) |
2022-03-15 10:14:09 +0100 | Guest16 | (~Guest16@89-64-88-131.dynamic.chello.pl) (Client Quit) |
2022-03-15 10:14:37 +0100 | rond_ | (~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 +0100 | mbuf | (~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 +0100 | nishant | (~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 +0100 | nishant | (~Nishant@49.37.242.151) (Remote host closed the connection) |
2022-03-15 10:19:58 +0100 | nishant | (~Nishant@49.37.242.151) |
2022-03-15 10:20:22 +0100 | lavaman | (~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 +0100 | ccntrq | (~Thunderbi@2a01:c22:89c9:4f00:38e1:ceae:1fb6:a685) |
2022-03-15 10:29:39 +0100 | Major_Biscuit | (~MajorBisc@c-001-021-050.client.tudelft.eduvpn.nl) |
2022-03-15 10:31:00 +0100 | MajorBiscuit | (~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 +0100 | lavaman | (~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 +0100 | jonathanx | (~jonathan@c-5eea3758-74736162.cust.telenor.se) |
2022-03-15 10:43:42 +0100 | szkl | (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 +0100 | lumberjack13 | (~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 +0100 | jonathanx | (~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 +0100 | nunggu | (~q@user/nunggu) |
2022-03-15 10:59:25 +0100 | <dminuoso> | My autotools-fu is practically non-existent. |
2022-03-15 10:59:38 +0100 | DNH | (~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 +0100 | cosimone | (~user@93-44-187-176.ip98.fastwebnet.it) |
2022-03-15 11:00:13 +0100 | lumberjack13 | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-03-15 11:01:01 +0100 | nexus_ | (~nexus@84-236-55-113.pool.digikabel.hu) (Ping timeout: 240 seconds) |
2022-03-15 11:02:51 +0100 | kenran | (~kenran@ip-037-024-119-190.um08.pools.vodafone-ip.de) |
2022-03-15 11:02:54 +0100 | nexus_ | (~nexus@178-164-207-227.pool.digikabel.hu) |
2022-03-15 11:03:46 +0100 | jinsun | (~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 +0100 | yauhsien | (~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 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-03-15 11:09:21 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:6945:2980:3f53:dff8) |
2022-03-15 11:09:49 +0100 | geekosaur | is 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 +0100 | jonathanx | (~jonathan@c-5eea3758-74736162.cust.telenor.se) |
2022-03-15 11:11:23 +0100 | chele_ | (~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 +0100 | jonathanx | (~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 +0100 | zincy_ | (~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 +0100 | chele | (~chele@user/chele) (Ping timeout: 252 seconds) |
2022-03-15 11:15:49 +0100 | jonathanx | (~jonathan@c-5eea3758-74736162.cust.telenor.se) |
2022-03-15 11:16:13 +0100 | Guest14 | (~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 +0100 | rond_ | (~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 +0100 | coot | (~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 +0100 | InstX1_ | (~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 +0100 | jonathanx | (~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 +0100 | jonathanx | (~jonathan@c-5eea3758-74736162.cust.telenor.se) |
2022-03-15 11:22:20 +0100 | Evan_ | (~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 +0100 | InstX1 | (~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 +0100 | Evan_ | (~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 +0100 | Guest14 | (~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 +0100 | eggplant_ | (~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 +0100 | aplainze1akind | (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
2022-03-15 11:29:55 +0100 | aplainzetakind | (~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 +0100 | lavaman | (~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 +0100 | shriekingnoise | (~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 +0100 | InstX1 | (~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 +0100 | coot | (~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 +0100 | InstX1_ | (~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 +0100 | bitmapper | (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 +0100 | raehik | (~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 +0100 | zmt01 | (~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 +0100 | lumberjack13 | (~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 +0100 | mreh | (~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 +0100 | jonathanx_ | (~jonathan@dyn-2-sc.cdg.chalmers.se) |
2022-03-15 11:54:06 +0100 | ccntrq | (~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 +0100 | gensyst | (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 +0100 | ccntrq | (~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 +0100 | jonathanx | (~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 +0100 | ProfSimm | (~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 +0100 | ProfSimm | (~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 +0100 | geekosaur | certainly 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 +0100 | geekosaur | would 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 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-03-15 12:20:52 +0100 | o-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 +0100 | o-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 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2022-03-15 12:25:47 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2022-03-15 12:25:47 +0100 | finn_elija | FinnElija |
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 +0100 | DNH | (~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 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:a016:c70b:1497:f71c) |
2022-03-15 12:29:45 +0100 | lavaman | (~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 +0100 | gensyst | (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 +0100 | eggplantade | (~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 +0100 | DNH | (~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 +0100 | Hemmo | (~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 +0100 | rond_ | (~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 +0100 | dschrempf | (~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 +0100 | jgeerds | (~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 +0100 | razetime | (~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 +0100 | dyeplexer | (~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 +0100 | lavaman | (~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 +0100 | geranim0 | (~geranim0@modemcable242.171-178-173.mc.videotron.ca) |
2022-03-15 13:06:48 +0100 | boborygmy_ | (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) |
2022-03-15 13:06:50 +0100 | boborygmy | (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) |
2022-03-15 13:07:12 +0100 | kenran | (~kenran@ip-037-024-119-190.um08.pools.vodafone-ip.de) (Quit: WeeChat info:version) |
2022-03-15 13:12:14 +0100 | boborygmy_ | (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) (Quit: Leaving) |
2022-03-15 13:12:14 +0100 | boborygmy | (~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 +0100 | dschrempf | (~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 +0100 | acidjnk | (~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 +0100 | olle | (~olle@c-8a89e455.034-536-6d6c6d4.bbcust.telenor.se) |
2022-03-15 13:23:36 +0100 | rtsn | (~nstr@h-98-128-229-174.NA.cust.bahnhof.se) (Remote host closed the connection) |
2022-03-15 13:24:33 +0100 | lavaman | (~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 +0100 | zaquest | (~notzaques@5.130.79.72) (Remote host closed the connection) |
2022-03-15 13:25:46 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3) |
2022-03-15 13:27:03 +0100 | zaquest | (~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 +0100 | nexus_ | (~nexus@178-164-207-227.pool.digikabel.hu) (Ping timeout: 252 seconds) |
2022-03-15 13:35:08 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-03-15 13:36:33 +0100 | nexus_ | (~nexus@84-236-60-110.pool.digikabel.hu) |
2022-03-15 13:36:40 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) |
2022-03-15 13:38:08 +0100 | Everything | (~Everythin@37.115.210.35) (Quit: leaving) |
2022-03-15 13:40:22 +0100 | mreh | (~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 +0100 | tcard_ | (~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 +0100 | tcard | (~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 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2022-03-15 13:45:03 +0100 | zmt00 | (~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 +0100 | lavaman | (~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 +0100 | forell | (~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 +0100 | forell_ | (~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Ping timeout: 256 seconds) |
2022-03-15 13:53:26 +0100 | rond_ | (~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 +0100 | chele_ | (~chele@user/chele) (Ping timeout: 256 seconds) |
2022-03-15 13:59:51 +0100 | chele | (~chele@user/chele) |
2022-03-15 14:00:20 +0100 | <[exa]> | merijn: does luxembourg count? |
2022-03-15 14:00:27 +0100 | justsomeguy | (~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 +0100 | AlexNoo_ | 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 +0100 | vglfr | (~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 +0100 | k8yun | (~k8yun@user/k8yun) |
2022-03-15 14:26:45 +0100 | son0p | (~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 +0100 | CiaoSen | (~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 +0100 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
2022-03-15 14:36:02 +0100 | Midjak | (~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 +0100 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-03-15 14:39:15 +0100 | <kuribas> | or that "haskell is slow". |
2022-03-15 14:40:32 +0100 | ccntrq | (~Thunderbi@2a01:c22:89c9:4f00:38e1:ceae:1fb6:a685) (Quit: ccntrq) |
2022-03-15 14:40:37 +0100 | ccntrq1 | (~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 +0100 | ccntrq1 | ccntrq |
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 +0100 | kaph | (~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 +0100 | vglfr | (~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 +0100 | kaph_ | (~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 +0100 | kaph | (~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 +0100 | Sgeo | (~Sgeo@user/sgeo) |
2022-03-15 14:51:57 +0100 | k8yun | (~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 +0100 | ccntrq1 | (~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 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-03-15 14:56:25 +0100 | ccntrq | (~Thunderbi@dynamic-077-006-029-074.77.6.pool.telefonica.de) (Ping timeout: 256 seconds) |
2022-03-15 14:56:25 +0100 | ccntrq1 | ccntrq |
2022-03-15 14:59:49 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-03-15 15:01:21 +0100 | shapr | (~user@pool-173-73-44-186.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
2022-03-15 15:02:35 +0100 | shapr | (~user@pool-173-73-44-186.washdc.fios.verizon.net) |
2022-03-15 15:06:14 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-03-15 15:08:06 +0100 | chele | (~chele@user/chele) (Ping timeout: 252 seconds) |
2022-03-15 15:09:31 +0100 | troydm | (~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 +0100 | son0p | (~ff@181.136.122.143) |
2022-03-15 15:22:10 +0100 | mc47 | (~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 +0100 | chele | (~chele@user/chele) |
2022-03-15 15:23:51 +0100 | ski | . 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 +0100 | k8yun | (~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 +0100 | chele | (~chele@user/chele) (Client Quit) |
2022-03-15 15:27:19 +0100 | timCF | (~timCF@200-149-20-81.sta.estpak.ee) |
2022-03-15 15:29:17 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds) |
2022-03-15 15:29:17 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2022-03-15 15:37:53 +0100 | bahamas | (~lucian@86.120.77.115) |
2022-03-15 15:38:31 +0100 | ccntrq | (~Thunderbi@2a01:c22:89c9:4f00:8f7e:228b:ee69:75c3) (Remote host closed the connection) |
2022-03-15 15:38:48 +0100 | ccntrq | (~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 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-03-15 15:42:48 +0100 | timCF | (~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving) |
2022-03-15 15:43:55 +0100 | Guest30 | (~Guest30@cpc151445-finc21-2-0-cust175.4-2.cable.virginm.net) |
2022-03-15 15:45:30 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds) |
2022-03-15 15:45:30 +0100 | Guest30 | (~Guest30@cpc151445-finc21-2-0-cust175.4-2.cable.virginm.net) () |
2022-03-15 15:45:41 +0100 | troydm | (~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 +0100 | olle | (~olle@c-8a89e455.034-536-6d6c6d4.bbcust.telenor.se) () |
2022-03-15 15:52:21 +0100 | olle | (~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 +0100 | alp | (~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 +0100 | pavonia | (~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 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-03-15 16:00:46 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 250 seconds) |
2022-03-15 16:01:01 +0100 | kenran | (~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 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-03-15 16:03:24 +0100 | thyriaen | (~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 +0100 | thyriaen | (~thyriaen@ip5f5af2d7.dynamic.kabel-deutschland.de) (Client Quit) |
2022-03-15 16:05:46 +0100 | Giovanni | (~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 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
2022-03-15 16:10:57 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-03-15 16:11:17 +0100 | yauhsien | (~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 +0100 | Unicorn_Princess | (~Unicorn_P@46-54-248-191.static.kate-wing.si) |
2022-03-15 16:12:48 +0100 | cosimone | (~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 +0100 | cosimone | (~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 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-03-15 16:23:37 +0100 | CiaoSen | (~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 +0100 | eggplantade | (~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 +0100 | jao | (~jao@45.134.142.199) |
2022-03-15 16:37:10 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85fc:5466:5112:8a92) (Ping timeout: 260 seconds) |
2022-03-15 16:39:02 +0100 | nexus_ | (~nexus@84-236-60-110.pool.digikabel.hu) (Ping timeout: 260 seconds) |
2022-03-15 16:39:31 +0100 | jgeerds | (~jgeerds@55d4548e.access.ecotel.net) (Ping timeout: 250 seconds) |
2022-03-15 16:41:16 +0100 | nishant | (~Nishant@49.37.242.151) (Quit: Leaving) |
2022-03-15 16:46:04 +0100 | nexus_ | (~nexus@80-95-86-2.pool.digikabel.hu) |
2022-03-15 16:49:13 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) (Read error: Connection reset by peer) |
2022-03-15 16:50:37 +0100 | jakalx | (~jakalx@base.jakalx.net) () |
2022-03-15 16:50:45 +0100 | lbseale | (~ep1ctetus@user/ep1ctetus) |
2022-03-15 16:50:51 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-03-15 16:57:03 +0100 | Giovanni | (~Giovanni@176.219.119.243) (Read error: Connection reset by peer) |
2022-03-15 16:58:23 +0100 | xdej_ | xdej |
2022-03-15 16:58:52 +0100 | Giovanni | (~Giovanni@176.219.119.243) |
2022-03-15 17:00:06 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2022-03-15 17:00:08 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-15 17:04:25 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) |
2022-03-15 17:04:48 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-03-15 17:06:21 +0100 | bahamas | (~lucian@86.120.77.115) (Ping timeout: 268 seconds) |
2022-03-15 17:11:09 +0100 | Giovanni | (~Giovanni@176.219.119.243) (Read error: Connection reset by peer) |
2022-03-15 17:13:35 +0100 | Giovanni | (~Giovanni@176.219.119.243) |
2022-03-15 17:14:58 +0100 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds) |
2022-03-15 17:15:05 +0100 | jonathanx__ | (~jonathan@c-5eea3758-74736162.cust.telenor.se) |
2022-03-15 17:15:50 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:cecd:603d:2da7:a044) (Quit: WeeChat 2.8) |
2022-03-15 17:16:24 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85fc:5466:5112:8a92) |
2022-03-15 17:17:54 +0100 | jonathanx_ | (~jonathan@dyn-2-sc.cdg.chalmers.se) (Ping timeout: 252 seconds) |
2022-03-15 17:18:19 +0100 | Hemmo | (~Hemmo@85-76-79-140-nat.elisa-mobile.fi) (Remote host closed the connection) |
2022-03-15 17:27:08 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-03-15 17:28:08 +0100 | benin | (~benin@183.82.26.94) (Quit: The Lounge - https://thelounge.chat) |
2022-03-15 17:30:15 +0100 | Midjak | (~Midjak@82.66.147.146) |
2022-03-15 17:32:37 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-03-15 17:34:52 +0100 | joo-__ | (~joo-_@80-62-117-227-mobile.dk.customer.tdc.net) |
2022-03-15 17:34:52 +0100 | joo-__ | (~joo-_@80-62-117-227-mobile.dk.customer.tdc.net) (Changing host) |
2022-03-15 17:34:52 +0100 | joo-__ | (~joo-_@fsf/member/joo--) |
2022-03-15 17:37:01 +0100 | InstX1 | (~Liam@2601:6c4:4080:3f80:501d:140:cf41:aa43) (Ping timeout: 240 seconds) |
2022-03-15 17:41:39 +0100 | raym | (~raym@user/raym) (Ping timeout: 256 seconds) |
2022-03-15 17:42:42 +0100 | raym | (~raym@user/raym) |
2022-03-15 17:43:13 +0100 | nexus_ | (~nexus@80-95-86-2.pool.digikabel.hu) (Ping timeout: 250 seconds) |
2022-03-15 17:45:08 +0100 | bahamas | (~lucian@84.232.140.158) |
2022-03-15 17:45:09 +0100 | nexus_ | (~nexus@80-95-86-2.pool.digikabel.hu) |
2022-03-15 17:46:17 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2022-03-15 17:52:57 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) |
2022-03-15 17:59:57 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 240 seconds) |
2022-03-15 18:00:52 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85fc:5466:5112:8a92) (Remote host closed the connection) |
2022-03-15 18:00:53 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) |
2022-03-15 18:01:51 +0100 | razetime | (~quassel@117.193.4.244) (Ping timeout: 250 seconds) |
2022-03-15 18:02:07 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85fc:5466:5112:8a92) |
2022-03-15 18:02:24 +0100 | mon_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 +0100 | ccntrq | (~Thunderbi@2a01:c22:89c9:4f00:8f7e:228b:ee69:75c3) (Remote host closed the connection) |
2022-03-15 18:12:30 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
2022-03-15 18:19:17 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-15 18:20:06 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) |
2022-03-15 18:20:11 +0100 | merijn | (~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 +0100 | Giovanni | (~Giovanni@176.219.119.243) (Remote host closed the connection) |
2022-03-15 18:21:38 +0100 | Giovanni | (~Giovanni@176.67.166.45) |
2022-03-15 18:24:48 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.3) |
2022-03-15 18:25:01 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2022-03-15 18:26:35 +0100 | Major_Biscuit | (~MajorBisc@c-001-021-050.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.4) |
2022-03-15 18:26:52 +0100 | alp | (~alp@user/alp) |
2022-03-15 18:28:17 +0100 | Giovanni | (~Giovanni@176.67.166.45) (Ping timeout: 250 seconds) |
2022-03-15 18:28:58 +0100 | Giovanni | (~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 +0100 | kaph_ | (~kaph@net-109-116-124-149.cust.vodafonedsl.it) (Ping timeout: 268 seconds) |
2022-03-15 18:31:08 +0100 | jonathanx__ | (~jonathan@c-5eea3758-74736162.cust.telenor.se) (Ping timeout: 250 seconds) |
2022-03-15 18:38:45 +0100 | raym | (~raym@user/raym) (Ping timeout: 252 seconds) |
2022-03-15 18:41:29 +0100 | raym | (~raym@user/raym) |
2022-03-15 18:43:10 +0100 | kenran | (~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 +0100 | econo | (uid147250@user/econo) |
2022-03-15 18:48:11 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:6945:2980:3f53:dff8) |
2022-03-15 18:52:11 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:6945:2980:3f53:dff8) (Remote host closed the connection) |
2022-03-15 18:52:21 +0100 | slaydr | (~seriley@75.164.66.230) |
2022-03-15 18:53:00 +0100 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 240 seconds) |
2022-03-15 18:54:00 +0100 | zincy_ | (~zincy@host86-160-236-152.range86-160.btcentralplus.com) |
2022-03-15 18:57:38 +0100 | aeka | (~aeka@user/hiruji) (Ping timeout: 260 seconds) |
2022-03-15 18:59:31 +0100 | slaydr | (~seriley@75.164.66.230) (Ping timeout: 256 seconds) |
2022-03-15 19:02:22 +0100 | kadenwolff[m] | (~kadenwolf@2001:470:69fc:105::1:d97f) |
2022-03-15 19:04:22 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Read error: Connection reset by peer) |
2022-03-15 19:04:41 +0100 | ec | (~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 +0100 | vglfr | (~vglfr@88.155.82.72) |
2022-03-15 19:08:50 +0100 | olle | (~olle@c-8a89e455.034-536-6d6c6d4.bbcust.telenor.se) (Ping timeout: 250 seconds) |
2022-03-15 19:12:13 +0100 | merijn | (~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 +0100 | mbuf | (~Shakthi@122.174.246.23) (Quit: Leaving) |
2022-03-15 19:25:59 +0100 | jjhoo_ | jjhoo |
2022-03-15 19:27:51 +0100 | aeka | (~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 +0100 | jgeerds | (~jgeerds@55d4548e.access.ecotel.net) |
2022-03-15 19:32:40 +0100 | aeka | (~aeka@user/hiruji) (Ping timeout: 250 seconds) |
2022-03-15 19:33:07 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Quit: ec) |
2022-03-15 19:33:25 +0100 | aeka | (~aeka@user/hiruji) |
2022-03-15 19:33:40 +0100 | zmt00 | (~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 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) (Ping timeout: 250 seconds) |
2022-03-15 19:41:47 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2022-03-15 19:43:17 +0100 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 240 seconds) |
2022-03-15 19:44:09 +0100 | Akiva | (~Akiva@user/Akiva) |
2022-03-15 19:46:41 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
2022-03-15 19:47:30 +0100 | nexus_ | (~nexus@80-95-86-2.pool.digikabel.hu) (Ping timeout: 252 seconds) |
2022-03-15 19:47:59 +0100 | justsomeguy | (~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 +0100 | nexus_ | (~nexus@178-164-207-111.pool.digikabel.hu) |
2022-03-15 19:50:03 +0100 | jackhill_ | jackhill |
2022-03-15 19:50:33 +0100 | hyiltiz | (~quassel@31.220.5.250) |
2022-03-15 19:54:46 +0100 | hyiltiz | (~quassel@31.220.5.250) (Ping timeout: 250 seconds) |
2022-03-15 19:59:02 +0100 | cosimone | (~user@93-44-187-176.ip98.fastwebnet.it) |
2022-03-15 20:00:56 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4) |
2022-03-15 20:03:30 +0100 | slaydr | (~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 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2022-03-15 20:08:52 +0100 | waleee | (~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 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-03-15 20:10:14 +0100 | ec | (~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 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-03-15 20:11:25 +0100 | vglfr | (~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 +0100 | Akiva | (~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 +0100 | jlamothe | (~jlamothe@198.251.61.229) (Ping timeout: 268 seconds) |
2022-03-15 20:18:20 +0100 | Guest|20 | (~Guest|20@tmo-100-189.customers.d1-online.com) |
2022-03-15 20:18:21 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Read error: Connection reset by peer) |
2022-03-15 20:18:34 +0100 | jlamothe | (~jlamothe@198.251.61.229) |
2022-03-15 20:19:11 +0100 | yauhsien | (~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 +0100 | hyiltiz | (~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 +0100 | mastarija | (~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 +0100 | ProfSimm | (~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 +0100 | vglfr | (~vglfr@88.155.82.72) |
2022-03-15 20:28:03 +0100 | Guest|20 | (~Guest|20@tmo-100-189.customers.d1-online.com) (Quit: Connection closed) |
2022-03-15 20:28:36 +0100 | yauhsien | (~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 +0100 | yauhsien | (~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 +0100 | kuribas | (~user@ptr-25vy0i9smgbd9x89015.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
2022-03-15 20:40:07 +0100 | namkeleser | (~namkelese@101.175.155.55) |
2022-03-15 20:40:22 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2022-03-15 20:42:14 +0100 | MironZ | (~MironZ@nat-infra.ehlab.uk) (Quit: The Lounge - https://thelounge.chat) |
2022-03-15 20:42:26 +0100 | zmt00 | (~zmt00@user/zmt00) (Ping timeout: 250 seconds) |
2022-03-15 20:43:09 +0100 | MironZ | (~MironZ@nat-infra.ehlab.uk) |
2022-03-15 20:44:32 +0100 | MironZ | (~MironZ@nat-infra.ehlab.uk) (Client Quit) |
2022-03-15 20:44:56 +0100 | dextaa_ | (~dextaa@user/dextaa) |
2022-03-15 20:46:28 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-15 20:47:16 +0100 | MironZ | (~MironZ@nat-infra.ehlab.uk) |
2022-03-15 20:47:37 +0100 | vglfr | (~vglfr@88.155.82.72) (Ping timeout: 240 seconds) |
2022-03-15 20:47:38 +0100 | xff0x | (~xff0x@dslb-094-222-029-254.094.222.pools.vodafone-ip.de) (Ping timeout: 250 seconds) |
2022-03-15 20:48:02 +0100 | slaydr | (~slaydr@75.164.66.230) (Quit: leaving) |
2022-03-15 20:48:11 +0100 | zmt01 | (~zmt00@user/zmt00) |
2022-03-15 20:51:10 +0100 | Guest27 | (~Guest27@2601:281:d47f:1590::6b90) |
2022-03-15 20:53:00 +0100 | lavaman | (~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 +0100 | bahamas | (~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 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-03-15 20:59:31 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-03-15 20:59:31 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-03-15 21:02:01 +0100 | Lord_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 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2022-03-15 21:03:08 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) |
2022-03-15 21:04:07 +0100 | bahamas | (~lucian@84.232.140.158) |
2022-03-15 21:05:18 +0100 | Henson | (~kvirc@107-179-133-201.cpe.teksavvy.com) |
2022-03-15 21:06:41 +0100 | eggplantade | (~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 +0100 | bahamas | (~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 +0100 | xff0x | (~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 +0100 | gentauro | (~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 +0100 | gentauro | (~gentauro@user/gentauro) |
2022-03-15 21:14:31 +0100 | thyriaen | (~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 +0100 | nucranium | (~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 +0100 | cosimone | (~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 +0100 | ec | (~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 +0100 | wroathe | (~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 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-15 21:28:06 +0100 | coot | (~coot@213.134.190.95) (Quit: coot) |
2022-03-15 21:28:35 +0100 | jespada | (~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 +0100 | hololeap | (~hololeap@user/hololeap) (Remote host closed the connection) |
2022-03-15 21:31:34 +0100 | olle | (~olle@c-8a89e455.034-536-6d6c6d4.bbcust.telenor.se) |
2022-03-15 21:31:36 +0100 | hololeap | (~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 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) |
2022-03-15 21:36:36 +0100 | nucranium | (~nucranium@2a02:8010:6173:0:1518:15e2:d1d7:f9f8) (Ping timeout: 250 seconds) |
2022-03-15 21:37:46 +0100 | nucranium | (~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 +0100 | yauhsien | (~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 +0100 | nucranium | (~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 +0100 | azimut_ | (~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 +0100 | merijn | (~merijn@c-001-001-001.client.esciencecenter.eduvpn.nl) |
2022-03-15 21:43:55 +0100 | acidjnk | (~acidjnk@p200300d0c7049f99c07e6a42421e5c0c.dip0.t-ipconnect.de) |
2022-03-15 21:47:27 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) |
2022-03-15 21:47:36 +0100 | zincy_ | (~zincy@host86-160-236-152.range86-160.btcentralplus.com) (Remote host closed the connection) |
2022-03-15 21:48:46 +0100 | yauhsien | (~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 +0100 | alx741 | (~alx741@host-181-198-243-130.netlife.ec) (Read error: Connection reset by peer) |
2022-03-15 21:51:01 +0100 | alx741 | (~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 +0100 | olle | (~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 +0100 | mastarija | (~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 +0100 | yauhsien | (~yauhsien@61-231-44-111.dynamic-ip.hinet.net) |
2022-03-15 21:55:39 +0100 | eggplantade | (~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 +0100 | yauhsien | (~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 +0100 | nexus_ | (~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 +0100 | nexus | (~nexus@176-241-62-204.pool.digikabel.hu) |
2022-03-15 22:05:42 +0100 | namkeleser | (~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 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-03-15 22:07:27 +0100 | vorpuni | (~pvorp@2001:861:3881:c690:c81a:b383:83c1:b919) |
2022-03-15 22:08:21 +0100 | Everything | (~Everythin@37.115.210.35) |
2022-03-15 22:08:49 +0100 | ph88 | (~ph88@84-30-78-253.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
2022-03-15 22:09:01 +0100 | alp | (~alp@user/alp) (Ping timeout: 240 seconds) |
2022-03-15 22:09:35 +0100 | Pickchea | (~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 +0100 | Giovanni | (~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 +0100 | Giovanni | (~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 +0100 | pavonia | (~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 +0100 | yauhsien | (~yauhsien@61-231-56-96.dynamic-ip.hinet.net) |
2022-03-15 22:16:57 +0100 | merijn | (~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 +0100 | alp | (~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 +0100 | hpc | (~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 +0100 | thyriaen | (~thyriaen@ip5f5af2d7.dynamic.kabel-deutschland.de) (Quit: Leaving) |
2022-03-15 22:23:16 +0100 | szkl | (uid110435@id-110435.uxbridge.irccloud.com) |
2022-03-15 22:24:37 +0100 | hpc | (~juzz@ip98-169-35-13.dc.dc.cox.net) |
2022-03-15 22:24:38 +0100 | cosimone | (~user@93-44-187-176.ip98.fastwebnet.it) |
2022-03-15 22:27:26 +0100 | vorpuni | (~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 +0100 | worldhelloworld1 | (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 +0100 | x_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 +0100 | yauhsien | (~yauhsien@61-231-56-96.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-03-15 22:41:05 +0100 | x_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 +0100 | yauhsien | (~yauhsien@61-231-56-96.dynamic-ip.hinet.net) |
2022-03-15 22:42:56 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 240 seconds) |
2022-03-15 22:45:03 +0100 | wyrd | (~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 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-03-15 22:50:51 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-03-15 22:50:53 +0100 | lavaman | (~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 +0100 | ski | still 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 +0100 | michalz | (~michalz@185.246.204.43) (Remote host closed the connection) |
2022-03-15 22:55:54 +0100 | TonyStone | (~TonyStone@2603-7080-8607-c36a-a0f7-4a6c-9396-dfff.res6.spectrum.com) (Ping timeout: 250 seconds) |
2022-03-15 22:58:27 +0100 | michalz | (~michalz@185.246.204.41) |
2022-03-15 22:58:43 +0100 | michalz | (~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 +0100 | ski | still 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 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-03-15 23:01:13 +0100 | michalz | (~michalz@185.246.204.43) |
2022-03-15 23:02:31 +0100 | ski | . 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 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85fc:5466:5112:8a92) |
2022-03-15 23:04:12 +0100 | ProfSimm | (~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 +0100 | ProfSimm | (~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 +0100 | michalz | (~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 +0100 | TonyStone | (~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 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-03-15 23:09:59 +0100 | machinedgod | (~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 +0100 | jespada | (~jespada@cpc121022-nmal24-2-0-cust171.19-2.cable.virginm.net) |
2022-03-15 23:13:53 +0100 | Everything | (~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 +0100 | mc47 | (~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 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2022-03-15 23:18:40 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2022-03-15 23:18:40 +0100 | finn_elija | FinnElija |
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 +0100 | Guest|20 | (~Guest|20@dynamic-046-114-001-168.46.114.pool.telefonica.de) |
2022-03-15 23:21:26 +0100 | Guest|20 | (~Guest|20@dynamic-046-114-001-168.46.114.pool.telefonica.de) (Client Quit) |
2022-03-15 23:21:31 +0100 | ski | . 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 +0100 | Guest27 | (~Guest27@2601:281:d47f:1590::6b90) (Quit: Client closed) |
2022-03-15 23:28:50 +0100 | k8yun | (~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 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2022-03-15 23:35:40 +0100 | ski | . 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 +0100 | romesrf | (~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 +0100 | boborygmy | (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) |
2022-03-15 23:38:24 +0100 | boborygmy_ | (~bob@pool-173-54-217-168.nwrknj.fios.verizon.net) |
2022-03-15 23:38:41 +0100 | boborygmy_ | (~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 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection) |
2022-03-15 23:42:09 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2022-03-15 23:42:16 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection) |
2022-03-15 23:42:23 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2022-03-15 23:42:32 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) (Remote host closed the connection) |
2022-03-15 23:42:39 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2022-03-15 23:42:52 +0100 | ski | notes 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 +0100 | ix | (~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 +0100 | ec | (~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 +0100 | ix | (~ix@2a02:8010:674f:0:d65d:64ff:fe52:5efe) |
2022-03-15 23:54:47 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:2015:9361:6306:3ac4) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-03-15 23:55:01 +0100 | machinedgod | (~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) |