2022/08/09

2022-08-09 00:01:37 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Ping timeout: 252 seconds)
2022-08-09 00:01:47 +0200welterde(welterde@thinkbase.srv.welterde.de)
2022-08-09 00:03:05 +0200ProofTechnique(sid79547@id-79547.ilkley.irccloud.com)
2022-08-09 00:03:05 +0200tritlo(sid58727@user/tritlo)
2022-08-09 00:03:06 +0200rubin55(sid175221@id-175221.hampstead.irccloud.com)
2022-08-09 00:03:12 +0200Raito_Bezarius(~Raito@wireguard/tunneler/raito-bezarius)
2022-08-09 00:03:25 +0200Kamuela(sid111576@id-111576.tinside.irccloud.com)
2022-08-09 00:03:37 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-08-09 00:03:47 +0200jonrh(sid5185@id-5185.ilkley.irccloud.com)
2022-08-09 00:04:09 +0200dagit(~dagit@2001:558:6025:38:6476:a063:d05a:44da)
2022-08-09 00:04:21 +0200ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2022-08-09 00:04:34 +0200ec(~ec@gateway/tor-sasl/ec)
2022-08-09 00:07:00 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-08-09 00:08:11 +0200malte(~malte@mal.tc) (Ping timeout: 244 seconds)
2022-08-09 00:12:51 +0200haritzondo(~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Quit: ZNC 1.8.2+deb2 - https://znc.in)
2022-08-09 00:13:07 +0200qhong_qhong
2022-08-09 00:13:10 +0200haritz(~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk)
2022-08-09 00:13:10 +0200haritz(~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk) (Changing host)
2022-08-09 00:13:10 +0200haritz(~hrtz@user/haritz)
2022-08-09 00:15:24 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-08-09 00:16:27 +0200cheater(~Username@user/cheater) (Ping timeout: 244 seconds)
2022-08-09 00:16:38 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-08-09 00:17:12 +0200cheater(~Username@user/cheater)
2022-08-09 00:20:20 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 255 seconds)
2022-08-09 00:25:12 +0200cheater1__(~Username@user/cheater)
2022-08-09 00:25:32 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2022-08-09 00:25:36 +0200cheater1__cheater
2022-08-09 00:25:37 +0200hellwolf(~hellwolf@7-41-50-84.sta.estpak.ee) (Remote host closed the connection)
2022-08-09 00:29:32 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com)
2022-08-09 00:31:58 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 00:37:52 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)
2022-08-09 00:38:31 +0200neceve(~quassel@2.26.93.14) (Ping timeout: 268 seconds)
2022-08-09 00:43:18 +0200dagit(~dagit@2001:558:6025:38:6476:a063:d05a:44da) (Ping timeout: 264 seconds)
2022-08-09 00:45:09 +0200danso_odanso
2022-08-09 00:47:16 +0200ubert(~Thunderbi@178.115.60.12.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
2022-08-09 00:48:58 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 00:49:25 +0200pavonia(~user@user/siracusa)
2022-08-09 00:49:31 +0200acidjnk_new(~acidjnk@p200300d6e705865168dfbefacb50e5ef.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2022-08-09 00:50:58 +0200xff0x_(~xff0x@2405:6580:b080:900:84d3:74ed:839d:b6c0) (Ping timeout: 240 seconds)
2022-08-09 00:51:10 +0200AlexNoo_AlexNoo
2022-08-09 00:53:08 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-09 00:53:08 +0200dagit(~dagit@2001:558:6025:38:6476:a063:d05a:44da)
2022-08-09 00:54:00 +0200zerozzz
2022-08-09 00:56:45 +0200hellwolf(~hellwolf@7-41-50-84.sta.estpak.ee)
2022-08-09 00:57:20 +0200__xor_xor
2022-08-09 00:58:16 +0200 <_xor> Don't really use hs/ghc much, so newbie question, but: If I've built a project using `cabal v2-build ...`, how can I specify the actual output directory for the artifacts?
2022-08-09 00:58:49 +0200 <_xor> Currently they're output into dist-newstyle/build/...(8 more dirs).../opt/build/the-actual-executable
2022-08-09 00:59:32 +0200 <_xor> Reason I'd like to flatten that structure and output the artifacts is because I'm whipping up a quick FreeBSD port for this app and need to know where the output artifacts can be found so that they can be packaged.
2022-08-09 01:01:18 +0200 <merijn> _xor: ok, so the real answer is: You don't want to use cabal-install for something like ports
2022-08-09 01:01:28 +0200 <merijn> Lemme look up the relevant docs
2022-08-09 01:03:53 +0200 <merijn> _xor: For distributors (i.e. maintainers for things like ports) the intended interface is Setup.hs https://cabal.readthedocs.io/en/3.6/setup-commands.html
2022-08-09 01:04:15 +0200 <merijn> _xor: Setup.hs lets you completely control where all build artifacts go
2022-08-09 01:04:35 +0200 <merijn> _xor: And lets you make system specific tweaks to where to look for dependencies, etc.
2022-08-09 01:05:25 +0200jgeerds(~jgeerds@55d46bad.access.ecotel.net) (Ping timeout: 252 seconds)
2022-08-09 01:05:29 +0200 <merijn> there was a guide on the proper way to do this, but I can't find it right now
2022-08-09 01:05:56 +0200 <_xor> Hmm
2022-08-09 01:06:01 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 01:06:20 +0200 <_xor> I've been manually building hasura whenever there's been a new release, but getting tired of doing that. So I'm throwing it into my ports tree.
2022-08-09 01:06:29 +0200 <merijn> _xor: The short summary is: "cabal-install is intended for developers and does not let you customise where things go", Cabal (used by both cabal-install and Setup.hs) supports both
2022-08-09 01:07:03 +0200 <merijn> At the cost of being a bit more manual (well, until you script it, which is kinda what you're intended to do)
2022-08-09 01:07:08 +0200 <_xor> Will submit it upstream once it's not so hacky, but currently I'm basically just rigging it so that the port Makefile is just a shim to do the same build steps I do when manually building it.
2022-08-09 01:07:20 +0200 <merijn> _xor: You might wanna check out how some linux distros package things
2022-08-09 01:07:36 +0200son0p(~ff@181.136.122.143)
2022-08-09 01:07:42 +0200 <_xor> I had some issues with extracting & vendoring the deps, so I figured I'd do this as a stop-gap for now and then revise it next to do a more "proper" build, then submit that upstream.
2022-08-09 01:07:59 +0200cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2022-08-09 01:08:23 +0200cheater(~Username@user/cheater)
2022-08-09 01:08:24 +0200luffy(~chenqisu1@183.217.201.23)
2022-08-09 01:08:36 +0200 <_xor> You mean how they produce the build artifacts or how they package them? The former makes sense, but the latter is...platform-specific in my case for FreeBSD.
2022-08-09 01:08:39 +0200 <merijn> _xor: You've been distributing the final binar, yeah?
2022-08-09 01:08:45 +0200 <_xor> Yeah
2022-08-09 01:08:46 +0200luffy(~chenqisu1@183.217.201.23) (Remote host closed the connection)
2022-08-09 01:08:47 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 268 seconds)
2022-08-09 01:09:05 +0200luffy(~chenqisu1@183.217.201.23)
2022-08-09 01:09:10 +0200 <merijn> _xor: And this is a program (i.e. not a Haskell library)?
2022-08-09 01:09:17 +0200 <_xor> yup
2022-08-09 01:09:23 +0200 <_xor> https://github.com/hasura/graphql-engine
2022-08-09 01:09:40 +0200 <_xor> It's a single exec + some static assets (css/js/png/etc).
2022-08-09 01:09:43 +0200 <_xor> Brb
2022-08-09 01:09:51 +0200 <merijn> _xor: ok, then the ultra hacky work around is to just "cabal install --install-method=copy --installdir=." :p
2022-08-09 01:10:12 +0200 <merijn> ah, I guess finding the static assets is your problem?
2022-08-09 01:11:25 +0200 <merijn> _xor: You wanna look at this: https://cabal.readthedocs.io/en/3.6/setup-commands.html#prefix-independence
2022-08-09 01:12:29 +0200yaroot_(~yaroot@p2543146-ipngn11101souka.saitama.ocn.ne.jp)
2022-08-09 01:13:17 +0200yaroot(~yaroot@2400:4052:ac0:d900:680e:dbff:fe1e:4953) (Ping timeout: 244 seconds)
2022-08-09 01:13:18 +0200yaroot_yaroot
2022-08-09 01:13:25 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-09 01:14:10 +0200xff0x_(~xff0x@2405:6580:b080:900:6c03:b0ff:76cc:e68c)
2022-08-09 01:15:00 +0200 <merijn> And with that, I'm off
2022-08-09 01:17:50 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-08-09 01:17:50 +0200wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-08-09 01:17:50 +0200wroathe(~wroathe@user/wroathe)
2022-08-09 01:20:28 +0200tzh_(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-08-09 01:21:06 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
2022-08-09 01:22:53 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-08-09 01:24:38 +0200chomwitt(~chomwitt@2a02:587:dc12:7400:7267:ab5e:fc89:abf0) (Ping timeout: 255 seconds)
2022-08-09 01:26:48 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-08-09 01:26:48 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2022-08-09 01:32:17 +0200gentauro(~gentauro@user/gentauro)
2022-08-09 01:35:51 +0200chimp_Psybur
2022-08-09 01:44:39 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2022-08-09 01:46:04 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-08-09 01:46:38 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-09 01:48:30 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-08-09 01:48:57 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-09 01:49:59 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-09 01:54:22 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)
2022-08-09 02:06:02 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 02:09:05 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-09 02:11:01 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)
2022-08-09 02:15:19 +0200hounded_1969(~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Quit: Leaving)
2022-08-09 02:16:58 +0200hounded(~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Remote host closed the connection)
2022-08-09 02:16:58 +0200hounded_woodstoc(~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Remote host closed the connection)
2022-08-09 02:17:56 +0200off^(~off@206.85.120.17)
2022-08-09 02:19:05 +0200Sgeo(~Sgeo@user/sgeo)
2022-08-09 02:20:26 +0200noteness(~noteness@user/noteness) (Remote host closed the connection)
2022-08-09 02:21:19 +0200werneta(~werneta@137.78.30.207) (Ping timeout: 252 seconds)
2022-08-09 02:21:43 +0200noteness(~noteness@user/noteness)
2022-08-09 02:22:09 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 02:23:56 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-08-09 02:24:13 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 02:27:40 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)
2022-08-09 02:30:44 +0200causal(~user@50.35.83.177)
2022-08-09 02:32:00 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) (Quit: Konversation terminated!)
2022-08-09 02:36:53 +0200vysn(~vysn@user/vysn)
2022-08-09 02:37:03 +0200hmw[at]1(~hmw@84-113-100-7.cable.dynamic.surfer.at) (Quit: Leaving.)
2022-08-09 02:37:20 +0200hmw[at](~hmw@84-113-100-7.cable.dynamic.surfer.at)
2022-08-09 02:38:52 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 02:42:56 +0200waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 255 seconds)
2022-08-09 02:44:47 +0200stef204(~stef204@user/stef204)
2022-08-09 02:50:53 +0200PHO`_PHO`
2022-08-09 03:02:55 +0200nilradical(~nilradica@user/naso)
2022-08-09 03:08:11 +0200xff0x_(~xff0x@2405:6580:b080:900:6c03:b0ff:76cc:e68c) (Ping timeout: 255 seconds)
2022-08-09 03:10:26 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-08-09 03:10:56 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-08-09 03:11:04 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-08-09 03:14:09 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-09 03:14:47 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-09 03:16:26 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-08-09 03:16:55 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-09 03:17:12 +0200albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-08-09 03:21:10 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-08-09 03:21:26 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2022-08-09 03:29:03 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2022-08-09 03:34:17 +0200frost(~frost@user/frost)
2022-08-09 03:35:28 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-08-09 03:36:04 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-09 03:38:49 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-08-09 03:38:58 +0200machined1od(~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 240 seconds)
2022-08-09 03:39:17 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-09 03:45:11 +0200instantaphex(~jb@c-73-171-252-84.hsd1.fl.comcast.net)
2022-08-09 03:47:25 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-09 03:47:38 +0200gurkengl1s(~gurkengla@84.138.199.46) (Ping timeout: 240 seconds)
2022-08-09 03:50:17 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 268 seconds)
2022-08-09 03:50:33 +0200xff0x_(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-08-09 03:50:55 +0200vysn(~vysn@user/vysn) (Ping timeout: 268 seconds)
2022-08-09 03:51:49 +0200aeka(~aeka@2606:6080:1001:17:9ea4:71f9:d294:d7b7) (Quit: ZNC 1.8.2 - https://znc.in)
2022-08-09 03:52:06 +0200aeka(~aeka@2606:6080:1001:17:9ea4:71f9:d294:d7b7)
2022-08-09 04:09:07 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-08-09 04:16:40 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2022-08-09 04:16:40 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643)
2022-08-09 04:16:40 +0200finn_elijaFinnElija
2022-08-09 04:22:20 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-08-09 04:23:19 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-08-09 04:27:21 +0200stef204(~stef204@user/stef204) (Quit: WeeChat 3.6)
2022-08-09 04:31:41 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-09 04:32:20 +0200hsw(~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net)
2022-08-09 04:34:40 +0200td_(~td@muedsl-82-207-238-079.citykom.de) (Ping timeout: 268 seconds)
2022-08-09 04:35:58 +0200td_(~td@94.134.91.254)
2022-08-09 04:38:02 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-09 04:39:04 +0200noteness(~noteness@user/noteness) (Ping timeout: 268 seconds)
2022-08-09 04:39:14 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-09 04:39:36 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2022-08-09 04:40:16 +0200noteness(~noteness@user/noteness)
2022-08-09 04:49:28 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)
2022-08-09 04:51:19 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 04:54:44 +0200Katarushisu3(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
2022-08-09 04:55:18 +0200ysh__(sid6017@id-6017.ilkley.irccloud.com)
2022-08-09 04:55:18 +0200jmct_(sid160793@id-160793.tinside.irccloud.com)
2022-08-09 04:55:19 +0200megeve_(sid523379@id-523379.hampstead.irccloud.com)
2022-08-09 04:55:28 +0200agander_m__(sid407952@id-407952.tinside.irccloud.com)
2022-08-09 04:55:34 +0200Noinia(~Frank@77-162-168-71.fixed.kpn.net)
2022-08-09 04:56:27 +0200bollu4(~bollu@159.65.151.13)
2022-08-09 04:56:34 +0200rush(~sloorush@52.187.184.81)
2022-08-09 04:56:44 +0200jludwig89(~justin@li657-110.members.linode.com)
2022-08-09 04:56:45 +0200Hafydd_(jc@user/hafydd)
2022-08-09 04:57:01 +0200bonz060_(~quassel@2001:bc8:47a4:a23::1)
2022-08-09 04:57:05 +0200dumptruckman_(~dumptruck@23-239-13-163.ip.linodeusercontent.com)
2022-08-09 04:57:22 +0200marquis_1ndras(~marquis_a@124-150-76-210.tpgi.com.au)
2022-08-09 04:57:33 +0200Clint_(~Clint@user/clint)
2022-08-09 04:57:44 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-08-09 04:57:54 +0200Jonno_FTW(~come@api.carswap.me)
2022-08-09 04:57:55 +0200Jonno_FTW(~come@api.carswap.me) (Changing host)
2022-08-09 04:57:55 +0200Jonno_FTW(~come@user/jonno-ftw/x-0835346)
2022-08-09 04:57:56 +0200wagle_(~wagle@quassel.wagle.io)
2022-08-09 04:58:05 +0200Hecate_(~mariposa@user/hecate)
2022-08-09 04:58:18 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-08-09 04:58:26 +0200red-snail(~snail@static.151.210.203.116.clients.your-server.de)
2022-08-09 04:58:27 +0200byorgey_(~byorgey@155.138.238.211)
2022-08-09 04:58:30 +0200uroboros(~ouroboros@user/ouroboros)
2022-08-09 04:58:31 +0200poscat0x04(~poscat@114.245.109.158)
2022-08-09 04:58:31 +0200bgamari_(~bgamari@64.223.132.170)
2022-08-09 04:58:31 +0200kaol_(~kaol@94-237-42-30.nl-ams1.upcloud.host)
2022-08-09 04:59:06 +0200Philonous_(~Philonous@user/philonous)
2022-08-09 04:59:23 +0200absentia_(~absentia@24-246-53-210.cable.teksavvy.com)
2022-08-09 04:59:28 +0200aku_(~aku@163.172.137.34)
2022-08-09 04:59:36 +0200ente`(~daemon@inferno.barfooze.de)
2022-08-09 04:59:43 +0200Igloo(~ian@matrix.chaos.earth.li)
2022-08-09 04:59:47 +0200carbolymer_(~carbolyme@dropacid.net)
2022-08-09 04:59:49 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 04:59:55 +0200lisk1n(~liskin@xmonad/liskin)
2022-08-09 05:00:19 +0200Fischmie1(~Fischmiep@user/Fischmiep)
2022-08-09 05:00:32 +0200orcus-(~orcus@user/brprice)
2022-08-09 05:00:44 +0200gonz_______(sid304396@id-304396.lymington.irccloud.com)
2022-08-09 05:01:03 +0200wallymathieu_(sid533252@id-533252.uxbridge.irccloud.com)
2022-08-09 05:01:06 +0200LiChen_(uid561437@id-561437.tinside.irccloud.com)
2022-08-09 05:01:06 +0200elvishjerricco1(~elvishjer@2001:470:69fc:105::6172)
2022-08-09 05:01:18 +0200statusfailed(~statusfai@statusfailed.com)
2022-08-09 05:01:26 +0200pierrot_(~pi@user/pierrot)
2022-08-09 05:01:29 +0200dunj3_(~dunj3@kingdread.de)
2022-08-09 05:01:33 +0200hyiltiz_(~quassel@31.220.5.250)
2022-08-09 05:01:48 +0200lagash(lagash@lagash.shelltalk.net)
2022-08-09 05:02:01 +0200dyniec(~dyniec@mail.dybiec.info)
2022-08-09 05:02:15 +0200systemfault_(sid267009@id-267009.uxbridge.irccloud.com)
2022-08-09 05:03:04 +0200rodental(~rodental@38.146.5.222) (*.net *.split)
2022-08-09 05:03:04 +0200zaquest(~notzaques@5.130.79.72) (*.net *.split)
2022-08-09 05:03:04 +0200jludwig(~justin@li657-110.members.linode.com) (*.net *.split)
2022-08-09 05:03:04 +0200anderson(~ande@user/anderson) (*.net *.split)
2022-08-09 05:03:04 +0200Square2(~a@user/square) (*.net *.split)
2022-08-09 05:03:04 +0200Vajb(~Vajb@2001:999:70c:2b99:3e15:6929:5bc6:c014) (*.net *.split)
2022-08-09 05:03:04 +0200statusfa1led(~statusfai@statusfailed.com) (*.net *.split)
2022-08-09 05:03:04 +0200lagash_(lagash@lagash.shelltalk.net) (*.net *.split)
2022-08-09 05:03:04 +0200Jonno_FT1(~come@api.carswap.me) (*.net *.split)
2022-08-09 05:03:04 +0200glider_(~glider@user/glider) (*.net *.split)
2022-08-09 05:03:04 +0200WzC(~Frank@77-162-168-71.fixed.kpn.net) (*.net *.split)
2022-08-09 05:03:04 +0200ente`_(~daemon@inferno.barfooze.de) (*.net *.split)
2022-08-09 05:03:04 +0200barrucadu(~barrucadu@carcosa.barrucadu.co.uk) (*.net *.split)
2022-08-09 05:03:04 +0200jao-(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (*.net *.split)
2022-08-09 05:03:04 +0200absentia(~absentia@user/absentia) (*.net *.split)
2022-08-09 05:03:04 +0200sloorush(~sloorush@52.187.184.81) (*.net *.split)
2022-08-09 05:03:04 +0200ian_(~ian@matrix.chaos.earth.li) (*.net *.split)
2022-08-09 05:03:04 +0200Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (*.net *.split)
2022-08-09 05:03:04 +0200bollu(~bollu@159.65.151.13) (*.net *.split)
2022-08-09 05:03:04 +0200byorgey(~byorgey@155.138.238.211) (*.net *.split)
2022-08-09 05:03:04 +0200cosimone`(~user@93-44-186-171.ip98.fastwebnet.it) (*.net *.split)
2022-08-09 05:03:04 +0200shailangsa_(~shailangs@host86-185-98-81.range86-185.btcentralplus.com) (*.net *.split)
2022-08-09 05:03:04 +0200poscat(~poscat@114.245.109.158) (*.net *.split)
2022-08-09 05:03:04 +0200sektor[m](~sektor@2001:470:69fc:105::2:3f60) (*.net *.split)
2022-08-09 05:03:04 +0200jean-paul[m](~jean-paul@2001:470:69fc:105::d1ab) (*.net *.split)
2022-08-09 05:03:04 +0200wallymathieu(sid533252@id-533252.uxbridge.irccloud.com) (*.net *.split)
2022-08-09 05:03:04 +0200megeve(sid523379@id-523379.hampstead.irccloud.com) (*.net *.split)
2022-08-09 05:03:04 +0200agander_m_(sid407952@id-407952.tinside.irccloud.com) (*.net *.split)
2022-08-09 05:03:04 +0200Boarders__(sid425905@id-425905.lymington.irccloud.com) (*.net *.split)
2022-08-09 05:03:04 +0200gonz______(sid304396@id-304396.lymington.irccloud.com) (*.net *.split)
2022-08-09 05:03:04 +0200mht-wtf(~mht@2a03:b0c0:3:e0::1e2:c001) (*.net *.split)
2022-08-09 05:03:04 +0200liskin(~liskin@xmonad/liskin) (*.net *.split)
2022-08-09 05:03:04 +0200Hafydd(jc@owlchat.newnet.net) (*.net *.split)
2022-08-09 05:03:04 +0200jmct(sid160793@id-160793.tinside.irccloud.com) (*.net *.split)
2022-08-09 05:03:04 +0200dyniec_(~dyniec@mail.dybiec.info) (*.net *.split)
2022-08-09 05:03:04 +0200ysh_(sid6017@id-6017.ilkley.irccloud.com) (*.net *.split)
2022-08-09 05:03:04 +0200nshepperd(nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (*.net *.split)
2022-08-09 05:03:04 +0200berberman(~berberman@user/berberman) (*.net *.split)
2022-08-09 05:03:04 +0200pierrot(~pi@user/pierrot) (*.net *.split)
2022-08-09 05:03:04 +0200marquis_andras(~marquis_a@124-150-76-210.tpgi.com.au) (*.net *.split)
2022-08-09 05:03:04 +0200catern(~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407) (*.net *.split)
2022-08-09 05:03:04 +0200bonz060(~quassel@2001:bc8:47a4:a23::1) (*.net *.split)
2022-08-09 05:03:04 +0200Hash(~Hash@tunnel686959-pt.tunnel.tserv15.lax1.ipv6.he.net) (*.net *.split)
2022-08-09 05:03:04 +0200bgamari(~bgamari@64.223.132.170) (*.net *.split)
2022-08-09 05:03:04 +0200auri(~auri@fsf/member/auri) (*.net *.split)
2022-08-09 05:03:04 +0200systemfault(sid267009@id-267009.uxbridge.irccloud.com) (*.net *.split)
2022-08-09 05:03:04 +0200aku(~aku@163.172.137.34) (*.net *.split)
2022-08-09 05:03:04 +0200Hecate(~mariposa@user/hecate) (*.net *.split)
2022-08-09 05:03:04 +0200kaol(~kaol@94-237-42-30.nl-ams1.upcloud.host) (*.net *.split)
2022-08-09 05:03:04 +0200heath(~heath@user/heath) (*.net *.split)
2022-08-09 05:03:04 +0200xstill_(xstill@fimu/xstill) (*.net *.split)
2022-08-09 05:03:04 +0200orcus(~orcus@user/brprice) (*.net *.split)
2022-08-09 05:03:04 +0200ouroboros(~ouroboros@user/ouroboros) (*.net *.split)
2022-08-09 05:03:05 +0200dunj3(~dunj3@kingdread.de) (*.net *.split)
2022-08-09 05:03:05 +0200hyiltiz(~quassel@31.220.5.250) (*.net *.split)
2022-08-09 05:03:05 +0200elvishjerricco(~elvishjer@2001:470:69fc:105::6172) (*.net *.split)
2022-08-09 05:03:05 +0200Fischmiep(~Fischmiep@user/Fischmiep) (*.net *.split)
2022-08-09 05:03:05 +0200DigitalKiwi(~kiwi@137.184.156.191) (*.net *.split)
2022-08-09 05:03:05 +0200mjacob(~mjacob@adrastea.uberspace.de) (*.net *.split)
2022-08-09 05:03:05 +0200wagle(~wagle@quassel.wagle.io) (*.net *.split)
2022-08-09 05:03:05 +0200LiChen(uid561437@id-561437.tinside.irccloud.com) (*.net *.split)
2022-08-09 05:03:05 +0200forell(~forell@user/forell) (*.net *.split)
2022-08-09 05:03:05 +0200Philonous(~Philonous@user/philonous) (*.net *.split)
2022-08-09 05:03:05 +0200JSharp(sid4580@id-4580.lymington.irccloud.com) (*.net *.split)
2022-08-09 05:03:05 +0200Clint(~Clint@user/clint) (*.net *.split)
2022-08-09 05:03:05 +0200carbolymer(~carbolyme@dropacid.net) (*.net *.split)
2022-08-09 05:03:05 +0200dumptruckman(~dumptruck@23-239-13-163.ip.linodeusercontent.com) (*.net *.split)
2022-08-09 05:03:05 +0200red-snail1(~snail@static.151.210.203.116.clients.your-server.de) (*.net *.split)
2022-08-09 05:03:05 +0200remexre(~remexre@user/remexre) (*.net *.split)
2022-08-09 05:03:05 +0200leah2(~leah@vuxu.org) (*.net *.split)
2022-08-09 05:03:06 +0200jmct_jmct
2022-08-09 05:03:06 +0200wallymathieu_wallymathieu
2022-08-09 05:03:06 +0200systemfault_systemfault
2022-08-09 05:03:07 +0200megeve_megeve
2022-08-09 05:03:08 +0200jludwig89jludwig
2022-08-09 05:03:08 +0200Katarushisu3Katarushisu
2022-08-09 05:03:08 +0200bollu4bollu
2022-08-09 05:03:08 +0200uroborosouroboros
2022-08-09 05:03:08 +0200dumptruckman_dumptruckman
2022-08-09 05:03:18 +0200Boarders___(sid425905@id-425905.lymington.irccloud.com)
2022-08-09 05:03:24 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-08-09 05:03:37 +0200zaquest(~notzaques@5.130.79.72)
2022-08-09 05:03:47 +0200remexre(~remexre@user/remexre)
2022-08-09 05:04:14 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-09 05:04:47 +0200mht-wtf(~mht@mht.wtf)
2022-08-09 05:05:01 +0200JSharp(sid4580@id-4580.lymington.irccloud.com)
2022-08-09 05:05:33 +0200anderson(~ande@user/anderson)
2022-08-09 05:06:34 +0200glider(~glider@user/glider)
2022-08-09 05:06:40 +0200cosimone`(~user@93-44-186-171.ip98.fastwebnet.it)
2022-08-09 05:07:40 +0200nshepperd(nshepperd@2600:3c03::f03c:92ff:fe28:92c9)
2022-08-09 05:08:00 +0200barrucadu(~barrucadu@carcosa.barrucadu.co.uk)
2022-08-09 05:08:24 +0200DigitalKiwi(~kiwi@2604:a880:400:d0::1ca0:e001)
2022-08-09 05:08:36 +0200heath(~heath@user/heath)
2022-08-09 05:08:40 +0200sektor[m](~sektor@2001:470:69fc:105::2:3f60)
2022-08-09 05:08:54 +0200mjacob(~mjacob@adrastea.uberspace.de)
2022-08-09 05:10:38 +0200rodental(~rodental@38.146.5.222)
2022-08-09 05:11:48 +0200jean-paul[m](~jean-paul@2001:470:69fc:105::d1ab)
2022-08-09 05:11:53 +0200Square(~a@user/square)
2022-08-09 05:12:05 +0200leah2(~leah@vuxu.org)
2022-08-09 05:12:41 +0200Hash(~Hash@tunnel686959-pt.tunnel.tserv15.lax1.ipv6.he.net)
2022-08-09 05:12:47 +0200hololeap_hololeap
2022-08-09 05:13:36 +0200auri(~auri@fsf/member/auri)
2022-08-09 05:13:40 +0200forell(~forell@user/forell)
2022-08-09 05:13:42 +0200xstill_(xstill@fimu/xstill)
2022-08-09 05:13:45 +0200berberman(~berberman@user/berberman)
2022-08-09 05:18:29 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 268 seconds)
2022-08-09 05:20:21 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 05:27:01 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi)
2022-08-09 05:27:10 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds)
2022-08-09 05:28:10 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-09 05:28:45 +0200nilradical(~nilradica@user/naso)
2022-08-09 05:29:47 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-09 05:30:03 +0200nilradical(~nilradica@user/naso)
2022-08-09 05:30:41 +0200jargon(~jargon@153.sub-174-205-231.myvzw.com)
2022-08-09 05:35:05 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-08-09 05:35:34 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-08-09 05:39:28 +0200lemonsnicks(~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
2022-08-09 05:40:43 +0200 <Inst> erm
2022-08-09 05:40:44 +0200 <Inst> question
2022-08-09 05:40:47 +0200 <Inst> is it dumb to attempt to use
2022-08-09 05:41:31 +0200instantaphex(~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 252 seconds)
2022-08-09 05:42:30 +0200 <Inst> criterion to benchmark a function that normally takes 30-90 minutes to run?
2022-08-09 05:45:44 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-09 05:47:11 +0200nilradical(~nilradica@user/naso)
2022-08-09 05:47:18 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-09 05:51:13 +0200shailangsa(~shailangs@host86-185-98-81.range86-185.btcentralplus.com)
2022-08-09 05:51:47 +0200nilradical(~nilradica@user/naso) (Ping timeout: 252 seconds)
2022-08-09 05:52:58 +0200hakutaku(~hakutaku@94.25.228.55)
2022-08-09 06:03:10 +0200Vajb(~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-08-09 06:03:42 +0200Vajb(~Vajb@2001:999:70c:2b99:3e15:6929:5bc6:c014)
2022-08-09 06:04:45 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-08-09 06:10:38 +0200vglfr(~vglfr@194.9.14.33) (Ping timeout: 240 seconds)
2022-08-09 06:12:44 +0200vglfr(~vglfr@194.9.14.33)
2022-08-09 06:13:28 +0200nilradical(~nilradica@user/naso)
2022-08-09 06:19:30 +0200EsoAlgo(~EsoAlgo@129.146.136.145) (Ping timeout: 268 seconds)
2022-08-09 06:19:45 +0200gmg(~user@user/gehmehgeh)
2022-08-09 06:21:29 +0200vglfr(~vglfr@194.9.14.33) (Ping timeout: 252 seconds)
2022-08-09 06:21:38 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
2022-08-09 06:24:00 +0200 <Axman6> it can be made to work but it would be unusual - you'd need to configure timeouts and how many iterations you'd want to run.
2022-08-09 06:24:17 +0200 <Axman6> generally there would be better way to do that like logging the start and end times during actual use
2022-08-09 06:24:18 +0200vglfr(~vglfr@194.9.14.33)
2022-08-09 06:24:22 +0200kazaf(~kazaf@94.180.63.53)
2022-08-09 06:26:08 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Read error: Connection reset by peer)
2022-08-09 06:26:08 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-08-09 06:26:08 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-08-09 06:26:08 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Write error: Connection reset by peer)
2022-08-09 06:26:08 +0200noteness(~noteness@user/noteness) (Read error: Connection reset by peer)
2022-08-09 06:26:08 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2022-08-09 06:26:08 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Read error: Connection reset by peer)
2022-08-09 06:26:08 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-08-09 06:26:31 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-09 06:26:37 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-09 06:26:41 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-08-09 06:26:44 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-09 06:26:56 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2022-08-09 06:26:57 +0200noteness(~noteness@user/noteness)
2022-08-09 06:27:23 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-08-09 06:28:49 +0200gmg(~user@user/gehmehgeh)
2022-08-09 06:30:06 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-08-09 06:30:29 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-09 06:31:14 +0200agander_m__agander_m
2022-08-09 06:33:05 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-08-09 06:33:27 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-08-09 06:34:55 +0200luffy(~chenqisu1@183.217.201.23) (Ping timeout: 268 seconds)
2022-08-09 06:35:28 +0200johnw(~johnw@2600:1700:cf00:db0:c8aa:85f9:feb6:ad6f) (Quit: ZNC - http://znc.in)
2022-08-09 06:38:18 +0200absentia_absentia
2022-08-09 06:38:26 +0200absentia(~absentia@24-246-53-210.cable.teksavvy.com) (Changing host)
2022-08-09 06:38:26 +0200absentia(~absentia@user/absentia)
2022-08-09 06:38:43 +0200Kaipei(~Kaiepi@142.68.249.28) (Ping timeout: 252 seconds)
2022-08-09 06:47:56 +0200irfan(~irfan@user/irfan)
2022-08-09 06:51:06 +0200pragma-(~chaos@user/pragmatic-chaos) (Bye!)
2022-08-09 06:52:35 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-08-09 06:53:58 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-08-09 06:55:01 +0200titibandit(~titibandi@xdsl-212-8-147-38.nc.de)
2022-08-09 06:57:11 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 255 seconds)
2022-08-09 07:00:46 +0200kazaf(~kazaf@94.180.63.53) (Ping timeout: 252 seconds)
2022-08-09 07:04:23 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 252 seconds)
2022-08-09 07:05:13 +0200noteness(~noteness@user/noteness) (Ping timeout: 268 seconds)
2022-08-09 07:07:22 +0200noteness(~noteness@user/noteness)
2022-08-09 07:07:50 +0200catern(~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407)
2022-08-09 07:10:40 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 07:17:28 +0200hakutaku(~hakutaku@94.25.228.55) (Ping timeout: 268 seconds)
2022-08-09 07:22:41 +0200raym(~raym@user/raym) (Quit: travelling today)
2022-08-09 07:22:50 +0200 <Inst> axman6
2022-08-09 07:22:56 +0200 <Inst> i just redid it with just getSystemTime
2022-08-09 07:22:59 +0200 <Inst> and Data.Time
2022-08-09 07:23:08 +0200jargon(~jargon@153.sub-174-205-231.myvzw.com) (Remote host closed the connection)
2022-08-09 07:27:11 +0200notzmv(~zmv@user/notzmv)
2022-08-09 07:31:54 +0200 <Inst> btw re Monochrome, have you seen the Chinese Haskell QQ group? I'm on the Wechat, which is about 1/3rd the QQ's size. The QQ is 1k people, ffs.
2022-08-09 07:39:37 +0200monadplus(~monadplus@130.red-83-43-6.dynamicip.rima-tde.net)
2022-08-09 07:42:10 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2022-08-09 07:46:45 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-09 07:55:58 +0200coot(~coot@213.134.176.158)
2022-08-09 07:57:16 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-08-09 07:57:36 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2022-08-09 08:02:17 +0200johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2022-08-09 08:06:03 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-09 08:06:27 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-09 08:07:05 +0200ccntrq(~Thunderbi@172.209.94.92.rev.sfr.net)
2022-08-09 08:07:07 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-09 08:07:52 +0200nilradical(~nilradica@user/naso)
2022-08-09 08:08:11 +0200ski(~ski@102-198-142-46.pool.kielnet.net) (Ping timeout: 252 seconds)
2022-08-09 08:09:11 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds)
2022-08-09 08:11:46 +0200vglfr(~vglfr@194.9.14.33) (Ping timeout: 268 seconds)
2022-08-09 08:12:33 +0200benin0(~benin@183.82.204.69)
2022-08-09 08:14:29 +0200ski(~ski@102-198-142-46.pool.kielnet.net)
2022-08-09 08:15:09 +0200nilradical(~nilradica@user/naso) (Ping timeout: 252 seconds)
2022-08-09 08:17:32 +0200mbuf(~Shakthi@2401:4900:264d:2a18:1375:61b7:aab6:5d70)
2022-08-09 08:19:01 +0200ubert(~Thunderbi@178.115.60.12.wireless.dyn.drei.com)
2022-08-09 08:22:54 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-08-09 08:27:48 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-09 08:31:25 +0200cheater(~Username@user/cheater)
2022-08-09 08:35:20 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-09 08:35:49 +0200xff0x_(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds)
2022-08-09 08:36:43 +0200tzh_(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2022-08-09 08:37:26 +0200xff0x_(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
2022-08-09 08:37:31 +0200cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2022-08-09 08:39:09 +0200vglfr(~vglfr@194.9.14.33)
2022-08-09 08:40:45 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 08:42:41 +0200nilradical(~nilradica@user/naso)
2022-08-09 08:47:55 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:f6c8:3b8a:6258:a564)
2022-08-09 08:49:52 +0200cheater(~Username@user/cheater)
2022-08-09 08:51:51 +0200nilradical(~nilradica@user/naso) (Ping timeout: 268 seconds)
2022-08-09 08:52:20 +0200chele(~chele@user/chele)
2022-08-09 08:53:01 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2022-08-09 08:57:20 +0200cheater1__(~Username@user/cheater)
2022-08-09 08:58:01 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2022-08-09 09:01:44 +0200cheater(~Username@user/cheater)
2022-08-09 09:02:05 +0200cheater1__(~Username@user/cheater) (Ping timeout: 252 seconds)
2022-08-09 09:05:25 +0200MajorBiscuit(~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl)
2022-08-09 09:08:14 +0200michalz(~michalz@185.246.204.73) (Remote host closed the connection)
2022-08-09 09:08:41 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds)
2022-08-09 09:08:49 +0200michalz(~michalz@185.246.204.75)
2022-08-09 09:11:03 +0200MajorBiscuit(~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.5)
2022-08-09 09:11:14 +0200MajorBiscuit(~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl)
2022-08-09 09:11:56 +0200nilradical(~nilradica@user/naso)
2022-08-09 09:12:35 +0200vysn(~vysn@user/vysn)
2022-08-09 09:16:31 +0200rushsloorush
2022-08-09 09:18:27 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-09 09:22:26 +0200chomwitt(~chomwitt@2a02:587:dc12:7400:755f:cb3e:e77d:78e6)
2022-08-09 09:22:44 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 268 seconds)
2022-08-09 09:23:13 +0200fserucas(~fserucas@46.50.4.9)
2022-08-09 09:24:50 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-08-09 09:25:16 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-08-09 09:26:19 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-08-09 09:27:16 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2022-08-09 09:28:18 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-08-09 09:28:20 +0200aforemny_aforemny
2022-08-09 09:29:35 +0200nilradical(~nilradica@user/naso) (Ping timeout: 252 seconds)
2022-08-09 09:32:14 +0200cfricke(~cfricke@user/cfricke)
2022-08-09 09:34:22 +0200cosimone`(~user@93-44-186-171.ip98.fastwebnet.it) (Read error: Connection reset by peer)
2022-08-09 09:35:29 +0200jgeerds(~jgeerds@55d46bad.access.ecotel.net)
2022-08-09 09:36:17 +0200nilradical(~nilradica@user/naso)
2022-08-09 09:38:00 +0200kuribas(~user@ptr-17d51en70upy9zs31tv.18120a2.ip6.access.telenet.be)
2022-08-09 09:39:20 +0200chomwitt(~chomwitt@2a02:587:dc12:7400:755f:cb3e:e77d:78e6) (Ping timeout: 268 seconds)
2022-08-09 09:41:11 +0200nilradical(~nilradica@user/naso) (Ping timeout: 268 seconds)
2022-08-09 09:42:55 +0200hakutaku(~hakutaku@62.32.91.171)
2022-08-09 09:43:14 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-09 09:47:41 +0200LiChen_(uid561437@id-561437.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2022-08-09 09:50:23 +0200 <carbolymer_> this looks like a valid NFData instance, right? https://bpa.st/BYRQ
2022-08-09 09:50:27 +0200carbolymer_carbolymer
2022-08-09 09:50:32 +0200nilradical(~nilradica@user/naso)
2022-08-09 09:50:47 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it)
2022-08-09 09:52:45 +0200cheater(~Username@user/cheater) (Read error: Connection reset by peer)
2022-08-09 09:53:41 +0200zer0bitz(~zer0bitz@2001:2003:f748:2000:7d58:b5e3:80b4:aa10)
2022-08-09 09:55:07 +0200cheater(~Username@user/cheater)
2022-08-09 09:55:24 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 09:55:42 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-08-09 09:57:07 +0200acidjnk_new(~acidjnk@p200300d6e70586665c86bfb0acf03c2b.dip0.t-ipconnect.de)
2022-08-09 09:58:40 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it) (Remote host closed the connection)
2022-08-09 09:59:46 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-09 10:00:14 +0200yvan-sraka(~yvan-srak@105.67.135.250)
2022-08-09 10:00:21 +0200kawzeg_(kawzeg@2a01:7e01::f03c:92ff:fee2:ec34) (Quit: WeeChat 3.3)
2022-08-09 10:00:30 +0200kawzeg(kawzeg@2a01:7e01::f03c:92ff:fee2:ec34)
2022-08-09 10:01:33 +0200ell(~ellie@user/ellie)
2022-08-09 10:02:15 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it)
2022-08-09 10:05:14 +0200jese(~nikola@93-86-182-196.dynamic.isp.telekom.rs)
2022-08-09 10:09:41 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-08-09 10:09:41 +0200noteness(~noteness@user/noteness) (Remote host closed the connection)
2022-08-09 10:09:41 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-08-09 10:09:50 +0200mc47(~mc47@xmonad/TheMC47)
2022-08-09 10:10:10 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-09 10:10:20 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-09 10:10:27 +0200noteness(~noteness@user/noteness)
2022-08-09 10:12:08 +0200 <Axman6> why use foldr'? I don't even know where that comes from, but it seems like a recipe for stack overflows
2022-08-09 10:12:18 +0200 <Axman6> % :t foldr deepseq
2022-08-09 10:12:18 +0200 <yahb2> <interactive>:1:7: error: ; Variable not in scope: deepseq :: a -> b -> b
2022-08-09 10:12:35 +0200 <tomsmeding> looking at 'assocs' here, it seems one of the two maps is not evaluated https://hackage.haskell.org/package/ordered-containers-0.2.2/docs/src/Data.Map.Ordered.Internal.ht…
2022-08-09 10:12:43 +0200 <tomsmeding> but not sure if that is an issue -- presumably they are filled in lockstep
2022-08-09 10:12:45 +0200 <Axman6> % :t foldr (seq :: a -> () -> ())
2022-08-09 10:12:45 +0200 <yahb2> foldr (seq :: a -> () -> ()) ; :: forall {t :: * -> *} {a}. Foldable t => () -> t a -> ()
2022-08-09 10:12:59 +0200 <tomsmeding> but yeah, foldr should be sufficient
2022-08-09 10:13:03 +0200 <Axman6> % :t foldl (flip (seq :: a -> () -> ()))
2022-08-09 10:13:03 +0200 <yahb2> foldl (flip (seq :: a -> () -> ())) ; :: forall {t :: * -> *} {a}. Foldable t => () -> t a -> ()
2022-08-09 10:13:12 +0200 <tomsmeding> or foldl'
2022-08-09 10:13:18 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 10:16:49 +0200 <Axman6> I think either foldr or foldl' would be fine here, but not foldr', because presumably that needs to traverse the whole list before each pair is passed to deepseq
2022-08-09 10:17:25 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-08-09 10:17:55 +0200 <jese> I have a lambda L to which I want to pass a Vector of Ts (T = an arbitrary type), but the compiler errors out that L accepts a Vector of ConstructorTs. Doing (v :: Vector ConstructorT) does not help. So how to properly do this?
2022-08-09 10:17:56 +0200alternateved(~user@staticline-31-183-149-36.toya.net.pl)
2022-08-09 10:21:46 +0200noteness(~noteness@user/noteness) (Remote host closed the connection)
2022-08-09 10:22:01 +0200noteness(~noteness@user/noteness)
2022-08-09 10:24:40 +0200 <ski> jese : some more context might help
2022-08-09 10:26:23 +0200 <Axman6> yeah definitely need to see more code to answer that one
2022-08-09 10:31:30 +0200eggplant_(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-08-09 10:33:50 +0200 <carbolymer> Axman6: wait, why foldr' needs to traverse whole list before processing? doesn't that mean:
2022-08-09 10:33:50 +0200 <carbolymer> foldr f z [x1, x2, ..., xn] == x1 `f` (x2 `f` ... (xn `f` z)...)
2022-08-09 10:33:50 +0200 <carbolymer> that it should start evaluating from first element?
2022-08-09 10:36:51 +0200ubert1(~Thunderbi@77.119.164.0.wireless.dyn.drei.com)
2022-08-09 10:38:30 +0200ubert(~Thunderbi@178.115.60.12.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
2022-08-09 10:38:31 +0200ubert1ubert
2022-08-09 10:39:33 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 244 seconds)
2022-08-09 10:40:11 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-09 10:40:36 +0200 <zzz> carbolymer: what would you expect from foldr (+) 0 [1..] ?
2022-08-09 10:40:58 +0200nilradical(~nilradica@user/naso)
2022-08-09 10:43:30 +0200kawen_kawen
2022-08-09 10:43:34 +0200shriekingnoise(~shrieking@186.137.167.202) (Quit: Quit)
2022-08-09 10:45:25 +0200 <tomsmeding> carbolymer: what's the definition of foldr'
2022-08-09 10:47:10 +0200nilradical(~nilradica@user/naso) (Ping timeout: 268 seconds)
2022-08-09 10:48:50 +0200mmhat(~mmh@p200300f1c72ee918ee086bfffe095315.dip0.t-ipconnect.de)
2022-08-09 10:48:57 +0200nilradical(~nilradica@user/naso)
2022-08-09 10:55:00 +0200 <cheater> on a lot of websites, there's often stuff that's kind of annoying. let's say on a movie website you have it sorting according to date ascending instead of descending (annoying because you want to see the latest movies). in gmail, sometimes mailing lists have super long tag names (the [Stuff] that's at the beginning of every email's subject line). I can fix all that using user scripts, using the violent monkey plugin for firefox. it injects javascript
2022-08-09 10:55:00 +0200 <cheater> into sites i want and the js can change all that stuff automatically, shorten strings or modify them, etc. is a system like that is possible in an application written with haskell? how would that even work?
2022-08-09 10:55:23 +0200 <carbolymer> zzz: I'm trying to understand the docs - isn't the expression evaluated from the outer layer first?
2022-08-09 10:56:05 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-09 10:56:15 +0200 <carbolymer> tomsmeding: foldl and seq
2022-08-09 10:56:50 +0200 <tomsmeding> carbolymer: foldr' is implemented in terms of foldl and seq? Why isn't it called foldl' then?
2022-08-09 10:57:07 +0200mmhat(~mmh@p200300f1c72ee918ee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2022-08-09 10:57:56 +0200 <tomsmeding> carbolymer: for foldr, that is indeed how it would work: evaluate from the outer layer first
2022-08-09 10:58:04 +0200 <tomsmeding> hence foldr deepseq is precisely what you want I think :p
2022-08-09 10:58:14 +0200jgeerds(~jgeerds@55d46bad.access.ecotel.net) (Ping timeout: 268 seconds)
2022-08-09 10:58:20 +0200 <tomsmeding> whether foldr' also does what you want depends on its precise definition
2022-08-09 10:58:27 +0200 <carbolymer> hmm
2022-08-09 10:58:29 +0200 <carbolymer> thanks
2022-08-09 10:58:53 +0200ski(~ski@102-198-142-46.pool.kielnet.net) (Ping timeout: 268 seconds)
2022-08-09 10:59:08 +0200alp_(~alp@user/alp)
2022-08-09 10:59:20 +0200 <carbolymer> I guess I should pay more attention to haddocks
2022-08-09 11:00:11 +0200 <carbolymer> cheater: you want interop js <-> haskell?
2022-08-09 11:00:18 +0200steve[m](~stevetrou@2001:470:69fc:105::e0b) (Quit: You have been kicked for being idle)
2022-08-09 11:00:52 +0200 <cheater> no. i want users to be able to modify the behavior of applications, using some, any, technology, without changing the source of the original application, and hopefully without recompiling
2022-08-09 11:00:56 +0200 <jese> nvm i solved it
2022-08-09 11:01:02 +0200jese(~nikola@93-86-182-196.dynamic.isp.telekom.rs) (Quit: leaving)
2022-08-09 11:01:07 +0200steve[m](~stevetrou@2001:470:69fc:105::e0b)
2022-08-09 11:01:09 +0200 <cheater> that's what user scripts do for users
2022-08-09 11:01:21 +0200 <tomsmeding> cheater: I feel like that only works in a web context because of the DOM model
2022-08-09 11:01:21 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds)
2022-08-09 11:01:49 +0200 <cheater> doesn't something like Qt have a dom-like model too?
2022-08-09 11:02:22 +0200 <tomsmeding> not familiar enough with Qt for that, but in any case that's not haskell :p
2022-08-09 11:02:49 +0200noteness(~noteness@user/noteness) (Remote host closed the connection)
2022-08-09 11:03:25 +0200noteness(~noteness@user/noteness)
2022-08-09 11:03:36 +0200 <cheater> it's not just the dom model though. actions on websites correspond to restful urls, and i can change those. so for example, sorting the list of movies in my previous example, that's done by navigating to a url that in original form has &sort=date&dir=asc. but if i can modify that anchor link's url before the user can click on it, then i can make it dir=desc
2022-08-09 11:03:57 +0200steve[m](~stevetrou@2001:470:69fc:105::e0b) ()
2022-08-09 11:04:30 +0200alternateved(~user@staticline-31-183-149-36.toya.net.pl) (Remote host closed the connection)
2022-08-09 11:04:49 +0200 <tomsmeding> what that I guess boils down to, is that the web page gets much of its information from an external systen (the server) that it talks to with a fairly introspectable protocol (i.e. URLs and http requests)
2022-08-09 11:04:52 +0200 <cheater> i can also gather data from websites and present it in a form that i can use in other programs
2022-08-09 11:05:12 +0200 <tomsmeding> if you have a single-page web app that downloads the data and then doesn't communicate with the server anymore (those exist), then your url trick wouldn't work
2022-08-09 11:05:23 +0200 <tomsmeding> and those are closer to how native applications tend to work
2022-08-09 11:05:32 +0200 <cheater> i don't (yet) know of a way to modify http requests and responses using user scripts or add-ons. but that would be even more powerful
2022-08-09 11:06:07 +0200 <cheater> i don't know, bear in mind that javascript and html are interpreted languages. i can always change what's going on, modify the data that's in memory, etc
2022-08-09 11:06:28 +0200 <tomsmeding> html ~ dom model; js being interpreted doesn't really make much of a difference here
2022-08-09 11:06:30 +0200 <cheater> so even on a single page web app, i can change what's going on
2022-08-09 11:06:58 +0200 <tomsmeding> unless you're modifying global variables in your user scripts, but that's uncommon, if only because "modern" js stacks tend to not expose any page-global variables
2022-08-09 11:07:17 +0200 <cheater> no, but they don't need to be page-global to be accessible using some sort of hack
2022-08-09 11:07:22 +0200 <jackdk> People used to do that by poking into the memory of other programs (search term: "game trainer") and like ReadProcessMemory/WriteProcessMemory in win32 api
2022-08-09 11:07:37 +0200 <cheater> jackdk: yeah that's true, game trainers are a good example
2022-08-09 11:07:44 +0200 <cheater> but that's like, way too low level imo
2022-08-09 11:07:51 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2022-08-09 11:08:00 +0200 <cheater> they'll also do that by dll preloading
2022-08-09 11:08:04 +0200 <tomsmeding> cheater: I think js modules do something like (function(){ var local = {...}; ... })(); and you can't reasonably access that 'local' from outside
2022-08-09 11:08:06 +0200 <cheater> so they can catch api calls
2022-08-09 11:08:27 +0200 <cheater> i wish haskell had a system like dll preloading. is that something that's doable?
2022-08-09 11:08:43 +0200 <cheater> tomsmeding: you can access it from dev tools though, can you?
2022-08-09 11:08:46 +0200 <tomsmeding> dll preloading in native applications is roughly comparable to modifying window.alert in JS I guess
2022-08-09 11:08:51 +0200 <cheater> can't*
2022-08-09 11:08:57 +0200 <cheater> yeah
2022-08-09 11:09:01 +0200 <cheater> well it's more
2022-08-09 11:09:05 +0200 <tomsmeding> in the debugger you mean?
2022-08-09 11:09:07 +0200 <cheater> yes
2022-08-09 11:09:11 +0200 <tomsmeding> maybe, but that's not from a user script :p
2022-08-09 11:09:22 +0200 <cheater> dll preloading is more like being able to modify xhr
2022-08-09 11:09:22 +0200 <tomsmeding> if you gdb a C program you can also change its variables :p
2022-08-09 11:09:33 +0200 <tomsmeding> people don't generally call that "scripting the C program"
2022-08-09 11:09:37 +0200 <cheater> yeah
2022-08-09 11:09:41 +0200 <tomsmeding> I guess yes
2022-08-09 11:10:12 +0200 <tomsmeding> you can also gdb a haskell program and do the same thing, it's just that the haskell heap structures and control flow are much less understandable from a simple C-oriented debugger
2022-08-09 11:10:17 +0200 <tomsmeding> "much less" being an understatement
2022-08-09 11:10:33 +0200 <cheater> yeah, haskell needs to get its own debugger honestly
2022-08-09 11:10:43 +0200 <cheater> not having one is kind of carp
2022-08-09 11:10:43 +0200 <tomsmeding> it's hard though
2022-08-09 11:10:49 +0200 <cheater> it certainly is
2022-08-09 11:10:54 +0200 <tomsmeding> if you want to pay someone to work on it :p
2022-08-09 11:11:16 +0200 <tomsmeding> I agree though, a good debugger for haskell that understands its control flow and memory model would be amazing
2022-08-09 11:11:26 +0200mmhat(~mmh@p200300f1c72ee96aee086bfffe095315.dip0.t-ipconnect.de)
2022-08-09 11:11:46 +0200 <cheater> to be honest we just need a basic piece of shit project, once that out, people will flock to make it better
2022-08-09 11:11:52 +0200 <tomsmeding> it would be ghc-specific though, whereas C-oriented debuggers tend to work for C, C++, D, Rust, and maybe more low-level languages
2022-08-09 11:11:53 +0200 <cheater> *is
2022-08-09 11:12:02 +0200mima(mmh@gateway/vpn/airvpn/mima)
2022-08-09 11:13:10 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-08-09 11:15:46 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2022-08-09 11:16:02 +0200chexum(~quassel@gateway/tor-sasl/chexum)
2022-08-09 11:17:23 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-08-09 11:17:46 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-09 11:23:23 +0200cheater(~Username@user/cheater) (Read error: Connection reset by peer)
2022-08-09 11:24:19 +0200cheater(~Username@user/cheater)
2022-08-09 11:24:43 +0200 <[exa]> cheater: many people use haskell in order to be able to forget about the whole debugger business. :D
2022-08-09 11:24:59 +0200 <cheater> i don't think that's true
2022-08-09 11:25:22 +0200 <cheater> going from debuggers to print debugging is not an improvement
2022-08-09 11:25:33 +0200 <[exa]> no, simply do not debug
2022-08-09 11:25:43 +0200 <tomsmeding> [exa]: I mean, yes; like, haskell without a debugger is sometimes easier to debug than C with a debugger
2022-08-09 11:25:44 +0200 <kuribas> tomsmeding: I am missing a debugger that let's me choose how to evaluate the expression tree.
2022-08-09 11:25:53 +0200 <tomsmeding> but that doesn't mean that having a good debugger cannot make things even easier
2022-08-09 11:25:58 +0200 <kuribas> tomsmeding: the debugger in ghci simply seems to assume you want to step through.
2022-08-09 11:25:59 +0200 <tomsmeding> kuribas: _yes_
2022-08-09 11:26:22 +0200 <tomsmeding> I think choosing in what order to evaluate an expression tree is impossible after you've gone to Core
2022-08-09 11:26:35 +0200 <tomsmeding> because that probably already encodes some decisions w.r.t. order of evaluation
2022-08-09 11:26:40 +0200 <tomsmeding> and if not Core, then STG or Cmm
2022-08-09 11:26:49 +0200 <kuribas> tomsmeding: can you bypass core?
2022-08-09 11:26:58 +0200 <kuribas> core is not strictly haskell.
2022-08-09 11:27:02 +0200 <tomsmeding> I'm not sure at what point ghci bytecode is generated
2022-08-09 11:27:02 +0200 <[exa]> cheater: there's 30+ years of research invested into being able to write the programs visibly correct without trying them, utilizing parametricity, types, correct modularization and composition, enforced locality, etc etc. And it pretty much works for me :]
2022-08-09 11:27:11 +0200luffy(~chenqisu1@183.217.201.23)
2022-08-09 11:27:29 +0200 <tomsmeding> ghci bytecode is certainly after Core, but perhaps before STG
2022-08-09 11:27:30 +0200 <kuribas> [exa]: yeah, plus occasionally Debug.Trace
2022-08-09 11:27:59 +0200 <tomsmeding> kuribas: I'm most concerned about strictness analysis and the ensuing compilation of certain functions as call-by-value
2022-08-09 11:28:07 +0200Kaipei(~Kaiepi@142.68.249.28)
2022-08-09 11:28:15 +0200 <tomsmeding> concerned as in, that will prevent choosing order of evaluation later on
2022-08-09 11:28:20 +0200 <tomsmeding> kuribas: have you ever looked at ghc-vis
2022-08-09 11:28:38 +0200 <tomsmeding> https://www.youtube.com/watch?v=I4lnCG18TaY
2022-08-09 11:28:40 +0200 <kuribas> no
2022-08-09 11:28:58 +0200 <tomsmeding> it's not quite what you're asking about, but you can interactively force heap thunks with it
2022-08-09 11:29:09 +0200 <cheater> kuribas: that's just print debugging.
2022-08-09 11:29:16 +0200 <kuribas> cheater: indeed!
2022-08-09 11:29:57 +0200 <[exa]> cheater: gdb also just prints internal values, right?
2022-08-09 11:30:43 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-09 11:30:49 +0200 <[exa]> wow ghc-vis is cool
2022-08-09 11:30:55 +0200 <tomsmeding> yes ghc-vis is very cool
2022-08-09 11:31:13 +0200 <tomsmeding> I've yet to use it on non-trivial examples though
2022-08-09 11:34:19 +0200coot(~coot@213.134.176.158) (Quit: coot)
2022-08-09 11:34:59 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2022-08-09 11:35:39 +0200cheater1__(~Username@user/cheater)
2022-08-09 11:35:43 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 252 seconds)
2022-08-09 11:35:53 +0200cheater(~Username@user/cheater) (Ping timeout: 268 seconds)
2022-08-09 11:36:02 +0200cheater1__cheater
2022-08-09 11:36:21 +0200chomwitt(~chomwitt@2a02:587:dc15:ef00:5da3:5948:b4:5053)
2022-08-09 11:39:34 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 11:44:09 +0200yvan-sraka(~yvan-srak@105.67.135.250) (Remote host closed the connection)
2022-08-09 11:51:02 +0200yvan-sraka(~yvan-srak@105.67.135.250)
2022-08-09 11:55:22 +0200mbuf(~Shakthi@2401:4900:264d:2a18:1375:61b7:aab6:5d70) (Quit: Leaving)
2022-08-09 11:56:40 +0200ski(~ski@185.109.152.13)
2022-08-09 11:58:52 +0200titibandit(~titibandi@xdsl-212-8-147-38.nc.de) (Quit: Leaving.)
2022-08-09 12:05:52 +0200bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-08-09 12:07:15 +0200cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2022-08-09 12:08:25 +0200darchitect1(~darchitec@2a00:23c6:3584:df01:2d0:4120:37b2:95) (Ping timeout: 244 seconds)
2022-08-09 12:11:17 +0200xff0x_(~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds)
2022-08-09 12:13:08 +0200monadplus(~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) (Quit: Client closed)
2022-08-09 12:16:01 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2022-08-09 12:16:42 +0200jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 268 seconds)
2022-08-09 12:17:50 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-09 12:23:45 +0200monadplus(~monadplus@130.red-83-43-6.dynamicip.rima-tde.net)
2022-08-09 12:26:58 +0200aliosablack(~chomwitt@ppp-94-67-201-122.home.otenet.gr)
2022-08-09 12:27:04 +0200chomwitt(~chomwitt@2a02:587:dc15:ef00:5da3:5948:b4:5053) (Ping timeout: 268 seconds)
2022-08-09 12:29:29 +0200gurkenglas(~gurkengla@p548ac72e.dip0.t-ipconnect.de)
2022-08-09 12:34:49 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-08-09 12:37:28 +0200alternateved(~user@staticline-31-183-149-36.toya.net.pl)
2022-08-09 12:40:36 +0200mastarija(~mastarija@2a05:4f46:e03:6000:18f8:fb5b:a843:cd18)
2022-08-09 12:41:55 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-09 12:42:27 +0200hakutaku(~hakutaku@62.32.91.171) (Ping timeout: 268 seconds)
2022-08-09 12:42:41 +0200 <mastarija> Is there something like "multiConst" that can take a constant value `v` and a function with n arguments e.g. `a -> b -> c -> ... -> v` and return a function of type `a -> b -> c -> ... -> v` that always return the initial value `v` no matter what the other arguments are?
2022-08-09 12:43:23 +0200hakutaku(~hakutaku@62.32.91.171)
2022-08-09 12:43:57 +0200 <tomsmeding> mastarija: what if `a` is a function type? When would the list of arguments to ignore stop then?
2022-08-09 12:44:38 +0200 <mastarija> at the return value?
2022-08-09 12:44:55 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)
2022-08-09 12:45:14 +0200 <tomsmeding> if I write `multiConst id 1 2 3`, what would be the type of that expression
2022-08-09 12:45:59 +0200 <mastarija> 1 is not of type (a -> a)
2022-08-09 12:46:04 +0200 <mastarija> It wouldn't type check
2022-08-09 12:46:29 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2022-08-09 12:46:37 +0200 <tomsmeding> oh wait I misread
2022-08-09 12:47:01 +0200 <mastarija> basically, if you give me `id :: a -> a`, then I'd have to get `x -> y -> ... -> (a -> a )`
2022-08-09 12:47:02 +0200 <tomsmeding> if I understand correctly, this "function with n arguments e.g. `a -> b -> c -> ... -> v` would be completely unused except for its type, right?
2022-08-09 12:47:05 +0200 <mastarija> as the second argument
2022-08-09 12:47:11 +0200 <mastarija> yes
2022-08-09 12:47:15 +0200titibandit(~titibandi@xdsl-212-8-147-38.nc.de)
2022-08-09 12:47:27 +0200 <tomsmeding> I think you can do this with overlapping instances, but it's a bit gross
2022-08-09 12:47:35 +0200vglfr(~vglfr@194.9.14.33) (Ping timeout: 252 seconds)
2022-08-09 12:47:39 +0200 <mastarija> Yes...
2022-08-09 12:47:44 +0200 <mastarija> Something like printf
2022-08-09 12:47:56 +0200 <ski> "arity" is not a well-defined concept in Haskell, unless you take it to be 1 always
2022-08-09 12:48:03 +0200 <mastarija> But I was hoping we have it already
2022-08-09 12:48:10 +0200 <tomsmeding> the thing is that you want to "add another function arrow" to the type of multiConst only if the n'th return type of the function is not equal to `a`
2022-08-09 12:48:20 +0200 <mastarija> yes
2022-08-09 12:48:33 +0200 <tomsmeding> or, hmmm
2022-08-09 12:48:43 +0200 <mastarija> no, not really when i think about it
2022-08-09 12:49:51 +0200hakutaku(~hakutaku@62.32.91.171) (Ping timeout: 268 seconds)
2022-08-09 12:50:27 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 12:50:30 +0200 <mastarija> basically, in `multiConst :: a -> ( x -> ... -> n -> a) -> x -> ... -> n -> a ` first `a` should be determined by last type var of my multiparameter function
2022-08-09 12:50:56 +0200 <tomsmeding> "determined by" is not going to work
2022-08-09 12:51:05 +0200 <tomsmeding> in any case you'll need to fix the types from the outside
2022-08-09 12:51:20 +0200 <tomsmeding> because what is the "last type var" of a function with type `t -> t`
2022-08-09 12:51:26 +0200hakutaku(~hakutaku@62.32.91.171)
2022-08-09 12:51:37 +0200 <tomsmeding> if t ~ b -> c, then it becomes (b -> c) -> b -> c, and the last type var is actually b
2022-08-09 12:51:44 +0200 <tomsmeding> in a polymorphic context, you can't know
2022-08-09 12:54:05 +0200 <mastarija> I must admit I don't see the issue here.
2022-08-09 12:54:23 +0200 <mastarija> In my head it's still clear what's what.
2022-08-09 12:54:52 +0200 <mastarija> If the function is of form t -> t, then my constant should be of type `t`
2022-08-09 12:55:00 +0200 <tomsmeding> what is the type of `multiConst () id`?
2022-08-09 12:55:22 +0200KaipeiKaiepi
2022-08-09 12:56:01 +0200 <mastarija> multiConst :: () -> ( () -> () ) -> () -> ()
2022-08-09 12:56:57 +0200 <mastarija> multiConst :: t -> ( t -> t ) -> ( t -> t )
2022-08-09 12:57:01 +0200 <tomsmeding> how can you distinguish that from: multiConst :: () -> ((a -> ()) -> a -> ()) -> (a -> ()) -> a -> ()
2022-08-09 12:57:23 +0200 <tomsmeding> `id :: (a -> ()) -> a -> ()` is also true
2022-08-09 12:57:41 +0200merijn(~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl)
2022-08-09 12:58:09 +0200 <tomsmeding> this is not going to work in general
2022-08-09 12:58:55 +0200 <tomsmeding> I think even my overlapping instances madness is not going to work -- it would try to find () somewhere in the type of `id`, but it's never going to unambiguously find it
2022-08-09 12:59:03 +0200 <tomsmeding> with emphasis on _unambiguously_
2022-08-09 12:59:19 +0200 <mastarija> Again, I'm not sure what's the problem here. To my human brain it's pretty distinguishable. Unless you are talking about GHC capabilities
2022-08-09 12:59:32 +0200 <tomsmeding> no I'm talking about the haskell type system
2022-08-09 12:59:53 +0200kritzefitz(~kritzefit@debian/kritzefitz) ()
2022-08-09 13:00:02 +0200 <tomsmeding> `id :: (a -> ()) -> a -> ()` is more specific than `id :: a -> a`, and in haskell you can always put an expression with a more specific type in place of one with a more general type
2022-08-09 13:00:07 +0200kritzefitz(~kritzefit@debian/kritzefitz)
2022-08-09 13:00:40 +0200 <tomsmeding> sometimes you can detect some shenanigans using overlapping instances (to try to match the more specific option, and if that fails, fall back to a more general option), but that doesn't work always
2022-08-09 13:00:47 +0200 <mastarija> I mean, it's just that the arg 1 has to match with the return value of arg2
2022-08-09 13:00:57 +0200ski(~ski@185.109.152.13) (Ping timeout: 268 seconds)
2022-08-09 13:01:08 +0200 <mastarija> Functional dependencies?
2022-08-09 13:01:13 +0200 <tomsmeding> it is "the return value" that is not well-defined in haskell
2022-08-09 13:01:22 +0200 <tomsmeding> because a polymorphic return value might be instantiated to a functoin
2022-08-09 13:01:51 +0200 <tomsmeding> I don't think functional dependencies help here, they are just an alternative formulation of type families
2022-08-09 13:02:09 +0200 <tomsmeding> (open type families, at that)
2022-08-09 13:02:32 +0200 <mastarija> I kind of understood them as a way to distinctly determine x by y or what ever
2022-08-09 13:02:44 +0200 <mastarija> Or rather x is determined by y
2022-08-09 13:02:55 +0200 <mastarija> That kind of reasoning seems helpful here.
2022-08-09 13:03:48 +0200 <tomsmeding> which is precisely what a type family can give you
2022-08-09 13:04:04 +0200 <mastarija> Maybe if I talk about my usecase it will be more productive :D
2022-08-09 13:04:18 +0200 <tomsmeding> you might hope to be able to define a type family `ReturnType` such that you can write `multiConst :: ReturnType f ~ a => a -> f -> f`
2022-08-09 13:04:26 +0200 <tomsmeding> but I don't think that's going to work (I tried it but got stuck)
2022-08-09 13:04:47 +0200 <mastarija> Basically, I have some functions of form (Maybe Something) -> y -> ... -> m v
2022-08-09 13:06:08 +0200xff0x_(~xff0x@2405:6580:b080:900:9f22:be61:9bf8:3a54)
2022-08-09 13:06:16 +0200 <mastarija> Now, I want to make a helper which in case (Maybe Something) is Nothing, I'd like to throw an error
2022-08-09 13:06:44 +0200 <tomsmeding> in that monad m?
2022-08-09 13:06:48 +0200 <mastarija> Yes
2022-08-09 13:06:54 +0200 <mastarija> One in which I have to throw an error
2022-08-09 13:07:17 +0200 <mastarija> And I'd otherwise apply a Something to the function
2022-08-09 13:07:35 +0200 <mastarija> Functions are in form of `Something -> x -> y ->...-> m v`
2022-08-09 13:07:41 +0200 <mastarija> Rather than `Maybe Something`
2022-08-09 13:08:19 +0200 <mastarija> But I have `Maybe Something` and would like to return `x -> y -> ... -> m v` if I have Something
2022-08-09 13:08:38 +0200 <tomsmeding> can any of the x, y, ... types be m values?
2022-08-09 13:08:51 +0200 <mastarija> or `x -> y -> ... -> m v` where `m v := throwError MyError`
2022-08-09 13:08:59 +0200 <mastarija> In case there is no Something
2022-08-09 13:09:35 +0200 <mastarija> tomsmeding, no
2022-08-09 13:09:42 +0200 <mastarija> (usually :D)
2022-08-09 13:09:56 +0200 <mastarija> But I'm ok with something that is halfway there
2022-08-09 13:12:16 +0200 <carbolymer> is this efficient? did I overcomplicate it? https://bpa.st/TOAQ
2022-08-09 13:12:42 +0200 <tomsmeding> mastarija: ah no, I asked the wrong question; the right question is, can m ever be the reader monad (r->)
2022-08-09 13:13:03 +0200 <tomsmeding> printf detects the end of its argument sequence by needing to return an IO a instead of an r->a
2022-08-09 13:13:31 +0200 <carbolymer> (I was also considering foldl' + DList - not sure which would be more efficient for strict map)
2022-08-09 13:14:06 +0200 <mastarija> tomsmeding, I do have a reader in the stack, but it's a newtype, not pure (r->)
2022-08-09 13:14:39 +0200 <tomsmeding> carbolymer: concatMap (\(k,vs) -> map (k,) vs) . assocs
2022-08-09 13:14:57 +0200 <tomsmeding> mastarija: ah that's okay
2022-08-09 13:16:53 +0200 <carbolymer> tomsmeding: oh shit, that's better, thanks
2022-08-09 13:18:33 +0200 <tomsmeding> % :set -XMultiParamTypeClasses -XFlexibleInstances
2022-08-09 13:18:33 +0200 <yahb2> <no output>
2022-08-09 13:18:36 +0200 <tomsmeding> % class MultiConst a f where multiConst :: IO a -> f -> f
2022-08-09 13:18:36 +0200 <tomsmeding> % instance MultiConst a (IO a) where multiConst = const
2022-08-09 13:18:36 +0200 <tomsmeding> % instance MultiConst a f => MultiConst a (b -> f) where multiConst v f = \x -> multiConst v (f x)
2022-08-09 13:18:36 +0200 <yahb2> <no output>
2022-08-09 13:18:37 +0200 <yahb2> <no output>
2022-08-09 13:18:38 +0200 <yahb2> <no output>
2022-08-09 13:18:53 +0200 <tomsmeding> % :t multiConst (return 10) (\x y z -> print (x, y, z) >> return 42)
2022-08-09 13:18:54 +0200 <yahb2> multiConst (return 10) (\x y z -> print (x, y, z) >> return 42) ; :: forall {a1} {b1} {a2} {b2} {c}. ; (MultiConst a1 (IO b1), Show a2, Show b2, Show c, Num a1, ; Num b1) => ; a2 ...
2022-08-09 13:19:03 +0200 <tomsmeding> % :t multiConst (return 10) (\x y z -> print (x::Bool, y::Char, z::Int) >> return 42)
2022-08-09 13:19:03 +0200 <yahb2> multiConst (return 10) (\x y z -> print (x::Bool, y::Char, z::Int) >> return 42) ; :: forall {a} {b}. ; (MultiConst a (IO b), Num a, Num b) => ; Bool -> Char -> Int -> IO b
2022-08-09 13:19:25 +0200 <tomsmeding> mastarija: replace IO with your own monad
2022-08-09 13:19:26 +0200monadplus[m](~monadplus@2001:470:69fc:105::2:5fa2)
2022-08-09 13:19:29 +0200alp_(~alp@user/alp) (Ping timeout: 268 seconds)
2022-08-09 13:19:32 +0200 <tomsmeding> it works because IO is a concrete type here
2022-08-09 13:20:12 +0200tubogram44(~tubogram@user/tubogram) (Quit: Ping timeout (120 seconds))
2022-08-09 13:20:28 +0200 <tomsmeding> if you want it to be "anything else than a function", you could replace the 'IO' with 'm' in the first instance and give the first instance an {-# OVERLAPPING #-} pragma
2022-08-09 13:20:59 +0200 <tomsmeding> the missing piece of information was that the return type has a recognisable shape :)
2022-08-09 13:21:04 +0200tubogram44(~tubogram@user/tubogram)
2022-08-09 13:21:08 +0200 <tomsmeding> that is unambiguously distinct from r->
2022-08-09 13:22:21 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it) (Remote host closed the connection)
2022-08-09 13:22:25 +0200 <mastarija> Yes. I see, first instance marks the end
2022-08-09 13:22:32 +0200 <mastarija> And second recurses
2022-08-09 13:22:36 +0200 <tomsmeding> Yes
2022-08-09 13:24:09 +0200 <mastarija> Thanks
2022-08-09 13:27:37 +0200yaroot_(~yaroot@p2550227-ipngn11101souka.saitama.ocn.ne.jp)
2022-08-09 13:27:47 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-09 13:28:45 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-09 13:29:01 +0200yaroot(~yaroot@p2543146-ipngn11101souka.saitama.ocn.ne.jp) (Ping timeout: 252 seconds)
2022-08-09 13:29:01 +0200yaroot_yaroot
2022-08-09 13:29:04 +0200monadplus(~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) (Ping timeout: 252 seconds)
2022-08-09 13:30:14 +0200nilradical(~nilradica@user/naso)
2022-08-09 13:34:18 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-09 13:34:38 +0200nilradical(~nilradica@user/naso)
2022-08-09 13:35:06 +0200zeenk(~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f)
2022-08-09 13:40:57 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 13:42:12 +0200noteness_(~noteness@user/noteness)
2022-08-09 13:42:58 +0200noteness(~noteness@user/noteness) (Ping timeout: 268 seconds)
2022-08-09 13:49:01 +0200alp_(~alp@user/alp)
2022-08-09 13:53:31 +0200titibandit(~titibandi@xdsl-212-8-147-38.nc.de) (Quit: Leaving.)
2022-08-09 13:54:41 +0200califax(~califax@user/califx) (Ping timeout: 268 seconds)
2022-08-09 13:54:46 +0200califax_(~califax@user/califx)
2022-08-09 13:55:15 +0200mastarija(~mastarija@2a05:4f46:e03:6000:18f8:fb5b:a843:cd18) (Ping timeout: 268 seconds)
2022-08-09 13:55:57 +0200califax_califax
2022-08-09 13:57:45 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-08-09 13:58:03 +0200califax(~califax@user/califx)
2022-08-09 14:00:15 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds)
2022-08-09 14:01:22 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-08-09 14:02:51 +0200vglfr(~vglfr@37.73.110.255)
2022-08-09 14:05:29 +0200cosimone(~user@93-44-186-171.ip98.fastwebnet.it)
2022-08-09 14:07:35 +0200mc47(~mc47@xmonad/TheMC47) (Ping timeout: 268 seconds)
2022-08-09 14:10:26 +0200kavvadias(~kavvadias@2001:9e8:6331:f600:aebb:e42c:4fd0:32c7)
2022-08-09 14:10:59 +0200elkcl(~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 255 seconds)
2022-08-09 14:13:23 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-08-09 14:13:45 +0200vglfr(~vglfr@37.73.110.255) (Ping timeout: 252 seconds)
2022-08-09 14:14:01 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-09 14:16:15 +0200mncheck(~mncheck@193.224.205.254)
2022-08-09 14:17:32 +0200Milan(~Milan@46.245.72.105)
2022-08-09 14:17:34 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-09 14:19:55 +0200mima(mmh@gateway/vpn/airvpn/mima) (Ping timeout: 268 seconds)
2022-08-09 14:20:24 +0200 <Milan> Hi,would please check whether my understanding of "bound variable " is right or not?  xs aren't same ,we can only consider xs same only within a certain abstraction?
2022-08-09 14:21:42 +0200frost(~frost@user/frost) (Quit: Client closed)
2022-08-09 14:21:44 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker) (Ping timeout: 268 seconds)
2022-08-09 14:22:21 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
2022-08-09 14:24:10 +0200 <Milan> how ever one thing is hard to understand for me :if we have one abstraction as an argument which contains an X ,what does this inner X Bound  to ?
2022-08-09 14:25:15 +0200TheCoffeMaker(~TheCoffeM@user/thecoffemaker)
2022-08-09 14:25:19 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-08-09 14:25:28 +0200vysn(~vysn@user/vysn) (Ping timeout: 268 seconds)
2022-08-09 14:26:09 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-09 14:28:50 +0200kavvadias(~kavvadias@2001:9e8:6331:f600:aebb:e42c:4fd0:32c7) (Ping timeout: 252 seconds)
2022-08-09 14:29:31 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-08-09 14:30:08 +0200nilradical(~nilradica@user/naso) (Remote host closed the connection)
2022-08-09 14:30:54 +0200nilradical(~nilradica@user/naso)
2022-08-09 14:31:50 +0200 <nilradical> in the readme for relude -- https://hackage.haskell.org/package/relude -- what does "show is polymorphic over the return type." mean ?
2022-08-09 14:35:06 +0200yvan-sraka(~yvan-srak@105.67.135.250) (Remote host closed the connection)
2022-08-09 14:35:18 +0200 <kritzefitz> nilradical: It means that `show` can not only returns `String`s, but anything that `IsString`.
2022-08-09 14:35:55 +0200 <nilradical> i see, thank kritzefitz
2022-08-09 14:40:54 +0200monadplus(~monadplus@130.red-83-43-6.dynamicip.rima-tde.net)
2022-08-09 14:44:16 +0200Milan(~Milan@46.245.72.105) (Quit: Client closed)
2022-08-09 14:44:17 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-09 14:46:09 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-08-09 14:47:03 +0200cfricke(~cfricke@user/cfricke) (Ping timeout: 268 seconds)
2022-08-09 14:47:07 +0200alp_(~alp@user/alp) (Ping timeout: 252 seconds)
2022-08-09 14:51:00 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 14:52:37 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-09 14:53:05 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 14:53:39 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-08-09 14:53:46 +0200MajorBiscuit(~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl) (Ping timeout: 244 seconds)
2022-08-09 14:54:06 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-09 14:56:02 +0200kuribas(~user@ptr-17d51en70upy9zs31tv.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2022-08-09 14:56:13 +0200titibandit(~titibandi@2a00:8a60:c000:1:8a13:bf74:b2:8d47)
2022-08-09 14:57:47 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-09 15:02:31 +0200aliosablack(~chomwitt@ppp-94-67-201-122.home.otenet.gr) (Ping timeout: 252 seconds)
2022-08-09 15:03:40 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 15:04:05 +0200acidjnk_new(~acidjnk@p200300d6e70586665c86bfb0acf03c2b.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
2022-08-09 15:04:29 +0200off^(~off@206.85.120.17) (Remote host closed the connection)
2022-08-09 15:05:32 +0200mc47(~mc47@xmonad/TheMC47)
2022-08-09 15:05:36 +0200Natch(~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Remote host closed the connection)
2022-08-09 15:06:50 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds)
2022-08-09 15:07:44 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-09 15:07:59 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-09 15:08:06 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 15:09:16 +0200Guest45(~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net)
2022-08-09 15:09:30 +0200jakalx(~jakalx@base.jakalx.net) ()
2022-08-09 15:10:29 +0200jakalx(~jakalx@base.jakalx.net)
2022-08-09 15:11:05 +0200nilradical(~nilradica@user/naso) ()
2022-08-09 15:11:44 +0200frost(~frost@user/frost)
2022-08-09 15:11:53 +0200MajorBiscuit(~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net)
2022-08-09 15:15:06 +0200Major_Biscuit(~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl)
2022-08-09 15:16:39 +0200MajorBiscuit(~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Ping timeout: 268 seconds)
2022-08-09 15:16:53 +0200pmarg(~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02)
2022-08-09 15:17:16 +0200pmarg(~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02) (Remote host closed the connection)
2022-08-09 15:18:34 +0200nilradical(~nilradica@user/naso)
2022-08-09 15:18:58 +0200byorgey_byorgey
2022-08-09 15:19:02 +0200nilradical(~nilradica@user/naso) (Client Quit)
2022-08-09 15:19:19 +0200nilradical(~nilradica@user/naso)
2022-08-09 15:20:35 +0200pmarg(~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02)
2022-08-09 15:22:00 +0200lisk1nliskin
2022-08-09 15:24:15 +0200pmarg(~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02) (Client Quit)
2022-08-09 15:24:52 +0200Natch(~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
2022-08-09 15:25:32 +0200pmarg(~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02)
2022-08-09 15:27:21 +0200zxx7529(~Thunderbi@user/zxx7529)
2022-08-09 15:29:15 +0200Midjak(~Midjak@82.66.147.146)
2022-08-09 15:30:13 +0200titibandit(~titibandi@2a00:8a60:c000:1:8a13:bf74:b2:8d47) (Ping timeout: 268 seconds)
2022-08-09 15:31:18 +0200azimut_(~azimut@gateway/tor-sasl/azimut)
2022-08-09 15:31:23 +0200azimut(~azimut@gateway/tor-sasl/azimut) (Quit: ZNC - https://znc.in)
2022-08-09 15:31:29 +0200Major_Biscuit(~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl) (Ping timeout: 252 seconds)
2022-08-09 15:31:55 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2022-08-09 15:35:10 +0200Major_Biscuit(~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e)
2022-08-09 15:36:02 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-09 15:36:13 +0200Major_Biscuit(~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e) (Client Quit)
2022-08-09 15:36:31 +0200pmarg(~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02) (Quit: pmarg)
2022-08-09 15:37:54 +0200pmarg(~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02)
2022-08-09 15:39:26 +0200 <zzz> is it normal with gloss to have trouble getting keypress events register right? i'm getting duplicates and even triggers "on key up"
2022-08-09 15:39:55 +0200luffy(~chenqisu1@183.217.201.23) (Ping timeout: 252 seconds)
2022-08-09 15:40:02 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 15:40:31 +0200 <tomsmeding> O.o
2022-08-09 15:41:26 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-09 15:41:59 +0200noteness_(~noteness@user/noteness) (Ping timeout: 268 seconds)
2022-08-09 15:42:52 +0200noteness(~noteness@user/noteness)
2022-08-09 15:43:27 +0200MajorBiscuit(~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl)
2022-08-09 15:43:30 +0200Sciencentistguy(~sciencent@hacksoc/ordinary-member) (Quit: o/)
2022-08-09 15:43:36 +0200titibandit(~titibandi@sunp.ient.rwth-aachen.de)
2022-08-09 15:44:27 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 15:46:31 +0200Sciencentistguy(~sciencent@hacksoc/ordinary-member)
2022-08-09 15:46:53 +0200finsternis(~X@23.226.237.192) (Read error: Connection reset by peer)
2022-08-09 15:47:08 +0200mima(~mmh@dhcp-138-246-3-117.dynamic.eduroam.mwn.de)
2022-08-09 15:47:17 +0200 <zzz> no?
2022-08-09 15:48:05 +0200 <Guest45> I've never seen that zzz
2022-08-09 15:48:27 +0200 <zzz> :(
2022-08-09 15:48:36 +0200 <tomsmeding> yeah that sounds highly suspect, unless your keyboard is malfunctioning :p
2022-08-09 15:49:31 +0200 <zzz> tried and tested different keyboards
2022-08-09 15:49:48 +0200 <tomsmeding> zzz: which event exactly are you getting multiple times per keypress?
2022-08-09 15:50:08 +0200 <tomsmeding> also, are you sure it's not automatic key repeat?
2022-08-09 15:50:18 +0200 <tomsmeding> (like, holding 'a' will produce lots of 'a's)
2022-08-09 15:50:18 +0200 <Guest45> How can I branch on the presence of a typeclass instance? The examples of avoiding overlapping instances here https://wiki.haskell.org/GHC/AdvancedOverlap and here https://kseo.github.io/tags/closed%20type%20families.html are both concerned with branching based on types, but I'd like to branch based on whether an instance exists because if it does
2022-08-09 15:50:19 +0200 <Guest45> I would like to use the instance's features.
2022-08-09 15:50:31 +0200 <tomsmeding> you cannot
2022-08-09 15:50:36 +0200 <tomsmeding> everybody seems to want it :p
2022-08-09 15:51:32 +0200 <tomsmeding> Guest45: it would need to be a runtime check, because if you're in a library, someone who indirectly uses your library might define an instance -- so statically you cannot know
2022-08-09 15:51:41 +0200 <tomsmeding> and at runtime, type information is erased
2022-08-09 15:51:59 +0200 <tomsmeding> in TemplateHaskell you can check for the existence of instances, but that's compile-time metaprogramming
2022-08-09 15:52:32 +0200Guest3727(~Guest37@31.129.248.21)
2022-08-09 15:52:49 +0200 <geekosaur> https://hackage.haskell.org/package/ifcxt exists, with limitations
2022-08-09 15:52:52 +0200 <Guest45> tomsmeding, well I'd be fine doing this with a closed type family, but the syntax isn't even supported to put a constraint on the LHS or RHS of a typeclass instance body.
2022-08-09 15:53:15 +0200 <tomsmeding> it's also unclear what the semantics would be; what if two different users of your module both define an instance for the type in question, but those instances are different?
2022-08-09 15:53:48 +0200Guest3727(~Guest37@31.129.248.21) (Client Quit)
2022-08-09 15:53:52 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-08-09 15:54:17 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-09 15:55:05 +0200coot(~coot@213.134.176.158)
2022-08-09 15:55:16 +0200 <Guest45> I think I'm describing a slightly different problem... Maybe I've misunderstood and this is the same as the problem you're describing. Here's a paste: https://paste.tomsmeding.com/kIKovVD6
2022-08-09 15:55:47 +0200 <tomsmeding> in particular, ifcxt only gets the instances that are already defined at the point where you put mkIfCxtInstances
2022-08-09 15:55:58 +0200 <Guest45> I'll take a look at ifctx
2022-08-09 15:56:14 +0200 <tomsmeding> Guest45: see the readme here, the haddocks are unavailable https://github.com/mikeizbicki/ifcxt
2022-08-09 15:56:56 +0200 <tomsmeding> Guest45: hm, that's indeed a bit different than the usual question
2022-08-09 15:57:44 +0200Guest45(~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net) (Quit: Client closed)
2022-08-09 15:57:55 +0200Guest45(~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net)
2022-08-09 15:58:13 +0200mncheckm(~mncheck@193.224.205.254)
2022-08-09 15:58:27 +0200 <tomsmeding> still, same issues: if you write a function polymorphic in `a`, then some later user in another package could instantiate that `a` to a type you've never seen before
2022-08-09 15:58:29 +0200 <Guest45> Ifctx seems like it might be usable, because I could combine the two instances into one.
2022-08-09 15:59:12 +0200kuribas(~user@ptr-17d51en70upy9zs31tv.18120a2.ip6.access.telenet.be)
2022-08-09 15:59:17 +0200 <geekosaur> didn't they say closed type family though? that would prevent added instances
2022-08-09 15:59:24 +0200 <Guest45> tomsmeding All of the classes and intstances are going to be hidden in the library I'm writing. They're not intended to be comen.
2022-08-09 15:59:33 +0200 <Guest45> *not intended to be open
2022-08-09 15:59:34 +0200 <tomsmeding> geekosaur: added instances of the _class_, not the type family
2022-08-09 16:00:11 +0200 <tomsmeding> Guest45: ah, then it might work -- but you need all of the potentially-used instances (transitively) in scope at the point where you put mkIfCxtInstances ''MyClass
2022-08-09 16:00:46 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-08-09 16:01:02 +0200mncheck(~mncheck@193.224.205.254) (Ping timeout: 268 seconds)
2022-08-09 16:01:06 +0200zanyan(~zanyan@2a02:6b64:f194:0:1d3f:ed4e:5027:57f2)
2022-08-09 16:01:09 +0200califax(~califax@user/califx)
2022-08-09 16:01:46 +0200 <zanyan> hihi, just want to ask a simple question about how the sqrt function works
2022-08-09 16:02:20 +0200frost(~frost@user/frost) (Ping timeout: 252 seconds)
2022-08-09 16:02:47 +0200 <geekosaur> % :i sqrt
2022-08-09 16:02:47 +0200 <yahb2> type Floating :: * -> Constraint ; class Fractional a => Floating a where ; ... ; sqrt :: a -> a ; ... ; -- Defined in ‘GHC.Float’
2022-08-09 16:03:15 +0200 <zanyan> https://pastebin.com/xvASWmZ9
2022-08-09 16:03:15 +0200coot(~coot@213.134.176.158) (Remote host closed the connection)
2022-08-09 16:03:27 +0200 <geekosaur> so it depends on the type, which must be an instance of Floating. (if you want integer sqrt you must get it from somewhere else)
2022-08-09 16:03:42 +0200 <zanyan> oh, right right
2022-08-09 16:03:53 +0200 <geekosaur> so you want fromIntegral on the parameters
2022-08-09 16:03:59 +0200 <Guest45> I'm not sure i can use ifctx directly; I'd need a type-level branch as well as a term level branch. I'll try looking at the technique they used and see if I can build what I need.
2022-08-09 16:04:04 +0200 <geekosaur> and probably ** in place of ^
2022-08-09 16:04:11 +0200 <zanyan> gotchu, thanks!
2022-08-09 16:04:15 +0200noteness(~noteness@user/noteness) (Write error: Connection reset by peer)
2022-08-09 16:04:15 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-08-09 16:04:31 +0200noteness(~noteness@user/noteness)
2022-08-09 16:04:37 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-09 16:04:41 +0200 <geekosaur> mm, actually ^ should be fine
2022-08-09 16:04:44 +0200 <geekosaur> :t (^)
2022-08-09 16:04:45 +0200 <lambdabot> (Integral b, Num a) => a -> b -> a
2022-08-09 16:04:46 +0200 <zanyan> oh okay
2022-08-09 16:04:50 +0200 <geekosaur> right
2022-08-09 16:04:59 +0200 <Guest45> Or maybe the type level branch can populate that flag for me somehow; seem dubious (type to value to type ...)
2022-08-09 16:05:13 +0200 <geekosaur> singletons does that thing, but rip your sanity
2022-08-09 16:05:29 +0200 <tomsmeding> Guest45: yeah I feel you might be able to add extra information to the IfCxt class to accomplish what you need
2022-08-09 16:05:35 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-09 16:05:53 +0200 <Guest45> I was hoping to avoid going via the value level, but it might be unavoidable.
2022-08-09 16:07:08 +0200zebrag(~chris@user/zebrag)
2022-08-09 16:08:25 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2022-08-09 16:09:04 +0200mima(~mmh@dhcp-138-246-3-117.dynamic.eduroam.mwn.de) (Ping timeout: 268 seconds)
2022-08-09 16:09:51 +0200Clint_Clint
2022-08-09 16:12:53 +0200aweinstock(~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) (Ping timeout: 268 seconds)
2022-08-09 16:13:11 +0200ec(~ec@gateway/tor-sasl/ec)
2022-08-09 16:13:42 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 16:14:45 +0200qhong(~qhong@rescomp-21-400677.stanford.edu) (Ping timeout: 252 seconds)
2022-08-09 16:15:42 +0200 <zanyan> okay I managed to do it Geekosaur, thanks!
2022-08-09 16:16:40 +0200 <zanyan> I forgot that uhhhhh Haskell has left associative functions and so I applied "fromIntegral" like the way you would in an imperative programming language
2022-08-09 16:17:58 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-09 16:18:06 +0200mastarija(~mastarija@2a05:4f46:e03:6000:c421:108c:b5ba:309e)
2022-08-09 16:19:16 +0200pmarg(~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02) (Quit: pmarg)
2022-08-09 16:20:14 +0200aweinstock(~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com)
2022-08-09 16:20:32 +0200pmarg(~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02)
2022-08-09 16:20:46 +0200aliosablack(~chomwitt@2a02:587:dc15:5e00:4013:2028:e3f3:d52d)
2022-08-09 16:21:51 +0200kuribas(~user@ptr-17d51en70upy9zs31tv.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2022-08-09 16:22:41 +0200ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 268 seconds)
2022-08-09 16:24:08 +0200ec(~ec@gateway/tor-sasl/ec)
2022-08-09 16:25:47 +0200acidjnk_new(~acidjnk@p200300d6e705866645103b1bac763c69.dip0.t-ipconnect.de)
2022-08-09 16:27:39 +0200 <nilradical> what actually happens when i put `default (Text)` at the top of my file
2022-08-09 16:27:46 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-08-09 16:27:55 +0200 <nilradical> using OverloadedStrings
2022-08-09 16:28:11 +0200ec(~ec@gateway/tor-sasl/ec)
2022-08-09 16:30:37 +0200 <nilradical> does it mean whenever i have String in that file, it is secretly Text?
2022-08-09 16:31:10 +0200 <tomsmeding> nilradical: https://downloads.haskell.org/~ghc/latest/docs/users_guide/exts/overloaded_strings.html#extension-…
2022-08-09 16:31:20 +0200cfricke(~cfricke@user/cfricke)
2022-08-09 16:31:25 +0200 <tomsmeding> search for "Haskell's defaulting mechanism"
2022-08-09 16:32:00 +0200 <tomsmeding> (normally default declarations are for Num only; OverloadedStrings extends this to IsString)
2022-08-09 16:32:32 +0200 <albet70> there's Functor for map, Foldable for reduce, is there something for filter?
2022-08-09 16:33:25 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 16:33:30 +0200 <nilradical> tomsmeding: thanks
2022-08-09 16:34:10 +0200 <lortabac> @hackage witherable -- albet70
2022-08-09 16:34:10 +0200 <lambdabot> https://hackage.haskell.org/package/witherable -- albet70
2022-08-09 16:37:09 +0200mima(~mmh@dhcp-138-246-3-117.dynamic.eduroam.mwn.de)
2022-08-09 16:37:26 +0200mastarija(~mastarija@2a05:4f46:e03:6000:c421:108c:b5ba:309e) (Ping timeout: 268 seconds)
2022-08-09 16:39:42 +0200 <nilradical> is there a printf (like Text.Printf) for Text?
2022-08-09 16:39:43 +0200aliosablack(~chomwitt@2a02:587:dc15:5e00:4013:2028:e3f3:d52d) (Remote host closed the connection)
2022-08-09 16:40:02 +0200aliosablack(~chomwitt@2a02:587:dc15:5e00:ea1e:e5c0:de8:53e2)
2022-08-09 16:41:29 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-09 16:41:56 +0200 <geekosaur> https://hackage.haskell.org/package/vformat-0.14.1.0/docs/Text-Format.html#v:fromString I was looking at the other day
2022-08-09 16:42:20 +0200 <geekosaur> (ignore the fromString part, OverloadedStrings does that for you)
2022-08-09 16:42:55 +0200 <nilradical> geekosaur: thanks
2022-08-09 16:44:46 +0200Guest45(~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net) (Quit: Client closed)
2022-08-09 16:45:23 +0200Guest45(~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net)
2022-08-09 16:45:36 +0200shriekingnoise(~shrieking@186.137.167.202)
2022-08-09 16:45:38 +0200zanyan(~zanyan@2a02:6b64:f194:0:1d3f:ed4e:5027:57f2) (Quit: Ping timeout (120 seconds))
2022-08-09 16:45:55 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2022-08-09 16:48:14 +0200noteness(~noteness@user/noteness) (Remote host closed the connection)
2022-08-09 16:48:42 +0200noteness(~noteness@user/noteness)
2022-08-09 16:49:18 +0200 <Guest45> As far as I can tell, the trick that IfCtx uses relies on the term level call to `ifCtx`. I'm contemplating going back from terms to types via some boilerplate minimal singletons stuff. I need to think a bit more though, because there ought to be a way to do the if at the type level.
2022-08-09 16:49:48 +0200In0perable(~PLAYER_1@fancydata.science) (Quit: All your buffer are belong to us!)
2022-08-09 16:51:02 +0200dfg(~dfg@user/dfg) (Ping timeout: 244 seconds)
2022-08-09 16:51:35 +0200mud(~mud@user/kadoban) (Ping timeout: 268 seconds)
2022-08-09 16:52:20 +0200`2jt(~jtomas@56.red-88-17-82.dynamicip.rima-tde.net)
2022-08-09 16:53:09 +0200dfg(~dfg@dfg.rocks)
2022-08-09 16:53:09 +0200dfg(~dfg@dfg.rocks) (Changing host)
2022-08-09 16:53:09 +0200dfg(~dfg@user/dfg)
2022-08-09 16:53:25 +0200Guest26(~Guest26@cpc151201-smal19-2-0-cust133.19-1.cable.virginm.net)
2022-08-09 16:53:37 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 252 seconds)
2022-08-09 16:54:13 +0200alternateved(~user@staticline-31-183-149-36.toya.net.pl) (Remote host closed the connection)
2022-08-09 16:56:57 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 16:57:53 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-08-09 16:57:56 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-09 16:59:19 +0200EsoAlgo(~EsoAlgo@129.146.136.145)
2022-08-09 17:00:14 +0200kuribas(~user@ptr-17d51epg7uxmm3fpjg8.18120a2.ip6.access.telenet.be)
2022-08-09 17:01:02 +0200monadplus(~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) (Quit: Client closed)
2022-08-09 17:01:05 +0200jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2022-08-09 17:01:06 +0200vglfr(~vglfr@37.73.110.255)
2022-08-09 17:01:25 +0200jpds(~jpds@gateway/tor-sasl/jpds)
2022-08-09 17:02:11 +0200Guest45(~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net) (Quit: Client closed)
2022-08-09 17:02:24 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 244 seconds)
2022-08-09 17:02:31 +0200Guest45(~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net)
2022-08-09 17:03:53 +0200`2jt(~jtomas@56.red-88-17-82.dynamicip.rima-tde.net) (Remote host closed the connection)
2022-08-09 17:04:37 +0200Inoperable(~PLAYER_1@fancydata.science)
2022-08-09 17:04:41 +0200GoldsteinQ(~goldstein@goldstein.rs) (Ping timeout: 268 seconds)
2022-08-09 17:04:50 +0200gmg(~user@user/gehmehgeh)
2022-08-09 17:07:34 +0200vglfr(~vglfr@37.73.110.255) (Ping timeout: 244 seconds)
2022-08-09 17:07:39 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-08-09 17:07:57 +0200monadplus(~monadplus@130.red-83-43-6.dynamicip.rima-tde.net)
2022-08-09 17:08:13 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-09 17:09:28 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 17:10:58 +0200alp_(~alp@user/alp)
2022-08-09 17:11:42 +0200vglfr(~vglfr@37.73.110.255)
2022-08-09 17:13:13 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 17:13:51 +0200elkcl(~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru)
2022-08-09 17:14:15 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:f6c8:3b8a:6258:a564) (Quit: WeeChat 2.8)
2022-08-09 17:16:17 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2022-08-09 17:17:41 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-08-09 17:21:59 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-09 17:22:13 +0200 <nilradical> i have a record type `M` with a field `unity`. using OverloadedRecordDot, if i have `a :: M` and do `a.unit` i get `parse error on input ‘unit’` . If i rename it to 'unity' there is no error . ?
2022-08-09 17:22:14 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-09 17:22:27 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)
2022-08-09 17:22:43 +0200 <nilradical> typo... the 1st `unity` should be `unit`
2022-08-09 17:25:59 +0200Guest45(~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net) (Quit: Client closed)
2022-08-09 17:34:08 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 17:35:47 +0200vglfr(~vglfr@37.73.110.255) (Ping timeout: 252 seconds)
2022-08-09 17:37:05 +0200Inst(~Inst@2601:6c4:4080:3f80:258f:9da7:8d32:3e0c) (Ping timeout: 255 seconds)
2022-08-09 17:37:22 +0200hakutaku(~hakutaku@62.32.91.171) (Quit: WeeChat 3.6)
2022-08-09 17:39:43 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)
2022-08-09 17:40:07 +0200acidjnk_new(~acidjnk@p200300d6e705866645103b1bac763c69.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
2022-08-09 17:40:33 +0200causal(~user@50.35.83.177) (Quit: WeeChat 3.6)
2022-08-09 17:41:09 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-09 17:44:56 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com)
2022-08-09 17:45:46 +0200cheater(~Username@user/cheater)
2022-08-09 17:47:18 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 17:50:52 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-09 17:51:11 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-09 17:52:01 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)
2022-08-09 17:52:33 +0200titibandit(~titibandi@sunp.ient.rwth-aachen.de) (Remote host closed the connection)
2022-08-09 17:54:51 +0200fserucas(~fserucas@46.50.4.9) (Ping timeout: 252 seconds)
2022-08-09 17:56:26 +0200slack1256(~slack1256@wsip-184-177-0-226.no.no.cox.net)
2022-08-09 17:56:52 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 17:57:11 +0200Milan(~Milan@46.245.72.105)
2022-08-09 17:57:34 +0200Milan(~Milan@46.245.72.105) (Client Quit)
2022-08-09 18:02:25 +0200azimut_(~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
2022-08-09 18:02:53 +0200azimut(~azimut@gateway/tor-sasl/azimut)
2022-08-09 18:03:07 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)
2022-08-09 18:03:31 +0200Guest94(~Guest94@pool-100-40-26-64.prvdri.fios.verizon.net)
2022-08-09 18:03:48 +0200Guest26(~Guest26@cpc151201-smal19-2-0-cust133.19-1.cable.virginm.net) (Quit: Client closed)
2022-08-09 18:04:21 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.6)
2022-08-09 18:05:19 +0200Guest94(~Guest94@pool-100-40-26-64.prvdri.fios.verizon.net) (Client Quit)
2022-08-09 18:05:32 +0200 <slack1256> Hi, I want to use native haskell data types for configuration. On the first iteration I just used the Read instances. But I want to support comments and descriptions, any libraries I should take a look at?
2022-08-09 18:06:18 +0200 <slack1256> I am not interested currently on schema declarations or dhall for config, I will keep it simple and use the native haskell representation for now.
2022-08-09 18:06:22 +0200qhong(~qhong@rescomp-21-400677.stanford.edu)
2022-08-09 18:06:28 +0200 <geekosaur> dyre?
2022-08-09 18:06:46 +0200 <geekosaur> (was going to suggest dhall then you said no)
2022-08-09 18:08:58 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 18:11:07 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-08-09 18:11:11 +0200 <slack1256> geekosaur: I thought dyre was concerned with automatic recompilation, but seems to do just what I need.
2022-08-09 18:11:17 +0200 <slack1256> I will go with it for now.
2022-08-09 18:12:05 +0200cheater(~Username@user/cheater) (Ping timeout: 252 seconds)
2022-08-09 18:12:07 +0200 <geekosaur[m]> The problem with wanting to do your configuration in Haskell is that either you do it the Dyre way or you need to link all of ghc into your program, which seems a bit heavy for configuration
2022-08-09 18:12:24 +0200alp_(~alp@user/alp) (Ping timeout: 268 seconds)
2022-08-09 18:12:40 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-09 18:14:15 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2022-08-09 18:17:28 +0200vysn(~vysn@user/vysn)
2022-08-09 18:18:09 +0200coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
2022-08-09 18:18:49 +0200cheater(~Username@user/cheater)
2022-08-09 18:23:52 +0200nilradical(~nilradica@user/naso) ()
2022-08-09 18:26:36 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 18:29:03 +0200titibandit(~titibandi@xdsl-212-8-147-38.nc.de)
2022-08-09 18:30:32 +0200Milan(~Milan@46.245.72.105)
2022-08-09 18:30:44 +0200Milan(~Milan@46.245.72.105) (Client Quit)
2022-08-09 18:30:58 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-09 18:31:00 +0200jao(~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
2022-08-09 18:34:00 +0200Tuplanolla(~Tuplanoll@91-159-69-12.elisa-laajakaista.fi)
2022-08-09 18:35:13 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)
2022-08-09 18:35:31 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-08-09 18:39:59 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-09 18:40:28 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-09 18:48:19 +0200ski(~ski@217.116.228.14)
2022-08-09 18:52:18 +0200 <kuribas> slack1256: you can use higher kinded records: https://chrispenner.ca/posts/hkd-options
2022-08-09 18:53:46 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 268 seconds)
2022-08-09 18:57:11 +0200benin0(~benin@183.82.204.69) (Ping timeout: 252 seconds)
2022-08-09 18:57:48 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-08-09 18:58:07 +0200raym(~raym@user/raym)
2022-08-09 18:59:54 +0200benin0(~benin@183.82.30.53)
2022-08-09 18:59:59 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-09 19:00:26 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 19:00:38 +0200ridcully(~ridcully@p57b5218b.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2022-08-09 19:02:05 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-09 19:03:03 +0200ski(~ski@217.116.228.14) (Ping timeout: 252 seconds)
2022-08-09 19:05:25 +0200ridcully(~ridcully@pd951fa32.dip0.t-ipconnect.de)
2022-08-09 19:05:40 +0200monadplus(~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) (Ping timeout: 252 seconds)
2022-08-09 19:07:15 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)
2022-08-09 19:08:11 +0200benin0(~benin@183.82.30.53) (Ping timeout: 252 seconds)
2022-08-09 19:08:24 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 19:08:40 +0200benin0(~benin@183.82.176.176)
2022-08-09 19:11:38 +0200econo(uid147250@user/econo)
2022-08-09 19:13:27 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)
2022-08-09 19:15:21 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-08-09 19:15:46 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-09 19:16:37 +0200benin0(~benin@183.82.176.176) (Ping timeout: 252 seconds)
2022-08-09 19:16:57 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 19:17:30 +0200cyanide3dinner(~cyanide4d@2402:e280:2149:513:931b:41cb:2a7e:791d)
2022-08-09 19:19:24 +0200mud(~mud@user/kadoban)
2022-08-09 19:22:03 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)
2022-08-09 19:23:15 +0200zxx7529(~Thunderbi@user/zxx7529) (Quit: zxx7529)
2022-08-09 19:23:17 +0200coot(~coot@213.134.176.158)
2022-08-09 19:23:22 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-08-09 19:27:02 +0200kenran(~kenran@200116b82b0c9300327c25528a273147.dip.versatel-1u1.de)
2022-08-09 19:28:37 +0200acidjnk_new(~acidjnk@p200300d6e705866691d881defe97b1cb.dip0.t-ipconnect.de)
2022-08-09 19:30:06 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
2022-08-09 19:34:25 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-09 19:36:03 +0200codoliodolio
2022-08-09 19:37:22 +0200ski(~ski@217.116.228.14)
2022-08-09 19:37:36 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 19:39:58 +0200kenran(~kenran@200116b82b0c9300327c25528a273147.dip.versatel-1u1.de) (Ping timeout: 268 seconds)
2022-08-09 19:42:38 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 255 seconds)
2022-08-09 19:43:59 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-09 19:44:32 +0200kenran(~kenran@200116b82b0c93001ede1376b194f04b.dip.versatel-1u1.de)
2022-08-09 19:46:35 +0200kenran(~kenran@200116b82b0c93001ede1376b194f04b.dip.versatel-1u1.de) (Client Quit)
2022-08-09 19:46:41 +0200ski(~ski@217.116.228.14) (Ping timeout: 255 seconds)
2022-08-09 19:52:33 +0200fef(~thedawn@user/thedawn)
2022-08-09 19:52:38 +0200noteness(~noteness@user/noteness) (Remote host closed the connection)
2022-08-09 19:52:55 +0200pmarg(~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02) (Ping timeout: 268 seconds)
2022-08-09 19:53:22 +0200noteness(~noteness@user/noteness)
2022-08-09 19:55:07 +0200ski(~ski@217.116.228.14)
2022-08-09 19:57:39 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 19:59:30 +0200neceve(~quassel@2.26.93.14)
2022-08-09 20:01:49 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-09 20:01:55 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 20:02:07 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 20:03:45 +0200raym(~raym@user/raym) (Remote host closed the connection)
2022-08-09 20:07:43 +0200ski(~ski@217.116.228.14) (Ping timeout: 268 seconds)
2022-08-09 20:08:52 +0200Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-08-09 20:09:04 +0200raym(~raym@user/raym)
2022-08-09 20:10:18 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
2022-08-09 20:10:19 +0200Lord_of_Life_Lord_of_Life
2022-08-09 20:12:22 +0200ski(~ski@217.116.228.14)
2022-08-09 20:15:53 +0200irfan(~irfan@user/irfan) (Quit: leaving)
2022-08-09 20:18:58 +0200mima(~mmh@dhcp-138-246-3-117.dynamic.eduroam.mwn.de) ()
2022-08-09 20:23:45 +0200ski(~ski@217.116.228.14) (Ping timeout: 268 seconds)
2022-08-09 20:27:06 +0200ski(~ski@217.116.228.14)
2022-08-09 20:27:53 +0200kuribas(~user@ptr-17d51epg7uxmm3fpjg8.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2022-08-09 20:31:08 +0200raym(~raym@user/raym) (Ping timeout: 244 seconds)
2022-08-09 20:33:20 +0200raym(~raym@user/raym)
2022-08-09 20:36:56 +0200ski(~ski@217.116.228.14) (Remote host closed the connection)
2022-08-09 20:38:54 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-08-09 20:40:44 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-09 20:42:31 +0200ski(~ski@217.116.228.14)
2022-08-09 20:43:38 +0200seriously(~seriously@2001:1c06:1b1d:6f00:efd2:b7b6:20af:5f73)
2022-08-09 20:47:11 +0200neceve(~quassel@2.26.93.14) (Ping timeout: 268 seconds)
2022-08-09 20:49:36 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-09 20:53:54 +0200ski(~ski@217.116.228.14) (Remote host closed the connection)
2022-08-09 20:54:04 +0200pmarg(~pmarg@224.80-203-5.customer.lyse.net)
2022-08-09 20:58:20 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 20:58:54 +0200MajorBiscuit(~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl) (Ping timeout: 268 seconds)
2022-08-09 20:59:24 +0200Hecate_Hecate
2022-08-09 21:00:48 +0200MajorBiscuit(~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net)
2022-08-09 21:01:27 +0200 <seriously> hello, is anyone familiar with this HW assignment from Yorgeys CIS 194? https://www.cis.upenn.edu/~cis1940/spring13/hw/05-type-classes.pdf  . Im stuck on the last problem.
2022-08-09 21:02:42 +0200 <seriously> Specifically, this explanation: https://paste.tomsmeding.com/zYVyJ8YM
2022-08-09 21:03:18 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-08-09 21:03:22 +0200 <seriously> A gentle push in the right direction would be appreciated
2022-08-09 21:04:41 +0200bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-08-09 21:05:31 +0200 <geekosaur> at least one person in here is familiar with it 🙂 but what difficulty are you having with the explanation?
2022-08-09 21:06:01 +0200MajorBiscuit(~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Quit: WeeChat 3.5)
2022-08-09 21:06:03 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-09 21:06:10 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 21:06:59 +0200ccntrq(~Thunderbi@172.209.94.92.rev.sfr.net) (Remote host closed the connection)
2022-08-09 21:07:29 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-09 21:08:15 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-08-09 21:08:33 +0200adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-08-09 21:08:58 +0200 <seriously> "these same functions can be inter-
2022-08-09 21:08:58 +0200 <seriously> preted as expressions"
2022-08-09 21:09:13 +0200ski(~ski@217.116.228.14)
2022-08-09 21:09:42 +0200 <seriously> I dont understand how a function that takes a map and returns maybe integer would look as an expression
2022-08-09 21:10:05 +0200 <seriously> (M.Map String Integer -> Maybe Integer)
2022-08-09 21:10:37 +0200slack1256(~slack1256@wsip-184-177-0-226.no.no.cox.net) (Ping timeout: 268 seconds)
2022-08-09 21:11:26 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 244 seconds)
2022-08-09 21:12:35 +0200 <geekosaur> this would make `flip M.lookup "varName"` an expression, whoe value is `Nothing` if `varName` doesn't exist in the Map or `Just x` if it exists with value `x`
2022-08-09 21:12:45 +0200 <geekosaur> *whose value
2022-08-09 21:13:17 +0200 <geekosaur> remember that functions are themselves prefectly good values in Haskell
2022-08-09 21:13:42 +0200 <seriously> And also throughout the problem (excercise 6) the instances of type class Expr make total sense... Instance Expr Integers, Expr Bools, etc... but how the heck does an Expr instance of a function as a type make any sense
2022-08-09 21:13:43 +0200o-90(~o-90@gateway/tor-sasl/o-90)
2022-08-09 21:14:01 +0200Kaiepi(~Kaiepi@142.68.249.28) (Read error: Connection reset by peer)
2022-08-09 21:14:31 +0200 <geekosaur> and that partial application of functions makes them quite useful as values
2022-08-09 21:14:47 +0200Kaiepi(~Kaiepi@142.68.249.28)
2022-08-09 21:15:52 +0200 <seriously> to clarify my last point: Expr (M.Map String Integer -> Maybe Integer)
2022-08-09 21:15:56 +0200 <geekosaur> yes
2022-08-09 21:15:58 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2022-08-09 21:16:01 +0200 <geekosaur> reread what I just said
2022-08-09 21:16:08 +0200 <seriously> ok
2022-08-09 21:17:06 +0200ski(~ski@217.116.228.14) (Remote host closed the connection)
2022-08-09 21:17:17 +0200 <geekosaur> instead of `flip M.lookup "varName"` it could be `("varName"?!)`; see https://downloads.haskell.org/ghc/9.2.3/docs/html/libraries/containers-0.6.5.1/Data-Map-Lazy.html#…
2022-08-09 21:17:39 +0200 <geekosaur> oh sorry that's reversed. `("varName"!?)`
2022-08-09 21:17:44 +0200 <tomsmeding> perhaps also helpful: try to write down the types of all the methods of Expr and HasVars when specialised to those particular function types, and then think separately about how you could sensibly implement those specialised types
2022-08-09 21:17:53 +0200ski(~ski@217.116.228.14)
2022-08-09 21:18:16 +0200o-90(~o-90@gateway/tor-sasl/o-90) (Remote host closed the connection)
2022-08-09 21:18:27 +0200 <ski> @type M.lookup "stringly" :: M.Map String Integer -> Maybe Integer -- seriously
2022-08-09 21:18:28 +0200 <lambdabot> M.Map String Integer -> Maybe Integer
2022-08-09 21:20:29 +0200notzmv(~zmv@user/notzmv) (Ping timeout: 268 seconds)
2022-08-09 21:20:46 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 21:22:08 +0200Topsi(~Topsi@dyndsl-095-033-091-248.ewe-ip-backbone.de)
2022-08-09 21:25:07 +0200 <seriously> still here just still working through it
2022-08-09 21:25:23 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 244 seconds)
2022-08-09 21:27:34 +0200hgolden(~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Quit: Konversation terminated!)
2022-08-09 21:28:28 +0200waleee(~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
2022-08-09 21:29:40 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-08-09 21:30:28 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-09 21:32:51 +0200jmdaemon(~jmdaemon@user/jmdaemon)
2022-08-09 21:35:57 +0200raym(~raym@user/raym) (Ping timeout: 252 seconds)
2022-08-09 21:37:46 +0200raym(~raym@user/raym)
2022-08-09 21:41:21 +0200ski(~ski@217.116.228.14) (Remote host closed the connection)
2022-08-09 21:42:07 +0200vglfr(~vglfr@37.73.110.255)
2022-08-09 21:42:35 +0200BanUtama(~blake.rai@user/BanUtama)
2022-08-09 21:43:43 +0200ski(~ski@217.116.228.14)
2022-08-09 21:46:11 +0200 <tomsmeding> take your time, ascending to the functional level requires laying of new roads in the brain :)
2022-08-09 21:46:24 +0200matthewmosior(~matthewmo@173.170.253.91) (Remote host closed the connection)
2022-08-09 21:49:16 +0200 <seriously> '=( thanks ill keep trying
2022-08-09 21:51:28 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 21:53:11 +0200ski(~ski@217.116.228.14) (Ping timeout: 252 seconds)
2022-08-09 21:55:50 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 255 seconds)
2022-08-09 21:57:23 +0200 <seriously> giving up for now will try again tomorow; thanks for the help
2022-08-09 21:57:43 +0200seriously(~seriously@2001:1c06:1b1d:6f00:efd2:b7b6:20af:5f73) (Quit: Client closed)
2022-08-09 21:58:19 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 252 seconds)
2022-08-09 21:59:35 +0200 <monadplus[m]> pbrpy5hv764rezd7
2022-08-09 21:59:42 +0200 <geekosaur> uh
2022-08-09 21:59:44 +0200 <tomsmeding> oops?
2022-08-09 22:00:10 +0200ski(~ski@217.116.228.14)
2022-08-09 22:00:11 +0200 <Rembane_> Sounds like a good password
2022-08-09 22:00:20 +0200 <monadplus[m]> My bad sorry
2022-08-09 22:00:24 +0200 <geekosaur> past tense
2022-08-09 22:00:31 +0200 <geekosaur> one hopes
2022-08-09 22:04:34 +0200raehik(~raehik@82.21.176.157)
2022-08-09 22:04:44 +0200riverside(~riverside@109.249.184.161)
2022-08-09 22:05:22 +0200machinedgod(~machinedg@d172-219-86-154.abhsia.telus.net)
2022-08-09 22:06:47 +0200fef(~thedawn@user/thedawn) (Ping timeout: 268 seconds)
2022-08-09 22:07:39 +0200monadplus(~monadplus@130.red-83-43-6.dynamicip.rima-tde.net)
2022-08-09 22:08:19 +0200fserucas(~fserucas@46.50.4.9)
2022-08-09 22:08:23 +0200gdown(~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net)
2022-08-09 22:09:03 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 22:09:24 +0200fserucas(~fserucas@46.50.4.9) (Client Quit)
2022-08-09 22:09:28 +0200monadplus(~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) (Client Quit)
2022-08-09 22:09:28 +0200titibandit(~titibandi@xdsl-212-8-147-38.nc.de) (Remote host closed the connection)
2022-08-09 22:09:55 +0200ski(~ski@217.116.228.14) (Remote host closed the connection)
2022-08-09 22:12:06 +0200 <EvanR> my password is so strong I just tell everyone
2022-08-09 22:15:35 +0200gehmehgeh(~user@user/gehmehgeh)
2022-08-09 22:16:02 +0200gmg(~user@user/gehmehgeh) (Ping timeout: 268 seconds)
2022-08-09 22:16:13 +0200 <riverside> any news in the haskell world?
2022-08-09 22:16:30 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-08-09 22:17:45 +0200 <geekosaur> as of when? also you may want to peruse discourse.haskell.org
2022-08-09 22:19:21 +0200kadoban1(~kadoban@user/kadoban) ()
2022-08-09 22:19:57 +0200raehik(~raehik@82.21.176.157) (Ping timeout: 252 seconds)
2022-08-09 22:21:02 +0200eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
2022-08-09 22:23:46 +0200asdf_(~asdf@130.red-83-43-6.dynamicip.rima-tde.net)
2022-08-09 22:25:32 +0200 <dsal> EvanR: They'll never guess your username.
2022-08-09 22:26:49 +0200 <geekosaur> there's at least one service I used to use whose password rules were so craptacularly limited that I used the username as the actual password
2022-08-09 22:27:55 +0200pgib(~textual@173.38.117.69)
2022-08-09 22:27:59 +0200 <tomsmeding> geekosaur: I suppose that was not a service with public usernames?
2022-08-09 22:28:03 +0200 <riverside> wow, i wouldnt have expected like 40k views for some of the threads
2022-08-09 22:29:11 +0200 <riverside> i guess haskell is entering its mainstream phase, i even heard John Carmack mention it on the Lex Fridman podcast
2022-08-09 22:29:25 +0200eternalforms(~obsrwr@46.101.168.131) (Remote host closed the connection)
2022-08-09 22:29:39 +0200asdf_(~asdf@130.red-83-43-6.dynamicip.rima-tde.net) (Quit: Leaving)
2022-08-09 22:30:38 +0200 <geekosaur[m]> Carmack's been mentioning it for years (mostly pissing on it)
2022-08-09 22:31:54 +0200 <riverside> "absurd mindbending paradigm" sort of angle, but he kindly caveated it with something like "C is becoming rarer"
2022-08-09 22:32:41 +0200 <riverside> top thread SPJ going to work on a new language called "Verse", i wonder how it will compare to haskell
2022-08-09 22:34:10 +0200 <merijn> riverside: Carmack gave a keynote talking about haskell about 8 years ago too :p
2022-08-09 22:34:29 +0200 <merijn> My bad, 6 years ago
2022-08-09 22:35:42 +0200 <merijn> riverside: A lot of the more techy people in games have been on the "C is dead/needs to die/etc." side of the fight for decades :p
2022-08-09 22:35:59 +0200 <riverside> oh cool. yeah, i guess with people with such a large profile promoting it we should see a pretty decent uptake of users
2022-08-09 22:36:31 +0200 <riverside> merijn: i think im alergic to curly braces from having haskell as a first language
2022-08-09 22:37:02 +0200 <riverside> and iv yet to find a functional programing language that compares in terms of clean-ness of syntax
2022-08-09 22:37:02 +0200 <merijn> riverside: In 2006 (I think? I can't find the exact date of the talk) Tim Sweeney from Epic Games gave a keynote about his vision of "languages for games"
2022-08-09 22:37:19 +0200 <merijn> Spoiler: Most of the stuff they want in games engines, C is terrible at
2022-08-09 22:37:36 +0200 <riverside> i dont know enough about the particulars of that field to understand
2022-08-09 22:37:37 +0200 <merijn> riverside: I dunno if there's a video somehwere, but slides are here: https://www.st.cs.uni-saarland.de/edu/seminare/2005/advanced-fp/docs/sweeny.pdf
2022-08-09 22:37:46 +0200 <riverside> thanks
2022-08-09 22:39:00 +0200 <Lears> riverside: Did you know you can write do { ...; ...; let { x = ...; y = ... }; ... } if you want to?
2022-08-09 22:39:04 +0200biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2022-08-09 22:39:23 +0200 <riverside> hmm, judging from that it seems like they have the same problems as we do in the scientific programming community, basically fast vector stuff.
2022-08-09 22:39:39 +0200 <tomsmeding> and did you know that SPJ was (is?) partial to that syntax over the usual indentation-based ("layout") version?
2022-08-09 22:39:40 +0200 <Lears> There can actually be a lot of curly braces in Haskell.
2022-08-09 22:39:51 +0200 <riverside> Lears: lol, that actually looks pretty useful
2022-08-09 22:39:52 +0200gehmehgehgmg
2022-08-09 22:39:58 +0200 <merijn> tomsmeding: spj syntax is funky in many ways
2022-08-09 22:40:21 +0200 <merijn> riverside: Technically, Haskell's layout system is defined as syntactic sugar for braces and semicolons :p
2022-08-09 22:40:40 +0200 <merijn> tomsmeding: SPJ uses prefix semicolons
2022-08-09 22:40:46 +0200 <riverside> and all of these things makes writing an interpreter kind of difficult
2022-08-09 22:40:53 +0200 <merijn> Which, frankly, should be a bannable offense
2022-08-09 22:40:56 +0200 <tomsmeding> re syntactic sugar: yes and in the grossest way possible
2022-08-09 22:41:33 +0200 <tomsmeding> if the parser encounters a parse error, it goes back and inserts a } and tries again
2022-08-09 22:42:05 +0200 <tomsmeding> recently I've tried to write a parser for haskell-like syntax without such a hack, and it seems to work fine
2022-08-09 22:42:10 +0200 <tomsmeding> but there's probably something I'm missing :)
2022-08-09 22:42:19 +0200slack1256(~slack1256@wsip-184-177-0-226.no.no.cox.net)
2022-08-09 22:42:32 +0200 <riverside> that reminds me of genetic programming using SK combinators
2022-08-09 22:44:04 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-08-09 22:44:36 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-08-09 22:44:58 +0200 <riverside> hmm, those game language slides mention sparse interaction graphs
2022-08-09 22:45:10 +0200 <riverside> (you can see where im going with that...)
2022-08-09 22:45:51 +0200 <riverside> i always thought that if graphs were a language primative that it would simplify the implementation of the compiler
2022-08-09 22:46:07 +0200califax(~califax@user/califx) (Remote host closed the connection)
2022-08-09 22:46:23 +0200 <riverside> but got scared off from trying to approach the formal methods style intermediary language we compile to
2022-08-09 22:46:35 +0200califax(~califax@user/califx)
2022-08-09 22:46:42 +0200 <riverside> i forget what its called... lambda++ or something
2022-08-09 22:46:48 +0200 <Cale> merijn: prefix semicolons I can live with, just don't do the garbage where you start a new do-block somewhere in the middle of another and don't increase the indentation level
2022-08-09 22:47:08 +0200darchitect1(~darchitec@2a00:23c6:3584:df01:7ab:2377:4825:f9a)
2022-08-09 22:47:12 +0200 <Cale> That's where I draw the line, haha
2022-08-09 22:47:26 +0200pmarg(~pmarg@224.80-203-5.customer.lyse.net) (Remote host closed the connection)
2022-08-09 22:47:29 +0200noteness(~noteness@user/noteness) (Ping timeout: 268 seconds)
2022-08-09 22:47:31 +0200 <riverside> recently had to add extra indentation to if statements because of that...
2022-08-09 22:47:33 +0200 <tomsmeding> riverside: you mean what GHC compiles to?
2022-08-09 22:47:37 +0200 <riverside> yeah
2022-08-09 22:47:42 +0200 <tomsmeding> system F?
2022-08-09 22:47:45 +0200 <riverside> thats it
2022-08-09 22:47:55 +0200 <riverside> not sure if thats where the graph goes or what
2022-08-09 22:47:59 +0200 <tomsmeding> Cale: ._.
2022-08-09 22:48:20 +0200 <geekosaur> isn't the graph more on the STG level?
2022-08-09 22:48:35 +0200 <tomsmeding> Cale: like, have `when some_condition $ do` and then continue on the same indentation level?
2022-08-09 22:48:42 +0200 <tomsmeding> geekosaur: I would guess so
2022-08-09 22:48:45 +0200 <riverside> well there was all this complication of "explicating cycles"
2022-08-09 22:48:54 +0200 <riverside> geekosaur: idk
2022-08-09 22:49:09 +0200 <tomsmeding> though I feel like we're talking about graphs on different levels here
2022-08-09 22:49:16 +0200 <riverside> but yeah sure, you can probably put it at a higher level than system F
2022-08-09 22:49:49 +0200 <tomsmeding> I haven't looked at the slides (so sorry if I'm mistaken), but I feel like riverside is talking about graphs _in_ the language, whereas STG in some sense uses a graph structure to represent the language itself
2022-08-09 22:49:58 +0200 <riverside> tomsmeding: i think you just need parametric types, for something like "monadic tails"
2022-08-09 22:50:11 +0200tomsmedinghas no clue what a monadic tail is
2022-08-09 22:50:14 +0200 <tomsmeding> :)
2022-08-09 22:50:21 +0200 <riverside> dont worry about that!
2022-08-09 22:50:24 +0200 <tomsmeding> :D
2022-08-09 22:50:48 +0200 <riverside> but yeah, basically in haskell we define a program graph with cycles, because we can compile recursive programs
2022-08-09 22:51:39 +0200 <riverside> i think my idea was that if some underlying language had such graphs as a primative, that it would simplify the compiler itself
2022-08-09 22:51:46 +0200 <tomsmeding> though the graph isn't fully statically known
2022-08-09 22:52:07 +0200 <riverside> basically inferred via typchecking iiuc
2022-08-09 22:52:12 +0200 <tomsmeding> well, either that or the graph is infinitely large
2022-08-09 22:52:16 +0200noteness(~noteness@user/noteness)
2022-08-09 22:52:39 +0200 <riverside> hmm? no you dont unroll it
2022-08-09 22:52:46 +0200 <riverside> thats why its not a DAG
2022-08-09 22:53:06 +0200 <riverside> its an actual *graph*, like, tree with cyclic references
2022-08-09 22:53:20 +0200 <riverside> but we lack the ability to explicate the cycles syntactically
2022-08-09 22:53:25 +0200 <tomsmeding> hm, I'm thinking about how a program can instantiate a closure with multiple different values to close over
2022-08-09 22:53:43 +0200 <riverside> oh
2022-08-09 22:54:19 +0200 <tomsmeding> like, if `\x -> y + x` occurs somewhere, then if y=2 is in scope you get a closure with a 2 in it, whereas if you evaluate that lambda with y=3 in scope, you get a closure with a 3 in it
2022-08-09 22:54:29 +0200 <tomsmeding> would you consider those two closures different nodes in the graph, or the same node?
2022-08-09 22:54:49 +0200 <riverside> sorry, im baffled by this
2022-08-09 22:54:50 +0200vysn(~vysn@user/vysn) (Ping timeout: 255 seconds)
2022-08-09 22:54:53 +0200 <tomsmeding> if different nodes, then either the graph is not statically known or infinite; if the same node, then the graph doesn't contain all required information to run the program (I think)
2022-08-09 22:55:17 +0200 <tomsmeding> f :: Int -> Int -> Int ; f y = let g = \x -> y + x in g y
2022-08-09 22:55:21 +0200 <tomsmeding> what is the graph for that program
2022-08-09 22:55:33 +0200 <tomsmeding> for f, that is
2022-08-09 22:55:55 +0200 <slack1256> How is Control.Monad.Trans.AccumT different that Control.Monad.Trans.Writer.CPS ?
2022-08-09 22:56:28 +0200 <riverside> oh right, your claiming that some scoping consideration could affect something, im not sure though
2022-08-09 22:56:48 +0200 <riverside> because there y is in scope for the definition of g
2022-08-09 22:56:58 +0200 <tomsmeding> riverside: I'm saying that I'm not quite sure what your definition of "the graph" is -- I can think of two possibilities, and neither is, in my mind, very satisfying
2022-08-09 22:57:04 +0200causal(~user@2001:470:ea0f:3:329c:23ff:fe3f:1e0e)
2022-08-09 22:58:17 +0200 <tomsmeding> what f is _calling_, there, is an _instantiation_ of the closure that is g with the y-value given by the argument of f
2022-08-09 22:58:40 +0200 <tomsmeding> so in my first alternative for the definition of "the graph", f would need to have an arrow to that instantiation
2022-08-09 22:58:45 +0200 <riverside> i guess you could add an axtra argument to g... but i guess really the graph should contain all the top level information, thought rewriting to avoid the scoping consideration would lead to per-function graphs that dont pull variables in from an outer scope
2022-08-09 22:58:50 +0200 <riverside> i hadnt considered this, thanks
2022-08-09 22:58:51 +0200 <tomsmeding> but which instantiation that is, depends on runtime values
2022-08-09 22:59:32 +0200 <tomsmeding> oh, you mean making every function a closed function by putting the closed-over values in additional arguments?
2022-08-09 22:59:49 +0200 <riverside> "up to some fancy rewite" yeah
2022-08-09 22:59:53 +0200 <riverside> rewrite*
2022-08-09 22:59:58 +0200 <tomsmeding> how would that work for a set of mutually recursive functions
2022-08-09 23:00:13 +0200 <riverside> would that change anything?
2022-08-09 23:00:14 +0200 <tomsmeding> say f and g are mutually recursive; do both get two additional arguments, f and g?
2022-08-09 23:00:40 +0200biberu(~biberu@user/biberu)
2022-08-09 23:00:59 +0200 <riverside> hmm, probably you would have the graph "at top level"? does that make sense?
2022-08-09 23:01:08 +0200 <riverside> ie, these wouldnt support per-function graphs
2022-08-09 23:01:12 +0200 <tomsmeding> sure
2022-08-09 23:01:15 +0200 <riverside> since they dont exist in isolation
2022-08-09 23:01:20 +0200 <tomsmeding> yes for sure
2022-08-09 23:01:40 +0200 <riverside> i guess then you could try and find subgraphs that exist on their own
2022-08-09 23:01:55 +0200 <riverside> some kind of graph factoring problem
2022-08-09 23:02:05 +0200 <tomsmeding> which is called strongly connected components? :)
2022-08-09 23:02:18 +0200 <riverside> there was a graph isomorphism problem also my prof was on about, apparently there are polynomial time algorithms for this
2022-08-09 23:02:47 +0200 <tomsmeding> given any graph, that produces a DAG of strongly connected components (SCCs), where each SCC is a directed (cluster of) cycles
2022-08-09 23:02:58 +0200 <tomsmeding> _graph isomorphism_?
2022-08-09 23:03:14 +0200 <riverside> i guess the idea is that you would want to "compile" it down to some cannoncal form, so that you can do function (in)equality
2022-08-09 23:03:18 +0200 <tomsmeding> that thing where Lazlo Babai designed a quasi-polynomial algorithm for?
2022-08-09 23:03:21 +0200 <tomsmeding> don't go there :p
2022-08-09 23:03:40 +0200 <tomsmeding> a friend of mine implemented Babai's algorithm in C++, and he came out half-alive
2022-08-09 23:03:49 +0200 <tomsmeding> also the constant factor is ridiculously bad
2022-08-09 23:04:40 +0200 <riverside> i think there is a theorem for factorin finite automata called the "cascade algorithm" or something
2022-08-09 23:04:48 +0200 <tomsmeding> fun fact, GHC typechecks let bindings by computing the DAG of SCCs of the bindings, then typechecks the components in topological order
2022-08-09 23:06:32 +0200 <riverside> hmm, well maybe if you dont care about function equality you dont actually need to check if two programs are isomorphic
2022-08-09 23:06:45 +0200 <tomsmeding> I don't think you need function equality very often
2022-08-09 23:07:03 +0200 <tomsmeding> intuitionistic logic doesn't usually assume functional extensionality :)
2022-08-09 23:07:08 +0200 <riverside> i guess i was just intrigued by the fact that 2 programs *might* factorise the same
2022-08-09 23:07:10 +0200mmhat(~mmh@p200300f1c72ee96aee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2022-08-09 23:07:21 +0200 <riverside> and that you could get some kind of canonical form just from compilation
2022-08-09 23:07:44 +0200 <tomsmeding> if two programs have the same graph, are they the same program?
2022-08-09 23:07:52 +0200 <riverside> but i guess you dont want to have to then find every different way the same program could be expressed on a graph! which you wouldnt need too unless you were doing function equality
2022-08-09 23:07:55 +0200 <tomsmeding> do `f x = x + 2` and `f x = x + 3` have the same graph?
2022-08-09 23:08:01 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-08-09 23:08:01 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-08-09 23:08:01 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2022-08-09 23:08:01 +0200gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2022-08-09 23:08:01 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-08-09 23:08:01 +0200noteness(~noteness@user/noteness) (Remote host closed the connection)
2022-08-09 23:08:05 +0200 <riverside> i think he wanted it for genetic programming to promote diversity
2022-08-09 23:08:19 +0200noteness(~noteness@user/noteness)
2022-08-09 23:08:34 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2022-08-09 23:08:36 +0200ec(~ec@gateway/tor-sasl/ec)
2022-08-09 23:08:36 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2022-08-09 23:08:36 +0200chele(~chele@user/chele) (Remote host closed the connection)
2022-08-09 23:08:38 +0200 <riverside> tomsmeding: sure
2022-08-09 23:08:53 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-08-09 23:09:02 +0200gmg(~user@user/gehmehgeh)
2022-08-09 23:09:15 +0200 <riverside> f x = x + f x === f x = f x + x, is kind of what i was talking about
2022-08-09 23:09:35 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-08-09 23:09:56 +0200 <tomsmeding> viewing the graph modulo algebraic laws?
2022-08-09 23:10:14 +0200 <riverside> i guess this is where the isomorphism comes in
2022-08-09 23:10:20 +0200 <slack1256> I got a function `add a b = a + b` that is meant to be partially applied, ie: `let f = add <expensive> in ...` . Is there any advantage on writting as `add a = \b -> a + b` in terms of sharing `a`?
2022-08-09 23:10:23 +0200 <riverside> "their graphs are the same"
2022-08-09 23:10:41 +0200 <riverside> er "are isomorphic"
2022-08-09 23:10:59 +0200 <geekosaur> slack1256, I think ghc does let lifting? i.e. does it for you
2022-08-09 23:11:00 +0200 <slack1256> I know GHC has the concept of arity but that is used for inlining.
2022-08-09 23:11:14 +0200 <riverside> i guess the symetry in the arguments would have to *also* be explicated, not sure it can be inferred
2022-08-09 23:11:50 +0200zer0bitz(~zer0bitz@2001:2003:f748:2000:7d58:b5e3:80b4:aa10) (Ping timeout: 244 seconds)
2022-08-09 23:11:57 +0200 <tomsmeding> slack1256: if GHC does no optimisations at all and just follows call-by-need, your first version will compute <expensive> only once
2022-08-09 23:12:19 +0200 <tomsmeding> riverside: hence, isomorphism modulo algebraic laws :p
2022-08-09 23:12:30 +0200 <tomsmeding> where said laws you have to conjure from somewhere
2022-08-09 23:13:18 +0200 <slack1256> Mmm I was under the impression there were some theorical problems, but I got that impression from lambda lifting which another different optimization.
2022-08-09 23:13:21 +0200 <tomsmeding> riverside: this is kind of unrelated, but it makes me think of https://blog.sigplan.org/2021/04/06/equality-saturation-with-egg/
2022-08-09 23:13:27 +0200 <slack1256> Thanks tomsmeding and geekosaur!
2022-08-09 23:13:29 +0200 <riverside> yeah, sorry, but yes, exactly that. i mean about the graph though, these "algebraic laws" should be inferable from the program shape i guess
2022-08-09 23:14:00 +0200 <tomsmeding> from the program shape and laws concerning the primitive operations
2022-08-09 23:14:11 +0200 <riverside> yeah, like how we actually implement +
2022-08-09 23:14:23 +0200 <riverside> recursively of course
2022-08-09 23:14:33 +0200 <tomsmeding> but that quickly gets untenable; it's easy to make commutativity of a two-argument function be equivalent to your favourite hard conjecture
2022-08-09 23:14:49 +0200 <riverside> damn
2022-08-09 23:15:13 +0200 <tomsmeding> rice's theorem, paraphrased: any useful static analysis will be partial
2022-08-09 23:15:19 +0200 <riverside> sure anyway, i dont really want function equality, ... so i guess gentic programing goes out the window
2022-08-09 23:15:24 +0200 <tomsmeding> (on a turing-complete language)
2022-08-09 23:15:57 +0200 <riverside> the point was more for syntax
2022-08-09 23:16:01 +0200 <riverside> i mean, like brevity
2022-08-09 23:16:08 +0200 <tomsmeding> we went on some tangents :p
2022-08-09 23:16:18 +0200 <riverside> well, it is *the* tangent
2022-08-09 23:16:35 +0200 <riverside> good point to rule out the obvious goose chase
2022-08-09 23:16:59 +0200matthewmosior(~matthewmo@173.170.253.91) (Ping timeout: 244 seconds)
2022-08-09 23:17:41 +0200 <riverside> i like the idea of graphs in STG though
2022-08-09 23:17:58 +0200 <riverside> i might be delusional to think it could simplify the implementation of GHC though
2022-08-09 23:18:09 +0200 <tomsmeding> the graph in STG, anyway, has a node for every closure created during program execution
2022-08-09 23:18:21 +0200 <tomsmeding> so those (2, g) and (3, g) are distinct
2022-08-09 23:18:29 +0200dashkal1(~dashkal@user/dashkal) (Quit: WeeChat 3.5)
2022-08-09 23:18:34 +0200 <geekosaur> I think it could only do so if you could also use it as the input language, but now you make haskell even more brain-breaking than it already is
2022-08-09 23:18:34 +0200 <tomsmeding> which makes sense -- at runtime they're different objects in memory
2022-08-09 23:18:48 +0200 <tomsmeding> programming in STG ?!
2022-08-09 23:19:06 +0200pavonia(~user@user/siracusa)
2022-08-09 23:19:08 +0200 <tomsmeding> try programming in Unlambda first :p
2022-08-09 23:19:21 +0200 <riverside> we have list primitives, i cant see how graph primitives would make it incomprehensible
2022-08-09 23:19:40 +0200 <tomsmeding> graph primitives just let you use graphs as data structures in the language, right?
2022-08-09 23:19:50 +0200 <tomsmeding> whereas we were talking about the graph structure of the program itself
2022-08-09 23:19:52 +0200 <tomsmeding> two different things
2022-08-09 23:19:55 +0200 <geekosaur> right, it's *visualizing* graphs that is the problem
2022-08-09 23:20:02 +0200 <riverside> ah but sure, GHC is actually written in haskell, i think im confusing "simplifying the implementation of the compiler" with "simplifying the compilation process"
2022-08-09 23:20:09 +0200 <geekosaur> when they cpomprise the program, as opposed to the data
2022-08-09 23:20:09 +0200 <tomsmeding> ooooh
2022-08-09 23:20:18 +0200mmhat(~mmh@p200300f1c72ee96aee086bfffe095315.dip0.t-ipconnect.de)
2022-08-09 23:20:27 +0200 <tomsmeding> you mean, STG is composed of graph structures, so if Haskell had graph primitives, GHC could use those
2022-08-09 23:20:40 +0200 <tomsmeding> I highly doubt that would actually yield any significant simplification of GHC
2022-08-09 23:20:45 +0200 <riverside> i think my brain is caught in a graph recursion
2022-08-09 23:20:55 +0200 <tomsmeding> ooh a recursive graph
2022-08-09 23:21:06 +0200 <riverside> argh! my brain!
2022-08-09 23:21:36 +0200 <riverside> the primatives simply consist of designating cyclic references, otherwise its basically just a tree
2022-08-09 23:22:00 +0200 <riverside> "im going to put the top of the tree in the middle of the tree now! take note!"
2022-08-09 23:22:10 +0200ubert(~Thunderbi@77.119.164.0.wireless.dyn.drei.com) (Ping timeout: 244 seconds)
2022-08-09 23:22:41 +0200 <tomsmeding> I feel like that would be at most nice syntactic sugar for a simple Haskell graph library that you can already write
2022-08-09 23:23:23 +0200 <riverside> probably ammeding GADT syntax, so if you make reference to the datatype you are defining, then you can annotate it somehow
2022-08-09 23:24:03 +0200 <riverside> hmm, thats just off the topp of my head, and seems wrong. im sure i wrote all this down somewhere before...
2022-08-09 23:24:20 +0200 <tomsmeding> my brain starts to wind down for night anyway
2022-08-09 23:25:03 +0200 <riverside> ok, so its like, for list, where you say, "either empty, or a value and a list" where this recursive reference to list is used. and you would want to be able to say "not just any old list, *the start of this list*"
2022-08-09 23:25:30 +0200 <riverside> x = 1 : 2 : x
2022-08-09 23:25:40 +0200 <tomsmeding> I was just gonna say, you can kind of already do that :
2022-08-09 23:25:42 +0200 <tomsmeding> :p
2022-08-09 23:25:46 +0200 <riverside> would have its own special datatype
2022-08-09 23:25:49 +0200 <tomsmeding> you just can't (easily) observe the graph structure
2022-08-09 23:26:01 +0200 <riverside> hence the need for the cyclic explication
2022-08-09 23:26:46 +0200ec(~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
2022-08-09 23:27:14 +0200ec(~ec@gateway/tor-sasl/ec)
2022-08-09 23:27:18 +0200 <riverside> thus allowing for the representation of recursive programs on a graph that "captures the shape of the program explicitly"
2022-08-09 23:27:54 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-08-09 23:28:22 +0200notzmv(~zmv@user/notzmv)
2022-08-09 23:28:42 +0200 <riverside> i guess im still confused as to "how haskell can do this" (ie, allow for recursive function definitions)
2022-08-09 23:28:43 +0200Topsi(~Topsi@dyndsl-095-033-091-248.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-08-09 23:28:46 +0200 <riverside> ah, yes i got it
2022-08-09 23:29:03 +0200 <riverside> but not actually allow to express these same functions in a datatype
2022-08-09 23:29:12 +0200matthewmosior(~matthewmo@173.170.253.91)
2022-08-09 23:29:33 +0200 <riverside> which is what makes me think that there is "something you could compile it down too, if it has graph syntax built in"
2022-08-09 23:29:51 +0200 <riverside> somehow GADT's seem weaker than top level haskell code
2022-08-09 23:29:55 +0200 <tomsmeding> I think in Haskell a recursive function just has a reference to itself in its closure
2022-08-09 23:30:08 +0200 <riverside> and i would like that to change, for some reason, which has something to do with compilation, i think
2022-08-09 23:30:15 +0200 <riverside> sorry, its been ages since i thought about this
2022-08-09 23:30:18 +0200 <tomsmeding> alternatively, you can assume that 'fix' exists, and build everything on that
2022-08-09 23:30:56 +0200 <riverside> we really want to explicate the cycles
2022-08-09 23:31:07 +0200alp_(~alp@user/alp)
2022-08-09 23:31:07 +0200 <riverside> fix alone kind of doesnt
2022-08-09 23:31:28 +0200 <tomsmeding> fix indicates the existence of a back-edge, right?
2022-08-09 23:31:51 +0200 <tomsmeding> or, hm
2022-08-09 23:31:57 +0200 <riverside> i mean, "it has a start" is quite different to "and thats mentioned exactly here"
2022-08-09 23:32:03 +0200 <tomsmeding> right
2022-08-09 23:32:34 +0200 <tomsmeding> then again, that's precisely what variables do
2022-08-09 23:32:41 +0200 <riverside> basically, the symbolic dereferencing of bound variables, is "specifying the shape of the graph"
2022-08-09 23:32:50 +0200 <hpc> the start is wherever you hold your reference to
2022-08-09 23:32:59 +0200 <riverside> but we cant do that in a datatype, so we cant cast top level code onto a GADT and retain the information
2022-08-09 23:33:04 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-08-09 23:33:07 +0200 <tomsmeding> and if you don't like alpha-renaming, use de bruijn indices
2022-08-09 23:33:10 +0200 <hpc> (x = 1 : 2 : x) produces the exact same graph as (x = 2 : 1 : x)
2022-08-09 23:33:33 +0200 <riverside> you get what i mean though?
2022-08-09 23:33:46 +0200 <tomsmeding> I don't get where GADTs are coming from in the story
2022-08-09 23:33:49 +0200finsternis(~X@23.226.237.192)
2022-08-09 23:33:51 +0200 <riverside> that bit
2022-08-09 23:34:18 +0200 <tomsmeding> what about a simple syntax tree with variable names is not sufficient to you?
2022-08-09 23:34:26 +0200 <riverside> so we can express a tree
2022-08-09 23:34:39 +0200 <riverside> but cant tell if one of the branches is a reference to the top of the tree
2022-08-09 23:35:03 +0200 <riverside> if we could, then it would hold the same information as if we did it all with let bound nodes
2022-08-09 23:35:03 +0200 <tomsmeding> the graph structure is easily read off the data: any place a name is bound is a potential tip of a backedge, and any occurrence of that variable in its scope is a head of an arrow to that tip position
2022-08-09 23:35:46 +0200 <tomsmeding> "but cant tell if ... top of the tree" -- if so, said branch would be a variable reference, right?
2022-08-09 23:35:52 +0200 <riverside> but (1:2:x) = 1:2:1:2:1:2.... oh no! it unrolled
2022-08-09 23:36:13 +0200 <tomsmeding> like, data Expr = App Expr Expr | Lam Name Expr | Let (Name, Expr) Expr | Var Name
2022-08-09 23:36:24 +0200 <riverside> i mean, we can use lists for simplicity
2022-08-09 23:36:31 +0200 <riverside> same principle
2022-08-09 23:37:03 +0200 <riverside> 1 `cons` 2 `cons` *look heres the start again style cons* x
2022-08-09 23:37:48 +0200 <riverside> and this i guess gets a special type
2022-08-09 23:38:01 +0200 <riverside> :: cyclic list of length 2
2022-08-09 23:38:15 +0200 <tomsmeding> Let ("x", Prim "cons" `App` Lit 1 `App` (Prim "cons" `App` Lit 2 `App` Var "x")) (Var "x")
2022-08-09 23:38:34 +0200 <tomsmeding> (data Expr = ... | Prim String | Lit Int)
2022-08-09 23:38:52 +0200 <tomsmeding> graph structure is fully readable from that syntax tree
2022-08-09 23:38:55 +0200 <riverside> im sure you get what i mean by this point
2022-08-09 23:38:58 +0200 <tomsmeding> s/readable/apparent/
2022-08-09 23:39:10 +0200 <riverside> sure, that was never the problem
2022-08-09 23:39:12 +0200 <tomsmeding> you want some more intrinsic representation of the graph information
2022-08-09 23:39:17 +0200 <tomsmeding> something "nicer"
2022-08-09 23:39:27 +0200 <tomsmeding> I'm just apparently unable to see what the nicer approach would be :p
2022-08-09 23:39:40 +0200 <tomsmeding> I feel like it would always just be an encoding of this same thing, potentially with nicer syntax/ASPI
2022-08-09 23:39:41 +0200 <tomsmeding> *API
2022-08-09 23:39:59 +0200 <riverside> when its "written in top level haskell code" all the variable dereferencing comunicates the "shape" of the graph, including the cyclic references, that we can infer just by looking to see where the bound variable is mentioned in its definition
2022-08-09 23:40:45 +0200 <riverside> but after you do all the substitution, this information is lost
2022-08-09 23:41:06 +0200 <riverside> i certainly cant tell from the type [Int] that its a cyclic list of length 2
2022-08-09 23:41:13 +0200jgeerds(~jgeerds@55d46bad.access.ecotel.net)
2022-08-09 23:41:27 +0200 <riverside> this is "where GADTs come into this"
2022-08-09 23:42:06 +0200 <riverside> doing whatever it is that we can do in terms of recursive function implementation, but actually within the type system
2022-08-09 23:42:21 +0200 <riverside> idk, maybe thats not where you want to specify the shape of your program...
2022-08-09 23:42:42 +0200 <riverside> but i had it for a scientific computation application with a very regular shaped graph (a euclidan grid)
2022-08-09 23:42:54 +0200 <riverside> which certainly could be expressed using type families
2022-08-09 23:43:38 +0200 <riverside> ie "calculating the shape of your program directly"
2022-08-09 23:43:43 +0200 <riverside> i g2g soon
2022-08-09 23:43:55 +0200 <tomsmeding> g'night (if applicable)
2022-08-09 23:43:58 +0200 <tomsmeding> (for me it is)
2022-08-09 23:45:23 +0200 <riverside> are you asking if its night? or if its good? dont make me think about these things, i may desolve in a pool of my own tears
2022-08-09 23:45:28 +0200riverside(~riverside@109.249.184.161) (Remote host closed the connection)
2022-08-09 23:45:28 +0200Midjak(~Midjak@82.66.147.146) (Quit: Leaving)
2022-08-09 23:47:17 +0200Kaipei(~Kaiepi@142.68.249.28)
2022-08-09 23:47:36 +0200Midjak(~Midjak@82.66.147.146)
2022-08-09 23:48:14 +0200Midjak(~Midjak@82.66.147.146) (Remote host closed the connection)
2022-08-09 23:49:05 +0200Midjak(~Midjak@82.66.147.146)
2022-08-09 23:50:34 +0200Kaiepi(~Kaiepi@142.68.249.28) (Ping timeout: 244 seconds)
2022-08-09 23:52:11 +0200Midjak(~Midjak@82.66.147.146) (Client Quit)
2022-08-09 23:53:35 +0200michalz(~michalz@185.246.204.75) (Remote host closed the connection)
2022-08-09 23:58:21 +0200BanUtama(~blake.rai@user/BanUtama) (Ping timeout: 268 seconds)