2022/06/14

2022-06-14 00:05:26 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 00:09:52 +0200rodental(~rodental@38.146.5.222) (Remote host closed the connection)
2022-06-14 00:11:33 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-06-14 00:14:55 +0200acidjnk(~acidjnk@p200300d0c7068b59955fef414e8d7a9b.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2022-06-14 00:15:42 +0200Guest27(~Guest27@2601:281:d47f:1590::59a2) (Ping timeout: 252 seconds)
2022-06-14 00:16:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 00:17:29 +0200king_gs(~Thunderbi@187.201.173.69)
2022-06-14 00:17:39 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 00:22:38 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-06-14 00:25:05 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 00:27:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 00:30:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 00:33:04 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 00:39:23 +0200king_gs(~Thunderbi@187.201.173.69) (Ping timeout: 256 seconds)
2022-06-14 00:39:24 +0200king_gs1(~Thunderbi@187.201.173.69)
2022-06-14 00:39:50 +0200jgeerds(~jgeerds@55d45f48.access.ecotel.net) (Ping timeout: 240 seconds)
2022-06-14 00:41:43 +0200king_gs1king_gs
2022-06-14 00:46:55 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 00:48:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 00:51:26 +0200Cupcakus(~Cupcakus@c-73-205-77-141.hsd1.fl.comcast.net) (Ping timeout: 246 seconds)
2022-06-14 00:54:57 +0200rodental(~rodental@38.146.5.222)
2022-06-14 00:57:13 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2022-06-14 00:58:11 +0200slack1256(~slack1256@186.11.82.227)
2022-06-14 01:00:08 +0200slac50227(~slack1256@191.125.227.223) (Ping timeout: 248 seconds)
2022-06-14 01:01:30 +0200Tuplanolla(~Tuplanoll@91-159-69-173.elisa-laajakaista.fi) (Quit: Leaving.)
2022-06-14 01:02:39 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-14 01:03:04 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2022-06-14 01:03:33 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2022-06-14 01:04:25 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2022-06-14 01:06:43 +0200ozkutuk(~ozkutuk@176.240.173.153)
2022-06-14 01:08:09 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
2022-06-14 01:08:36 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-06-14 01:08:37 +0200pleo(~pleo@user/pleo) (Quit: quit)
2022-06-14 01:17:33 +0200yaroot(~yaroot@11.70.30.125.dy.iij4u.or.jp) (Remote host closed the connection)
2022-06-14 01:19:20 +0200yaroot(~yaroot@2409:12:ac0:2300:680e:dbff:fe1e:4953)
2022-06-14 01:19:30 +0200ozkutuk(~ozkutuk@176.240.173.153) (Ping timeout: 250 seconds)
2022-06-14 01:20:49 +0200zeenk(~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806) (Quit: Konversation terminated!)
2022-06-14 01:21:40 +0200vicfred(~vicfred@user/vicfred) (Read error: Connection reset by peer)
2022-06-14 01:21:50 +0200vicfred_(~vicfred@user/vicfred)
2022-06-14 01:23:38 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-06-14 01:25:18 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-06-14 01:25:31 +0200hpc(~juzz@ip98-169-32-242.dc.dc.cox.net) (Ping timeout: 244 seconds)
2022-06-14 01:27:01 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
2022-06-14 01:30:36 +0200nate4(~nate@98.45.169.16)
2022-06-14 01:31:05 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…)
2022-06-14 01:31:08 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-06-14 01:32:31 +0200hpc(~juzz@ip98-169-32-242.dc.dc.cox.net)
2022-06-14 01:32:38 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-06-14 01:35:03 +0200tremon(~tremon@83-84-18-241.cable.dynamic.v4.ziggo.nl) (Quit: getting boxed in)
2022-06-14 01:35:41 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-06-14 01:35:42 +0200king_gs(~Thunderbi@187.201.173.69) (Read error: Connection reset by peer)
2022-06-14 01:36:04 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-06-14 01:36:07 +0200xstill_(xstill@fimu/xstill) (Read error: Connection reset by peer)
2022-06-14 01:36:07 +0200xsarnik(xsarnik@lounge.fi.muni.cz) (Read error: Connection reset by peer)
2022-06-14 01:36:17 +0200xstill_7(xstill@fimu/xstill)
2022-06-14 01:36:54 +0200xsarnik(xsarnik@lounge.fi.muni.cz)
2022-06-14 01:37:42 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-06-14 01:37:50 +0200nurupo(~nurupo.ga@user/nurupo) (Ping timeout: 240 seconds)
2022-06-14 01:37:55 +0200glider(~glider@user/glider) (Ping timeout: 244 seconds)
2022-06-14 01:38:17 +0200ozkutuk(~ozkutuk@176.240.173.153)
2022-06-14 01:38:22 +0200king_gs(~Thunderbi@187.201.173.69)
2022-06-14 01:38:28 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-06-14 01:38:34 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 01:38:39 +0200relrod(~relrod@redhat/ansible.staff.relrod) (Ping timeout: 240 seconds)
2022-06-14 01:39:10 +0200RMSBach(~guygastin@137.184.131.156) (Ping timeout: 240 seconds)
2022-06-14 01:39:12 +0200Cupcakus(~Cupcakus@c-73-205-77-141.hsd1.fl.comcast.net)
2022-06-14 01:39:15 +0200DigitalKiwi(~kiwi@137.184.156.191) (Ping timeout: 258 seconds)
2022-06-14 01:39:16 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-06-14 01:39:26 +0200anderson(~ande@user/anderson) (Ping timeout: 250 seconds)
2022-06-14 01:39:37 +0200dragestil(~znc@user/dragestil) (Ping timeout: 248 seconds)
2022-06-14 01:39:37 +0200ario(~ario@159.65.220.102) (Ping timeout: 248 seconds)
2022-06-14 01:39:37 +0200drewolson(~drewolson@user/drewolson) (Ping timeout: 248 seconds)
2022-06-14 01:39:45 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-06-14 01:39:50 +0200thaumavorio(~thaumavor@thaumavor.io) (Ping timeout: 260 seconds)
2022-06-14 01:40:01 +0200blades(~blades@204.48.29.163) (Ping timeout: 256 seconds)
2022-06-14 01:40:01 +0200davean(~davean@davean.sciesnet.net) (Ping timeout: 256 seconds)
2022-06-14 01:40:06 +0200eldritch(~eldritch@user/eldritch) (Ping timeout: 272 seconds)
2022-06-14 01:40:24 +0200stvc(~stvc@192.241.166.39) (Ping timeout: 276 seconds)
2022-06-14 01:40:32 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 01:42:19 +0200mht-(~mht@2a03:b0c0:3:e0::1e2:c001) (Ping timeout: 240 seconds)
2022-06-14 01:42:28 +0200eternalforms(~obsrwr@46.101.168.131) (Ping timeout: 248 seconds)
2022-06-14 01:42:49 +0200davl(~davl@207.154.228.18) (Ping timeout: 248 seconds)
2022-06-14 01:43:00 +0200zzz(~z@user/zero) (Ping timeout: 248 seconds)
2022-06-14 01:43:05 +0200sweater(~sweater@206.81.18.26) (Ping timeout: 258 seconds)
2022-06-14 01:43:14 +0200cocreature(~moritz@2a03:b0c0:3:d0::c8:f001) (Ping timeout: 252 seconds)
2022-06-14 01:43:16 +0200ringo__(~ringo@157.230.117.128) (Ping timeout: 272 seconds)
2022-06-14 01:43:25 +0200apache2(apache2@anubis.0x90.dk) (Ping timeout: 256 seconds)
2022-06-14 01:44:04 +0200winny(~weechat@user/winny) (Ping timeout: 240 seconds)
2022-06-14 01:45:09 +0200nate4(~nate@98.45.169.16) (Ping timeout: 244 seconds)
2022-06-14 01:46:17 +0200oxide(~lambda@user/oxide)
2022-06-14 01:46:30 +0200winny(~weechat@user/winny)
2022-06-14 01:46:57 +0200nurupo(~nurupo.ga@user/nurupo)
2022-06-14 01:47:03 +0200RMSBach(~guygastin@137.184.131.156)
2022-06-14 01:47:07 +0200dragestil(~znc@user/dragestil)
2022-06-14 01:47:07 +0200thaumavorio(~thaumavor@thaumavor.io)
2022-06-14 01:47:50 +0200DigitalKiwi(~kiwi@137.184.156.191)
2022-06-14 01:48:08 +0200xff0x(~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 246 seconds)
2022-06-14 01:48:23 +0200 <mon_aaraj> jackdk: Thank you very much! I've realized a lot of that code seemed familiar to me and it turns out most of it can be seen in his blog, though I didn't know about that talk.
2022-06-14 01:49:38 +0200drewolson(~drewolson@user/drewolson)
2022-06-14 01:50:01 +0200mvk(~mvk@2607:fea8:5ce3:8500::4588)
2022-06-14 01:50:08 +0200Haskelytic(~Haskelyti@118.179.211.17)
2022-06-14 01:50:32 +0200 <Axman6> jackdk always gives good advice
2022-06-14 01:50:53 +0200 <jackdk> Axman6: and yet you still haven't started using Nix for literally everything
2022-06-14 01:50:56 +0200 <jackdk> :P
2022-06-14 01:51:19 +0200ario(~ario@159.65.220.102)
2022-06-14 01:51:23 +0200 <Axman6> you still haven't managed to pull of a "hey, look at this cool thing I did in Nix" without it failing :P
2022-06-14 01:51:33 +0200 <mon_aaraj> haha, guess it's very common for us haskellers to be using nix as a solution for package management
2022-06-14 01:51:51 +0200blades(~blades@204.48.29.163)
2022-06-14 01:52:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 01:52:24 +0200 <mon_aaraj> unfortunately after updating NixOS it seems my touchpad stopped working so I had to go back to my imperative distro
2022-06-14 01:52:58 +0200relrod(~relrod@redhat/ansible.staff.relrod)
2022-06-14 01:53:08 +0200davean(~davean@davean.sciesnet.net)
2022-06-14 01:53:15 +0200eldritch(~eldritch@user/eldritch)
2022-06-14 01:53:26 +0200stvc(~stvc@192.241.166.39)
2022-06-14 01:53:52 +0200 <Haskelytic> Why is everyone so excited about Nix
2022-06-14 01:54:44 +0200 <hpc> it tries to solve packaging in ways that look a lot like how haskell solves programming
2022-06-14 01:54:59 +0200 <Axman6> it has a lot of promise in providing a lot of extremely useful properties, like only ever compiling the same thing once, knowing exactly what is installed on a system and being able to reliably replicate it, and because of that, checking the integrity of a system is fairly trivial too
2022-06-14 01:55:05 +0200 <hpc> and there's not a whole lot else like it, so it's interesting to learn
2022-06-14 01:55:49 +0200 <Haskelytic> so basically it tries to extend functional programming to system administration?
2022-06-14 01:55:53 +0200apache2(apache2@anubis.0x90.dk)
2022-06-14 01:55:57 +0200 <Axman6> having a single way to configure all the different services etc. on your system is pretty handy
2022-06-14 01:56:07 +0200 <mon_aaraj> Well, not really functional programming
2022-06-14 01:56:12 +0200 <Axman6> in a way, but I'm not sure that's the main take away
2022-06-14 01:56:51 +0200 <Haskelytic> that seems like an awfully ambitious project IMO
2022-06-14 01:56:55 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 01:56:57 +0200 <Haskelytic> maybe in 5 years I'll try it :)
2022-06-14 01:57:41 +0200cocreature(~moritz@46.101.189.229)
2022-06-14 01:58:32 +0200 <geekosaur> in 5 years something else will be the go-to :)
2022-06-14 01:59:13 +0200eternalforms(~obsrwr@46.101.168.131)
2022-06-14 01:59:16 +0200 <Haskelytic> ye olde package management never gets old :)
2022-06-14 01:59:52 +0200 <hpc> sometimes it seems it never gets old because it's born old
2022-06-14 02:00:14 +0200 <Haskelytic>  not sure I get what you mean :/
2022-06-14 02:00:23 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds)
2022-06-14 02:00:26 +0200zero(~z@user/zero)
2022-06-14 02:00:28 +0200glider(~glider@user/glider)
2022-06-14 02:00:39 +0200xff0x(~xff0x@b133147.ppp.asahi-net.or.jp)
2022-06-14 02:00:58 +0200nate4(~nate@98.45.169.16)
2022-06-14 02:00:59 +0200 <hpc> aside from nix, all the new stuff feels like writing init scripts with slightly different pre-defined macros
2022-06-14 02:01:30 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-14 02:01:42 +0200 <hpc> but that's a topic for -offtopic
2022-06-14 02:01:43 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-06-14 02:02:16 +0200 <Haskelytic> Ahhh....I can definitely agree to that
2022-06-14 02:02:16 +0200 <Axman6> package managers have always felt like hacks to me, Nix is the only one that seemms to try to actually do things right
2022-06-14 02:02:34 +0200anderson(~ande@user/anderson)
2022-06-14 02:02:43 +0200 <Haskelytic> Been around enough to see many variants of config managment, package management etc..
2022-06-14 02:02:47 +0200mht-wtf(~mht@2a03:b0c0:3:e0::1e2:c001)
2022-06-14 02:03:00 +0200 <Haskelytic> Honestly feels tiring to have to learn what are essentially 50 tools for the same problem
2022-06-14 02:03:01 +0200 <hpc> nix still feels like a hack to me, but in the same way that lisp and fortran both feel like different hacks
2022-06-14 02:03:22 +0200califax(~califax@user/califx)
2022-06-14 02:03:35 +0200 <hpc> probably because of the lack of types, and how hard it is to find the specification for a derivation
2022-06-14 02:03:49 +0200 <hpc> like "a derivation is a hash value with fields x, y, and z"
2022-06-14 02:05:00 +0200 <geekosaur> problem with that being all package management is trying to force a bunch of things into one framework when every single one of them is a one-off, even if they start out following mostly common rules (e.g. autoconf)
2022-06-14 02:05:59 +0200 <mon_aaraj> err, did people see my last 2 messages about "declarativity and preproducibility"? It seems the logs don't see it
2022-06-14 02:06:20 +0200nate4(~nate@98.45.169.16) (Ping timeout: 252 seconds)
2022-06-14 02:06:31 +0200 <geekosaur> [14 00:00:23] * mon_aaraj has quit (Ping timeout: 246 seconds)
2022-06-14 02:06:37 +0200KaipeiKaiepi
2022-06-14 02:06:45 +0200 <mon_aaraj> ah, yeah. I suppose they didn't send
2022-06-14 02:06:53 +0200slac46955(~slack1256@191.126.227.199)
2022-06-14 02:07:35 +0200 <geekosaur> declarativity and reproducibility are nice when they work
2022-06-14 02:07:41 +0200 <Axman6> One thing I've liked about using OpenVSd over the years is them occasionally having the bright idea to replace some wonky service with a new more secure one, with a consistent config file format
2022-06-14 02:07:45 +0200ringo__(~ringo@157.230.117.128)
2022-06-14 02:07:57 +0200 <mon_aaraj> here's what i was going to send: nix tries to extend declarativity & reproducibility into package/system management. as far as i can see, there isn't like any exact inherent FP in Nix, other than the language being slightly inspired syntax-wise
2022-06-14 02:07:59 +0200 <mon_aaraj> by FP languages, but does right about everything else badly
2022-06-14 02:08:01 +0200 <Axman6> OpenBSD*
2022-06-14 02:08:54 +0200slack1256(~slack1256@186.11.82.227) (Ping timeout: 250 seconds)
2022-06-14 02:10:50 +0200dsrt^(~dsrt@50.223.50.178)
2022-06-14 02:12:23 +0200davl(~davl@207.154.228.18)
2022-06-14 02:14:02 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds)
2022-06-14 02:14:03 +0200slac46955(~slack1256@191.126.227.199) (Read error: Connection reset by peer)
2022-06-14 02:15:32 +0200slack1256(~slack1256@186.11.82.227)
2022-06-14 02:15:53 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-14 02:16:50 +0200sweater(~sweater@206.81.18.26)
2022-06-14 02:18:21 +0200dsrt^(~dsrt@50.223.50.178) (Remote host closed the connection)
2022-06-14 02:18:42 +0200dsrt^(~dsrt@50.223.50.178)
2022-06-14 02:19:55 +0200causal(~user@50.35.83.177)
2022-06-14 02:22:31 +0200hpc(~juzz@ip98-169-32-242.dc.dc.cox.net) (Ping timeout: 256 seconds)
2022-06-14 02:24:29 +0200hpc(~juzz@ip98-169-32-242.dc.dc.cox.net)
2022-06-14 02:27:19 +0200 <DigitalKiwi> 18:52 mon_aaraj: unfortunately after updating NixOS it seems my touchpad stopped working so I had to go back to my imperative distro
2022-06-14 02:27:30 +0200 <DigitalKiwi> dude you literally just rollback
2022-06-14 02:28:02 +0200 <DigitalKiwi> nioxs-rebuild switch --rollback
2022-06-14 02:29:09 +0200king_gs(~Thunderbi@187.201.173.69) (Ping timeout: 276 seconds)
2022-06-14 02:30:16 +0200 <DigitalKiwi> it even works between nixos versions
2022-06-14 02:30:28 +0200 <DigitalKiwi> take that debian which can't even upgrade lol
2022-06-14 02:30:37 +0200 <DigitalKiwi> or arch that can't even downgrade
2022-06-14 02:31:11 +0200 <Clint> DigitalKiwi: pfft
2022-06-14 02:31:13 +0200 <Clint> can't upgrade
2022-06-14 02:32:12 +0200 <DigitalKiwi> skip a version see how it goes ;D
2022-06-14 02:32:44 +0200 <Clint> well, that's not supported
2022-06-14 02:33:09 +0200 <DigitalKiwi> exactly
2022-06-14 02:33:29 +0200 <DigitalKiwi> on nixos you can skip versions up and down ;p
2022-06-14 02:33:39 +0200 <DigitalKiwi> it's great
2022-06-14 02:34:18 +0200 <DigitalKiwi> i had a server with an uptime of like 2 years on the latest nixos beta lol
2022-06-14 02:34:41 +0200 <DigitalKiwi> 00:33:01 up 78 days 4:39, 1 user, load average: 0.86, 0.97, 0.99
2022-06-14 02:35:07 +0200 <DigitalKiwi> i didn't need to reboot it but i did :(
2022-06-14 02:35:26 +0200 <DigitalKiwi> digitalocean had new hardware lol
2022-06-14 02:35:36 +0200 <DigitalKiwi> so now it's new and improved!
2022-06-14 02:36:10 +0200 <DigitalKiwi> 22.11pre383837.033bd4fa9a8 (Raccoon)
2022-06-14 02:44:17 +0200xff0x(~xff0x@b133147.ppp.asahi-net.or.jp) (Ping timeout: 252 seconds)
2022-06-14 02:47:17 +0200tangy(~tangy@user/tangy) ()
2022-06-14 02:50:02 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Read error: Connection reset by peer)
2022-06-14 02:50:04 +0200sammelweis_(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-06-14 02:51:04 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 248 seconds)
2022-06-14 02:52:49 +0200 <jackdk> mon_aaraj: Nix-the-language is a pure functional programming language with exactly one side-effecting primitive: `derivation`, which roughly means "run a command and capture its outputs under `/nix/store`"
2022-06-14 02:53:06 +0200 <mon_aaraj> ah, okay
2022-06-14 02:53:11 +0200 <mon_aaraj> thank you for the correction
2022-06-14 02:53:42 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-06-14 02:53:43 +0200 <jackdk> No worries mate
2022-06-14 02:55:25 +0200king_gs(~Thunderbi@187.201.173.69)
2022-06-14 02:56:45 +0200dsrt^(~dsrt@50.223.50.178) (Remote host closed the connection)
2022-06-14 02:57:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 02:57:07 +0200dsrt^(~dsrt@50.223.50.178)
2022-06-14 02:57:45 +0200Cupcakus(~Cupcakus@c-73-205-77-141.hsd1.fl.comcast.net) (Ping timeout: 276 seconds)
2022-06-14 02:58:02 +0200relrod(~relrod@redhat/ansible.staff.relrod) (Ping timeout: 252 seconds)
2022-06-14 02:58:59 +0200thaumavorio(~thaumavor@thaumavor.io) (Ping timeout: 258 seconds)
2022-06-14 02:59:03 +0200dragestil(~znc@user/dragestil) (Ping timeout: 276 seconds)
2022-06-14 02:59:22 +0200nurupo(~nurupo.ga@user/nurupo) (Ping timeout: 258 seconds)
2022-06-14 02:59:41 +0200anderson(~ande@user/anderson) (Ping timeout: 252 seconds)
2022-06-14 02:59:41 +0200glider(~glider@user/glider) (Ping timeout: 252 seconds)
2022-06-14 02:59:41 +0200stvc(~stvc@192.241.166.39) (Ping timeout: 252 seconds)
2022-06-14 02:59:41 +0200eldritch(~eldritch@user/eldritch) (Ping timeout: 252 seconds)
2022-06-14 02:59:41 +0200davean(~davean@davean.sciesnet.net) (Ping timeout: 252 seconds)
2022-06-14 02:59:42 +0200RMSBach(~guygastin@137.184.131.156) (Ping timeout: 276 seconds)
2022-06-14 02:59:45 +0200DigitalKiwi(~kiwi@137.184.156.191) (Ping timeout: 258 seconds)
2022-06-14 03:00:14 +0200blades(~blades@204.48.29.163) (Ping timeout: 252 seconds)
2022-06-14 03:00:14 +0200ario(~ario@159.65.220.102) (Ping timeout: 252 seconds)
2022-06-14 03:00:14 +0200drewolson(~drewolson@user/drewolson) (Ping timeout: 252 seconds)
2022-06-14 03:04:30 +0200 <jackdk> (There is a _lot_ built on top of that primitive)
2022-06-14 03:05:06 +0200relrod(~relrod@redhat/ansible.staff.relrod)
2022-06-14 03:06:27 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net)
2022-06-14 03:07:57 +0200thaumavorio(~thaumavor@thaumavor.io)
2022-06-14 03:08:00 +0200jmcarthur(~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit)
2022-06-14 03:08:01 +0200nurupo(~nurupo.ga@user/nurupo)
2022-06-14 03:08:09 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 03:08:32 +0200DigitalKiwi(~kiwi@137.184.156.191)
2022-06-14 03:08:52 +0200RMSBach(~guygastin@137.184.131.156)
2022-06-14 03:08:53 +0200dragestil(~znc@user/dragestil)
2022-06-14 03:09:31 +0200drewolson(~drewolson@user/drewolson)
2022-06-14 03:10:40 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-06-14 03:11:27 +0200 <mon_aaraj> yep, and aren't derivations just "sets" (as they called it in the language) too?
2022-06-14 03:11:34 +0200 <DigitalKiwi> https://mostlyabsurd.com/files/2022-06-08-212240_1454x1373_scrot.png
2022-06-14 03:11:49 +0200ario_(~ario@159.65.220.102)
2022-06-14 03:11:54 +0200 <DigitalKiwi> anyone want one or several? :D
2022-06-14 03:12:18 +0200 <DigitalKiwi> the logo is on the other side too
2022-06-14 03:12:25 +0200blades(~blades@204.48.29.163)
2022-06-14 03:12:27 +0200 <DigitalKiwi> https://mostlyabsurd.com/files/2022-06-08-212549_2313x1745_scrot.png
2022-06-14 03:13:13 +0200davean(~davean@davean.sciesnet.net)
2022-06-14 03:13:31 +0200stvc(~stvc@192.241.166.39)
2022-06-14 03:14:37 +0200eldritch(~eldritch@user/eldritch)
2022-06-14 03:15:52 +0200machinedgod(~machinedg@66.244.246.252) (Ping timeout: 260 seconds)
2022-06-14 03:16:08 +0200glider(~glider@user/glider)
2022-06-14 03:16:47 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-06-14 03:18:13 +0200anderson(~ande@user/anderson)
2022-06-14 03:18:33 +0200pointblank(~uniquepoi@190.141.232.23)
2022-06-14 03:19:48 +0200p3n(~p3n@217.198.124.246) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-14 03:20:40 +0200p3n(~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1)
2022-06-14 03:20:45 +0200 <exarkun> mon_aaraj: nix-the-language has a set type which is more often called an "attrset" because it's more like Map String a than a set
2022-06-14 03:20:59 +0200 <exarkun> mon_aaraj: and derivations are values of that type that follow a certain set of rules
2022-06-14 03:21:18 +0200 <exarkun> mon_aaraj: and can the argument to `derivation` to perform the side-effecting
2022-06-14 03:21:28 +0200 <exarkun> s/can the/can be the/
2022-06-14 03:23:41 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2022-06-14 03:23:48 +0200Haskelytic(~Haskelyti@118.179.211.17) (Ping timeout: 252 seconds)
2022-06-14 03:26:10 +0200arahael(~arahael@124.171.44.79) (Ping timeout: 240 seconds)
2022-06-14 03:26:42 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-06-14 03:27:13 +0200nicbk(~nicbk@user/nicbk)
2022-06-14 03:34:22 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-06-14 03:34:57 +0200julian(~julian@20.83.116.49) (Killed (NickServ (GHOST command used by tos9__!~tos9@python/site-packages/Julian)))
2022-06-14 03:36:38 +0200dextaa(~DV@user/dextaa)
2022-06-14 03:37:39 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-14 03:38:13 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2022-06-14 03:40:02 +0200[_](~itchyjunk@user/itchyjunk/x-7353470)
2022-06-14 03:40:27 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Killed (silver.libera.chat (Nickname regained by services)))
2022-06-14 03:40:27 +0200[_][itchyjunk]
2022-06-14 03:42:48 +0200king_gs(~Thunderbi@187.201.173.69) (Ping timeout: 248 seconds)
2022-06-14 03:44:44 +0200vicfred_(~vicfred@user/vicfred) (Quit: Leaving)
2022-06-14 03:53:48 +0200king_gs(~Thunderbi@187.201.173.69)
2022-06-14 03:55:37 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
2022-06-14 03:56:55 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2022-06-14 03:58:32 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 255 seconds)
2022-06-14 04:01:50 +0200ubert(~Thunderbi@p200300ecdf14f9b367fdd9edecf9b9f3.dip0.t-ipconnect.de) (Remote host closed the connection)
2022-06-14 04:02:09 +0200ubert(~Thunderbi@p200300ecdf14f9b3dc314568d36b7130.dip0.t-ipconnect.de)
2022-06-14 04:02:38 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-06-14 04:02:38 +0200gentauro(~gentauro@user/gentauro)
2022-06-14 04:03:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 04:07:44 +0200nate4(~nate@98.45.169.16)
2022-06-14 04:08:26 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-06-14 04:10:41 +0200dextaa(~DV@user/dextaa)
2022-06-14 04:10:52 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 04:12:10 +0200td_(~td@muedsl-82-207-238-100.citykom.de) (Ping timeout: 240 seconds)
2022-06-14 04:12:14 +0200gurkenglas(~gurkengla@dslb-084-057-085-111.084.057.pools.vodafone-ip.de)
2022-06-14 04:12:41 +0200julian(~julian@20.83.116.49)
2022-06-14 04:14:06 +0200td_(~td@muedsl-82-207-238-155.citykom.de)
2022-06-14 04:20:50 +0200nate4(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-06-14 04:29:00 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
2022-06-14 04:35:05 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-06-14 04:37:19 +0200dextaa(~DV@user/dextaa)
2022-06-14 04:39:39 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-06-14 04:39:39 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-06-14 04:39:39 +0200finn_elijaFinnElija
2022-06-14 04:41:30 +0200arahael(~arahael@203.220.147.161)
2022-06-14 04:42:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 04:44:45 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 04:45:04 +0200yrlnry(~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) (Remote host closed the connection)
2022-06-14 04:54:02 +0200yrlnry(~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net)
2022-06-14 04:54:34 +0200slaydr(~slaydr@193.37.33.104)
2022-06-14 04:56:50 +0200mht-wtf(~mht@2a03:b0c0:3:e0::1e2:c001) (Ping timeout: 252 seconds)
2022-06-14 04:56:50 +0200cocreature(~moritz@46.101.189.229) (Ping timeout: 252 seconds)
2022-06-14 04:56:51 +0200fjmorazan(~quassel@user/fjmorazan) (Quit: fjmorazan)
2022-06-14 04:57:00 +0200davl(~davl@207.154.228.18) (Ping timeout: 260 seconds)
2022-06-14 04:57:00 +0200ringo__(~ringo@157.230.117.128) (Ping timeout: 260 seconds)
2022-06-14 04:57:23 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 04:57:23 +0200zero(~z@user/zero) (Ping timeout: 252 seconds)
2022-06-14 04:57:23 +0200eternalforms(~obsrwr@46.101.168.131) (Ping timeout: 252 seconds)
2022-06-14 04:57:23 +0200apache2(apache2@anubis.0x90.dk) (Ping timeout: 252 seconds)
2022-06-14 04:57:28 +0200relrod(~relrod@redhat/ansible.staff.relrod) (Ping timeout: 248 seconds)
2022-06-14 04:57:29 +0200fjmorazan(~quassel@user/fjmorazan)
2022-06-14 04:57:35 +0200sweater(~sweater@206.81.18.26) (Ping timeout: 260 seconds)
2022-06-14 05:01:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 05:03:17 +0200relrod(~relrod@redhat/ansible.staff.relrod)
2022-06-14 05:07:25 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-06-14 05:08:00 +0200apache2(apache2@anubis.0x90.dk)
2022-06-14 05:08:18 +0200zero(~z@user/zero)
2022-06-14 05:08:56 +0200eternalforms(~obsrwr@46.101.168.131)
2022-06-14 05:11:29 +0200cocreature(~moritz@46.101.189.229)
2022-06-14 05:12:11 +0200king_gs(~Thunderbi@187.201.173.69) (Ping timeout: 246 seconds)
2022-06-14 05:12:28 +0200mht-wtf(~mht@2a03:b0c0:3:e0::1e2:c001)
2022-06-14 05:14:00 +0200dsrt^(~dsrt@50.223.50.178) (Ping timeout: 248 seconds)
2022-06-14 05:18:54 +0200dsrt^(~dsrt@50.223.50.178)
2022-06-14 05:20:43 +0200ringo__(~ringo@157.230.117.128)
2022-06-14 05:23:36 +0200jao(~jao@40.red-79-159-140.dynamicip.rima-tde.net) (Ping timeout: 248 seconds)
2022-06-14 05:24:09 +0200davl(~davl@207.154.228.18)
2022-06-14 05:24:32 +0200coot(~coot@213.134.190.95)
2022-06-14 05:26:55 +0200frost(~frost@user/frost)
2022-06-14 05:31:41 +0200sweater(~sweater@206.81.18.26)
2022-06-14 05:39:15 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-06-14 05:57:38 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-06-14 06:01:24 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
2022-06-14 06:01:24 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-06-14 06:01:24 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-06-14 06:03:19 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-06-14 06:06:48 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 06:07:26 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2022-06-14 06:14:11 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-06-14 06:14:32 +0200Vajb(~Vajb@85-76-45-159-nat.elisa-mobile.fi)
2022-06-14 06:17:17 +0200dsrt^(~dsrt@50.223.50.178) (Ping timeout: 260 seconds)
2022-06-14 06:22:58 +0200king_gs(~Thunderbi@187.201.173.69)
2022-06-14 06:24:00 +0200slaydr(~slaydr@193.37.33.104) (Remote host closed the connection)
2022-06-14 06:33:56 +0200dsrt^(~dsrt@50.223.50.178)
2022-06-14 06:38:28 +0200 <JensPetersen[m]> Seems it can take Hackage a few minutes to update its archive after an upload now
2022-06-14 06:40:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 06:40:36 +0200slack1256(~slack1256@186.11.82.227) (Ping timeout: 248 seconds)
2022-06-14 06:44:21 +0200king_gs(~Thunderbi@187.201.173.69) (Read error: Connection reset by peer)
2022-06-14 06:44:56 +0200king_gs(~Thunderbi@187.201.173.69)
2022-06-14 06:45:44 +0200mvk(~mvk@2607:fea8:5ce3:8500::4588) (Ping timeout: 252 seconds)
2022-06-14 06:52:41 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-06-14 06:54:57 +0200dextaa(~DV@user/dextaa)
2022-06-14 06:55:30 +0200ubert1(~Thunderbi@p200300ecdf14f933f4d611279d79d098.dip0.t-ipconnect.de)
2022-06-14 06:56:11 +0200ubert(~Thunderbi@p200300ecdf14f9b3dc314568d36b7130.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2022-06-14 06:56:11 +0200ubert1ubert
2022-06-14 07:01:21 +0200jmd_(~jmdaemon@user/jmdaemon) (Ping timeout: 244 seconds)
2022-06-14 07:03:03 +0200kimjetwav(~user@2607:fea8:2340:da00:1c36:e65:50a7:b564)
2022-06-14 07:03:58 +0200king_gs(~Thunderbi@187.201.173.69) (Read error: Connection reset by peer)
2022-06-14 07:04:01 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 07:06:22 +0200king_gs(~Thunderbi@187.201.173.69)
2022-06-14 07:08:55 +0200frost(~frost@user/frost) (Quit: Client closed)
2022-06-14 07:12:59 +0200bilegeek(~bilegeek@2600:1008:b01b:3801:91d9:f7b7:b62d:360f)
2022-06-14 07:17:39 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-06-14 07:23:27 +0200frost(~frost@user/frost)
2022-06-14 07:29:48 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-14 07:31:33 +0200zmt00(~zmt00@user/zmt00) (Read error: Connection reset by peer)
2022-06-14 07:32:37 +0200zmt00(~zmt00@user/zmt00)
2022-06-14 07:34:53 +0200dostoevsky0(~5c42c5384@user/dostoevsky)
2022-06-14 07:35:46 +0200dostoevsky(~5c42c5384@user/dostoevsky) (Read error: Connection reset by peer)
2022-06-14 07:35:46 +0200dostoevsky0dostoevsky
2022-06-14 07:36:42 +0200vglfr(~vglfr@88.155.71.159)
2022-06-14 07:37:47 +0200michalz(~michalz@185.246.204.107)
2022-06-14 07:38:15 +0200 <dsal> Yeah, it used to be pretty slow.
2022-06-14 07:38:54 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-06-14 07:41:38 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-14 07:44:05 +0200king_gs(~Thunderbi@187.201.173.69) (Read error: Connection reset by peer)
2022-06-14 07:44:17 +0200king_gs(~Thunderbi@187.201.173.69)
2022-06-14 07:59:35 +0200cosmos1(cosmos@user/cosmos1)
2022-06-14 08:04:38 +0200king_gs(~Thunderbi@187.201.173.69) (Read error: Connection reset by peer)
2022-06-14 08:04:51 +0200king_gs(~Thunderbi@187.201.173.69)
2022-06-14 08:06:17 +0200coot(~coot@213.134.190.95)
2022-06-14 08:08:58 +0200ccntrq(~Thunderbi@172.209.94.92.rev.sfr.net)
2022-06-14 08:14:23 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-14 08:15:30 +0200acidjnk(~acidjnk@p200300d0c7068b1004113c5627619f0a.dip0.t-ipconnect.de)
2022-06-14 08:17:15 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-06-14 08:18:03 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2022-06-14 08:20:28 +0200nate4(~nate@98.45.169.16)
2022-06-14 08:23:37 +0200shriekingnoise(~shrieking@201.212.175.181) (Quit: Quit)
2022-06-14 08:23:38 +0200biberu(~biberu@user/biberu) (Ping timeout: 246 seconds)
2022-06-14 08:23:42 +0200biberu\(~biberu@user/biberu)
2022-06-14 08:24:34 +0200nicbk(~nicbk@user/nicbk) (Ping timeout: 240 seconds)
2022-06-14 08:25:15 +0200biberu\biberu
2022-06-14 08:29:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 08:33:47 +0200dsrt^(~dsrt@50.223.50.178) (Ping timeout: 246 seconds)
2022-06-14 08:41:50 +0200nate4(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2022-06-14 08:44:46 +0200nicbk(~nicbk@user/nicbk)
2022-06-14 08:46:29 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 08:47:27 +0200cosmos1(cosmos@user/cosmos1) (Ping timeout: 276 seconds)
2022-06-14 08:51:41 +0200cosmos1(cosmos@user/cosmos1)
2022-06-14 09:02:39 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:eb43:ae28:5b68:592d)
2022-06-14 09:04:14 +0200mattil(~mattil@helsinki.portalify.com)
2022-06-14 09:06:20 +0200biberu(~biberu@user/biberu) (Ping timeout: 246 seconds)
2022-06-14 09:07:08 +0200mima(~mmh@dhcp-138-246-3-112.dynamic.eduroam.mwn.de)
2022-06-14 09:11:32 +0200frost(~frost@user/frost) (Quit: Ping timeout (120 seconds))
2022-06-14 09:14:34 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net)
2022-06-14 09:14:53 +0200frost(~frost@user/frost)
2022-06-14 09:16:00 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net) (Client Quit)
2022-06-14 09:22:05 +0200lagash(lagash@lagash.shelltalk.net) (Ping timeout: 255 seconds)
2022-06-14 09:27:18 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-06-14 09:27:58 +0200MajorBiscuit(~MajorBisc@c-001-022-040.client.tudelft.eduvpn.nl)
2022-06-14 09:28:11 +0200chele(~chele@user/chele)
2022-06-14 09:32:21 +0200 <tomsmeding> 02:34 <DigitalKiwi> i had a server with an uptime of like 2 years on the latest nixos beta lol
2022-06-14 09:32:26 +0200 <tomsmeding> rip your linux kernel vulnerabilities :p
2022-06-14 09:37:50 +0200_________(~nobody@user/noodly) (Ping timeout: 240 seconds)
2022-06-14 09:41:18 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-06-14 09:41:26 +0200cosmos1(cosmos@user/cosmos1) (Ping timeout: 255 seconds)
2022-06-14 09:42:11 +0200califax(~califax@user/califx)
2022-06-14 09:42:24 +0200cosmos1(cosmos@user/cosmos1)
2022-06-14 09:42:40 +0200jargon(~jargon@184.101.221.60)
2022-06-14 09:47:16 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 248 seconds)
2022-06-14 09:49:34 +0200turlando(~turlando@user/turlando) (Read error: Connection reset by peer)
2022-06-14 09:51:46 +0200 <maerwald[m]> tomsmeding: reproducibility in general is a conflicting goal to security
2022-06-14 09:51:48 +0200machinedgod(~machinedg@66.244.246.252)
2022-06-14 09:53:07 +0200alp(~alp@user/alp)
2022-06-14 09:53:50 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-06-14 09:54:30 +0200zeenk(~zeenk@2a02:2f04:a013:9000:e45d:7fb3:ec71:e806)
2022-06-14 09:56:38 +0200lawt(~lawt@98.56.182.59) (Ping timeout: 272 seconds)
2022-06-14 09:57:46 +0200zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-06-14 09:59:06 +0200zaquest(~notzaques@5.130.79.72)
2022-06-14 10:00:39 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-14 10:01:23 +0200turlando(~turlando@93.51.40.51)
2022-06-14 10:01:23 +0200turlando(~turlando@93.51.40.51) (Changing host)
2022-06-14 10:01:23 +0200turlando(~turlando@user/turlando)
2022-06-14 10:03:10 +0200mc47(~mc47@xmonad/TheMC47)
2022-06-14 10:03:28 +0200lawt(~lawt@98.56.182.59)
2022-06-14 10:03:34 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 240 seconds)
2022-06-14 10:04:13 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-06-14 10:04:14 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:4c1c:cb6:e1d6:4d06) (Remote host closed the connection)
2022-06-14 10:06:50 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-06-14 10:09:03 +0200dextaa(~DV@user/dextaa)
2022-06-14 10:11:59 +0200 <arahael> maerwald[m]: Is it really?
2022-06-14 10:12:24 +0200kuribas(~user@ptr-17d51emab50486u5ioi.18120a2.ip6.access.telenet.be)
2022-06-14 10:12:30 +0200vglfr(~vglfr@88.155.71.159) (Ping timeout: 240 seconds)
2022-06-14 10:13:03 +0200 <merijn> arahael: Yes
2022-06-14 10:13:29 +0200vglfr(~vglfr@coupling.penchant.volia.net)
2022-06-14 10:13:45 +0200gmg(~user@user/gehmehgeh)
2022-06-14 10:13:46 +0200 <merijn> "I wanna run the *exact* configuration of software as 10 years ago" is directly conflicting with "I don't want any security holes", because old security holes don't magically disappear
2022-06-14 10:13:51 +0200 <arahael> Just make sure I understnad the situation - reproducability is used to ensure that for a given version of a build, you have precisely the expected output build?
2022-06-14 10:13:53 +0200 <arahael> Oh!
2022-06-14 10:14:16 +0200jgeerds(~jgeerds@55d45f48.access.ecotel.net)
2022-06-14 10:14:19 +0200 <arahael> merijn: Well, yes, THAT is indeed going to run contrary to security.
2022-06-14 10:15:05 +0200 <tdammers> OTOH, "I wanna run the *exact* configuration of software that we've just spent $100k to audit" can be a reasonable thing to say
2022-06-14 10:15:43 +0200 <arahael> Especially if you can then go... "But since then we have found X issues, and so we have the resulting X changes to it".
2022-06-14 10:16:09 +0200 <arahael> To me, reproducability is all about being able to account for exactly what's in a product. (As best we can , anyway)
2022-06-14 10:16:47 +0200 <merijn> tdammers: Also, in science it makes sense, because vulnerabilities are mostly irrelevant for code that runs single user on a machine that isn't internet accessible
2022-06-14 10:18:45 +0200 <arahael> Imho, just because something can be reproducable, doesn't mean you have to use that version!
2022-06-14 10:19:36 +0200tomekgrzesiak(~tomekgrze@109.206.198.75)
2022-06-14 10:19:59 +0200turlando(~turlando@user/turlando) ()
2022-06-14 10:27:29 +0200 <maerwald[m]> tdammers: right, that's usually in safety (automotive)
2022-06-14 10:27:43 +0200 <maerwald[m]> The fun part is when safety domain meets security requirements
2022-06-14 10:27:47 +0200 <maerwald[m]> Pretty rough
2022-06-14 10:28:42 +0200 <arahael> I'm still not entirely sure where 'reproduceable' means you can't use updated code.
2022-06-14 10:30:09 +0200 <maerwald[m]> arahael: in nix it does. Because nix doesn't know anything about API or library behavior
2022-06-14 10:30:17 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
2022-06-14 10:30:34 +0200 <maerwald[m]> And I don't know any packaging system that does
2022-06-14 10:30:54 +0200turlando(~turlando@93.51.40.51)
2022-06-14 10:30:54 +0200turlando(~turlando@93.51.40.51) (Changing host)
2022-06-14 10:30:54 +0200turlando(~turlando@user/turlando)
2022-06-14 10:32:24 +0200turlando(~turlando@user/turlando) (Read error: Connection reset by peer)
2022-06-14 10:32:55 +0200 <arahael> maerwald[m]: Ah, yeah, I did forget about that. In nix, at least, you can easily determine which packages are still using the older libraries an upgrade those, but that's a very manual process. I tried to use nix for a while but after last year or so I stopped - went back to debian.
2022-06-14 10:33:04 +0200 <maerwald[m]> Updating stuff and ensuring that your application behaves somewhat the same as before is a manual task
2022-06-14 10:33:26 +0200 <maerwald[m]> There's no system that can predict this
2022-06-14 10:33:44 +0200 <arahael> Yes, but I mean, the burden of doing those checks, etc, is higher in nix.
2022-06-14 10:34:37 +0200 <arahael> In debian, lets say, they can "just" update the library, and essentially rely on the linker to ensure it all still works. Anything that doesn't is a bug in that application, more or less, but would still play into the decision.
2022-06-14 10:34:38 +0200 <maerwald[m]> Yes, because nix maintainers don't deal with compatibility concerns
2022-06-14 10:34:42 +0200 <maerwald[m]> Debian does
2022-06-14 10:34:46 +0200 <arahael> Right.
2022-06-14 10:35:03 +0200 <maerwald[m]> But I wouldn't rely on a packager to not mess up my production application
2022-06-14 10:35:40 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 10:35:45 +0200 <arahael> Indeed. I think for a commercial application, I'd definitely go for reproducible, no question. For a distro, maybe, but it'd need to be a fairly small base system (think: BSD's).
2022-06-14 10:36:07 +0200 <merijn> arahael: I mean, BSDs are different anyway
2022-06-14 10:36:17 +0200 <merijn> arahael: base systems are 90% not other people's packages
2022-06-14 10:36:24 +0200 <arahael> Right.
2022-06-14 10:36:43 +0200 <arahael> I've been playing with Alpine, actually. It seems to remind me of BSD somehow.
2022-06-14 10:36:48 +0200 <merijn> Which is why they are so much more cohesive than linux' mess
2022-06-14 10:37:09 +0200 <arahael> Yep, indeed - and "mess" is a good way to describe it - it's gotten worse lately.
2022-06-14 10:37:37 +0200turlando(~turlando@93.51.40.51)
2022-06-14 10:37:37 +0200turlando(~turlando@93.51.40.51) (Changing host)
2022-06-14 10:37:37 +0200turlando(~turlando@user/turlando)
2022-06-14 10:39:17 +0200 <maerwald[m]> arahael: yes, nix, pvp, git... they all make it worse. Because they remove the need to communicate or be paranoid about the effects of your decisions. Because you can just go roll back, set an upper bound or pin your git submodule
2022-06-14 10:39:41 +0200 <maerwald[m]> Not saying that's the fault of those systems
2022-06-14 10:39:57 +0200 <maerwald[m]> But users take those as an excuse
2022-06-14 10:40:05 +0200 <arahael> maerwald[m]: I dislike submodules, but that's for other reasons. I work in medical software, so I absolutely do need to pin everything down exactly, but...
2022-06-14 10:40:31 +0200 <arahael> maerwald[m]: Absolutely nothing says you have to keep those as they are. YOuc an update them fine! Just need to be able to be able to know exactly what the differences are from version to version.
2022-06-14 10:40:51 +0200 <maerwald[m]> Yes, you should have dinner with your users before you change API ;)
2022-06-14 10:41:17 +0200 <arahael> Haha. :) Monolithic apps here> :)
2022-06-14 10:42:09 +0200nate4(~nate@98.45.169.16)
2022-06-14 10:42:18 +0200 <maerwald[m]> But when you suggest better communication people usually object saying they don't get paid. And that's true as well
2022-06-14 10:42:43 +0200 <arahael> maerwald[m]: Ah, that's a difference, yeah.
2022-06-14 10:45:12 +0200 <arahael> There's no way I'd do a medical app with all the overheads for free. :D
2022-06-14 10:46:37 +0200nate4(~nate@98.45.169.16) (Ping timeout: 244 seconds)
2022-06-14 10:46:54 +0200 <maerwald[m]> E.g. people don't start mailing lists anymore that you can subscribe to and see design discussions up front. Instead now you're expected to follow git commits or watch noisy issue trackers
2022-06-14 10:47:26 +0200 <arahael> Yeah. :(
2022-06-14 10:47:47 +0200 <arahael> That sucks the joy out of it.
2022-06-14 10:48:46 +0200 <maerwald[m]> I've always wanted two issue trackers on my projects. One for devs, one for users. That would somewhat alleviate it
2022-06-14 10:49:15 +0200ubert(~Thunderbi@p200300ecdf14f933f4d611279d79d098.dip0.t-ipconnect.de) (Remote host closed the connection)
2022-06-14 10:49:29 +0200 <maerwald[m]> Then projects depending on it would only watch the dev tracker
2022-06-14 10:50:00 +0200 <arahael> I personally prefer a chat channel.
2022-06-14 10:50:14 +0200 <arahael> But people insist on a response RIGHT NOW.
2022-06-14 10:50:34 +0200 <arahael> Instead I play a little game instead, when people say "Hello", I wait at least an hour before responding :D
2022-06-14 10:53:47 +0200king_gs(~Thunderbi@187.201.173.69) (Read error: Connection reset by peer)
2022-06-14 10:53:47 +0200king_gs1(~Thunderbi@2806:103e:29:bd33:a770:7b09:49c6:13b0)
2022-06-14 10:54:40 +0200 <arahael> It's slightly passive agressive, but I feel we have to look after our own stress too, and responding immediately to all messages gets a bit old.
2022-06-14 10:55:03 +0200 <arahael> (Especially if they're not following etiquite by including the question up front)
2022-06-14 10:56:06 +0200king_gs1king_gs
2022-06-14 11:00:06 +0200Frido[m](~odirfjohr@2001:470:69fc:105::1:f483) (Quit: You have been kicked for being idle)
2022-06-14 11:04:38 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e)
2022-06-14 11:06:42 +0200tomekgrzesiak(~tomekgrze@109.206.198.75) (Quit: Leaving)
2022-06-14 11:09:11 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e) (Ping timeout: 255 seconds)
2022-06-14 11:10:14 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-06-14 11:10:23 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-14 11:10:28 +0200__monty__(~toonn@user/toonn)
2022-06-14 11:13:18 +0200jinsun(~jinsun@user/jinsun)
2022-06-14 11:21:30 +0200jargon(~jargon@184.101.221.60) (Ping timeout: 240 seconds)
2022-06-14 11:22:44 +0200merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 248 seconds)
2022-06-14 11:25:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 11:25:12 +0200jargon(~jargon@184.101.186.108)
2022-06-14 11:25:18 +0200king_gs(~Thunderbi@2806:103e:29:bd33:a770:7b09:49c6:13b0) (Ping timeout: 250 seconds)
2022-06-14 11:25:35 +0200bilegeek(~bilegeek@2600:1008:b01b:3801:91d9:f7b7:b62d:360f) (Quit: Leaving)
2022-06-14 11:25:40 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 11:26:41 +0200yrlnry(~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net) (Remote host closed the connection)
2022-06-14 11:32:45 +0200merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-06-14 11:35:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 11:35:37 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 11:37:32 +0200merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-06-14 11:38:30 +0200king_gs(~Thunderbi@187.201.173.69)
2022-06-14 11:39:13 +0200jargon(~jargon@184.101.186.108) (Remote host closed the connection)
2022-06-14 11:40:06 +0200tomekgrzesiak(~tomekgrze@109.206.198.75)
2022-06-14 11:44:24 +0200jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-06-14 11:44:51 +0200jinsun(~jinsun@user/jinsun)
2022-06-14 11:45:07 +0200cosmos1(cosmos@user/cosmos1) (Ping timeout: 260 seconds)
2022-06-14 11:45:23 +0200dostoevsky5(~5c42c5384@user/dostoevsky)
2022-06-14 11:46:45 +0200dostoevsky(~5c42c5384@user/dostoevsky) (Read error: Connection reset by peer)
2022-06-14 11:46:46 +0200dostoevsky5dostoevsky
2022-06-14 11:50:30 +0200merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-06-14 11:51:32 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 248 seconds)
2022-06-14 11:53:25 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-14 11:57:27 +0200tomekgrzesiak(~tomekgrze@109.206.198.75) (Quit: Leaving)
2022-06-14 11:58:40 +0200frost(~frost@user/frost) (Quit: Client closed)
2022-06-14 11:59:29 +0200 <sm> g'day all
2022-06-14 11:59:30 +0200 <sm> maerwald: github has discussions now, which could help that split
2022-06-14 12:02:37 +0200king_gs(~Thunderbi@187.201.173.69) (Ping timeout: 260 seconds)
2022-06-14 12:04:09 +0200used____(~used____@79.115.62.163)
2022-06-14 12:04:10 +0200CiaoSen(~Jura@p200300c9571e28002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-06-14 12:05:20 +0200 <used____> Hi. I am new here. I am following the online haste-lang.org installation guide. The following phrase does not mean anything to me, and the link is dead: 'Install a GHC 7.10-based Haskell Platform.' -> links to 'https://www.haskell.org/platform/prior.html' -- which is dead.
2022-06-14 12:05:25 +0200 <used____> Please point me right?
2022-06-14 12:13:37 +0200 <lortabac> I don't know whether haste is still alive
2022-06-14 12:14:30 +0200ubert(~Thunderbi@2a02:8109:abc0:6434:910d:db38:5f6d:12dd)
2022-06-14 12:14:40 +0200 <used____> It seems to work when installed. 8 years old files. I have no complaints.
2022-06-14 12:14:59 +0200xff0x(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 246 seconds)
2022-06-14 12:15:14 +0200 <used____> So far. But I know no Haskell and I need to get the equivalent of a "Haskell Platform" installed soon.
2022-06-14 12:15:24 +0200 <int-e> "a somewhat recent (GHC 7.6+) version of GHC" -- we've went through 8.0, 8.2, ..., 8.10, 9.0, and are now at 9.2
2022-06-14 12:15:40 +0200jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-06-14 12:15:59 +0200 <used____> I think it needs to be 7.10.x exactly, else there will be errors and I don't know how to fix them.
2022-06-14 12:16:30 +0200 <arahael> used____: Why haste specifically? It's an odd starting point.
2022-06-14 12:16:50 +0200 <arahael> used____: You might want to try from a more recent point, have you looked at the main website lately: haskell.org? It has a download link up the top.
2022-06-14 12:16:50 +0200 <used____> I am exploring write-once runs on both server and client programming.
2022-06-14 12:16:51 +0200 <Benzi-Junior> http://ix.io/408v < so I'm still struggling with STM and concurrency, I had someone here suggested I use a broadcast TChan which makes sense to me
2022-06-14 12:16:57 +0200 <lortabac> used____: you can download GHC 7.10 here https://www.haskell.org/ghc/download.html
2022-06-14 12:17:28 +0200 <used____> GHC I already have, I need the "platform". Which includes cabal and other things.
2022-06-14 12:17:32 +0200cosmos1(cosmos@user/cosmos1)
2022-06-14 12:17:45 +0200 <int-e> . o O ( Debian oldstable (aka buster) ships 8.4.4. )
2022-06-14 12:17:48 +0200 <lortabac> otherwise maybe you can build haste with stack
2022-06-14 12:17:51 +0200 <used____> What IS a platform exactly?
2022-06-14 12:18:05 +0200 <lortabac> I see a stack.yaml
2022-06-14 12:18:08 +0200 <used____> [please kill buzzwords now]
2022-06-14 12:18:31 +0200 <int-e> it's something you stand on
2022-06-14 12:18:43 +0200 <used____> Ah. Does it fly?
2022-06-14 12:18:54 +0200 <int-e> not anymore
2022-06-14 12:19:02 +0200 <arahael> used____: In those days, there were a few competing approaches to providing haskell. One of those was a product called "the haskell platform", which sort of provided a batteries-included, well, platform. If haste actually using stack, though, then probably just install that and use stack.
2022-06-14 12:19:06 +0200 <used____> cabal is included with hastec?
2022-06-14 12:19:10 +0200 <int-e> and it never flew very high, it was just half a dozen packages IIRC
2022-06-14 12:19:36 +0200 <used____> arahael: what is stack then? Thanks for the explanation.
2022-06-14 12:19:37 +0200 <int-e> on top of what ghc ships anyway
2022-06-14 12:20:25 +0200 <used____> cabal is not in github haste sources
2022-06-14 12:20:32 +0200 <used____> (unsurprizing)
2022-06-14 12:20:45 +0200 <arahael> used____: Also in those days, there were a few challenges involved in using cabal for package management. There were again a few appraoches, but one that some people liked (including me), was stack, which sort of provided an abstraction over on top of cabal and was a bit simpler for me to get into at the time. However, I feel most of these have become unneccessary with the latest version of cabal
2022-06-14 12:20:46 +0200 <arahael> we have.
2022-06-14 12:20:50 +0200 <int-e> I expect if you pick an old enough version of cabal-install then the bootstrap.sh script that comes with that might work.
2022-06-14 12:21:09 +0200 <Benzi-Junior> however there are two ways I see to how it should be implemented, either I dupchan and run atoms with the duplicates or run atoms with the original and dupchan as needed,
2022-06-14 12:21:13 +0200 <int-e> The `cabal` binary is this package, https://hackage.haskell.org/package/cabal-install
2022-06-14 12:21:19 +0200 <arahael> used____: One thing stack offered was the notion of a "curated" package set.
2022-06-14 12:21:19 +0200 <used____> Yes, I hope. How do I find a cabal-install that is older?
2022-06-14 12:21:33 +0200 <int-e> But I don't readily know which version is contemporary with ghc-7.10
2022-06-14 12:21:40 +0200 <used____> Also, will cabal run as user installed (not system?)
2022-06-14 12:21:53 +0200 <int-e> that it will
2022-06-14 12:22:05 +0200 <used____> ok. Will try some things now
2022-06-14 12:22:27 +0200cosmos1(cosmos@user/cosmos1) (Ping timeout: 260 seconds)
2022-06-14 12:23:49 +0200 <used____> Those cabal deps, does it pull them in by itself?
2022-06-14 12:24:45 +0200 <used____> https://hackage.haskell.org/package/cabal-install-1.20.0.0 should be about the right vintage, ~8 years old.
2022-06-14 12:24:51 +0200frost(~frost@user/frost)
2022-06-14 12:25:05 +0200 <used____> Those cabal deps, does it pull them in by itself? < again?
2022-06-14 12:25:18 +0200jinsun(~jinsun@user/jinsun)
2022-06-14 12:25:21 +0200 <Benzi-Junior> the latter seems to deadlock which I guess is because the channel gets written to, then it gets duped in another thread, but the duped channel is empty
2022-06-14 12:27:31 +0200cosmos1(~cosmos@user/cosmos1)
2022-06-14 12:27:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 12:29:44 +0200CiaoSen(~Jura@p200300c9571e28002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2022-06-14 12:30:20 +0200 <int-e> used____: cabal-install is what automates fetching dependencies, building the Setup executables, and running them. Without cabal-install, you don't have that luxury. cabal-install should come with a bootstrap.sh script that tries to do that just for cabal-install, but I wouldn't have high confidence in that working without a hitch. It's worth a try, I suppose.
2022-06-14 12:30:25 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 12:30:37 +0200 <used____> Error during cabal-install bootstrap: haste-compiler-0.6.0.0_ghc-7.10.3-linux/haste-compiler/bin/hastec not found (or could not be run). -> huh? hastec runs and builds apps fine
2022-06-14 12:30:54 +0200 <used____> GHC is hastec and GHC_PKG is haste-pkg right?
2022-06-14 12:31:10 +0200 <int-e> I have not built my own cabal-install in ages... instead I've relied on distro packages to provide a cabal-install that's good enough to build a current one. But I've also not tried to make an ancient ghc work in ages.
2022-06-14 12:31:28 +0200 <used____> Again, ghc IS hastec right?
2022-06-14 12:31:56 +0200 <Benzi-Junior> Now the code seen in http://ix.io/408v has the issue that the threads don't go back and forth as expected, instead they both "ping" and then both threads "pong"
2022-06-14 12:31:57 +0200 <used____> I verified the path carefully, should work.
2022-06-14 12:32:03 +0200 <Benzi-Junior> and I can't figure out why
2022-06-14 12:33:32 +0200 <used____> bootstrap.sh in cabal-install seems to think GHC is -ghc ?!
2022-06-14 12:33:49 +0200 <used____> er ghc
2022-06-14 12:33:54 +0200nschoe(~quassel@2a01:e0a:8e:a190:8d43:625e:56b6:d41e)
2022-06-14 12:34:02 +0200 <arahael> That would make sense?
2022-06-14 12:35:11 +0200 <int-e> used____: I don't know what you mean by "ghc IS hastec"
2022-06-14 12:35:18 +0200 <int-e> but it sounds wrong
2022-06-14 12:35:36 +0200mattil(~mattil@helsinki.portalify.com) (Remote host closed the connection)
2022-06-14 12:37:08 +0200 <used____> hastec --numeric-version (used by cabal-install bootstrap.sh) -> Ok, hastec is the HASTE compiler, ghc is the haskell one. I need the latter installed
2022-06-14 12:37:19 +0200 <int-e> GHC is the Glasgow Haskell Compiler which compiles Haskell to native code. haste is.. hmm. An alternative backend for ghc? Maybe?
2022-06-14 12:37:57 +0200 <arahael> OOh, it's this? https://github.com/valderman/haste-compiler
2022-06-14 12:38:04 +0200 <int-e> arahael: yeah
2022-06-14 12:38:13 +0200 <arahael> If you don't specifically need haste, wouldn't ghcjs be a better option?
2022-06-14 12:38:20 +0200 <int-e> (It says "based on GHC" and I'm not quite sure how deep it goes)
2022-06-14 12:39:35 +0200 <used____> Ok, I found haskell-platform in my distribution's packages, trying that, seems to install
2022-06-14 12:40:20 +0200 <used____> I would like to work through examples in haste to get a feel of it, then decide. Does ghcjs does one-source-does-server-and-client?
2022-06-14 12:40:55 +0200 <arahael> I think so - either native, I think, or via node.
2022-06-14 12:41:19 +0200 <used____> So I'll try that later. Thanks.
2022-06-14 12:41:26 +0200 <arahael> If you're open to looking around, you might want to also consider perhaps purescript - it's not haskell, but it's very haskell-inspired.
2022-06-14 12:42:00 +0200 <used____> purerscript I looked at, does not do the server part that I can tell, and has other problems/
2022-06-14 12:42:08 +0200 <used____> I need lightweight for now.
2022-06-14 12:42:08 +0200 <arahael> That would be via node, again.
2022-06-14 12:42:43 +0200 <arahael> Also check the reflex-frp project.
2022-06-14 12:43:01 +0200 <arahael> I've not used that, but it might be similar to what you're looking at.
2022-06-14 12:43:05 +0200 <arahael> (Which uses ghcjs)
2022-06-14 12:43:36 +0200 <used____> Ok, I'll def look at those later. Thanks. ghc and "platform" installed, going to give it a spun
2022-06-14 12:43:39 +0200 <used____> *i
2022-06-14 12:44:54 +0200 <used____> I do not remember many security warnings for Haskell and packages. Are there no exploits... I mean is security a big concern, as is with node?
2022-06-14 12:47:09 +0200 <merijn> used____: Exploits of what? The packages themselves? I don't think there's enough auditing/testing to say
2022-06-14 12:47:26 +0200 <merijn> used____: If you meant of *the infrastructure* then I'd say it's fairly secure
2022-06-14 12:47:48 +0200nate4(~nate@98.45.169.16)
2022-06-14 12:47:54 +0200 <merijn> used____: The security design of hackage+cabal is based on TUF: https://theupdateframework.io/
2022-06-14 12:47:58 +0200 <arahael> merijn: Keep in mind used____ is using ancient stuff here.
2022-06-14 12:48:14 +0200 <used____> that ^
2022-06-14 12:48:28 +0200 <used____> I will not expose it to the web / net but still a concern
2022-06-14 12:48:33 +0200 <int-e> Hackage is not nearly as popular as NPM, say.
2022-06-14 12:48:45 +0200 <arahael> used____: You'll definitely have a known DOS attack for JSON payloads, as an example.
2022-06-14 12:48:48 +0200 <merijn> arahael: Right, so then we're talking *package* security
2022-06-14 12:48:57 +0200 <merijn> To which the answer is: nobody knows
2022-06-14 12:49:24 +0200 <int-e> So if you want to typo-squat a package, it's not that juicy of a target. The potential is definitely there; packages can have a custom Setup.[l]hs file and that can do arbitrary things.
2022-06-14 12:49:32 +0200 <used____> I have a haste-cabal.bin in the packages somewhere (locate says so) but it is not in the path. How does one install haste-cabal ?
2022-06-14 12:50:30 +0200 <used____> I added it to the PATH but this is a bit strange
2022-06-14 12:51:03 +0200dostoevsky0(~5c42c5384@user/dostoevsky)
2022-06-14 12:51:22 +0200 <int-e> it may be in ~/.cabl/bin
2022-06-14 12:51:27 +0200 <int-e> err .cabal
2022-06-14 12:52:03 +0200dostoevsky(~5c42c5384@user/dostoevsky) (Read error: Connection reset by peer)
2022-06-14 12:52:03 +0200dostoevsky0dostoevsky
2022-06-14 12:52:55 +0200 <int-e> (hard to say, you didn't say where you got haset-cabal.bin from)
2022-06-14 12:54:40 +0200 <used____> It is not, I am bootstrapping from ancient files. Ok, LD_LIBRARY_PATH and some tinkering and it runs.
2022-06-14 12:54:52 +0200 <used____> It will be there however.
2022-06-14 12:56:17 +0200zmt00(~zmt00@user/zmt00) (Ping timeout: 255 seconds)
2022-06-14 12:56:20 +0200cheater(~Username@user/cheater) (Quit: BitchX: the un-Cola)
2022-06-14 12:56:40 +0200flukiluke(~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962) (Remote host closed the connection)
2022-06-14 12:57:04 +0200cheater(~Username@user/cheater)
2022-06-14 12:57:27 +0200 <used____> https://termbin.com/qgpk yikes. I'll be back in like an hour, any hints on how to deal with this?
2022-06-14 12:57:30 +0200 <used____> later
2022-06-14 12:57:37 +0200CiaoSen(~Jura@p200300c9571e28002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-06-14 12:57:47 +0200flukiluke(~m-7humut@2603:c023:c000:6c7e:8945:ad24:9113:a962)
2022-06-14 12:57:53 +0200 <merijn> used____: Your GHC is too new
2022-06-14 12:58:40 +0200 <merijn> base is a part of GHC, your GHC has base-4.11 (see the /installed), but haste-app restricts base version to: 4.8.*
2022-06-14 12:59:29 +0200 <used____> noted. I'll see to it in an hour or so. The ghc I installed is my linux's. ~=Buster.
2022-06-14 12:59:32 +0200 <used____> bbl
2022-06-14 12:59:53 +0200 <int-e> you need ghc 7.10; buster ships 8.4
2022-06-14 13:00:36 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-06-14 13:01:38 +0200ubert(~Thunderbi@2a02:8109:abc0:6434:910d:db38:5f6d:12dd) (Remote host closed the connection)
2022-06-14 13:01:50 +0200ubert(~Thunderbi@2a02:8109:abc0:6434:1afc:e5e0:85aa:7a3f)
2022-06-14 13:03:59 +0200used____(~used____@79.115.62.163) (Ping timeout: 256 seconds)
2022-06-14 13:06:30 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e)
2022-06-14 13:07:10 +0200nate4(~nate@98.45.169.16) (Ping timeout: 240 seconds)
2022-06-14 13:11:08 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e) (Ping timeout: 255 seconds)
2022-06-14 13:18:36 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-06-14 13:20:51 +0200nschoe(~quassel@2a01:e0a:8e:a190:8d43:625e:56b6:d41e) (Remote host closed the connection)
2022-06-14 13:22:03 +0200nschoe(~quassel@2a01:e0a:8e:a190:88e9:a0ec:2edc:295f)
2022-06-14 13:25:37 +0200teddyc(theodorc@cassarossa.samfundet.no)
2022-06-14 13:26:36 +0200frost(~frost@user/frost) (Ping timeout: 252 seconds)
2022-06-14 13:26:40 +0200king_gs(~Thunderbi@187.201.173.69)
2022-06-14 13:30:50 +0200king_gs(~Thunderbi@187.201.173.69) (Ping timeout: 240 seconds)
2022-06-14 13:32:12 +0200Pickchea(~private@user/pickchea)
2022-06-14 13:36:53 +0200cosmos1(~cosmos@user/cosmos1) (Ping timeout: 246 seconds)
2022-06-14 13:38:48 +0200cosmos1(~cosmos@user/cosmos1)
2022-06-14 13:45:15 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Read error: Connection reset by peer)
2022-06-14 13:46:52 +0200lyle(~lyle@104.246.145.85)
2022-06-14 13:47:04 +0200stiell_(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds)
2022-06-14 13:47:25 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-14 13:58:48 +0200cosmos1(~cosmos@user/cosmos1) (Ping timeout: 248 seconds)
2022-06-14 14:01:40 +0200stiell_(~stiell@gateway/tor-sasl/stiell)
2022-06-14 14:05:24 +0200jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-06-14 14:07:05 +0200jinsun(~jinsun@user/jinsun)
2022-06-14 14:07:46 +0200jao(~jao@40.red-79-159-140.dynamicip.rima-tde.net)
2022-06-14 14:07:58 +0200coot(~coot@213.134.190.95) (Quit: coot)
2022-06-14 14:09:58 +0200xff0x(~xff0x@2405:6580:b080:900:d6f:64f5:8be:f88f)
2022-06-14 14:12:36 +0200sammelweis_(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2022-06-14 14:13:11 +0200 <ncf> int-e: hey, i'm going to post a takeover request for misfortune so that we can update lambdabot to GHC 9 one day (maintainer hasn't responded to my email in 3 months). unless you'd like to do it yourself?
2022-06-14 14:14:03 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-06-14 14:14:19 +0200leeb(~leeb@KD106155003152.au-net.ne.jp)
2022-06-14 14:14:48 +0200 <dminuoso> Speaking of lambdabot, where is yahb?
2022-06-14 14:15:01 +0200 <geekosaur> yahb disappeared when mniip did
2022-06-14 14:16:09 +0200nate4(~nate@98.45.169.16)
2022-06-14 14:16:35 +0200 <geekosaur> I checked mniip's github but there isn't enough stuff there to rebuild yahb
2022-06-14 14:16:45 +0200 <tomsmeding> what did yahb do
2022-06-14 14:16:49 +0200 <tomsmeding> sandboxed ghci hooked up to irc?
2022-06-14 14:16:52 +0200 <geekosaur> yes
2022-06-14 14:17:12 +0200 <tomsmeding> (i.e. nothing more than that)
2022-06-14 14:17:25 +0200 <geekosaur> plus a few other niceties like optional output to a pastebin
2022-06-14 14:17:39 +0200 <tomsmeding> I've never seen anyone actually use that
2022-06-14 14:17:50 +0200 <tomsmeding> but I've probably missed it
2022-06-14 14:17:51 +0200 <dminuoso> Seems like we should revive that then.
2022-06-14 14:18:09 +0200 <geekosaur> I used it several times, so did mniip
2022-06-14 14:18:22 +0200 <geekosaur> granting most people didn't seem to know about it
2022-06-14 14:18:46 +0200 <merijn> tomsmeding: I did use it sometimes
2022-06-14 14:18:52 +0200 <dminuoso> geekosaur: Curious, I dont see any yahb related repositories.
2022-06-14 14:18:55 +0200 <dminuoso> It used to be there, no?
2022-06-14 14:19:00 +0200 <merijn> because you could do things lambdabot can't
2022-06-14 14:19:19 +0200 <tomsmeding> merijn: I was talking about the pastebin output, not about yahb in general
2022-06-14 14:19:24 +0200 <geekosaur> not yahb as such but there's a sandboxer and mniip told me yahb was using the irc bot framework in there
2022-06-14 14:19:28 +0200 <dminuoso> Also its easy to understand yahb's interface since its just ghci. With lambdabot its obscure and undocumented syntax.
2022-06-14 14:19:47 +0200 <geekosaur> (the one in lua)
2022-06-14 14:20:57 +0200 <dminuoso> When did mniip disappear by the way?
2022-06-14 14:22:31 +0200sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2022-06-14 14:23:07 +0200julian(~julian@20.83.116.49) (Killed (NickServ (GHOST command used by tos9__!~tos9@python/site-packages/Julian)))
2022-06-14 14:23:26 +0200nate4(~nate@98.45.169.16) (Ping timeout: 246 seconds)
2022-06-14 14:23:58 +0200 <DigitalKiwi> :(
2022-06-14 14:24:15 +0200 <DigitalKiwi> maybe a while ago? i was wondering why they didn't wish me happy birthday this year
2022-06-14 14:24:19 +0200 <int-e> ncf: hmm. I really need to find some motivation to work on that bot (or even look at the existing PRs)... it wouldn't be too terrible to drop misfortune as a dependency I think.
2022-06-14 14:24:48 +0200machinedgod(~machinedg@66.244.246.252) (Ping timeout: 276 seconds)
2022-06-14 14:25:55 +0200 <tomsmeding> dminuoso: https://tomsmeding.com/ss/get/tomsmeding/wmn6xc
2022-06-14 14:26:04 +0200machinedgod(~machinedg@66.244.246.252)
2022-06-14 14:26:34 +0200coot(~coot@213.134.190.95)
2022-06-14 14:27:07 +0200 <tomsmeding> yahb disappeared 2022-04-22
2022-06-14 14:28:57 +0200 <int-e> @fortune
2022-06-14 14:28:57 +0200 <lambdabot> [Sir Stafford Cripps] has all the virtues I dislike and none of the
2022-06-14 14:28:58 +0200 <lambdabot> vices I admire.
2022-06-14 14:28:58 +0200 <lambdabot> -- Winston Churchill
2022-06-14 14:29:07 +0200 <int-e> (noone ever uses that command, I think)
2022-06-14 14:29:16 +0200 <merijn> We should use
2022-06-14 14:29:17 +0200 <merijn> @quote
2022-06-14 14:29:18 +0200 <lambdabot> brain says: the same thing we do every night. try to take over the world!
2022-06-14 14:29:19 +0200 <merijn> more
2022-06-14 14:29:33 +0200 <int-e> @quote ghc
2022-06-14 14:29:33 +0200 <lambdabot> ghc says: ARGH! Jump uses %esi or %edi with -monly-2-regs
2022-06-14 14:29:48 +0200 <merijn> @quote merijn
2022-06-14 14:29:48 +0200 <lambdabot> merijn says: Honestly, IMO the real mistake is allowing top-level type annotations to be optional
2022-06-14 14:29:55 +0200 <tomsmeding> > -monly-2-regs | what
2022-06-14 14:29:56 +0200 <merijn> 100%
2022-06-14 14:30:19 +0200 <merijn> @quote edwardk
2022-06-14 14:30:19 +0200 <lambdabot> edwardk says: waiting for sclv to start going around door to door passing out little copies of the homotopy type theory book, and asking people if they have yet had the geometric realization that
2022-06-14 14:30:19 +0200 <lambdabot> the simplicial sets are homotopically equivalent to their Lord and Savior.
2022-06-14 14:30:21 +0200cosmos1(~cosmos@user/cosmos1)
2022-06-14 14:30:35 +0200 <int-e> main = putStrLn "Hello, world!"
2022-06-14 14:30:36 +0200 <merijn> hah
2022-06-14 14:30:44 +0200 <merijn> That quote reminds me of Cale's religion
2022-06-14 14:31:30 +0200jao(~jao@40.red-79-159-140.dynamicip.rima-tde.net) (Ping timeout: 240 seconds)
2022-06-14 14:31:46 +0200 <ncf> @yow
2022-06-14 14:31:47 +0200 <lambdabot> I don't know WHY I said that ... I think it came from the FILLINGS in
2022-06-14 14:31:47 +0200 <lambdabot> my read molars ...
2022-06-14 14:32:32 +0200 <geekosaur> thanks for reminding me I need to finish my documentation :)
2022-06-14 14:33:09 +0200 <geekosaur> http://users.ece.cmu.edu/~allbery/lambdabot/COMMANDS.more
2022-06-14 14:33:35 +0200 <merijn> @quote Cale religion
2022-06-14 14:33:35 +0200 <lambdabot> Cale says: desrt: Did you hear about the trivial religion that I came up with? Its tenets consist of a single statement: "Believing in this statement will make you happier". It's like a terminal
2022-06-14 14:33:35 +0200 <lambdabot> object in the category of religions and theomorphisms.
2022-06-14 14:33:49 +0200 <int-e> @devil lawyer
2022-06-14 14:33:50 +0200 <lambdabot> *** "lawyer" devil "The Devil's Dictionary (1881-1906)"
2022-06-14 14:33:50 +0200 <lambdabot> LAWYER, n. One skilled in circumvention of the law.
2022-06-14 14:34:12 +0200 <merijn> That quote always cracks me up
2022-06-14 14:34:22 +0200 <merijn> because it's so true
2022-06-14 14:35:07 +0200 <merijn> In fact, I'm not sure whether it's just through sheer amount or whether Cale is really just a super witty philosopher :p
2022-06-14 14:35:11 +0200 <int-e> @dice 1000000d3
2022-06-14 14:35:11 +0200 <lambdabot> int-e: 2000493
2022-06-14 14:35:18 +0200 <merijn> @quote Cale Copenhagen
2022-06-14 14:35:18 +0200 <lambdabot> Cale says: The difference between Many Worlds and Copenhagen is a garbage collector ;)
2022-06-14 14:35:27 +0200 <geekosaur> oh, the devil's dictionary is full of those kinds of things. Bierce was great IMO
2022-06-14 14:35:39 +0200 <ncf> int-e: if you can't find the motivation, i can help if you give me write access and make me a maintainer (on lambdabot and dice). but for now let's see if i can get misfortune updated
2022-06-14 14:35:40 +0200 <merijn> geekosaur: I meant the Cale quote :p
2022-06-14 14:35:40 +0200dextaa(~DV@user/dextaa) (Read error: Connection reset by peer)
2022-06-14 14:35:49 +0200 <geekosaur> oh
2022-06-14 14:37:55 +0200dextaa(~DV@user/dextaa)
2022-06-14 14:38:02 +0200 <int-e> ncf: Thanks! I'll think about it.
2022-06-14 14:39:34 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
2022-06-14 14:51:02 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 255 seconds)
2022-06-14 14:51:43 +0200Me-me(~me-me@tunnel690570-pt.tunnel.tserv12.mia1.ipv6.he.net) (Quit: Disconnecting on purpose.)
2022-06-14 14:52:29 +0200machinedgod(~machinedg@66.244.246.252) (Ping timeout: 246 seconds)
2022-06-14 14:53:19 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-14 14:54:24 +0200machinedgod(~machinedg@66.244.246.252)
2022-06-14 14:55:46 +0200zmt00(~zmt00@user/zmt00)
2022-06-14 14:58:20 +0200 <dragestil> i thought a bit more about haddock, and I wonder why it only has three backends (latex, html, hoogle) so far?
2022-06-14 14:58:58 +0200 <__monty__> Bolt it to Pandoc \o/
2022-06-14 14:58:59 +0200 <dragestil> given the manual saying "it is structured in such a way that adding new backends is straightforward."
2022-06-14 14:59:19 +0200 <geekosaur> "contributions invited"
2022-06-14 14:59:36 +0200 <geekosaur> last I checked haddock was barely maintained
2022-06-14 14:59:44 +0200 <dragestil> hmm, pandoc has always not worked ootb for me and 99% time I had to write a custom filter to give up, but i'll give it a try
2022-06-14 14:59:53 +0200 <geekosaur> I think Hécate is trying to change that, but needs help
2022-06-14 14:59:56 +0200 <DigitalKiwi> maybe straightforward != easy
2022-06-14 15:00:09 +0200king_gs(~Thunderbi@187.201.173.69)
2022-06-14 15:00:22 +0200 <dragestil> ok
2022-06-14 15:00:38 +0200 <dragestil> it seems to be catching up with the base version at least
2022-06-14 15:01:18 +0200 <geekosaur> I'll also agree that pandoc has always not quite done what I needed out of the box; it has a lot of backends but many of them seem minimally functional
2022-06-14 15:01:56 +0200 <geekosaur> then again I suppose that's the price you pay for trying to support so many backends: the more you support the smaller the core set of operations supported everywhere gets
2022-06-14 15:02:35 +0200Haskelytic(~Haskelyti@118.179.211.17)
2022-06-14 15:02:44 +0200 <dragestil> yeah, haddock by contrast has quite restricted format / content
2022-06-14 15:03:13 +0200 <dragestil> so a haddock backend can be more specialised than a pandoc writer
2022-06-14 15:06:13 +0200 <__monty__> I think maybe it's a matter of expectations. Pandoc's not magic. So a custom filter is likely necessary if you're targeting a less popular format or have high standards for the markup. I usually go md/reST -> LaTeX/PDF and that works swimmingly.
2022-06-14 15:06:29 +0200leeb(~leeb@KD106155003152.au-net.ne.jp) (Ping timeout: 246 seconds)
2022-06-14 15:07:12 +0200 <dragestil> custom filter *or give up (correction of a few minutes ago)
2022-06-14 15:08:20 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e)
2022-06-14 15:08:23 +0200 <__monty__> Still seemed like a cool idea to leverage Pandoc as a backend for Haddock and then improve the output by improving Pandoc, falling back to custom filters only as necessary.
2022-06-14 15:08:54 +0200 <dragestil> for sure
2022-06-14 15:10:33 +0200 <Benzi-Junior> http://ix.io/4092 hey guys I didn't get a reply earlier so I thought I'd try this again, using a broadcast channel causes a rather weird behaviour, when I call "runIO [ping, pong]" I get a "aabb" pattern in my printout
2022-06-14 15:10:34 +0200 <dragestil> if haddock like pandoc has a "unified ast" to convert from regardless of the backend
2022-06-14 15:11:06 +0200 <Benzi-Junior> i.e. both threads "ping" and then both threads "pong" rather than going back and forth
2022-06-14 15:11:41 +0200 <dragestil> maybe https://hackage.haskell.org/package/haddock-api-2.24.2/docs/Documentation-Haddock.html#t:Interface is the equivalent of the pandoc ast?
2022-06-14 15:12:19 +0200 <Benzi-Junior> rather, duping the channel is what causes the problem
2022-06-14 15:12:56 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e) (Ping timeout: 248 seconds)
2022-06-14 15:13:32 +0200[Leary](~Leary]@122-58-228-205-vdsl.sparkbb.co.nz) (Ping timeout: 255 seconds)
2022-06-14 15:13:53 +0200 <Benzi-Junior> if I try to not use dupTChan (and not use a broadcast channel) then I get a deadlocked situation where both threads are trying to read
2022-06-14 15:16:28 +0200bliminse(~bliminse@host86-132-158-77.range86-132.btcentralplus.com) (Quit: leaving)
2022-06-14 15:16:35 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-14 15:17:08 +0200julian(~julian@20.83.116.49)
2022-06-14 15:20:12 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-06-14 15:20:32 +0200neoatnebula(~neoatnebu@2409:4071:4d92:bfe0:dfae:9acc:1f1b:ea25)
2022-06-14 15:20:34 +0200king_gs(~Thunderbi@187.201.173.69) (Read error: Connection reset by peer)
2022-06-14 15:20:35 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-14 15:20:57 +0200cosmos1(~cosmos@user/cosmos1) (Ping timeout: 260 seconds)
2022-06-14 15:22:02 +0200king_gs(~Thunderbi@187.201.173.69)
2022-06-14 15:22:14 +0200bliminse(~bliminse@host86-132-158-77.range86-132.btcentralplus.com)
2022-06-14 15:24:15 +0200 <dragestil> I'll give phanddock a try
2022-06-14 15:25:22 +0200 <geekosaur> Benzi-Junior, are you sure the problem isn't the delay making it look like they're both happening at the same time? consider either a distinct and relatively prime delay for pinger/ponger, or just having a delay between pings
2022-06-14 15:27:35 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-06-14 15:28:42 +0200 <Benzi-Junior> geekosaur, yes
2022-06-14 15:29:09 +0200 <Benzi-Junior> I have tried having it dump to console what thread it is that's speaking
2022-06-14 15:29:25 +0200 <geekosaur> yes, that code's still in your paste
2022-06-14 15:30:02 +0200 <Benzi-Junior> I have figured out why the "aabb" pattern occurs, with dupChan
2022-06-14 15:32:14 +0200 <Benzi-Junior> it's because when you duped channels a write to one is a write to both but a read from one only consumes that one
2022-06-14 15:33:45 +0200 <Benzi-Junior> which explains what the point of it is really
2022-06-14 15:33:59 +0200 <geekosaur> well, yes, that is what you're looking for, isn't it? otherwise ponger consumes its own pong etc.
2022-06-14 15:34:01 +0200 <Benzi-Junior> but the deadlock when I don't use it is still puzzling me
2022-06-14 15:34:21 +0200shriekingnoise(~shrieking@201.212.175.181)
2022-06-14 15:34:25 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-06-14 15:34:31 +0200 <geekosaur> you still haven't understood what's going on. I just told you what it was
2022-06-14 15:35:09 +0200 <geekosaur> it'll never work if the ponger consumes its own pong and the pinger consumes its own ping, unless they are duplicated so each gets its own copy of it
2022-06-14 15:36:59 +0200 <geekosaur> seriously, think of the dataflow. the dupTChan and broadcast TChan make it behave the way you expected it to. so that I'm pretty sure leaves both threads delaying the same amount of time so they AABB
2022-06-14 15:38:00 +0200kuribas(~user@ptr-17d51emab50486u5ioi.18120a2.ip6.access.telenet.be) (Ping timeout: 248 seconds)
2022-06-14 15:38:22 +0200Benzi-Juniorfacepalms
2022-06-14 15:39:14 +0200 <Benzi-Junior> yes sorry I misread the code for ping and pong
2022-06-14 15:40:10 +0200jgeerds(~jgeerds@55d45f48.access.ecotel.net) (Ping timeout: 240 seconds)
2022-06-14 15:41:42 +0200 <Benzi-Junior> I thought there was something in there that caused ping to retry when it got "ping"
2022-06-14 15:42:32 +0200mc47(~mc47@xmonad/TheMC47)
2022-06-14 15:46:01 +0200 <Benzi-Junior> geekosaur, is the correct way to do this to have each thread consume the front of the channel as soon as it writes
2022-06-14 15:46:40 +0200 <Benzi-Junior> i.e. "write to this channel and all of it's duplicates, then remove it from my copy"
2022-06-14 15:47:23 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 15:47:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 15:52:04 +0200[Leary](~Leary]@122-58-224-198-vdsl.sparkbb.co.nz)
2022-06-14 15:54:47 +0200 <Benzi-Junior> wel that at least works
2022-06-14 15:55:46 +0200kuribas(~user@188.188.149.171)
2022-06-14 15:56:22 +0200yrlnry(~yrlnry@pool-108-2-150-109.phlapa.fios.verizon.net)
2022-06-14 15:57:20 +0200bliminse(~bliminse@host86-132-158-77.range86-132.btcentralplus.com) (Quit: leaving)
2022-06-14 15:57:33 +0200 <merijn> Benzi-Junior: Sounds like you want a broadcast channel?
2022-06-14 15:58:01 +0200 <merijn> Benzi-Junior: Oh, are you running into a memory leak when using dupChan to broadcast?
2022-06-14 15:58:16 +0200 <geekosaur> no, just delaying in the child and confusing the output
2022-06-14 15:58:35 +0200 <geekosaur> already using a broadcast chan, after discovering why using a simple one didn't work
2022-06-14 15:58:43 +0200 <merijn> geekosaur: Well, he did ask about removing it from "my copy"
2022-06-14 15:59:19 +0200 <merijn> geekosaur: Just asking because I already implemented a broadcast version of regular Chan's :p
2022-06-14 15:59:41 +0200 <geekosaur> these are TChans which already come with a broadcast variant
2022-06-14 15:59:53 +0200 <merijn> Yeah, I know, I just don't really like TChans :p
2022-06-14 16:00:10 +0200chreekat2(~b@80-254-69-77.dynamic.monzoon.net)
2022-06-14 16:00:13 +0200 <geekosaur> and yes Benzi-Junior just removing the delay before output would work as well
2022-06-14 16:01:53 +0200 <Benzi-Junior> merijn, no the problem I was running into was that each thread had it's own duplicate of the broadcast channel, wrote to it (writing to all copies) and then listened, but it's own message would also exist in their own duplicate
2022-06-14 16:03:15 +0200 <Benzi-Junior> geekosaur, how does removing the delay fix this issue ?
2022-06-14 16:03:18 +0200 <geekosaur> that would be expected and you were already handling it. problem in the non-broadcast version was that you also removed it for the intended recipient
2022-06-14 16:03:52 +0200 <geekosaur> removing the delay in pong just makes it obviously a response to the ping, instead of waiting until the next ping is sent because they both had the same delay
2022-06-14 16:08:06 +0200king_gs(~Thunderbi@187.201.173.69) (Read error: Connection reset by peer)
2022-06-14 16:08:49 +0200bliminse(~bliminse@host86-132-158-77.range86-132.btcentralplus.com)
2022-06-14 16:09:17 +0200raym(~raym@user/raym) (Ping timeout: 256 seconds)
2022-06-14 16:09:42 +0200 <Benzi-Junior> geekosaur, right so if the original channel is created with "newTChan" then "readTChan" consumes from all duplicates but if it is created with "newBroadcastTChan" then reading only consumes from that copy
2022-06-14 16:10:19 +0200 <geekosaur> only if you do the dupTChan, but yes
2022-06-14 16:10:40 +0200 <geekosaur> without the newBroadcast TChan, dupTChan would still have it remove from all duplicates
2022-06-14 16:10:50 +0200 <geekosaur> (yeh, it's confusing)
2022-06-14 16:12:34 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 16:12:59 +0200Sgeo(~Sgeo@user/sgeo)
2022-06-14 16:14:13 +0200 <Benzi-Junior> ye I think it could be made clearer with something like a "broadcastTChan :: TChan a -> a -> STM ()"
2022-06-14 16:14:39 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:eb43:ae28:5b68:592d) (Quit: WeeChat 2.8)
2022-06-14 16:15:00 +0200 <Benzi-Junior> broadcast c a = writeTChan c a >> readTChan >> return ()
2022-06-14 16:15:33 +0200 <geekosaur> I'd still check which one you read, else you have a potential race condition
2022-06-14 16:16:03 +0200 <Benzi-Junior> broadcast c a = writeTChan c a >> readTChan c >> return ()
2022-06-14 16:16:24 +0200 <geekosaur> *usually* the one you intend would win, especially if you have the delay in the ponger, but still.
2022-06-14 16:16:25 +0200 <merijn> I'm confused about "write then immediately read"?
2022-06-14 16:16:40 +0200 <merijn> Let's rewind: What are you trying to do?
2022-06-14 16:16:57 +0200 <geekosaur> since anything you write is also written to your own copy of the broadcast TChan, you have to take it back out
2022-06-14 16:17:39 +0200 <geekosaur> frankly your original implementation of this part was correct and shouldn't be edited. just removing or modifying the delay in the ponger is enough
2022-06-14 16:18:44 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 16:19:31 +0200merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Quit: unfucking shell)
2022-06-14 16:20:41 +0200 <Benzi-Junior> geekosaur, you mean have the Ping case in "pong" be "Ping -> broadcast Pong >> pong"
2022-06-14 16:20:51 +0200 <geekosaur> no
2022-06-14 16:21:00 +0200 <geekosaur> again, you had the correct code to begin with
2022-06-14 16:21:23 +0200 <geekosaur> simply reading without looking at what you read has a race condition if the Pong happens to be sent at the same time as the Ping
2022-06-14 16:23:18 +0200merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-06-14 16:24:29 +0200nate4(~nate@98.45.169.16)
2022-06-14 16:25:02 +0200_________(~nobody@user/noodly)
2022-06-14 16:30:29 +0200lagash(lagash@lagash.shelltalk.net)
2022-06-14 16:32:32 +0200Haskelytic(~Haskelyti@118.179.211.17) (Quit: Client closed)
2022-06-14 16:33:10 +0200jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2022-06-14 16:34:33 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-14 16:35:44 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 246 seconds)
2022-06-14 16:35:50 +0200jinsun(~jinsun@user/jinsun)
2022-06-14 16:40:25 +0200jao(~jao@166.65.77.188.dynamic.jazztel.es)
2022-06-14 16:40:30 +0200kuribas(~user@188.188.149.171) (Ping timeout: 240 seconds)
2022-06-14 16:40:31 +0200Cupcakus(~Cupcakus@c-73-205-77-141.hsd1.fl.comcast.net)
2022-06-14 16:40:45 +0200 <Benzi-Junior> ok, I think I understand what you mean
2022-06-14 16:43:05 +0200nate4(~nate@98.45.169.16) (Ping timeout: 255 seconds)
2022-06-14 16:48:25 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-06-14 16:49:31 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e)
2022-06-14 16:49:35 +0200slack1256(~slack1256@191.125.227.223)
2022-06-14 16:52:18 +0200neoatnebula(~neoatnebu@2409:4071:4d92:bfe0:dfae:9acc:1f1b:ea25) (Ping timeout: 252 seconds)
2022-06-14 16:52:21 +0200Pickchea(~private@user/pickchea) (Ping timeout: 276 seconds)
2022-06-14 16:52:28 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-06-14 16:56:20 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net)
2022-06-14 16:57:51 +0200 <Benzi-Junior> BTW is there a more elegant way to do the writing to console that prevents race conditions ?
2022-06-14 16:58:36 +0200 <geekosaur[m]> no
2022-06-14 16:58:55 +0200 <Benzi-Junior> thought so
2022-06-14 16:59:04 +0200 <geekosaur[m]> there are packages that wrap it up to hide the mutex, but that doesn't gain you much
2022-06-14 17:01:45 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 17:02:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 17:05:01 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-14 17:06:00 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-14 17:07:02 +0200img(~img@user/img)
2022-06-14 17:08:17 +0200leeb(~leeb@kd106155003152.au-net.ne.jp)
2022-06-14 17:08:27 +0200chreekat2(~b@80-254-69-77.dynamic.monzoon.net) (Ping timeout: 258 seconds)
2022-06-14 17:09:28 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e) (Remote host closed the connection)
2022-06-14 17:10:07 +0200nschoe(~quassel@2a01:e0a:8e:a190:88e9:a0ec:2edc:295f) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-06-14 17:13:36 +0200acidjnk(~acidjnk@p200300d0c7068b1004113c5627619f0a.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2022-06-14 17:15:06 +0200leeb(~leeb@kd106155003152.au-net.ne.jp) (Ping timeout: 276 seconds)
2022-06-14 17:18:38 +0200n3t1(n3t@s45.mydevil.net)
2022-06-14 17:18:39 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-06-14 17:18:45 +0200lambdap23(~lambdap@static.167.190.119.168.clients.your-server.de)
2022-06-14 17:18:57 +0200kawen(~quassel@static.208.191.216.95.clients.your-server.de) (Quit: No Ping reply in 180 seconds.)
2022-06-14 17:19:05 +0200mcfrd(~mcfrdy@user/mcfrdy)
2022-06-14 17:19:05 +0200hexology-(~hexology@user/hexology)
2022-06-14 17:19:44 +0200n3t(n3t@user/n3t) (Read error: Connection reset by peer)
2022-06-14 17:19:44 +0200hexology(~hexology@user/hexology) (Quit: hex on you ...)
2022-06-14 17:19:44 +0200mcfrdy(~mcfrdy@user/mcfrdy) (Quit: quit)
2022-06-14 17:19:47 +0200lambdap2(~lambdap@static.167.190.119.168.clients.your-server.de) (Quit: Ping timeout (120 seconds))
2022-06-14 17:19:47 +0200lambdap23lambdap2
2022-06-14 17:19:50 +0200slack1256(~slack1256@191.125.227.223) (Read error: Connection reset by peer)
2022-06-14 17:20:06 +0200kawen(~quassel@static.208.191.216.95.clients.your-server.de)
2022-06-14 17:20:14 +0200slack1256(~slack1256@186.11.82.227)
2022-06-14 17:22:07 +0200mcfrdmcfrdy
2022-06-14 17:24:51 +0200img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-14 17:24:56 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 255 seconds)
2022-06-14 17:25:49 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-06-14 17:26:18 +0200img(~img@user/img)
2022-06-14 17:28:37 +0200jakalx(~jakalx@base.jakalx.net)
2022-06-14 17:29:04 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 17:30:23 +0200troydm1(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-06-14 17:30:25 +0200troydm(~troydm@host-176-37-124-197.b025.la.net.ua) (Read error: Connection reset by peer)
2022-06-14 17:35:06 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 17:38:12 +0200xff0x(~xff0x@2405:6580:b080:900:d6f:64f5:8be:f88f) (Ping timeout: 248 seconds)
2022-06-14 17:38:53 +0200xff0x(~xff0x@2405:6580:b080:900:6295:7d95:60a0:d7ff)
2022-06-14 17:39:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 17:42:24 +0200jchia[m](~jchiamatr@2001:470:69fc:105::c50b)
2022-06-14 17:49:20 +0200machinedgod(~machinedg@66.244.246.252) (Remote host closed the connection)
2022-06-14 17:49:56 +0200machinedgod(~machinedg@66.244.246.252)
2022-06-14 17:49:59 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 17:51:24 +0200dostoevsky8(~5c42c5384@user/dostoevsky)
2022-06-14 17:53:05 +0200dostoevsky(~5c42c5384@user/dostoevsky) (Ping timeout: 246 seconds)
2022-06-14 17:53:05 +0200dostoevsky8dostoevsky
2022-06-14 17:53:39 +0200ubert(~Thunderbi@2a02:8109:abc0:6434:1afc:e5e0:85aa:7a3f) (Remote host closed the connection)
2022-06-14 17:53:51 +0200ubert(~Thunderbi@2a02:8109:abc0:6434:2f88:2986:cc88:6622)
2022-06-14 17:54:42 +0200pointblank(~uniquepoi@190.141.232.23) (Quit: Leaving)
2022-06-14 17:54:56 +0200 <slack1256> Is there an equivalent to the `either` function, but expressed for any `Bifoldable` or `Bitraversable`? The closest I see is `bifoldMap` when the output is a Monoid.
2022-06-14 18:00:10 +0200Colere(~colere@about/linux/staff/sauvin) (Ping timeout: 240 seconds)
2022-06-14 18:01:00 +0200 <dminuoso> slack1256: Are you looking for Selective perhaps?
2022-06-14 18:01:49 +0200 <dminuoso> I cant quite compute what you are looking fo.
2022-06-14 18:02:09 +0200 <dminuoso> But I think Selective is isomorphic to what you want
2022-06-14 18:02:41 +0200 <dminuoso> branch :: Selective f => f (Either a b) -> f (a -> c) -> f (b -> c) -> f c
2022-06-14 18:02:44 +0200 <dminuoso> Might make it obvious
2022-06-14 18:02:56 +0200 <[Leary]> It's not clear how you should combine the results to produce output if not monoidally. Unless you want to keep the Bitraversable structure, mapping a `t a b` to a `t c c`.
2022-06-14 18:03:13 +0200chreekat2(~b@2001:999:58c:b933:a5f3:89ae:dd78:3035)
2022-06-14 18:03:47 +0200 <[Leary]> (which is just bitraverse)
2022-06-14 18:04:03 +0200 <[Leary]> With Identity, I guess.
2022-06-14 18:04:04 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-06-14 18:04:13 +0200 <[Leary]> Err, that's bimap.
2022-06-14 18:04:54 +0200 <dminuoso> The reason Im thinking of Selective, is `either` is about joining two branches of a coproduct together. Doing this in some kind of effectful setting is encoded by Selective precidely
2022-06-14 18:05:31 +0200 <dminuoso> But Bifoldable/Bitraversable doesnt guarantee that there's a coproduct choice between the two types (might as well be a product or something else)
2022-06-14 18:06:10 +0200Colere(~colere@about/linux/staff/sauvin)
2022-06-14 18:07:55 +0200slac15488(~slack1256@191.125.99.70)
2022-06-14 18:08:00 +0200yahb2(~yahb2@2001:1c02:b16:f00:1ac0:4dff:fea1:7fda)
2022-06-14 18:08:23 +0200Furor(~colere@about/linux/staff/sauvin)
2022-06-14 18:08:24 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-06-14 18:08:32 +0200 <tomsmeding> % :set -XTypeApplications
2022-06-14 18:08:32 +0200 <yahb2> <no output>
2022-06-14 18:08:36 +0200 <tomsmeding> % print @Double 42
2022-06-14 18:08:36 +0200 <yahb2> 42.0
2022-06-14 18:09:01 +0200 <geekosaur[m]> ooh
2022-06-14 18:09:13 +0200 <tomsmeding> this runs locally on my PC currently :p
2022-06-14 18:09:25 +0200 <tomsmeding> too much stuff is hard-coded
2022-06-14 18:10:07 +0200slack1256(~slack1256@186.11.82.227) (Ping timeout: 260 seconds)
2022-06-14 18:10:12 +0200slac15488slack1256
2022-06-14 18:10:16 +0200 <tomsmeding> int-e: ^
2022-06-14 18:10:37 +0200raym(~raym@user/raym)
2022-06-14 18:10:40 +0200acidjnk(~acidjnk@p200300d0c7068b1004113c5627619f0a.dip0.t-ipconnect.de)
2022-06-14 18:10:44 +0200Lemniscate(~colere@about/linux/staff/sauvin)
2022-06-14 18:10:46 +0200pleo(~pleo@user/pleo)
2022-06-14 18:11:19 +0200Colere(~colere@about/linux/staff/sauvin) (Ping timeout: 258 seconds)
2022-06-14 18:11:40 +0200jakalx(~jakalx@base.jakalx.net)
2022-06-14 18:11:41 +0200 <slack1256> dminuoso: Selective goes in the direction I was looking for.
2022-06-14 18:12:20 +0200 <int-e> % :quit
2022-06-14 18:12:20 +0200 <yahb2> <no output>
2022-06-14 18:12:25 +0200 <int-e> % 1
2022-06-14 18:12:25 +0200 <yahb2> 1
2022-06-14 18:12:31 +0200 <tomsmeding> it auto-restarts :)
2022-06-14 18:12:36 +0200 <int-e> just checking
2022-06-14 18:12:46 +0200 <int-e> it's a good feature because it cleans up the environment
2022-06-14 18:13:32 +0200 <tomsmeding> int-e: something I was wondering about: currently if the command produces too much output, it stops reading after a while and kills ghci and starts a new session
2022-06-14 18:13:42 +0200 <tomsmeding> is there a better way to prevent unlimited output
2022-06-14 18:13:45 +0200 <int-e> tomsmeding: does it have any relation to yahb, code-wise? or did you start from scratch?
2022-06-14 18:13:51 +0200brandonchinn178(~brandonch@c-73-15-100-152.hsd1.ca.comcast.net)
2022-06-14 18:13:52 +0200 <tomsmeding> from scratch
2022-06-14 18:14:02 +0200brandonchinn178(~brandonch@c-73-15-100-152.hsd1.ca.comcast.net) ()
2022-06-14 18:14:26 +0200Furor(~colere@about/linux/staff/sauvin) (Ping timeout: 246 seconds)
2022-06-14 18:14:26 +0200 <int-e> hmm. I don't think ghci has ways to limit the output
2022-06-14 18:14:39 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-06-14 18:14:50 +0200Colere(~colere@about/linux/staff/sauvin)
2022-06-14 18:15:57 +0200 <int-e> How much code is ghci on top of ghc-as-a-library?
2022-06-14 18:16:19 +0200 <tomsmeding> one or two files iirc, but the files are large
2022-06-14 18:16:37 +0200 <tomsmeding> I was looking at 'hint' but it doesn't have the :set stuff
2022-06-14 18:16:49 +0200 <tomsmeding> int-e: https://git.tomsmeding.com/yahb2/about/
2022-06-14 18:17:04 +0200Lemniscate(~colere@about/linux/staff/sauvin) (Ping timeout: 258 seconds)
2022-06-14 18:17:29 +0200 <geekosaur[m]> ghci-ng although it's bitrotted a bit
2022-06-14 18:17:51 +0200 <int-e> Er, I guess I mean ghci-as-a-library. https://hackage.haskell.org/package/ghci isn't kept up-to-date though, hmm.
2022-06-14 18:18:47 +0200eull(~eull@2001:9e8:9e1:2600:8ec7:d77c:2e5f:91fa)
2022-06-14 18:18:59 +0200chreekat2(~b@2001:999:58c:b933:a5f3:89ae:dd78:3035) (Ping timeout: 258 seconds)
2022-06-14 18:20:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 18:21:11 +0200 <int-e> geekosaur[m]: do you know how that relates to the ghci-as-a-library thing?
2022-06-14 18:21:30 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 18:22:21 +0200 <int-e> tomsmeding: what I'd hope for is basically... find the spot where `ghci` inevitably injects a `show` or `print` and hijack that to limit the number of characters
2022-06-14 18:22:44 +0200 <geekosaur[m]> ghci-ng was a full ghci, used for testing of :doc and import
2022-06-14 18:22:53 +0200 <geekosaur[m]> Among other things
2022-06-14 18:24:34 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e)
2022-06-14 18:25:38 +0200raym(~raym@user/raym) (Ping timeout: 246 seconds)
2022-06-14 18:26:18 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 18:26:42 +0200 <tomsmeding> int-e: yeah that would make sense
2022-06-14 18:26:45 +0200ubert(~Thunderbi@2a02:8109:abc0:6434:2f88:2986:cc88:6622) (Remote host closed the connection)
2022-06-14 18:27:32 +0200 <tomsmeding> you'd also have to catch the output of stuff like :help though, as well as GHC errors, or people doing weird stuff with :def
2022-06-14 18:27:39 +0200raym(~raym@user/raym)
2022-06-14 18:28:21 +0200 <int-e> Ah I see, the ghci thing is for interacting with iserv. (If I could read I'd have found that out sooner, it's right there at the top of the package description.)
2022-06-14 18:28:34 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 18:28:47 +0200 <int-e> tomsmeding: yeah I wouldn't expect to be doing a perfect job
2022-06-14 18:29:01 +0200 <int-e> % [1..]
2022-06-14 18:29:01 +0200 <yahb2> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,6...
2022-06-14 18:29:09 +0200 <int-e> just catching common cases like that one
2022-06-14 18:29:21 +0200econo(uid147250@user/econo)
2022-06-14 18:29:21 +0200 <tomsmeding> it resetted now
2022-06-14 18:29:33 +0200 <tomsmeding> would be nicer if it didn't need a reset here
2022-06-14 18:29:38 +0200 <int-e> I understand.
2022-06-14 18:29:48 +0200 <tomsmeding> though it's not a huge problem
2022-06-14 18:32:33 +0200 <[Leary]> You could achieve something similar by wrapping values in a LimitedShow newtype before you give them to ghci.
2022-06-14 18:32:38 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it)
2022-06-14 18:33:32 +0200 <[Leary]> Though I wonder if that wouldn't break on strings.
2022-06-14 18:33:40 +0200used____(~used____@79.115.62.163)
2022-06-14 18:33:50 +0200 <[Leary]> Well, putStrLn.
2022-06-14 18:34:04 +0200 <[Leary]> I guess it would.
2022-06-14 18:34:23 +0200 <geekosaur> might be able to use -interactive-print
2022-06-14 18:34:32 +0200 <int-e> % print [1..]
2022-06-14 18:34:32 +0200 <yahb2> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,6...
2022-06-14 18:34:49 +0200 <int-e> one of the points of yahb was that it allows IO
2022-06-14 18:34:50 +0200 <geekosaur> https://downloads.haskell.org/ghc/9.2.1/docs/html/users_guide/ghci.html#using-a-custom-interactive… but it goes back to at least 7.0.1
2022-06-14 18:35:10 +0200 <int-e> but that actually means that my idea won't work either. hrm.
2022-06-14 18:35:11 +0200 <tomsmeding> geekosaur: ooh, interesting
2022-06-14 18:35:20 +0200 <geekosaur> and yes, yahb used a ptrrace-style andbox to allow limited io
2022-06-14 18:35:33 +0200 <geekosaur> *sandbox
2022-06-14 18:35:54 +0200 <tomsmeding> this sandbox is not syscall constrained, just a bwrap thing https://github.com/containers/bubblewrap
2022-06-14 18:36:26 +0200 <int-e> so... how could this work? basically every evaluation would have to output to its own pipe, and then the consumer could close that, and hopefully the evaluation will error out at that point and return to the ghci prompt
2022-06-14 18:37:03 +0200 <geekosaur> with -interactive-print you just use a modified printer that does `take 100` or whatever on the normla result
2022-06-14 18:37:05 +0200 <int-e> that's not trivial :/
2022-06-14 18:37:37 +0200 <int-e> oh sure, in the spirit of making the common case work, that's a good start
2022-06-14 18:37:44 +0200 <int-e> I was worrying about IO.
2022-06-14 18:38:11 +0200 <int-e> of course soon afterwards you'll reach a point where you have to restart forcefully anyway.
2022-06-14 18:38:39 +0200 <int-e> (e.g. infinite loops)
2022-06-14 18:39:28 +0200 <int-e> % System.Directory.getDirectoryContents "."
2022-06-14 18:39:28 +0200 <yahb2> [".","..","ghcup-none","entry.sh"]
2022-06-14 18:39:34 +0200yahb2(~yahb2@2001:1c02:b16:f00:1ac0:4dff:fea1:7fda) (Remote host closed the connection)
2022-06-14 18:39:57 +0200 <tomsmeding> oh sorry that was me ^C-ing it at a suggestive time lol
2022-06-14 18:39:59 +0200nate4(~nate@98.45.169.16)
2022-06-14 18:40:04 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds)
2022-06-14 18:40:15 +0200 <int-e> heh
2022-06-14 18:40:19 +0200 <tomsmeding> just realised the sandbox could be quite a bit tighter w.r.t. resource usage
2022-06-14 18:40:50 +0200 <tomsmeding> 1. infinite loops aren't terminated, I'd need to ^C the bot; 2. no disk usage limit, so oops
2022-06-14 18:40:55 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2022-06-14 18:41:44 +0200 <geekosaur[m]> original yahb had timeout and restricted write and read size both via the sandbox
2022-06-14 18:41:54 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-06-14 18:42:19 +0200 <tomsmeding> not sure why you'd need to restrict output size with the sandbox though
2022-06-14 18:43:30 +0200 <geekosaur> you could still consume a lot of disk with a current directory write, but you might want to allow short writes (yahb did)
2022-06-14 18:43:40 +0200 <tomsmeding> right
2022-06-14 18:45:03 +0200CiaoSen(~Jura@p200300c9571e28002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2022-06-14 18:45:42 +0200nate4(~nate@98.45.169.16) (Ping timeout: 260 seconds)
2022-06-14 18:46:20 +0200kenran(~kenran@200116b82b174c005987e7000d7c45a7.dip.versatel-1u1.de)
2022-06-14 18:46:45 +0200kenran(~kenran@200116b82b174c005987e7000d7c45a7.dip.versatel-1u1.de) (Client Quit)
2022-06-14 18:48:04 +0200 <tomsmeding> wanting to truncate something like `print [1..]` without restarting ghci is never going to work anyway
2022-06-14 18:48:28 +0200 <tomsmeding> you can usefully truncate a `show`, but you can't usefully truncate IO output without changing semantics
2022-06-14 18:49:35 +0200 <tomsmeding> e.g. `print [1 .. 10000] >> writeIORef ... ...`
2022-06-14 18:49:53 +0200 <tomsmeding> hm, I guess you could consume and wait until timeout
2022-06-14 18:50:29 +0200merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 246 seconds)
2022-06-14 18:51:11 +0200acidjnk(~acidjnk@p200300d0c7068b1004113c5627619f0a.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2022-06-14 18:56:13 +0200 <shapr> Is there a OR for cabal build depends?
2022-06-14 18:56:28 +0200 <shapr> This library I'm building needs Testable, but I don't care if it comes from quickcheck or leancheck or whatever
2022-06-14 18:56:43 +0200 <tomsmeding> isn't the way to do that cabal build flags
2022-06-14 18:57:10 +0200 <dcoutts> yeah, you can have conditionals like that with package flags
2022-06-14 18:57:43 +0200 <dcoutts> though it usually also needs cpp to adjust the imports
2022-06-14 18:57:51 +0200 <dcoutts> it's not a structured mechanism like backpack
2022-06-14 18:57:57 +0200 <int-e> tomsmeding: state is messy!
2022-06-14 18:57:58 +0200 <dcoutts> though Cabal also supports backpack :-)
2022-06-14 18:58:08 +0200 <tomsmeding> int-e: yes :p
2022-06-14 18:58:55 +0200neoatnebula(~neoatnebu@2409:4071:4d92:bfe0:dfae:9acc:1f1b:ea25)
2022-06-14 18:59:35 +0200nschoe(~quassel@2a01:e0a:8e:a190:88e9:a0ec:2edc:295f)
2022-06-14 19:00:17 +0200 <int-e> tomsmeding: -interactive-print certainly looks like a sweet spot
2022-06-14 19:00:17 +0200MajorBiscuit(~MajorBisc@c-001-022-040.client.tudelft.eduvpn.nl) (Ping timeout: 260 seconds)
2022-06-14 19:00:43 +0200 <int-e> 1) trivial to implement, 2) catches a very common case of long, possibly infinite, output
2022-06-14 19:02:07 +0200 <shapr> On the good side, this library I'm writing looks like the first cut will be ~20 lines of code
2022-06-14 19:02:24 +0200 <tomsmeding> leftpad?
2022-06-14 19:02:40 +0200 <shapr> Nah, I came up with a fix for https://danluu.com/testing/
2022-06-14 19:03:39 +0200 <shapr> After months of fighting with the problem and then reading all the related papers, and libraries, and GHC sources; a good solution is very small.
2022-06-14 19:03:50 +0200chele(~chele@user/chele) (Remote host closed the connection)
2022-06-14 19:04:10 +0200 <dsal> shapr: somehow unsatisfying.
2022-06-14 19:04:13 +0200 <shapr> I even came up with a great name, I'll post a link here when it's on hackage
2022-06-14 19:04:15 +0200 <shapr> dsal: how so?
2022-06-14 19:04:27 +0200 <dsal> If you spend that much time on something, it should be gigantic and difficult to understand.
2022-06-14 19:04:38 +0200 <shapr> It was exactly that a week or two ago.
2022-06-14 19:04:40 +0200 <tomsmeding> unless you're a mathematician
2022-06-14 19:04:54 +0200 <dsal> It sounds super exciting though.
2022-06-14 19:05:11 +0200 <int-e> tomsmeding: https://www.npmjs.com/package/ansi-underline (well, at least this one is not a remote service)
2022-06-14 19:05:13 +0200 <shapr> Two weeks ago it was a hundred lines of impossible to understand crap, last week it was half that, then it kept getting smaller.
2022-06-14 19:05:54 +0200bliminse(~bliminse@host86-132-158-77.range86-132.btcentralplus.com) (Quit: leaving)
2022-06-14 19:06:00 +0200 <int-e> tomsmeding: (there's a dozen analogous packages for different ansi escape sequences)
2022-06-14 19:06:04 +0200 <dsal> One more week, and it'll be a single-character operator.
2022-06-14 19:06:06 +0200 <shapr> dsal: as soon as I figure out how to actually wrap it up into a library I'll link it here, the idea is extremely simple. I may be projecting those weeks of frustration, it might not be simple.
2022-06-14 19:06:22 +0200 <tomsmeding> int-e: it even has a dependency
2022-06-14 19:06:29 +0200 <int-e> tomsmeding: I know!
2022-06-14 19:06:51 +0200 <int-e> tomsmeding: because ANSI tags have to be reset and that is reusable functionality
2022-06-14 19:06:59 +0200 <tomsmeding> same person at some point wrote a to-clipboard library for nodejs, which I sent a PR to and promptly got maintainer rights for
2022-06-14 19:07:22 +0200 <tomsmeding> that was actually a useful library that did some abstraction over multiple OS's
2022-06-14 19:07:44 +0200 <int-e> tomsmeding: The amazing thing to me is that people *use* this package.
2022-06-14 19:08:26 +0200 <int-e> Because it's at a level of complexity where adding a dependency is more effort than defining one's own constant.
2022-06-14 19:08:49 +0200 <shapr> oh good, I do remember how to login to hackage.
2022-06-14 19:09:01 +0200 <int-e> tomsmeding: to-clipboard does sound useful indeed
2022-06-14 19:10:15 +0200bliminse(~bliminse@host86-132-158-77.range86-132.btcentralplus.com)
2022-06-14 19:12:27 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-06-14 19:13:56 +0200zebrag(~chris@user/zebrag)
2022-06-14 19:14:46 +0200 <shapr> dsal: the secondary effect of this library is that I may end up maintainer of hpc
2022-06-14 19:15:06 +0200 <shapr> the library/application, not the IRC user :-P
2022-06-14 19:15:19 +0200mima(~mmh@dhcp-138-246-3-112.dynamic.eduroam.mwn.de) (Quit: leaving)
2022-06-14 19:15:20 +0200 <used____> update: re haste-language and ancient ghc etc manual install: dependency hell ensues. I see no way to install an older "platform" other than by cherry picking source packages and manually compiling. Giving up.
2022-06-14 19:15:31 +0200 <tomsmeding> oof
2022-06-14 19:15:58 +0200 <used____> ghc-7.10.3 era, 2015.
2022-06-14 19:16:16 +0200 <used____> Anyway, thanks for the help, moving on.
2022-06-14 19:16:33 +0200merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-06-14 19:17:08 +0200 <shapr> haskell+emacs question, is there some way get C-c C-l to work for modules in a test stanza?
2022-06-14 19:17:48 +0200 <shapr> I can use "cabal repl test" in a terminal, but in emacs I can only get library or executable modules to load into a cabal repl.
2022-06-14 19:18:09 +0200 <shapr> er, that's haskell-process-load-file to be clear
2022-06-14 19:18:55 +0200 <shapr> hpc: are you in DC? want to hang out and work on hpc?
2022-06-14 19:19:06 +0200shaprlaughs about recursive messages
2022-06-14 19:19:10 +0200 <__monty__> used____: Are you sure you need a haskell-platform? An old GHC and cabal-install should get the correct dependency versions from hackage given a Cabal file with constraints, no?
2022-06-14 19:19:11 +0200 <geekosaur> used____, https://downloads.haskell.org/~platform/ is still a thing although all links to it were removed to discourage its use
2022-06-14 19:19:34 +0200 <used____> geekosaur: sigh, moved on, thanks
2022-06-14 19:20:09 +0200 <used____> haste-lang is "dead" too, was curious what generated js looks like, I saw it, it's pre obfuscated...
2022-06-14 19:20:38 +0200 <geekosaur> well, yes, generally generated code is
2022-06-14 19:21:00 +0200 <geekosaur> generating pretty code is even harder than generating correct code, in my experience
2022-06-14 19:21:02 +0200 <used____> Not all, the haste-lang included "lib" isn't, the app is
2022-06-14 19:21:24 +0200 <used____> It's nothing pretty for js can't untangle but still..
2022-06-14 19:26:26 +0200 <dsal> shapr: That's pretty awesome. There are a couple bugs I care about. :)
2022-06-14 19:28:32 +0200Pickchea(~private@user/pickchea)
2022-06-14 19:29:37 +0200 <dsal> I'm sure it's hard problems, but two things that really bother me in haskell coverage are that we show things the compiler wrote as not covered. This should, at best, be an option. e.g., record fields and derived instances.
2022-06-14 19:29:58 +0200 <dsal> I imagine it'd be nice to be "accurate" and show that I'm not using a thing, but I don't need to write a test that exercises `Show` just so that `Show` shows up as covered since it's actually required for tests that are passing in case they start failing.
2022-06-14 19:31:56 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-14 19:37:53 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e) (Remote host closed the connection)
2022-06-14 19:40:05 +0200CoolerX(~user@user/coolerx)
2022-06-14 19:40:07 +0200 <CoolerX> ls
2022-06-14 19:40:10 +0200 <CoolerX> Hi
2022-06-14 19:40:19 +0200used____(~used____@79.115.62.163) (thanks)
2022-06-14 19:40:28 +0200 <CoolerX> I am getting a weird warning here https://bpa.st/OGQQ
2022-06-14 19:40:40 +0200ccntrq(~Thunderbi@172.209.94.92.rev.sfr.net) (Remote host closed the connection)
2022-06-14 19:40:47 +0200 <CoolerX> Pattern match is redundant In an equation for ‘del’: del (Node (v, children) : rest) = ...
2022-06-14 19:40:53 +0200 <CoolerX> how is it redundant?
2022-06-14 19:41:15 +0200 <CoolerX> I have a pattern match for the nil case and the non-nil case
2022-06-14 19:41:56 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 246 seconds)
2022-06-14 19:42:00 +0200 <CoolerX> hmm I changed the code to this and the warning disappeared https://bpa.st/6QGA
2022-06-14 19:42:02 +0200 <tomsmeding> CoolerX: on that 'del nil = nil' line, the first 'nil' is a simple variable
2022-06-14 19:42:12 +0200 <CoolerX> I guess nil wasn't in scope
2022-06-14 19:42:14 +0200 <tomsmeding> it is equivalent to 'del cheese = cheese' or 'del x = x'
2022-06-14 19:42:15 +0200 <CoolerX> tomsmeding: yeah
2022-06-14 19:42:22 +0200 <CoolerX> annoying
2022-06-14 19:42:55 +0200 <tomsmeding> CoolerX: it is not a question of whether 'nil' is in scope; putting a lowercase name in a pattern _always_ mean "match any value and store it in this name"
2022-06-14 19:43:16 +0200 <tomsmeding> if you want to compare against the value of an existing variable, you must compare afterwards using ==
2022-06-14 19:43:25 +0200 <CoolerX> tomsmeding: I get an error saying nil is not in scope when I try something like 3 : nil in ghci
2022-06-14 19:43:28 +0200 <CoolerX> repl
2022-06-14 19:43:28 +0200 <tomsmeding> (but pattern-matching is always better if possible)
2022-06-14 19:43:34 +0200 <CoolerX> 3 : [] gives [3]
2022-06-14 19:43:38 +0200 <tomsmeding> yes, the name 'nil' is not defined in the haskell standard libraries
2022-06-14 19:43:42 +0200 <tomsmeding> it is written '[]'
2022-06-14 19:43:52 +0200 <CoolerX> ok
2022-06-14 19:44:11 +0200 <CoolerX> tomsmeding: is it in the library? I thought lists were baked into the compiler
2022-06-14 19:44:17 +0200 <CoolerX> lsit syntax
2022-06-14 19:44:19 +0200 <CoolerX> list
2022-06-14 19:44:30 +0200 <tomsmeding> just in case, another example: 'del print = print' _also_ means the same as 'del x = x', even though 'print' _is_ an existing variable
2022-06-14 19:44:40 +0200 <tomsmeding> CoolerX: list syntax is kind of baked into the compiler, yes
2022-06-14 19:44:40 +0200 <CoolerX> hmm
2022-06-14 19:45:01 +0200 <CoolerX> ok
2022-06-14 19:45:15 +0200 <CoolerX> "putting a lowercase name in a pattern _always_ mean "match any value and store it in this name" ok
2022-06-14 19:45:50 +0200 <CoolerX> also is there a way to avoid the 4::Int ?
2022-06-14 19:45:56 +0200 <CoolerX> let tree1 = Node (4::Int, [])
2022-06-14 19:46:03 +0200 <CoolerX> let tree1 = Node (4, [])
2022-06-14 19:46:10 +0200 <CoolerX> just have that instead?
2022-06-14 19:46:32 +0200 <tomsmeding> numeric literals (like 4) don't have any specific type in Haskell
2022-06-14 19:46:36 +0200 <CoolerX> yeah
2022-06-14 19:46:37 +0200 <tomsmeding> so _something_ must say what the type is going to be
2022-06-14 19:46:59 +0200 <tomsmeding> either using ::Int as you do, or with 'tree1 :: Tree Int' before 'tree1', or something else
2022-06-14 19:51:48 +0200 <CoolerX> no it doesn't let me do that
2022-06-14 19:51:50 +0200 <CoolerX> let tree1 :: Tree Int = Node (4, [])
2022-06-14 19:51:59 +0200 <CoolerX> Illegal type signature: ‘Tree Int’
2022-06-14 19:51:59 +0200 <CoolerX> Type signatures are only allowed in patterns with ScopedTypeVariables
2022-06-14 19:52:35 +0200 <geekosaur[m]> `let tree1 :: Tree Int; tree1 = Node (4,[])`
2022-06-14 19:52:57 +0200 <CoolerX> bleh
2022-06-14 19:53:02 +0200 <CoolerX> looks bad
2022-06-14 19:53:19 +0200 <CoolerX> what does that desugar into?
2022-06-14 19:53:25 +0200 <geekosaur[m]> well, we'd normally put them on separate lines
2022-06-14 19:53:28 +0200 <geekosaur[m]> it doesn't
2022-06-14 19:53:50 +0200 <CoolerX> tree1 <- return $ Node (4, [])
2022-06-14 19:53:55 +0200 <CoolerX> something like that?
2022-06-14 19:54:05 +0200 <geekosaur[m]> (well, assuming this is in a `do`, a bare `let` turns into `let … in do`)
2022-06-14 19:54:08 +0200Midjak(~Midjak@82.66.147.146)
2022-06-14 19:54:22 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-14 19:54:34 +0200littlebo1eep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 19:54:39 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 19:54:53 +0200 <CoolerX> geekosaur[m]: the code looks like this https://bpa.st/6QGA
2022-06-14 19:55:17 +0200remedan(~remedan@octo.cafe) (Read error: Connection reset by peer)
2022-06-14 19:56:33 +0200neoatnebula(~neoatnebu@2409:4071:4d92:bfe0:dfae:9acc:1f1b:ea25) (Quit: Client closed)
2022-06-14 19:57:12 +0200 <geekosaur[m]> I'd just leave it like that for now. presumably you will be doing something that associates tree1 with tree2 and helps fix their types
2022-06-14 19:57:13 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e)
2022-06-14 19:57:38 +0200vglfr(~vglfr@coupling.penchant.volia.net) (Remote host closed the connection)
2022-06-14 19:58:15 +0200vglfr(~vglfr@coupling.penchant.volia.net)
2022-06-14 19:58:26 +0200 <CoolerX> ok
2022-06-14 19:58:48 +0200 <CoolerX> how do you put if conditions in functions again?
2022-06-14 19:58:54 +0200machinedgod(~machinedg@66.244.246.252) (Ping timeout: 276 seconds)
2022-06-14 19:58:56 +0200 <CoolerX> if r > R + 1, l > r, or l < 1
2022-06-14 19:59:09 +0200 <CoolerX> switch case ?
2022-06-14 19:59:15 +0200 <CoolerX> I also need to pattern match
2022-06-14 19:59:49 +0200 <geekosaur[m]> `if`…`then`…`else` works fine, but remember that it's an expression
2022-06-14 19:59:54 +0200 <geekosaur[m]> (so you can't leave off the `else`, among other things)
2022-06-14 20:00:09 +0200 <geekosaur[m]> if you want to also pattern match then you want `case`
2022-06-14 20:00:18 +0200 <CoolerX> https://wiki.haskell.org/If-then-else
2022-06-14 20:00:49 +0200Guest2776(~Guest27@2601:281:d47f:1590::8848)
2022-06-14 20:00:50 +0200slack1256(~slack1256@191.125.99.70) (Read error: Connection reset by peer)
2022-06-14 20:01:14 +0200 <CoolerX> it seems to recommend making a function if'
2022-06-14 20:01:36 +0200slack1256(~slack1256@186.11.82.227)
2022-06-14 20:02:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 20:03:09 +0200 <geekosaur> :t bool -- parameters in different order
2022-06-14 20:03:10 +0200 <lambdabot> a -> a -> Bool -> a
2022-06-14 20:03:27 +0200 <CoolerX> hmm? why
2022-06-14 20:03:37 +0200 <geekosaur> but yes, some people dislike if-then-else syntax and recommend a function like that
2022-06-14 20:03:57 +0200 <geekosaur> why reordered? so it can be partially applied, and to match functions like `maybe` and `either`
2022-06-14 20:04:27 +0200 <CoolerX> geekosaur[m]: you can partially apply Bool -> a -> a -> a
2022-06-14 20:04:57 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net) (Remote host closed the connection)
2022-06-14 20:05:17 +0200 <CoolerX> there's a bunch of these in Hoogle https://hoogle.haskell.org/?hoogle=Bool%20-%3E%20a%20-%3E%20a%20-%3E%20a
2022-06-14 20:05:17 +0200Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-06-14 20:05:19 +0200remedan(~remedan@octo.cafe)
2022-06-14 20:05:58 +0200 <geekosaur[m]> but in that order it's less convenient (you would most often want the `Bool` to be partially applied, not the `else` result)
2022-06-14 20:06:23 +0200 <geekosaur[m]> (sorry for jumping around between irc and matrix)
2022-06-14 20:06:25 +0200 <CoolerX> ok
2022-06-14 20:06:33 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 20:06:37 +0200 <CoolerX> geekosaur[m]: is that why there's a [m] in your nick?
2022-06-14 20:06:52 +0200 <CoolerX> and what is matrix? I keep hearing about it
2022-06-14 20:06:56 +0200 <geekosaur[m]> generally we put some thought into convenience of partial application when ordering parameters
2022-06-14 20:06:57 +0200 <geekosaur[m]> yes
2022-06-14 20:07:03 +0200 <CoolerX> https://matrix.org/docs/projects/bridge/matrix-org-irc-bridge
2022-06-14 20:07:10 +0200 <geekosaur[m]> matrix is a more modern interface to IRC
2022-06-14 20:07:28 +0200 <geekosaur[m]> supports markdown, link previews, etc.
2022-06-14 20:08:05 +0200statusbot3(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
2022-06-14 20:08:08 +0200 <geekosaur[m]> mostly I'm on it today because I was answering questions on the matrix Haskell room, which is separate from this IRC channel
2022-06-14 20:08:12 +0200 <CoolerX> it's a website
2022-06-14 20:08:21 +0200 <tomsmeding> "matrix is a more modern interface to IRC" heh don't let the matrix people hear that
2022-06-14 20:08:31 +0200qhong_(~qhong@rescomp-21-400677.stanford.edu)
2022-06-14 20:08:35 +0200 <geekosaur[m]> matrix itself is a protocol. there are applications and web interfaces for it
2022-06-14 20:08:36 +0200 <CoolerX> so like https://kiwiirc.com/
2022-06-14 20:08:54 +0200hsw_(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net)
2022-06-14 20:08:57 +0200 <CoolerX> geekosaur[m]: oh? is it a superset of the IRC protocol?
2022-06-14 20:08:59 +0200 <yushyin> tomsmeding: i also don't want to hear that as an irc user :P
2022-06-14 20:08:59 +0200 <tomsmeding> matrix is a chat protocol in itself, just like irc, or signal, or whatsapp, or what have you
2022-06-14 20:09:03 +0200 <yushyin> CoolerX: no
2022-06-14 20:09:08 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2022-06-14 20:09:08 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2022-06-14 20:09:11 +0200allbery_bgeekosaur
2022-06-14 20:09:11 +0200 <geekosaur[m]> specifically I'm on app.element.io right now
2022-06-14 20:09:22 +0200 <tomsmeding> it has bridges to signal, whatsapp, irc, and tons of other things
2022-06-14 20:09:23 +0200Dorkside694(~dorkside@208.190.197.222)
2022-06-14 20:09:44 +0200MironZ5(~MironZ@nat-infra.ehlab.uk)
2022-06-14 20:09:44 +0200 <tomsmeding> and you can use it as a frontend to irc just like you can use a PC as a frontend to your book using an ebook reader :p
2022-06-14 20:09:47 +0200 <geekosaur[m]> which is the element maxtrix client as a web interface. there's also a standalone app for various platforms, plus other clients such as fluffychat and quaternion
2022-06-14 20:09:54 +0200 <dsal> CoolerX: What are you trying to do? I don't need `if` very often.
2022-06-14 20:10:14 +0200zachel_(~zachel@user/zachel)
2022-06-14 20:10:18 +0200 <geekosaur[m]> s/maxtrix/matrix/
2022-06-14 20:10:21 +0200 <CoolerX> is it called matrix because it's a bridge between all those protocols?
2022-06-14 20:10:29 +0200 <tomsmeding> that's the idea
2022-06-14 20:10:31 +0200Ram-Z_(Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df)
2022-06-14 20:10:40 +0200 <CoolerX> https://matrix.org/
2022-06-14 20:11:27 +0200alp(~alp@user/alp) (Remote host closed the connection)
2022-06-14 20:11:34 +0200jrm2(~jrm@user/jrm)
2022-06-14 20:11:46 +0200alp(~alp@user/alp)
2022-06-14 20:11:59 +0200hololeap_(~quassel@user/hololeap)
2022-06-14 20:12:03 +0200 <CoolerX> "You can reach any other user in the global Matrix ecosystem of over 40M users, even including those on other networks via bridges."
2022-06-14 20:12:06 +0200 <CoolerX> hmm
2022-06-14 20:12:14 +0200 <CoolerX> WhatsApp alone has over a billion users
2022-06-14 20:12:26 +0200 <CoolerX> so you can't reach everyone on WhatsApp?
2022-06-14 20:12:28 +0200hyiltiz_(~quassel@31.220.5.250)
2022-06-14 20:12:42 +0200 <tomsmeding> 40M refers just to the users of matrix itself
2022-06-14 20:12:53 +0200sweater1(~sweater@206.81.18.26)
2022-06-14 20:12:57 +0200 <CoolerX> ok
2022-06-14 20:12:58 +0200ian__(~ian@matrix.chaos.earth.li)
2022-06-14 20:13:00 +0200bgs_(~bgs@212-85-160-171.dynamic.telemach.net)
2022-06-14 20:13:01 +0200Fischmie1(~Fischmiep@user/Fischmiep)
2022-06-14 20:13:06 +0200__________(~nobody@user/noodly)
2022-06-14 20:13:13 +0200gabriel_1(~gabriel@188-167-229-200.dynamic.chello.sk)
2022-06-14 20:13:13 +0200dfordivam1(~dfordivam@tk2-219-19469.vs.sakura.ne.jp)
2022-06-14 20:13:19 +0200hughjfch1(~hughjfche@vmi556545.contaboserver.net)
2022-06-14 20:13:30 +0200 <CoolerX> dsal: just a condition
2022-06-14 20:13:36 +0200mstksg(~jle`@cpe-23-240-75-236.socal.res.rr.com)
2022-06-14 20:14:02 +0200Maxdaman1us(~Maxdamant@user/maxdamantus)
2022-06-14 20:14:19 +0200srk-(~sorki@user/srk)
2022-06-14 20:14:22 +0200yahb2(~yahb2@2a01:4f8:c0c:5c7b::2)
2022-06-14 20:14:39 +0200 <tomsmeding> % putStrLn "test"
2022-06-14 20:14:39 +0200 <yahb2> Oops, something went wrong
2022-06-14 20:14:41 +0200 <dsal> "just a condition" is XY
2022-06-14 20:14:48 +0200 <CoolerX> https://imgur.com/Es0oRM3
2022-06-14 20:15:05 +0200yahb2(~yahb2@2a01:4f8:c0c:5c7b::2) (Remote host closed the connection)
2022-06-14 20:15:23 +0200pie__(~pie_bnc@user/pie/x-2818909)
2022-06-14 20:15:24 +0200_ht_(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-06-14 20:15:53 +0200 <dsal> I doubt I'd use an `if` when writing that code.
2022-06-14 20:15:58 +0200remedan(~remedan@octo.cafe) (Read error: Connection reset by peer)
2022-06-14 20:16:20 +0200_________(~nobody@user/noodly) (Killed (NickServ (GHOST command used by __________)))
2022-06-14 20:16:37 +0200dka_(~code-is-a@ns3059207.ip-193-70-33.eu)
2022-06-14 20:16:50 +0200__________(~nobody@user/noodly) (Client Quit)
2022-06-14 20:16:54 +0200qhong_qhong`
2022-06-14 20:17:13 +0200 <CoolerX> " Bridges are core to Matrix and designed to be as easy to write as possible, with Matrix providing the highest common denominator language to link the networks together."
2022-06-14 20:17:16 +0200 <CoolerX> highest ?
2022-06-14 20:17:27 +0200 <CoolerX> do they mean lowest common denominator?
2022-06-14 20:17:40 +0200_________(~nobody@user/noodly)
2022-06-14 20:18:05 +0200slack1256(~slack1256@186.11.82.227) (*.net *.split)
2022-06-14 20:18:05 +0200bliminse(~bliminse@host86-132-158-77.range86-132.btcentralplus.com) (*.net *.split)
2022-06-14 20:18:05 +0200_ht(~quassel@231-169-21-31.ftth.glasoperator.nl) (*.net *.split)
2022-06-14 20:18:05 +0200[Leary](~Leary]@122-58-224-198-vdsl.sparkbb.co.nz) (*.net *.split)
2022-06-14 20:18:05 +0200coot(~coot@213.134.190.95) (*.net *.split)
2022-06-14 20:18:05 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (*.net *.split)
2022-06-14 20:18:05 +0200sweater(~sweater@206.81.18.26) (*.net *.split)
2022-06-14 20:18:05 +0200arahael(~arahael@203.220.147.161) (*.net *.split)
2022-06-14 20:18:05 +0200Dorkside69(~dorkside@208.190.197.222) (*.net *.split)
2022-06-14 20:18:05 +0200hyiltiz(~quassel@31.220.5.250) (*.net *.split)
2022-06-14 20:18:05 +0200Flonk(~Flonk@vps-zap441517-1.zap-srv.com) (*.net *.split)
2022-06-14 20:18:05 +0200cyphase(~cyphase@user/cyphase) (*.net *.split)
2022-06-14 20:18:05 +0200gabriel_sevecek(~gabriel@188-167-229-200.dynamic.chello.sk) (*.net *.split)
2022-06-14 20:18:05 +0200andreas303(andreas303@ip227.orange.bnc4free.com) (*.net *.split)
2022-06-14 20:18:05 +0200pie_(~pie_bnc@user/pie/x-2818909) (*.net *.split)
2022-06-14 20:18:06 +0200Ram-Z(~Ram-Z@li1814-254.members.linode.com) (*.net *.split)
2022-06-14 20:18:06 +0200elkcl(~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (*.net *.split)
2022-06-14 20:18:06 +0200hueso(~root@user/hueso) (*.net *.split)
2022-06-14 20:18:06 +0200ashln(~ashln@98.38.236.123) (*.net *.split)
2022-06-14 20:18:06 +0200zachel(~zachel@user/zachel) (*.net *.split)
2022-06-14 20:18:06 +0200monochrom(~trebla@216.138.220.146) (*.net *.split)
2022-06-14 20:18:06 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (*.net *.split)
2022-06-14 20:18:06 +0200jrm(~jrm@user/jrm) (*.net *.split)
2022-06-14 20:18:06 +0200hughjfchen(~hughjfche@vmi556545.contaboserver.net) (*.net *.split)
2022-06-14 20:18:06 +0200srk(~sorki@user/srk) (*.net *.split)
2022-06-14 20:18:06 +0200foul_owl(~kerry@23.82.194.92) (*.net *.split)
2022-06-14 20:18:06 +0200hololeap(~quassel@user/hololeap) (*.net *.split)
2022-06-14 20:18:06 +0200hsw(~hsw@112-104-144-236.adsl.dynamic.seed.net.tw) (*.net *.split)
2022-06-14 20:18:06 +0200Igloo(~ian@matrix.chaos.earth.li) (*.net *.split)
2022-06-14 20:18:06 +0200Benzi-Junior(~BenziJuni@88-149-64-179.du.xdsl.is) (*.net *.split)
2022-06-14 20:18:06 +0200statusbot(~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (*.net *.split)
2022-06-14 20:18:06 +0200qhong(~qhong@rescomp-21-400677.stanford.edu) (*.net *.split)
2022-06-14 20:18:06 +0200jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com) (*.net *.split)
2022-06-14 20:18:06 +0200bgs(~bgs@212-85-160-171.dynamic.telemach.net) (*.net *.split)
2022-06-14 20:18:06 +0200Fischmiep(~Fischmiep@user/Fischmiep) (*.net *.split)
2022-06-14 20:18:06 +0200MironZ(~MironZ@nat-infra.ehlab.uk) (*.net *.split)
2022-06-14 20:18:06 +0200Hafydd(~Hafydd@user/hafydd) (*.net *.split)
2022-06-14 20:18:06 +0200gff(~gff@user/gff) (*.net *.split)
2022-06-14 20:18:06 +0200dka(~code-is-a@ns3059207.ip-193-70-33.eu) (*.net *.split)
2022-06-14 20:18:06 +0200dfordvm(~dfordivam@tk2-219-19469.vs.sakura.ne.jp) (*.net *.split)
2022-06-14 20:18:06 +0200Dorkside694Dorkside69
2022-06-14 20:18:06 +0200jrm2jrm
2022-06-14 20:18:06 +0200srk-srk
2022-06-14 20:18:06 +0200bgs_bgs
2022-06-14 20:18:06 +0200MironZ5MironZ
2022-06-14 20:18:10 +0200yahb2(~yahb2@2a01:4f8:c0c:5c7b::2)
2022-06-14 20:18:14 +0200Guest2776(~Guest27@2601:281:d47f:1590::8848) (Quit: Client closed)
2022-06-14 20:18:16 +0200 <tomsmeding> % putStrLn "test"
2022-06-14 20:18:16 +0200 <yahb2> test
2022-06-14 20:18:25 +0200 <geekosaur[m]> matrix tries to support everything any bridged service does, instead of being limited to the what the simplest bridged services (like irc) provide
2022-06-14 20:18:26 +0200 <CoolerX> dsal: how would you write it?
2022-06-14 20:18:35 +0200 <dsal> > let insert x xs = let (l,r) = break (> x) xs in l <> [x] <> r in insert 'j' ['a'..'z'] -- CoolerX probably something like this
2022-06-14 20:18:36 +0200 <CoolerX> just pattern matching isn't enough I think
2022-06-14 20:18:37 +0200 <lambdabot> "abcdefghijjklmnopqrstuvwxyz"
2022-06-14 20:19:05 +0200elkcl(~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru)
2022-06-14 20:19:07 +0200 <CoolerX> dsal: I can't make head or tail of that code
2022-06-14 20:19:25 +0200 <CoolerX> geekosaur[m]: cool
2022-06-14 20:19:28 +0200 <dsal> > break (> 'j') "abcxyz"
2022-06-14 20:19:30 +0200 <lambdabot> ("abc","xyz")
2022-06-14 20:19:42 +0200 <CoolerX> IOT, VR and more...
2022-06-14 20:19:56 +0200 <CoolerX> I guess at some point someone in VR Chat will talk to someone on IRC via Matrix
2022-06-14 20:20:05 +0200 <CoolerX> "talk"
2022-06-14 20:20:23 +0200 <geekosaur[m]> they get a link, I think
2022-06-14 20:20:44 +0200 <geekosaur[m]> haven't tried doing a video call to someone on irc yet
2022-06-14 20:21:01 +0200gff(~gff@75-174-85-4.boid.qwest.net)
2022-06-14 20:21:01 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-06-14 20:21:01 +0200B-J(~BenziJuni@88.149.64.179)
2022-06-14 20:21:01 +0200slack1256(~slack1256@186.11.82.227)
2022-06-14 20:21:01 +0200bliminse(~bliminse@host86-132-158-77.range86-132.btcentralplus.com)
2022-06-14 20:21:01 +0200[Leary](~Leary]@122-58-224-198-vdsl.sparkbb.co.nz)
2022-06-14 20:21:01 +0200arahael(~arahael@203.220.147.161)
2022-06-14 20:21:01 +0200Flonk(~Flonk@vps-zap441517-1.zap-srv.com)
2022-06-14 20:21:01 +0200andreas303(andreas303@ip227.orange.bnc4free.com)
2022-06-14 20:21:01 +0200hueso(~root@user/hueso)
2022-06-14 20:21:01 +0200ashln(~ashln@98.38.236.123)
2022-06-14 20:21:01 +0200monochrom(~trebla@216.138.220.146)
2022-06-14 20:21:40 +0200 <int-e> [frame 1]:-([frame 2]:-(([frame 3]::: (tears)[frame 4]:-(
2022-06-14 20:22:14 +0200 <int-e> (we call this an animated discussion)
2022-06-14 20:22:15 +0200__________(~nobody@user/noodly)
2022-06-14 20:22:26 +0200_________(~nobody@user/noodly) (Client Quit)
2022-06-14 20:22:48 +0200__________(~nobody@user/noodly) (Client Quit)
2022-06-14 20:22:51 +0200 <CoolerX> geekosaur[m]: heh, convert each frame into an ascii art and spam the channel
2022-06-14 20:22:53 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 246 seconds)
2022-06-14 20:23:11 +0200 <CoolerX> 60 fps terminal one-way video call
2022-06-14 20:23:14 +0200 <dsal> I can't even tell what's going on here.
2022-06-14 20:23:38 +0200_________(~nobody@user/noodly)
2022-06-14 20:23:47 +0200 <geekosaur[m]> pretty sure that gets you k-lined
2022-06-14 20:23:47 +0200 <CoolerX> dsal> > break (> 'j') "abcxyz"
2022-06-14 20:23:55 +0200 <int-e> dsal: as you grow older you'll realize that sometimes, people just want a silly discussion *headpat*
2022-06-14 20:23:55 +0200 <CoolerX> yes
2022-06-14 20:23:56 +0200gff(~gff@75-174-85-4.boid.qwest.net) (Ping timeout: 246 seconds)
2022-06-14 20:24:06 +0200 <CoolerX> dsal: what is the j >
2022-06-14 20:24:09 +0200 <dsal> CoolerX: I can think of several ways to write the function, but I don't know that I'd use `if` in any of them.
2022-06-14 20:24:15 +0200 <CoolerX> is j the index?
2022-06-14 20:24:38 +0200 <dsal> (> 'j') means "things greater than 'j'"
2022-06-14 20:24:42 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2022-06-14 20:24:44 +0200 <dsal> > (> 'j') 'z'
2022-06-14 20:24:46 +0200 <lambdabot> True
2022-06-14 20:24:47 +0200 <CoolerX> dsal: why is if' a bad idea? the equation for the function uses 3 cases
2022-06-14 20:25:07 +0200Hafydd(~Hafydd@user/hafydd)
2022-06-14 20:25:12 +0200remedan(~remedan@octo.cafe)
2022-06-14 20:25:13 +0200 <geekosaur[m]> no, `(> 'j')` is an operator section equivalent to `\c -> c > 'j'`
2022-06-14 20:25:14 +0200 <int-e> Colere: if then else has better syntax errors
2022-06-14 20:25:26 +0200 <CoolerX> int-e: no no
2022-06-14 20:25:28 +0200 <CoolerX> if'
2022-06-14 20:25:28 +0200 <int-e> wait, 3 cases?
2022-06-14 20:25:40 +0200 <CoolerX> https://i.imgur.com/Es0oRM3.png
2022-06-14 20:25:42 +0200Coleredit "euh.... quoi?"
2022-06-14 20:25:54 +0200gff(~gff@user/gff)
2022-06-14 20:25:58 +0200 <geekosaur[m]> basically we can partially apply operators as well as functions. `'x'` is a `Char` literal
2022-06-14 20:26:04 +0200 <dsal> I use `if` occasionally, but it's rather clunky and doesn't help the problem. Just because whatever language that's written in uses `if` doesn't mean an implementation needs to.
2022-06-14 20:26:22 +0200foul_owl(~kerry@23.82.194.92)
2022-06-14 20:26:23 +0200 <int-e> @source if'
2022-06-14 20:26:24 +0200 <lambdabot> Unknown command, try @list
2022-06-14 20:26:30 +0200 <geekosaur[m]> that's not a language, that's a function in mathematical notation
2022-06-14 20:26:30 +0200 <int-e> @src if'
2022-06-14 20:26:30 +0200 <lambdabot> Source not found. You untyped fool!
2022-06-14 20:26:46 +0200 <CoolerX> dsal: ok that makes sense
2022-06-14 20:26:49 +0200 <CoolerX> but it's still weird
2022-06-14 20:26:51 +0200pleo(~pleo@user/pleo) (Ping timeout: 276 seconds)
2022-06-14 20:26:54 +0200 <dsal> geekosaur[m]: It's a language if it's a means of communicating something.
2022-06-14 20:27:18 +0200 <int-e> Hmm, interesting. I thought we had that one. Anyway, when I see `if'` I assume it's `if' True x y = x; if' False x y = y`
2022-06-14 20:27:27 +0200 <dsal> CoolerX: Why is it weird?
2022-06-14 20:27:30 +0200 <dsal> int-e: That's bool
2022-06-14 20:27:33 +0200 <dsal> @src bool
2022-06-14 20:27:33 +0200 <lambdabot> bool f _ False = f
2022-06-14 20:27:33 +0200 <lambdabot> bool _ t True = t
2022-06-14 20:27:34 +0200 <geekosaur[m]> we have `bool` as I pointed out earlier
2022-06-14 20:27:46 +0200 <CoolerX> int-e: https://hackage.haskell.org/package/utility-ht-0.0.16/docs/Data-Bool-HT.html#v:if-39-
2022-06-14 20:27:51 +0200 <CoolerX> https://wiki.haskell.org/If-then-else
2022-06-14 20:28:12 +0200 <int-e> dsal: it was called if' before it was added as a standard function. It's in base these days.
2022-06-14 20:28:21 +0200 <CoolerX> dsal: can you paste that implementation again?
2022-06-14 20:28:26 +0200 <int-e> anyway, that was my confusion. now I don't know what if' is.
2022-06-14 20:28:30 +0200 <dsal> > let insert x xs = let (l,r) = break (> x) xs in l <> [x] <> r in insert 'j' ['a'..'z'] -- CoolerX probably something like this
2022-06-14 20:28:32 +0200 <lambdabot> "abcdefghijjklmnopqrstuvwxyz"
2022-06-14 20:28:38 +0200 <CoolerX> right
2022-06-14 20:28:47 +0200 <geekosaur[m]> I think the only thing that called it `if'` was `@pl`
2022-06-14 20:28:52 +0200 <CoolerX> so you break the list
2022-06-14 20:28:58 +0200 <CoolerX> and insert the element in the middle
2022-06-14 20:29:04 +0200 <dsal> That's using a list, but the concept is the same. Break your data structure into stuff that sorts lower and stuff that sorts higher. Put the new thing between them.
2022-06-14 20:29:13 +0200 <int-e> @pl if x then y else z
2022-06-14 20:29:13 +0200 <lambdabot> if' x y z
2022-06-14 20:30:05 +0200 <CoolerX> it's a bit more complicated
2022-06-14 20:30:23 +0200 <CoolerX> the "stuff that sorts lower" are the indices
2022-06-14 20:30:29 +0200 <CoolerX> same for "stuff that sorts higher"
2022-06-14 20:30:35 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-14 20:30:38 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it) (Remote host closed the connection)
2022-06-14 20:30:41 +0200 <CoolerX> the values at those indices are not sorted
2022-06-14 20:31:04 +0200kaskal-(~kaskal@2001:4bb8:2ae:ef0c:346b:df71:225c:5c14)
2022-06-14 20:31:19 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it)
2022-06-14 20:31:22 +0200 <CoolerX> l and r are the indices https://i.imgur.com/Es0oRM3.png
2022-06-14 20:31:29 +0200 <geekosaur[m]> notably if you turn on `RebindableSyntax` ghc uses `ifThenElse`, not `if'` and not `bool`
2022-06-14 20:31:52 +0200kaskal(~kaskal@2001:4bb8:2c0:26d1:2f:9cc7:96f3:7340) (Ping timeout: 248 seconds)
2022-06-14 20:32:08 +0200 <dsal> I was just giving you the rough shape. It's a monoid and you want to put a new value in it. The final pattern is `l <> n <> r` where `l` is the stuff before, `r` is the stuff after, and `n` is your new element.
2022-06-14 20:33:13 +0200 <CoolerX> dsal: bool ?
2022-06-14 20:33:27 +0200 <CoolerX> ok someone needs to update this then https://wiki.haskell.org/If-then-else
2022-06-14 20:33:32 +0200 <CoolerX> "Unfortunately there is no such function in the Prelude.
2022-06-14 20:33:33 +0200 <CoolerX> "
2022-06-14 20:33:41 +0200cosmos1(~cosmos@user/cosmos1)
2022-06-14 20:34:02 +0200dschrempf(~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.5)
2022-06-14 20:34:03 +0200 <dsal> Why does that need to be updated?
2022-06-14 20:34:11 +0200 <CoolerX> ghci still complains Variable not in scope: bool :: t0 -> t1 -> Bool -> t
2022-06-14 20:34:19 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it) (Remote host closed the connection)
2022-06-14 20:34:21 +0200 <dsal> Because that's not in prelude.
2022-06-14 20:34:26 +0200 <CoolerX> bool 3 4 True
2022-06-14 20:34:31 +0200 <CoolerX> hmm
2022-06-14 20:34:38 +0200 <dsal> 3 and 4 are not boolean.
2022-06-14 20:34:43 +0200 <geekosaur[m]> @index bool
2022-06-14 20:34:43 +0200 <lambdabot> Data.Bool
2022-06-14 20:34:46 +0200 <CoolerX> 23:57 < geekosaur[m]> we have `bool` as I pointed out earlier
2022-06-14 20:34:50 +0200 <CoolerX> 23:58 < int-e> dsal: it was called if' before it was added as a standard function. It's in base these days.
2022-06-14 20:35:00 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it)
2022-06-14 20:35:04 +0200 <CoolerX> oh you mean the standard library
2022-06-14 20:35:05 +0200 <CoolerX> ok
2022-06-14 20:35:09 +0200 <geekosaur[m]> and I just had the bot print out where it lives
2022-06-14 20:35:17 +0200 <geekosaur[m]> @where if'
2022-06-14 20:35:18 +0200 <lambdabot> if' p t f = if p then t else f
2022-06-14 20:35:20 +0200 <geekosaur[m]> whoops
2022-06-14 20:35:23 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net)
2022-06-14 20:35:25 +0200 <geekosaur[m]> @index if'
2022-06-14 20:35:25 +0200 <lambdabot> bzzt
2022-06-14 20:35:34 +0200 <CoolerX> import Data.Bool
2022-06-14 20:35:44 +0200 <geekosaur[m]> heh, @where tells us the definition. who did that?
2022-06-14 20:35:57 +0200 <dsal> I don't see how bool helps, you either. It's just `if` is a function.
2022-06-14 20:36:06 +0200 <dsal> The closer translation to this would be just three guards.
2022-06-14 20:36:19 +0200 <CoolerX> dsal: back to "It's a monoid and you want to put a new value in it."
2022-06-14 20:36:20 +0200 <CoolerX> yes
2022-06-14 20:36:31 +0200 <CoolerX> but that only happens sometimes
2022-06-14 20:36:44 +0200 <CoolerX> depending on the 3 conditions
2022-06-14 20:36:55 +0200 <CoolerX> case 1 you leave the input alone https://i.imgur.com/Es0oRM3.png
2022-06-14 20:37:03 +0200 <dsal> :t mempty
2022-06-14 20:37:05 +0200 <lambdabot> Monoid a => a
2022-06-14 20:37:05 +0200 <CoolerX> case 2 you insert https://i.imgur.com/Es0oRM3.png
2022-06-14 20:37:21 +0200 <CoolerX> case 3 you insert and keep some elements as the children of the node you just inserted https://i.imgur.com/Es0oRM3.png
2022-06-14 20:37:37 +0200 <dsal> Those are all the same URL.
2022-06-14 20:37:44 +0200 <CoolerX> yeah
2022-06-14 20:38:18 +0200acidjnk(~acidjnk@p200300d0c7068b10c08ec98d32d09092.dip0.t-ipconnect.de)
2022-06-14 20:38:23 +0200 <dsal> You've pasted it at least five times now. I think it's on record.
2022-06-14 20:38:31 +0200 <CoolerX> XD
2022-06-14 20:38:34 +0200 <dsal> But in any case, you can also compute the new value, which might be mempty.
2022-06-14 20:38:37 +0200 <CoolerX> btw is a monad a monoid?
2022-06-14 20:38:55 +0200 <CoolerX> a monad is an applicative functor and a functor
2022-06-14 20:39:13 +0200 <geekosaur[m]> at a higher level than is representable in Haskell, yes
2022-06-14 20:39:23 +0200 <geekosaur[m]> it's a category theory monoid, not a Haskell Monoid
2022-06-14 20:40:16 +0200 <CoolerX> "at a higher level than is representable in Haskell, yes" that's scary
2022-06-14 20:40:22 +0200 <CoolerX> Haskell is super abstract as it is
2022-06-14 20:40:34 +0200 <geekosaur[m]> math gets quite scary, yes
2022-06-14 20:40:57 +0200 <dsal> Another option is to directly translate that math expression into code with three guards.
2022-06-14 20:40:58 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-14 20:41:18 +0200 <CoolerX> dsal: yes pls
2022-06-14 20:41:29 +0200 <CoolerX> I like that approach
2022-06-14 20:42:08 +0200 <dsal> Alright, then do that. Still won't use `if`. :)
2022-06-14 20:42:31 +0200 <CoolerX> ok
2022-06-14 20:43:57 +0200Topsi(~Topsi@dyndsl-095-033-021-077.ewe-ip-backbone.de)
2022-06-14 20:43:57 +0200Vajb(~Vajb@85-76-45-159-nat.elisa-mobile.fi) (Read error: Connection reset by peer)
2022-06-14 20:44:09 +0200Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-06-14 20:44:42 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 260 seconds)
2022-06-14 20:46:21 +0200ashln(~ashln@98.38.236.123) (Quit: Lost terminal)
2022-06-14 20:48:32 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e) (Remote host closed the connection)
2022-06-14 20:49:15 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 258 seconds)
2022-06-14 20:51:19 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-14 20:56:47 +0200byorgey_byorgey
2022-06-14 20:57:45 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-14 21:02:09 +0200[_](~itchyjunk@user/itchyjunk/x-7353470)
2022-06-14 21:02:47 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 260 seconds)
2022-06-14 21:04:49 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e)
2022-06-14 21:06:02 +0200Tuplanolla(~Tuplanoll@91-159-69-173.elisa-laajakaista.fi)
2022-06-14 21:06:04 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 240 seconds)
2022-06-14 21:06:20 +0200ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2022-06-14 21:09:08 +0200 <monochrom> s/scary/interesting/
2022-06-14 21:10:10 +0200machinedgod(~machinedg@66.244.246.252)
2022-06-14 21:10:33 +0200 <CoolerX> dsal: hmm
2022-06-14 21:10:41 +0200 <CoolerX> this is what I ended up with https://bpa.st/IMIA
2022-06-14 21:10:59 +0200 <CoolerX> it compiles but the result is not what I expected
2022-06-14 21:11:04 +0200 <CoolerX> the insertion doesn't do anything
2022-06-14 21:11:50 +0200 <CoolerX> tree1edited is Node (4,[])
2022-06-14 21:13:20 +0200 <dsal> That's what line 23 says it should be, isn't it?
2022-06-14 21:13:30 +0200Guest27(~Guest27@2601:281:d47f:1590::8848)
2022-06-14 21:13:47 +0200pavonia(~user@user/siracusa)
2022-06-14 21:14:04 +0200 <CoolerX> dsal: no? the list isn't empty
2022-06-14 21:14:12 +0200Pickchea(~private@user/pickchea) (Ping timeout: 250 seconds)
2022-06-14 21:14:49 +0200 <CoolerX> also if line 23 matched I would get Node (42, [])
2022-06-14 21:14:54 +0200Sgeo_(~Sgeo@user/sgeo)
2022-06-14 21:14:55 +0200 <CoolerX> instead of Node (4, [])
2022-06-14 21:15:06 +0200 <dsal> Oh, sorry, not paying much attention right now.
2022-06-14 21:15:11 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 21:15:39 +0200 <CoolerX> it should match line 27
2022-06-14 21:15:59 +0200Goodbye_Vincent6(cyvahl@freakshells.net)
2022-06-14 21:16:46 +0200 <CoolerX> oh it matches line 26
2022-06-14 21:16:51 +0200 <CoolerX> l < 1
2022-06-14 21:17:10 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 240 seconds)
2022-06-14 21:17:42 +0200byorgey_(~byorgey@155.138.238.211)
2022-06-14 21:17:42 +0200int-e_(~noone@int-e.eu)
2022-06-14 21:17:52 +0200machined1od(~machinedg@66.244.246.252)
2022-06-14 21:18:02 +0200davl_(~davl@207.154.228.18)
2022-06-14 21:18:07 +0200Putonlalla1(~sapekiis@it-cyan.it.jyu.fi)
2022-06-14 21:18:07 +0200int-e(~noone@int-e.eu) (Killed (NickServ (GHOST command used by int-e_)))
2022-06-14 21:18:08 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-06-14 21:18:15 +0200int-e_int-e
2022-06-14 21:18:16 +0200jao(~jao@166.65.77.188.dynamic.jazztel.es) (Ping timeout: 248 seconds)
2022-06-14 21:18:27 +0200raoul5(~raoul@95.179.203.88)
2022-06-14 21:18:28 +0200jtmar(~james@jtmar.me)
2022-06-14 21:18:37 +0200 <int-e> CoolerX: right, and that line discards x
2022-06-14 21:18:38 +0200hexeme(~hexeme@user/hexeme)
2022-06-14 21:18:43 +0200natto17(~natto@140.238.225.67)
2022-06-14 21:19:01 +0200dumptruckman_(~dumptruck@45-79-173-88.ip.linodeusercontent.com)
2022-06-14 21:19:03 +0200opqdonut_(opqdonut@pseudo.fixme.fi)
2022-06-14 21:19:06 +0200AndrewYu(Andrew@user/AndrewYu)
2022-06-14 21:19:09 +0200stilgart_(~Christoph@chezlefab.net)
2022-06-14 21:19:11 +0200caubert_(~caubert@user/caubert)
2022-06-14 21:19:12 +0200nefercheprure(tma@twin.jikos.cz)
2022-06-14 21:19:12 +0200chronon_(~chronon@user/chronon)
2022-06-14 21:19:13 +0200werneta(~werneta@137.79.230.15)
2022-06-14 21:19:15 +0200tessier_(~treed@98.171.210.130)
2022-06-14 21:19:19 +0200Logio_(em@kapsi.fi)
2022-06-14 21:19:21 +0200absence_(torgeihe@hildring.pvv.ntnu.no)
2022-06-14 21:19:23 +0200tristanC_(~tristanC@user/tristanc)
2022-06-14 21:19:24 +0200ByronJohnson(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net)
2022-06-14 21:19:25 +0200 <CoolerX> int-e: hmm, I am looking at the paper and I can't find they defining ins(eps)
2022-06-14 21:19:28 +0200 <CoolerX> ins(empty list)
2022-06-14 21:19:29 +0200LambdaDuck(~anka@ksit.fixme.fi)
2022-06-14 21:19:34 +0200sshine_(~simon@exocortex.online)
2022-06-14 21:19:37 +0200dashkal1(~dashkal@user/dashkal)
2022-06-14 21:19:40 +0200 <CoolerX> find where* they define
2022-06-14 21:19:44 +0200abrar_(~abrar@static-108-2-152-54.phlapa.fios.verizon.net)
2022-06-14 21:19:45 +0200xerox__(~edi@user/edi)
2022-06-14 21:19:47 +0200gentauro_(~gentauro@185.107.12.141)
2022-06-14 21:19:49 +0200caubert_(~caubert@user/caubert) (Client Quit)
2022-06-14 21:19:54 +0200ystael_(~ystael@user/ystael)
2022-06-14 21:19:58 +0200cls_(~cls@chalk.lubutu.com)
2022-06-14 21:20:01 +0200kosmikus_(~kosmikus@nullzig.kosmikus.org)
2022-06-14 21:20:02 +0200monaaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-14 21:20:10 +0200 <CoolerX> We define ins i,y,l,r(ǫ) as ins y,l,r(ǫ) if i = 0 and as ǫ otherwise
2022-06-14 21:20:11 +0200 <int-e> CoolerX: shouldn't you end up in case 2 though
2022-06-14 21:20:12 +0200 <CoolerX> hmm
2022-06-14 21:20:12 +0200Pickchea(~private@user/pickchea)
2022-06-14 21:20:19 +0200ornx(~ornxka@user/ornxka)
2022-06-14 21:20:22 +0200 <CoolerX> int-e: for empty list?
2022-06-14 21:20:43 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-06-14 21:20:46 +0200 <int-e> CoolerX: you have to adjust the definition for zero-based indices; the paper counts from 1
2022-06-14 21:21:34 +0200 <CoolerX> well this seems to work https://bpa.st/PXLA
2022-06-14 21:21:39 +0200pleo(~pleo@user/pleo)
2022-06-14 21:21:44 +0200 <CoolerX> handles the empty list
2022-06-14 21:22:10 +0200Guest27(~Guest27@2601:281:d47f:1590::8848) (Ping timeout: 252 seconds)
2022-06-14 21:22:11 +0200 <CoolerX> probably because of this implementation of splitAt https://stackoverflow.com/questions/12540078/haskell-splitting-a-list-into-2-at-index-k
2022-06-14 21:22:39 +0200caubert_(~caubert@user/caubert)
2022-06-14 21:22:47 +0200 <CoolerX> int-e: uh right
2022-06-14 21:22:59 +0200 <CoolerX> so I need to give splitAt (l-1)
2022-06-14 21:24:05 +0200gnyeki_(~gnyeki@li578-216.members.linode.com)
2022-06-14 21:24:05 +0200gnyeki_(~gnyeki@li578-216.members.linode.com) (Changing host)
2022-06-14 21:24:05 +0200gnyeki_(~gnyeki@user/gnyeki)
2022-06-14 21:24:09 +0200 <int-e> if you want the first list element to have index 1... yes I think so.
2022-06-14 21:24:19 +0200Henkru(henkru@kapsi.fi)
2022-06-14 21:24:24 +0200machinedgod(~machinedg@66.244.246.252) (*.net *.split)
2022-06-14 21:24:24 +0200mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (*.net *.split)
2022-06-14 21:24:24 +0200troydm1(~troydm@host-176-37-124-197.b025.la.net.ua) (*.net *.split)
2022-06-14 21:24:24 +0200Sgeo(~Sgeo@user/sgeo) (*.net *.split)
2022-06-14 21:24:24 +0200julian(~julian@20.83.116.49) (*.net *.split)
2022-06-14 21:24:24 +0200davl(~davl@207.154.228.18) (*.net *.split)
2022-06-14 21:24:24 +0200cocreature(~moritz@46.101.189.229) (*.net *.split)
2022-06-14 21:24:24 +0200gentauro(~gentauro@user/gentauro) (*.net *.split)
2022-06-14 21:24:24 +0200caubert(~caubert@user/caubert) (*.net *.split)
2022-06-14 21:24:24 +0200sm[i]_(~user@li229-222.members.linode.com) (*.net *.split)
2022-06-14 21:24:24 +0200sudden(~cat@user/sudden) (*.net *.split)
2022-06-14 21:24:24 +0200bairyn(~bairyn@50-250-232-19-static.hfc.comcastbusiness.net) (*.net *.split)
2022-06-14 21:24:24 +0200Henkru_(henkru@kapsi.fi) (*.net *.split)
2022-06-14 21:24:24 +0200byorgey(~byorgey@155.138.238.211) (*.net *.split)
2022-06-14 21:24:24 +0200dumptruckman(~dumptruck@45-79-173-88.ip.linodeusercontent.com) (*.net *.split)
2022-06-14 21:24:24 +0200raoul(~raoul@95.179.203.88) (*.net *.split)
2022-06-14 21:24:24 +0200joo-_(~joo-_@fsf/member/joo--) (*.net *.split)
2022-06-14 21:24:24 +0200Goodbye_Vincent(cyvahl@freakshells.net) (*.net *.split)
2022-06-14 21:24:24 +0200zwu(~wu000168@host-187-23.ilchtbc.chicago.il.us.clients.pavlovmedia.net) (*.net *.split)
2022-06-14 21:24:24 +0200gnyeki(~gnyeki@user/gnyeki) (*.net *.split)
2022-06-14 21:24:24 +0200Putonlalla(~sapekiis@it-cyan.it.jyu.fi) (*.net *.split)
2022-06-14 21:24:24 +0200tessier(~treed@98.171.210.130) (*.net *.split)
2022-06-14 21:24:24 +0200adium(adium@user/adium) (*.net *.split)
2022-06-14 21:24:24 +0200perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (*.net *.split)
2022-06-14 21:24:25 +0200fryguybob(~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (*.net *.split)
2022-06-14 21:24:25 +0200ystael(~ystael@user/ystael) (*.net *.split)
2022-06-14 21:24:25 +0200absence(torgeihe@hildring.pvv.ntnu.no) (*.net *.split)
2022-06-14 21:24:25 +0200chronon(~chronon@user/chronon) (*.net *.split)
2022-06-14 21:24:25 +0200LambdaDu1k(~anka@ksit.fixme.fi) (*.net *.split)
2022-06-14 21:24:25 +0200peutri(~peutri@bobo.desast.re) (*.net *.split)
2022-06-14 21:24:25 +0200meejah(~meejah@rutas.meejah.ca) (*.net *.split)
2022-06-14 21:24:25 +0200sshine(~simon@exocortex.online) (*.net *.split)
2022-06-14 21:24:25 +0200abrar(~abrar@static-108-2-152-54.phlapa.fios.verizon.net) (*.net *.split)
2022-06-14 21:24:25 +0200kosmikus(~kosmikus@nullzig.kosmikus.org) (*.net *.split)
2022-06-14 21:24:25 +0200bah(~bah@l1.tel) (*.net *.split)
2022-06-14 21:24:25 +0200Andrew(Andrew@user/AndrewYu) (*.net *.split)
2022-06-14 21:24:25 +0200jamestmartin(~james@jtmar.me) (*.net *.split)
2022-06-14 21:24:25 +0200Logio(em@kapsi.fi) (*.net *.split)
2022-06-14 21:24:25 +0200tristanC(~tristanC@user/tristanc) (*.net *.split)
2022-06-14 21:24:25 +0200xerox(~edi@user/edi) (*.net *.split)
2022-06-14 21:24:25 +0200Patternmaster(~georg@user/Patternmaster) (*.net *.split)
2022-06-14 21:24:25 +0200dashkal(~dashkal@user/dashkal) (*.net *.split)
2022-06-14 21:24:25 +0200tureba(~tureba@tureba.org) (*.net *.split)
2022-06-14 21:24:25 +0200tdammers(~tdammers@77.109.72.118.res.static.edpnet.net) (*.net *.split)
2022-06-14 21:24:25 +0200natto(~natto@140.238.225.67) (*.net *.split)
2022-06-14 21:24:25 +0200ldlework(~hexeme@user/hexeme) (*.net *.split)
2022-06-14 21:24:25 +0200cls(~cls@chalk.lubutu.com) (*.net *.split)
2022-06-14 21:24:25 +0200TMA(tma@twin.jikos.cz) (*.net *.split)
2022-06-14 21:24:25 +0200ornxka(~ornxka@user/ornxka) (*.net *.split)
2022-06-14 21:24:25 +0200asm(~alexander@user/asm) (*.net *.split)
2022-06-14 21:24:25 +0200opqdonut(opqdonut@pseudo.fixme.fi) (*.net *.split)
2022-06-14 21:24:25 +0200stilgart(~Christoph@chezlefab.net) (*.net *.split)
2022-06-14 21:24:26 +0200raoul5raoul
2022-06-14 21:24:26 +0200dumptruckman_dumptruckman
2022-06-14 21:24:26 +0200Goodbye_Vincent6Goodbye_Vincent
2022-06-14 21:24:30 +0200fryguybo1(~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
2022-06-14 21:24:34 +0200bah(~bah@l1.tel)
2022-06-14 21:24:53 +0200caubert_caubert
2022-06-14 21:24:59 +0200sudden(~cat@user/sudden)
2022-06-14 21:25:45 +0200 <int-e> CoolerX: is there a difference between case 2 and 3? AIUI, the y by itself is a shortcut for y()...
2022-06-14 21:26:12 +0200sm[i]_(~user@li229-222.members.linode.com)
2022-06-14 21:26:15 +0200Guest27(~Guest27@2601:281:d47f:1590::8848)
2022-06-14 21:26:16 +0200Patternmaster(~georg@li1192-118.members.linode.com)
2022-06-14 21:26:16 +0200Patternmaster(~georg@li1192-118.members.linode.com) (Changing host)
2022-06-14 21:26:16 +0200Patternmaster(~georg@user/Patternmaster)
2022-06-14 21:26:20 +0200 <int-e> note that splitAt 0 bs = ([],bs)
2022-06-14 21:26:23 +0200meejah(~meejah@rutas.meejah.ca)
2022-06-14 21:26:27 +0200peutri(~peutri@bobo.desast.re)
2022-06-14 21:26:30 +0200z(~wu000168@host-187-23.ilchtbc.chicago.il.us.clients.pavlovmedia.net)
2022-06-14 21:27:31 +0200adium(adium@user/adium)
2022-06-14 21:28:02 +0200 <CoolerX> int-e: yeah the code isn't very optimized
2022-06-14 21:28:11 +0200 <CoolerX> like dsal showed a better impl with break
2022-06-14 21:28:31 +0200 <CoolerX> seems to work https://bpa.st/3PIA
2022-06-14 21:28:42 +0200 <CoolerX> [Node ("aa",[]),Node ("ab",[]),Node ("ac",[])]
2022-06-14 21:28:43 +0200 <CoolerX> [Node ("a",[Node ("aa",[]),Node ("ab",[]),Node ("ac",[])])]
2022-06-14 21:28:43 +0200 <CoolerX> done
2022-06-14 21:29:02 +0200joo-_(~joo-_@172-105-65-159.ip.linodeusercontent.com)
2022-06-14 21:29:02 +0200joo-_(~joo-_@172-105-65-159.ip.linodeusercontent.com) (Changing host)
2022-06-14 21:29:02 +0200joo-_(~joo-_@fsf/member/joo--)
2022-06-14 21:29:03 +0200 <CoolerX> I also get warnings about patterns no matched
2022-06-14 21:29:07 +0200 <CoolerX> in ins
2022-06-14 21:29:12 +0200 <CoolerX> not*
2022-06-14 21:29:19 +0200 <dsal> The more delete, the better your code gets.
2022-06-14 21:29:39 +0200 <dsal> CoolerX: You can change the last case to `otherwise`
2022-06-14 21:29:42 +0200 <dsal> @src otherwise
2022-06-14 21:29:42 +0200 <lambdabot> otherwise = True
2022-06-14 21:29:45 +0200 <CoolerX> Patterns not matched:
2022-06-14 21:29:46 +0200 <CoolerX> _ _ _ []
2022-06-14 21:29:46 +0200 <CoolerX> _ _ _ (_:_)
2022-06-14 21:30:10 +0200 <CoolerX> dsal: it should not be giving those warnings even without otherwise right?
2022-06-14 21:30:12 +0200Pickchea(~private@user/pickchea) (Ping timeout: 260 seconds)
2022-06-14 21:30:21 +0200 <CoolerX> probably I am missing some cases
2022-06-14 21:30:32 +0200troydm1(~troydm@host-176-37-124-197.b025.la.net.ua)
2022-06-14 21:30:40 +0200julian(~julian@20.83.116.49)
2022-06-14 21:31:26 +0200tureba(~tureba@tureba.org)
2022-06-14 21:31:28 +0200perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2022-06-14 21:31:45 +0200 <CoolerX> the first case is when the indices are out of range
2022-06-14 21:31:48 +0200tdammers(~tdammers@77.109.72.118.res.static.edpnet.net)
2022-06-14 21:31:50 +0200asm(~alexander@burner.asm89.io)
2022-06-14 21:31:52 +0200 <CoolerX> or invalid like l > r
2022-06-14 21:31:53 +0200cocreature(~moritz@2a03:b0c0:3:d0::c8:f001)
2022-06-14 21:32:04 +0200 <CoolerX> the 2nd and 3rd case will have indices within range
2022-06-14 21:32:19 +0200 <CoolerX> or the only 2 cases to consider are l == r and l < r
2022-06-14 21:32:21 +0200 <CoolerX> hmm
2022-06-14 21:32:26 +0200 <CoolerX> that should be exhaustive
2022-06-14 21:32:47 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e) (Remote host closed the connection)
2022-06-14 21:33:13 +0200 <int-e> yeah it's exhaustive
2022-06-14 21:33:26 +0200 <CoolerX> why is it telling me to match the empty list?
2022-06-14 21:33:42 +0200 <CoolerX> _ _ _ []
2022-06-14 21:33:52 +0200 <CoolerX> match the empty list and ignore the others
2022-06-14 21:34:08 +0200 <geekosaur> you have a case missing that I see, it just reports it poorly
2022-06-14 21:34:36 +0200 <geekosaur> remember your indices start at 0 instead of 1, and look at the rejection of invalid indices
2022-06-14 21:35:14 +0200 <int-e> and you can replace lines 25-26 by | otherwise = inscase3 x l r forest
2022-06-14 21:35:27 +0200 <CoolerX> geekosaur: but I adjusted for that by putting splitAt (l-1)
2022-06-14 21:35:32 +0200 <int-e> geekosaur: I think CoolerX went the other way where the arguments are indices starting at 1
2022-06-14 21:35:44 +0200 <int-e> arguably not a good choice, but it's a choice
2022-06-14 21:36:07 +0200 <geekosaur> hm. wonder if that +1 is still valid though
2022-06-14 21:36:10 +0200 <CoolerX> int-e: trying to keep the interface of the functions the same
2022-06-14 21:36:28 +0200 <CoolerX> as the paper
2022-06-14 21:36:49 +0200 <CoolerX> or rather semantics of the function
2022-06-14 21:37:02 +0200Guest3513(~nils@99-211-103-86.dynamic.dsl.tng.de)
2022-06-14 21:37:11 +0200 <CoolerX> int-e: later they start using index 0 for something else in the paper
2022-06-14 21:37:24 +0200 <CoolerX> We define insi,y,l,r(ǫ) as insy,l,r(ǫ) if i = 0 and as ǫ otherwise.
2022-06-14 21:38:29 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2022-06-14 21:38:41 +0200 <CoolerX> I am using otherwise https://bpa.st/WZBQ
2022-06-14 21:38:41 +0200 <int-e> geekosaur: yeah it's valid
2022-06-14 21:38:49 +0200 <CoolerX> that code compiles without warnings
2022-06-14 21:39:01 +0200 <int-e> "why is it telling me to match the empty list?" has me confused, what is "it"?
2022-06-14 21:39:24 +0200Guest27(~Guest27@2601:281:d47f:1590::8848) (Quit: Client closed)
2022-06-14 21:39:31 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-06-14 21:40:10 +0200 <geekosaur> int-e: https://ircbrowse.tomsmeding.com/browse/lchaskell?id=587010#trid587010
2022-06-14 21:40:12 +0200 <int-e> CoolerX: you don't actually need line 25
2022-06-14 21:41:11 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:fd72:8b07:e388:e81e)
2022-06-14 21:41:23 +0200 <CoolerX> int-e: case 3 handles case 2?
2022-06-14 21:41:56 +0200 <int-e> CoolerX: r - l will be 0 and the splitAt will give you an empty list and bs, just as case 2 would be using
2022-06-14 21:42:33 +0200jinsun__(~jinsun@user/jinsun)
2022-06-14 21:43:29 +0200Guest3513(~nils@99-211-103-86.dynamic.dsl.tng.de) (Leaving)
2022-06-14 21:43:41 +0200 <int-e> geekosaur: Oh, right. The compiler wouldn't realize that those three guards were exhaustive already.
2022-06-14 21:44:28 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2022-06-14 21:44:43 +0200 <int-e> Complaining about _ _ _ [] specifically is not ideal.
2022-06-14 21:46:23 +0200jinsun(~jinsun@user/jinsun) (Ping timeout: 255 seconds)
2022-06-14 21:47:22 +0200 <CoolerX> int-e: ok so I have this now https://bpa.st/Y2AQ
2022-06-14 21:48:12 +0200 <int-e> CoolerX: lgtm, except for the choice of indices :-P
2022-06-14 21:48:37 +0200 <CoolerX> they use 0 for something else
2022-06-14 21:48:40 +0200 <CoolerX> later on
2022-06-14 21:48:42 +0200jakalx(~jakalx@base.jakalx.net)
2022-06-14 21:48:44 +0200 <int-e> you said
2022-06-14 21:48:56 +0200Maxdaman1usMaxdamantus
2022-06-14 21:49:15 +0200 <CoolerX> plus I don't want to change the semantics, makes it harder to cross reference with the paper
2022-06-14 21:49:28 +0200 <CoolerX> constantly doing -1 in my head
2022-06-14 21:50:53 +0200lyle(~lyle@104.246.145.85) (Quit: WeeChat 3.5)
2022-06-14 22:00:48 +0200Topsi(~Topsi@dyndsl-095-033-021-077.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-06-14 22:03:21 +0200_ht_(~quassel@231-169-21-31.ftth.glasoperator.nl) (Remote host closed the connection)
2022-06-14 22:03:27 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2022-06-14 22:05:20 +0200 <CoolerX> this almost works https://bpa.st/H6IQ
2022-06-14 22:05:50 +0200 <CoolerX> everything works as expected except deletion at index 4
2022-06-14 22:05:56 +0200 <CoolerX> which does nothing
2022-06-14 22:06:11 +0200 <CoolerX> it should have removed Node ("ac",[])
2022-06-14 22:08:00 +0200tromp(~textual@dhcp-077-249-230-040.chello.nl)
2022-06-14 22:08:00 +0200 <CoolerX> oh it's not the size of the children, derp
2022-06-14 22:09:56 +0200 <CoolerX> yeah that works https://bpa.st/3QYA
2022-06-14 22:10:17 +0200xff0x(~xff0x@2405:6580:b080:900:6295:7d95:60a0:d7ff) (Ping timeout: 252 seconds)
2022-06-14 22:11:59 +0200xff0x(~xff0x@b133147.ppp.asahi-net.or.jp)
2022-06-14 22:15:17 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo) (Remote host closed the connection)
2022-06-14 22:18:59 +0200szkl(uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-06-14 22:21:15 +0200Midjak(~Midjak@82.66.147.146) (Quit: Leaving)
2022-06-14 22:23:30 +0200Kaipei(~Kaiepi@156.34.47.253)
2022-06-14 22:25:38 +0200 <dsal> I feel like using a tuple there doesn't make it clearer.
2022-06-14 22:25:59 +0200inversed(~inversed@176.248.27.211) (Ping timeout: 255 seconds)
2022-06-14 22:27:06 +0200Kaiepi(~Kaiepi@156.34.47.253) (Ping timeout: 276 seconds)
2022-06-14 22:27:18 +0200slac80159(~slack1256@191.125.99.70)
2022-06-14 22:27:20 +0200littlebobeep(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-06-14 22:28:12 +0200 <dsal> It looks like it's just adding syntax unnecessarily.
2022-06-14 22:28:41 +0200tabemann(~tabemann@2600:1700:7990:24e0:ac21:ff4e:45be:2497) (Ping timeout: 255 seconds)
2022-06-14 22:29:13 +0200slack1256(~slack1256@186.11.82.227) (Ping timeout: 246 seconds)
2022-06-14 22:30:10 +0200 <CoolerX> ah so close
2022-06-14 22:30:11 +0200 <CoolerX> https://bpa.st/7A2A
2022-06-14 22:30:23 +0200 <CoolerX> everything works as expected except line 114
2022-06-14 22:30:29 +0200 <CoolerX> print $ insi 6 "foo" 1 1 forest2
2022-06-14 22:30:37 +0200 <CoolerX> inserting at index 6 does nothing
2022-06-14 22:32:05 +0200 <CoolerX> actually maybe that's correcT?
2022-06-14 22:32:10 +0200cosmos1(~cosmos@user/cosmos1) (Ping timeout: 240 seconds)
2022-06-14 22:32:39 +0200forell(~forell@user/forell) (Quit: ZNC - https://znc.in)
2022-06-14 22:34:29 +0200 <CoolerX> yeah I think print $ insi 2 "foo" 5 5 forest2
2022-06-14 22:34:34 +0200 <CoolerX> "after inserting at index 2 at the end of the list of children"
2022-06-14 22:34:35 +0200 <CoolerX> [Node ("a",[Node ("aa",[]),Node ("ab",[]),Node ("ac",[]),Node ("ad",[]),Node ("foo",[])])]
2022-06-14 22:34:40 +0200 <CoolerX> that works
2022-06-14 22:34:58 +0200forell(~forell@user/forell)
2022-06-14 22:35:52 +0200 <CoolerX> and this works print $ insi 1 "foo" 2 2 forest2
2022-06-14 22:35:57 +0200 <CoolerX> "after inserting at index 1 at the end of the forest"
2022-06-14 22:35:58 +0200 <CoolerX> [Node ("a",[Node ("aa",[]),Node ("ab",[]),Node ("ac",[]),Node ("ad",[])]),Node ("foo",[])]
2022-06-14 22:36:03 +0200 <CoolerX> alright
2022-06-14 22:36:16 +0200 <CoolerX> dsal: a tuple wherE?
2022-06-14 22:36:37 +0200 <CoolerX> it's a tuple cause I am using newtype
2022-06-14 22:36:40 +0200 <CoolerX> newtype Tree a = Node (a, [Tree a]) deriving (Eq, Show)
2022-06-14 22:38:11 +0200 <dsal> Yeah, but it's not clear why you'd use a tuple there. It seems to just make things a bit worse.
2022-06-14 22:38:51 +0200 <geekosaur> makes things harder to read, anyway
2022-06-14 22:40:17 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net)
2022-06-14 22:40:23 +0200jgeerds(~jgeerds@55d45f48.access.ecotel.net)
2022-06-14 22:40:30 +0200 <dsal> It's also slightly odd that the `Tree` constructor is called `Node` instead of `Tree`.
2022-06-14 22:40:37 +0200dsalisn't commenting on the important parts
2022-06-14 22:41:05 +0200biberu(~biberu@user/biberu)
2022-06-14 22:42:57 +0200tabemann(~travisb@2600:1700:7990:24e0:8ef9:6ccb:409e:cd42)
2022-06-14 22:43:55 +0200nate4(~nate@98.45.169.16)
2022-06-14 22:45:20 +0200 <CoolerX> dsal: uh right
2022-06-14 22:45:29 +0200ec(~ec@gateway/tor-sasl/ec)
2022-06-14 22:45:33 +0200 <CoolerX> but then the term gets overloaded
2022-06-14 22:45:44 +0200 <CoolerX> Type here is the type constructor
2022-06-14 22:45:56 +0200 <CoolerX> Tree here is the type constructor and Node is the data/value constructor
2022-06-14 22:46:03 +0200 <dsal> I keep thinking it's strange that your data type is only ever used in a list. Perhaps the listiness should be part of the data type. If there's never a situation where a tree isn't in a list, then it's a little hard to reason about what the actual data structure is.
2022-06-14 22:46:46 +0200 <dsal> Yeah, it's common for a type and constructor to have the same value. Otherwise, it's really strange. Is it a Tree or a Node?
2022-06-14 22:47:08 +0200 <dsal> If you're always going to call it a Node when you use it, then maybe it's a Node and not a tree. Perhaps a Tree is a list of Nodes?
2022-06-14 22:47:37 +0200 <dsal> then `data Node = Node a Tree` and `data Tree = Tree [Node]`
2022-06-14 22:49:55 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 256 seconds)
2022-06-14 22:50:13 +0200tabemann(~travisb@2600:1700:7990:24e0:8ef9:6ccb:409e:cd42) (Remote host closed the connection)
2022-06-14 22:50:38 +0200 <CoolerX> 02:08 < dsal> Yeah, but it's not clear why you'd use a tuple there. It seems to just make things a bit worse.
2022-06-14 22:50:46 +0200 <CoolerX> what is the alternative?
2022-06-14 22:51:00 +0200 <CoolerX> tuple seems like the obvious choice
2022-06-14 22:51:14 +0200tabemann(~travisb@2600:1700:7990:24e0:8ef9:6ccb:409e:cd42)
2022-06-14 22:52:16 +0200 <geekosaur> dsal just told you
2022-06-14 22:52:18 +0200 <CoolerX> "Is it a Tree or a Node?" ok
2022-06-14 22:52:21 +0200pretty_d1(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-06-14 22:52:26 +0200 <geekosaur> it's not clear to me why you want a newtype, either
2022-06-14 22:53:01 +0200 <CoolerX> geekosaur: isn't it the simplest?
2022-06-14 22:53:22 +0200 <geekosaur> no
2022-06-14 22:53:29 +0200 <CoolerX> keep the same memory structure as a tuple
2022-06-14 22:53:31 +0200 <geekosaur> it's an optimization
2022-06-14 22:53:39 +0200 <CoolerX> not really
2022-06-14 22:53:51 +0200 <CoolerX> I just don't see the need to add unnecessary wrapping
2022-06-14 22:53:51 +0200 <geekosaur> and `Node a Tree` jhas the same memory representation as a tuple
2022-06-14 22:54:17 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 252 seconds)
2022-06-14 22:54:20 +0200 <CoolerX> I would avoid new type entirely if it wasn't such a hassle to use tuples directly in this instance
2022-06-14 22:55:14 +0200nschoe(~quassel@2a01:e0a:8e:a190:88e9:a0ec:2edc:295f) (Ping timeout: 255 seconds)
2022-06-14 22:57:04 +0200dsp(~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net)
2022-06-14 22:59:16 +0200 <dsal> "I'll just use a tuple" is often the wrong choice. Making a type is a good idea. You just made it in a weird way that requires you to put lots of syntax everywhere.
2022-06-14 22:59:38 +0200 <tomsmeding> relish the power of haskell in defining new data types
2022-06-14 22:59:49 +0200 <CoolerX> dsal: I changed Node to Tree https://bpa.st/SSOA
2022-06-14 22:59:54 +0200 <tomsmeding> making a new data type is easier in haskell than in almost any other statically-typed language
2022-06-14 23:00:08 +0200 <tomsmeding> and they're great to work with
2022-06-14 23:00:08 +0200 <dsal> Similarly, `[Tree]` everywhere kind of smells like you actually want to call that something.
2022-06-14 23:00:46 +0200 <dsal> The `Forest` type alias makes things easier to read, but it doesn't do a whole lot.
2022-06-14 23:00:54 +0200 <CoolerX> dsal: well by keeping it a tuple, everything that can operate on tuples can also operate on this
2022-06-14 23:01:03 +0200 <dsal> I use type aliases for documentation sometimes, but I often regret doing so.
2022-06-14 23:01:13 +0200 <dsal> CoolerX: Which operations do you think those might be?
2022-06-14 23:01:14 +0200tabemann(~travisb@2600:1700:7990:24e0:8ef9:6ccb:409e:cd42) (Ping timeout: 250 seconds)
2022-06-14 23:01:26 +0200 <CoolerX> dsal: all of them
2022-06-14 23:01:43 +0200 <dsal> Can you show an example?
2022-06-14 23:01:46 +0200 <CoolerX> like why create a new siloed type that I have to define everything for?
2022-06-14 23:02:39 +0200 <CoolerX> dsal: I am just not clear on why you think it is not a tuple
2022-06-14 23:02:50 +0200 <dsal> I'm not clear on why you think it *is* a tuple.
2022-06-14 23:03:04 +0200 <dsal> Your type is built around a tuple, but all that's doing is just adding unnecessary syntax everywhere.
2022-06-14 23:03:13 +0200 <dsal> It doesn't make your type, for example, a functor.
2022-06-14 23:03:18 +0200biberu\(~biberu@user/biberu)
2022-06-14 23:03:19 +0200 <dsal> And if it *were* a functor, it'd be wrong.
2022-06-14 23:03:20 +0200biberu(~biberu@user/biberu) (Ping timeout: 248 seconds)
2022-06-14 23:03:27 +0200jao(~jao@166.65.77.188.dynamic.jazztel.es)
2022-06-14 23:03:28 +0200 <CoolerX> a tree is an ordered pair of the node's value and the list of child trees/sub tress
2022-06-14 23:03:36 +0200 <CoolerX> trees*
2022-06-14 23:03:40 +0200 <CoolerX> that's a tuple
2022-06-14 23:03:44 +0200 <CoolerX> 2-tuple
2022-06-14 23:04:22 +0200biberu\biberu
2022-06-14 23:04:27 +0200 <geekosaur> only if you like being untyped. one thing you lose by using a tuple is validation of the types of its elements
2022-06-14 23:04:41 +0200 <geekosaur> which is why we like defining custom types for things
2022-06-14 23:04:44 +0200 <dsal> OK, but if you're going to go that abstract in the concept, you can't really use that as an argument for going absolutely concrete in the implementation.
2022-06-14 23:04:51 +0200 <geekosaur> not doing so leads to hard-to-diagnose errors
2022-06-14 23:04:53 +0200 <CoolerX> geekosaur: "validation of the types of its elements" what do you mean?
2022-06-14 23:05:25 +0200 <CoolerX> dsal: "going absolutely concrete in the implementation." how is it concrete? Tree a is an abstract type
2022-06-14 23:05:28 +0200biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2022-06-14 23:05:28 +0200 <dsal> CoolerX: Your type isn't a Haskell tuple, it's just implemented using one. But by doing that, you gain nothing, but add a bunch of syntax everywhere.
2022-06-14 23:05:32 +0200 <CoolerX> so is Forest a
2022-06-14 23:05:36 +0200Pickchea(~private@user/pickchea)
2022-06-14 23:05:42 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net)
2022-06-14 23:06:01 +0200 <CoolerX> dsal: is it just the verbosity that's a problem?
2022-06-14 23:06:10 +0200dsp(~dsp@cpc152107-haye27-2-0-cust227.17-4.cable.virginm.net) (Ping timeout: 240 seconds)
2022-06-14 23:06:25 +0200 <CoolerX> because I think that can be fixed without making it something else
2022-06-14 23:06:43 +0200 <geekosaur> why are you so afraid of making it something else?
2022-06-14 23:07:00 +0200 <dsal> Removing code that doesn't help solve your problem will only make it clearer.
2022-06-14 23:07:25 +0200 <dsal> Right now, you have to construct a tuple every time you want to construct a tree. This doesn't provide you any benefits.
2022-06-14 23:07:26 +0200 <geekosaur> you said something about not having to define things fo ryour type, but tuples don't define anything for you either
2022-06-14 23:07:54 +0200 <geekosaur> they define fst and snd, which you don't even use
2022-06-14 23:07:56 +0200 <dsal> You seem to think it will help you by making it so that "everything that can operate on tuples can also operate on this" -- but this is clearly false and if it were true, it'd be very difficult to reason about.
2022-06-14 23:09:11 +0200 <dsal> Your type should be a functor, but the functor implementation your type needs and the functor implementation of a tuple are fundamentally incompatible.
2022-06-14 23:09:35 +0200 <hpc> shapr: if only i was smart enough to work on hpc
2022-06-14 23:09:40 +0200 <hpc> i am barely smart enough to /be/ hpc :D
2022-06-14 23:10:11 +0200 <dsal> hpc: together, you and shapr will create the best you anyone could imagine
2022-06-14 23:10:57 +0200 <CoolerX> dsal: so you want to use data ?
2022-06-14 23:11:04 +0200 <CoolerX> instead of newtype
2022-06-14 23:11:12 +0200 <dsal> Yes. I'm not sure why `newtype` is interesting.
2022-06-14 23:11:17 +0200shaprhugs hpc
2022-06-14 23:11:27 +0200MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 256 seconds)
2022-06-14 23:11:55 +0200 <CoolerX> geekosaur: "they define fst and snd, which you don't even use" it's not about the prelude or standard library
2022-06-14 23:12:08 +0200 <CoolerX> it's just keeping it a tuple means anyone who can accept a 2-tuple can operate on it
2022-06-14 23:12:14 +0200 <dsal> That's not remotely true.
2022-06-14 23:12:21 +0200 <dsal> I think you don't understand what newtype does.
2022-06-14 23:12:43 +0200 <CoolerX> actually that might be type alias that I am thinking og
2022-06-14 23:12:44 +0200 <dsal> If that happened, it would be very, very difficult to write correct code.
2022-06-14 23:12:45 +0200 <CoolerX> of*
2022-06-14 23:12:46 +0200 <shapr> What are the largest open source Haskell codebases that have property tests?
2022-06-14 23:13:01 +0200 <dsal> Yes, `type` does that, which is why I'd generally not recommend using it.
2022-06-14 23:13:05 +0200 <shapr> I need to test this coverage+testing library I'm writing
2022-06-14 23:13:29 +0200 <CoolerX> maybe I want type Tree a = (a, [Tree a])
2022-06-14 23:13:38 +0200 <dsal> You definitely do not want that.
2022-06-14 23:13:41 +0200 <CoolerX> XD
2022-06-14 23:13:46 +0200 <geekosaur> oh lord
2022-06-14 23:13:54 +0200 <geekosaur> let's write as untyped as we possibly can
2022-06-14 23:13:57 +0200 <CoolerX> because now it really is a tuple
2022-06-14 23:14:03 +0200 <geekosaur> #racket is over there somewhere
2022-06-14 23:14:21 +0200 <dsal> About four hours into that, you'll be so confused that you will spend the next six hours trying to figure out what you did and why you did this to yourself.
2022-06-14 23:14:24 +0200 <dsal> Do the easy thing first.
2022-06-14 23:14:27 +0200biberu(~biberu@user/biberu)
2022-06-14 23:14:34 +0200 <CoolerX> dsal: another thing is these structures could get really large
2022-06-14 23:14:46 +0200 <CoolerX> so all the extra wrapping from data can hurt
2022-06-14 23:14:54 +0200 <dsal> How so?
2022-06-14 23:15:06 +0200 <CoolerX> I don't think there's any advantage to keeping all the wrapping around at runtime
2022-06-14 23:15:12 +0200 <CoolerX> let it melt away
2022-06-14 23:15:15 +0200 <CoolerX> with newtype
2022-06-14 23:15:15 +0200 <geekosaur> it will hurt exactly as much as all the extra wrapping from tuples does now
2022-06-14 23:15:23 +0200 <dsal> You're optimizing things based on something you don't seem to understand at all.
2022-06-14 23:15:31 +0200 <CoolerX> geekosaur: how is it extra? the tuples is the bare minimum wrapping I need
2022-06-14 23:15:49 +0200 <dsal> How do they even do what you need?
2022-06-14 23:15:50 +0200 <hpc> newtype is only different from data at runtime
2022-06-14 23:16:00 +0200julian(~julian@20.83.116.49) (Killed (NickServ (GHOST command used by tos9__!~tos9@python/site-packages/Julian)))
2022-06-14 23:16:03 +0200 <CoolerX> geekosaur: how do you go less than a tuple?
2022-06-14 23:16:13 +0200 <dsal> Not using a tuple is less than a tuple.
2022-06-14 23:16:13 +0200 <hpc> it makes your data definition 3 characters longer, and does nothing to the rest of your code to make it shorter or longer at all
2022-06-14 23:16:27 +0200 <CoolerX> dsal: ok and what would that look like?
2022-06-14 23:16:35 +0200 <geekosaur> you don't. you go equal to it but more readable and mroe maintainable: data Node a = Node a [Tree a]
2022-06-14 23:16:39 +0200 <dsal> Exactly as I pasted above a while ago.
2022-06-14 23:16:46 +0200 <CoolerX> you mean data ?
2022-06-14 23:17:04 +0200 <dsal> Why are you so obsessed with optimizing something you don't understand well before you can even measure whether your optimizations are helping?
2022-06-14 23:17:20 +0200 <CoolerX> I am not optimizing, I don't see the need to have extra wrapping
2022-06-14 23:17:34 +0200 <CoolerX> I could also add Foo Bar Baz Tree a
2022-06-14 23:17:38 +0200 <CoolerX> but that doesn't help
2022-06-14 23:17:47 +0200 <dsal> You're literally typing extra wrapping in every bit of your code. Why is it OK everywhere in the code?
2022-06-14 23:18:03 +0200 <CoolerX> dsal: it's paranthesis
2022-06-14 23:18:11 +0200 <CoolerX> which is necessary to group things anyway
2022-06-14 23:18:36 +0200 <dsal> No, it's a data type you're wrapping things in before handing them to your constructor.
2022-06-14 23:18:39 +0200 <hpc> it's parens in the same way a list is just brackets
2022-06-14 23:18:58 +0200 <CoolerX> dsal: ok?
2022-06-14 23:19:13 +0200 <CoolerX> but I need to group things to have it parse correctly
2022-06-14 23:19:30 +0200 <dsal> Your justification for wrapping everything into a data type before handing them to your constructor so far is that you think having a data type is overhead.
2022-06-14 23:19:36 +0200 <CoolerX> I will try the data thing
2022-06-14 23:20:34 +0200nicbk(~nicbk@user/nicbk) (Ping timeout: 240 seconds)
2022-06-14 23:22:16 +0200 <shapr> Is there a list of the largest open source Haskell codebases?
2022-06-14 23:22:48 +0200 <hpc> shapr: scroll through hackage and click on the names you recognize?
2022-06-14 23:22:51 +0200 <shapr> could work
2022-06-14 23:22:59 +0200 <dsal> shapr: It's hard to say. hackage has some. I've downloaded it all for various reasons.
2022-06-14 23:23:15 +0200 <CoolerX> ok https://bpa.st/GFTQ
2022-06-14 23:23:21 +0200 <CoolerX> that works
2022-06-14 23:23:34 +0200 <shapr> Oh, I could look for reverse deps on QuickCheck, right?
2022-06-14 23:23:47 +0200 <hpc> oh yeah, i always forget that's a thing
2022-06-14 23:24:20 +0200 <CoolerX> shapr: probably use the Github API?
2022-06-14 23:24:38 +0200stackdroid18(14094@user/stackdroid)
2022-06-14 23:24:49 +0200 <shapr> what about https://packdeps.haskellers.com/reverse/QuickCheck ?
2022-06-14 23:25:18 +0200 <shapr> now I want a datalog-style interface to hackage
2022-06-14 23:25:37 +0200 <CoolerX> dsal: so wdythink?
2022-06-14 23:26:07 +0200 <dsal> Looks like an improvement! `applyScript` looks like a fold.
2022-06-14 23:26:26 +0200 <CoolerX> yeah but I hate that
2022-06-14 23:26:35 +0200 <CoolerX> applyScript fs forest = foldl (\ forest f -> f forest) forest fs
2022-06-14 23:26:40 +0200 <CoolerX> looks unreadable
2022-06-14 23:26:52 +0200 <dsal> One of the other reasons to define your own types here is that you can generalize to stuff like `Functor` and `Foldable` and stuff more quickly and then "everything that can operate on [foldables and stuff] can also operate on this"
2022-06-14 23:28:13 +0200 <dsal> :t foldr ($)
2022-06-14 23:28:14 +0200 <lambdabot> Foldable t => a -> t (a -> a) -> a
2022-06-14 23:28:46 +0200 <CoolerX> no, according to the paper you compose the functions from left to right
2022-06-14 23:28:57 +0200 <dsal> :t foldl (flip ($))
2022-06-14 23:28:59 +0200 <lambdabot> Foldable t => a -> t (a -> a) -> a
2022-06-14 23:29:06 +0200 <CoolerX> yeah
2022-06-14 23:29:13 +0200 <dsal> :t foldl (&)
2022-06-14 23:29:14 +0200 <lambdabot> Foldable t => a -> t (a -> a) -> a
2022-06-14 23:29:38 +0200 <CoolerX> " you can generalize to stuff like `Functor` and `Foldable` and stuff more quickly " how?
2022-06-14 23:30:02 +0200 <CoolerX> I mean for tuples if you have those Functor and Foldable instances then you don't need to do anything
2022-06-14 23:30:04 +0200 <dsal> Well, if your Forest is Foldable, then `size = length`
2022-06-14 23:30:10 +0200 <CoolerX> if you use a type alias
2022-06-14 23:30:36 +0200 <dsal> If you use a type alias, you'll have both a foldable and a functor and they'll confuse you to the point where you'll give up on Haskell and start writing agda or something.
2022-06-14 23:31:07 +0200 <CoolerX> dsal: the forest is foldable in multiple ways
2022-06-14 23:31:44 +0200acidjnk(~acidjnk@p200300d0c7068b10c08ec98d32d09092.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2022-06-14 23:31:45 +0200 <CoolerX> hmm more rabbit holes https://wiki.portal.chalmers.se/agda/pmwiki.php
2022-06-14 23:32:22 +0200 <dsal> Sure. You can make newtypes for doing such things. But in general, the sooner you get to common code, the less you have to implement. It's the argument you were making for tuple, except it actually works. :)
2022-06-14 23:32:33 +0200 <CoolerX> ok
2022-06-14 23:33:17 +0200 <dsal> shapr: also hedgehog.
2022-06-14 23:33:25 +0200 <dsal> I don't currently hate it.
2022-06-14 23:33:35 +0200 <shapr> dsal: I have some disagreements
2022-06-14 23:33:44 +0200 <shapr> at the moment I'm happiest with leancheck
2022-06-14 23:35:33 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-14 23:36:06 +0200 <CoolerX> "In Hindley-Milner style languages, such as Haskell and ML, there is a clear
2022-06-14 23:36:06 +0200 <CoolerX> separation between types and values. In a dependently typed language the
2022-06-14 23:36:06 +0200 <CoolerX> line is more blurry – types can contain (depend on) arbitrary values and
2022-06-14 23:36:07 +0200 <CoolerX> appear as arguments and results of ordinary functions."
2022-06-14 23:36:09 +0200 <CoolerX> hmmm
2022-06-14 23:36:11 +0200 <CoolerX> really?
2022-06-14 23:36:24 +0200 <CoolerX> haskell has type constructors
2022-06-14 23:36:31 +0200Haskelytic(~Haskelyti@118.179.211.17)
2022-06-14 23:36:40 +0200 <CoolerX> which are functions that return types
2022-06-14 23:36:56 +0200 <CoolerX> and can take types are arguments
2022-06-14 23:36:59 +0200 <Haskelytic> Can we have functions that return kinds :)
2022-06-14 23:37:15 +0200 <Cupcakus> Hi all, beginner q I need to traverse a list and generate a accumulated value by running a function against each element of that list... which sounds like a fold... but the function in question needs to look ahead to the next value in the list (is there is one) to determine how it modifies the accumulator. I can't figure out how to do this without making my own fold
2022-06-14 23:37:18 +0200monaaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 276 seconds)
2022-06-14 23:37:48 +0200 <CoolerX> Haskelytic: maybe? https://livebook.manning.com/book/haskell-in-depth/chapter-12/v-12/
2022-06-14 23:38:08 +0200 <CoolerX> https://wiki.haskell.org/Template_Haskell
2022-06-14 23:38:46 +0200monaaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-14 23:38:55 +0200 <Haskelytic> XD  I feel like every time I have a question about haskell that sounds crazy, someone comes along and shows me that it's already been done
2022-06-14 23:39:04 +0200travisb(~travisb@2600:1700:7990:24e0:8ef9:6ccb:409e:cd42)
2022-06-14 23:39:21 +0200 <dsal> Cupcakus: zip is the short answer.
2022-06-14 23:39:45 +0200 <monochrom> Haskell type constructors still don't take value parameters.
2022-06-14 23:40:13 +0200 <CoolerX> zip xs (tail xs)
2022-06-14 23:40:13 +0200 <Haskelytic> What a shame...even c++ can do this :P
2022-06-14 23:40:38 +0200 <CoolerX> monochrom: oh you mean mix both types and values in the same function?
2022-06-14 23:40:55 +0200 <CoolerX> sounds like hell
2022-06-14 23:41:08 +0200 <monochrom> I don't think that's what I mean.
2022-06-14 23:41:26 +0200 <monochrom> I like to think that I write what I mean, no more no less, any "rephrasing" is distortion.
2022-06-14 23:41:27 +0200 <dsal> CoolerX: I'm not sure what you mean, but I've used DataKinds in useful ways.
2022-06-14 23:41:31 +0200 <CoolerX> like List sometype somenum
2022-06-14 23:41:42 +0200 <CoolerX> List Int 4
2022-06-14 23:41:46 +0200 <CoolerX> a list of 4 integers
2022-06-14 23:41:56 +0200 <dsal> You wouldn't use List, but yeah, you can do that with DataKinds.
2022-06-14 23:42:11 +0200 <CoolerX> ok
2022-06-14 23:42:13 +0200 <monochrom> Lean still does not let you say "List int 4", just on the ground that "List" takes one parameter only, not two.
2022-06-14 23:42:53 +0200 <dsal> In fact, the parser I'm working on has fixed-width records such that you have a value of type `T 3` that you can append to a value of type `T 5` and end up with a value of type `T 8`. The parser requires a type `T 94` so the parser won't compile unless you specify records whose sizes add up to 94.
2022-06-14 23:43:26 +0200 <monochrom> DataKind is still not letting a type constructor take a value parameter. It just seems that way by syntax punning.
2022-06-14 23:43:45 +0200monaaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-06-14 23:43:46 +0200 <CoolerX> dsal: actually Typescript supports this already
2022-06-14 23:43:54 +0200 <CoolerX> I found that out by accident
2022-06-14 23:44:09 +0200 <dsal> I've never had any accidents with TypeScript I'm willing to talk about.
2022-06-14 23:44:11 +0200 <CoolerX> it's supports a LOT of crazy stuff
2022-06-14 23:44:22 +0200alp(~alp@user/alp) (Remote host closed the connection)
2022-06-14 23:44:33 +0200 <dsal> I've heard of someone liking TypeScript, but every experience I've had with it has been terribly disappointing.
2022-06-14 23:44:46 +0200alp(~alp@user/alp)
2022-06-14 23:45:07 +0200 <Haskelytic> How so? dsal
2022-06-14 23:45:20 +0200 <Haskelytic> It definitely beats using plain JS
2022-06-14 23:45:35 +0200 <dsal> Which probably beats using plain PHP. That's not really an endorsement for me.
2022-06-14 23:45:58 +0200 <Haskelytic> I haven't used PHP since forever so I wouldn't know :)
2022-06-14 23:46:02 +0200 <dsal> When I have to do anything that's going to run in JS, I tend to either use Elm or PureScript.
2022-06-14 23:46:12 +0200 <CoolerX> dsal: for example it can take a string value like "/foo/:bar/baz" and parse it to say that bar is a variable and add that to the type definition of the request.params that is passed to your callback
2022-06-14 23:46:24 +0200 <CoolerX> all with type definitions
2022-06-14 23:46:27 +0200 <monochrom> I think I heard that Lean can also compile to JS. Maybe I might use that.
2022-06-14 23:47:15 +0200monaaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-14 23:47:15 +0200monaaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Read error: Connection reset by peer)
2022-06-14 23:47:31 +0200 <dsal> I had some Google AppScript stuff working on a spreadsheet that was painful and buggy. Rewrote it in PureScript and now it's boring and I don't ever get to work on it anymore.
2022-06-14 23:47:35 +0200 <dsal> CoolerX: You might enjoy https://www.youtube.com/watch?v=wNa3MMbhwS4
2022-06-14 23:48:08 +0200 <CoolerX> thx
2022-06-14 23:48:17 +0200nate4(~nate@98.45.169.16) (Ping timeout: 256 seconds)
2022-06-14 23:49:12 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2022-06-14 23:49:30 +0200 <dsal> (tl;dw: Compile-type type checking of regular expression capture group usage)
2022-06-14 23:50:12 +0200o-90(~o-90@gateway/tor-sasl/o-90)
2022-06-14 23:50:22 +0200 <CoolerX> ah this https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/express-serve-static-core/ind…
2022-06-14 23:50:46 +0200 <CoolerX> https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/express-serve-static-core/ind…
2022-06-14 23:50:48 +0200orcus(~orcus@user/brprice) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-14 23:50:48 +0200dispater(~dispater@user/brprice) (Quit: ZNC 1.8.2 - https://znc.in)
2022-06-14 23:50:58 +0200 <CoolerX> it parses the string
2022-06-14 23:51:32 +0200 <CoolerX> the crazy thing is that the string isn't even inside the generic angle brackets <>
2022-06-14 23:51:50 +0200 <CoolerX> app.put('/api/v1/users/:userId', async (req, res) => {
2022-06-14 23:51:59 +0200 <CoolerX> it matches the string give to the function as an argument
2022-06-14 23:52:02 +0200michalz(~michalz@185.246.204.107) (Remote host closed the connection)
2022-06-14 23:52:03 +0200 <dsal> I have a handicap that prevents me from taking anything JavaScript seriously and it extends to TypeScript.
2022-06-14 23:52:10 +0200 <CoolerX> XD
2022-06-14 23:52:22 +0200dispater(~dispater@user/brprice)
2022-06-14 23:52:43 +0200 <Haskelytic> dsal: your disdain for JS is humorous :)
2022-06-14 23:52:48 +0200dispater(~dispater@user/brprice) (Client Quit)
2022-06-14 23:52:53 +0200 <dsal> I try to be honest about it.
2022-06-14 23:52:57 +0200 <Haskelytic> I can empathize though....
2022-06-14 23:53:04 +0200 <dsal> I know some people like it, but people are wrong about lots of things.
2022-06-14 23:53:08 +0200 <Haskelytic> The only thing I hate more than writing JS is reading other people's JS
2022-06-14 23:53:19 +0200 <dsal> I don't even like reading my own JS.
2022-06-14 23:53:25 +0200 <maralorn> Entitled things people say in the Haskell channel. ^^
2022-06-14 23:53:31 +0200 <CoolerX> I think Typescript reminds me a lot of the crazy meta-programming in C++
2022-06-14 23:53:35 +0200monaaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-14 23:53:38 +0200monaaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Read error: Connection reset by peer)
2022-06-14 23:53:46 +0200 <CoolerX> looks turing complete
2022-06-14 23:53:57 +0200 <CoolerX> or close to it
2022-06-14 23:54:09 +0200 <Haskelytic> When are we getting a one-language-to-rule-them-all scenario
2022-06-14 23:54:20 +0200dispater(~dispater@user/brprice)
2022-06-14 23:54:27 +0200 <dsal> I'm not sure "one" is the correct number of languages.
2022-06-14 23:54:27 +0200 <CoolerX> Haskelytic: never
2022-06-14 23:54:30 +0200 <Haskelytic> types/values collapse and we return to simplicity :)
2022-06-14 23:54:33 +0200 <monochrom> When humanity ends.
2022-06-14 23:54:44 +0200 <CoolerX> dsal: yeah we need at least 2 for it to be binary
2022-06-14 23:54:46 +0200 <Haskelytic> monochrom: misanthrope over here eh
2022-06-14 23:54:51 +0200orcus(~orcus@user/brprice)
2022-06-14 23:55:02 +0200 <CoolerX> can't transmit any information with just 1
2022-06-14 23:55:07 +0200 <geekosaur> people try that occasionally and end up with https://xkcd.com/927/
2022-06-14 23:55:29 +0200 <dsal> I mean, C++ can't even become one language.
2022-06-14 23:55:31 +0200 <Haskelytic> geekosaur: XD
2022-06-14 23:55:36 +0200 <Haskelytic> touche
2022-06-14 23:55:38 +0200monaaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-06-14 23:55:48 +0200 <Haskelytic> dsal: XD
2022-06-14 23:55:52 +0200 <dsal> Haskell's a lot of languages, but kind of explicit about it.
2022-06-14 23:55:52 +0200 <monochrom> Or just understanding human nature that people will want differences.
2022-06-14 23:55:58 +0200 <Haskelytic> C++ is too easy to bully
2022-06-14 23:56:02 +0200 <CoolerX> geekosaur: couldn't that be said of matrix?
2022-06-14 23:56:18 +0200 <dsal> Haskelytic: Yeah, I shouldn't pick on C++.
2022-06-14 23:56:27 +0200 <dsal> There are different languages for different things, though.
2022-06-14 23:56:38 +0200 <CoolerX> although matrix isn't trying to replace anything
2022-06-14 23:56:51 +0200 <dsal> rust and Haskell can coexist. I do still do some embedded stuff now and then.
2022-06-14 23:57:03 +0200 <monochrom> You can't even get iPhone fans and Android fans to agree on one single phone OS. And that's just two camps.
2022-06-14 23:57:07 +0200 <geekosaur> federation a la matrix is trying to sidestep it. rest assured someone else will decide there's a better way at some point
2022-06-14 23:57:43 +0200 <Haskelytic> I haven't checked out rust since 2013...how is it nowadays?
2022-06-14 23:57:47 +0200 <dsal> federation via XMPP was doing pretty well back before large companies that adopted it and got lots of people onto federated platforms undid it.
2022-06-14 23:57:58 +0200[_][itchyjunk]
2022-06-14 23:58:00 +0200 <dsal> Haskelytic: I've still never actually done anything with rust, but it looks pretty great.
2022-06-14 23:58:05 +0200 <dsal> It was kind of terrible back then. :)
2022-06-14 23:58:19 +0200 <geekosaur> yeh, matrix itself is the new xmpp. give it time
2022-06-14 23:58:25 +0200 <CoolerX> Haskelytic: accumulated more rust
2022-06-14 23:58:30 +0200 <CoolerX> needs a polishing
2022-06-14 23:58:44 +0200 <CoolerX> dsal: oh then you should start now
2022-06-14 23:58:51 +0200 <CoolerX> webasm is a great place to start
2022-06-14 23:58:51 +0200 <dsal> I've also never tried matrix. Doesn't seem as easy to get going as an XMPP service. I wrote a *ton* of XMPP code back in the day.
2022-06-14 23:59:28 +0200 <dsal> CoolerX: webasm from rust? I don't do much web stuff. I had to make a UI change to an old elm app last night. That was kind of pleasant.
2022-06-14 23:59:45 +0200 <dsal> elm is a pretty cool language that really wishes all of its users would go away.