2022-08-09 00:01:37 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Ping timeout: 252 seconds) |
2022-08-09 00:01:47 +0200 | welterde | (welterde@thinkbase.srv.welterde.de) |
2022-08-09 00:03:05 +0200 | ProofTechnique | (sid79547@id-79547.ilkley.irccloud.com) |
2022-08-09 00:03:05 +0200 | tritlo | (sid58727@user/tritlo) |
2022-08-09 00:03:06 +0200 | rubin55 | (sid175221@id-175221.hampstead.irccloud.com) |
2022-08-09 00:03:12 +0200 | Raito_Bezarius | (~Raito@wireguard/tunneler/raito-bezarius) |
2022-08-09 00:03:25 +0200 | Kamuela | (sid111576@id-111576.tinside.irccloud.com) |
2022-08-09 00:03:37 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2022-08-09 00:03:47 +0200 | jonrh | (sid5185@id-5185.ilkley.irccloud.com) |
2022-08-09 00:04:09 +0200 | dagit | (~dagit@2001:558:6025:38:6476:a063:d05a:44da) |
2022-08-09 00:04:21 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Quit: ec) |
2022-08-09 00:04:34 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2022-08-09 00:07:00 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2022-08-09 00:08:11 +0200 | malte | (~malte@mal.tc) (Ping timeout: 244 seconds) |
2022-08-09 00:12:51 +0200 | haritzondo | (~hrtz@2a02:8010:65b5:0:6009:6384:e3cb:2220) (Quit: ZNC 1.8.2+deb2 - https://znc.in) |
2022-08-09 00:13:07 +0200 | qhong_ | qhong |
2022-08-09 00:13:10 +0200 | haritz | (~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk) |
2022-08-09 00:13:10 +0200 | haritz | (~hrtz@82-69-11-11.dsl.in-addr.zen.co.uk) (Changing host) |
2022-08-09 00:13:10 +0200 | haritz | (~hrtz@user/haritz) |
2022-08-09 00:15:24 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-08-09 00:16:27 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 244 seconds) |
2022-08-09 00:16:38 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-08-09 00:17:12 +0200 | cheater | (~Username@user/cheater) |
2022-08-09 00:20:20 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 255 seconds) |
2022-08-09 00:25:12 +0200 | cheater1__ | (~Username@user/cheater) |
2022-08-09 00:25:32 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 268 seconds) |
2022-08-09 00:25:36 +0200 | cheater1__ | cheater |
2022-08-09 00:25:37 +0200 | hellwolf | (~hellwolf@7-41-50-84.sta.estpak.ee) (Remote host closed the connection) |
2022-08-09 00:29:32 +0200 | hgolden | (~hgolden2@cpe-172-251-233-141.socal.res.rr.com) |
2022-08-09 00:31:58 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 00:37:52 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
2022-08-09 00:38:31 +0200 | neceve | (~quassel@2.26.93.14) (Ping timeout: 268 seconds) |
2022-08-09 00:43:18 +0200 | dagit | (~dagit@2001:558:6025:38:6476:a063:d05a:44da) (Ping timeout: 264 seconds) |
2022-08-09 00:45:09 +0200 | danso_o | danso |
2022-08-09 00:47:16 +0200 | ubert | (~Thunderbi@178.115.60.12.wireless.dyn.drei.com) (Ping timeout: 268 seconds) |
2022-08-09 00:48:58 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 00:49:25 +0200 | pavonia | (~user@user/siracusa) |
2022-08-09 00:49:31 +0200 | acidjnk_new | (~acidjnk@p200300d6e705865168dfbefacb50e5ef.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2022-08-09 00:50:58 +0200 | xff0x_ | (~xff0x@2405:6580:b080:900:84d3:74ed:839d:b6c0) (Ping timeout: 240 seconds) |
2022-08-09 00:51:10 +0200 | AlexNoo_ | AlexNoo |
2022-08-09 00:53:08 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-08-09 00:53:08 +0200 | dagit | (~dagit@2001:558:6025:38:6476:a063:d05a:44da) |
2022-08-09 00:54:00 +0200 | zero | zzz |
2022-08-09 00:56:45 +0200 | hellwolf | (~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 +0200 | jgeerds | (~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 +0200 | matthewmosior | (~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 +0200 | son0p | (~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 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2022-08-09 01:08:23 +0200 | cheater | (~Username@user/cheater) |
2022-08-09 01:08:24 +0200 | luffy | (~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 +0200 | luffy | (~chenqisu1@183.217.201.23) (Remote host closed the connection) |
2022-08-09 01:08:47 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 268 seconds) |
2022-08-09 01:09:05 +0200 | luffy | (~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 +0200 | yaroot_ | (~yaroot@p2543146-ipngn11101souka.saitama.ocn.ne.jp) |
2022-08-09 01:13:17 +0200 | yaroot | (~yaroot@2400:4052:ac0:d900:680e:dbff:fe1e:4953) (Ping timeout: 244 seconds) |
2022-08-09 01:13:18 +0200 | yaroot_ | yaroot |
2022-08-09 01:13:25 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-08-09 01:14:10 +0200 | xff0x_ | (~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 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-08-09 01:17:50 +0200 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-08-09 01:17:50 +0200 | wroathe | (~wroathe@user/wroathe) |
2022-08-09 01:20:28 +0200 | tzh_ | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-08-09 01:21:06 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Ping timeout: 264 seconds) |
2022-08-09 01:22:53 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
2022-08-09 01:24:38 +0200 | chomwitt | (~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 +0200 | gentauro | (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
2022-08-09 01:32:17 +0200 | gentauro | (~gentauro@user/gentauro) |
2022-08-09 01:35:51 +0200 | chimp_ | Psybur |
2022-08-09 01:44:39 +0200 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 252 seconds) |
2022-08-09 01:46:04 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-08-09 01:46:38 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-08-09 01:48:30 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-08-09 01:48:57 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
2022-08-09 01:49:59 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-08-09 01:54:22 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
2022-08-09 02:06:02 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 02:09:05 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-08-09 02:11:01 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
2022-08-09 02:15:19 +0200 | hounded_1969 | (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Quit: Leaving) |
2022-08-09 02:16:58 +0200 | hounded | (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Remote host closed the connection) |
2022-08-09 02:16:58 +0200 | hounded_woodstoc | (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Remote host closed the connection) |
2022-08-09 02:17:56 +0200 | off^ | (~off@206.85.120.17) |
2022-08-09 02:19:05 +0200 | Sgeo | (~Sgeo@user/sgeo) |
2022-08-09 02:20:26 +0200 | noteness | (~noteness@user/noteness) (Remote host closed the connection) |
2022-08-09 02:21:19 +0200 | werneta | (~werneta@137.78.30.207) (Ping timeout: 252 seconds) |
2022-08-09 02:21:43 +0200 | noteness | (~noteness@user/noteness) |
2022-08-09 02:22:09 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 02:23:56 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 268 seconds) |
2022-08-09 02:24:13 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 02:27:40 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
2022-08-09 02:30:44 +0200 | causal | (~user@50.35.83.177) |
2022-08-09 02:32:00 +0200 | zeenk | (~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) (Quit: Konversation terminated!) |
2022-08-09 02:36:53 +0200 | vysn | (~vysn@user/vysn) |
2022-08-09 02:37:03 +0200 | hmw[at]1 | (~hmw@84-113-100-7.cable.dynamic.surfer.at) (Quit: Leaving.) |
2022-08-09 02:37:20 +0200 | hmw[at] | (~hmw@84-113-100-7.cable.dynamic.surfer.at) |
2022-08-09 02:38:52 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 02:42:56 +0200 | waleee | (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 255 seconds) |
2022-08-09 02:44:47 +0200 | stef204 | (~stef204@user/stef204) |
2022-08-09 02:50:53 +0200 | PHO`_ | PHO` |
2022-08-09 03:02:55 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 03:08:11 +0200 | xff0x_ | (~xff0x@2405:6580:b080:900:6c03:b0ff:76cc:e68c) (Ping timeout: 255 seconds) |
2022-08-09 03:10:26 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-08-09 03:10:56 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-08-09 03:11:04 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-08-09 03:14:09 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
2022-08-09 03:14:47 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-08-09 03:16:26 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-08-09 03:16:55 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-08-09 03:17:12 +0200 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-08-09 03:21:10 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-08-09 03:21:26 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-08-09 03:29:03 +0200 | werneta | (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
2022-08-09 03:34:17 +0200 | frost | (~frost@user/frost) |
2022-08-09 03:35:28 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-08-09 03:36:04 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-08-09 03:38:49 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-08-09 03:38:58 +0200 | machined1od | (~machinedg@d172-219-86-154.abhsia.telus.net) (Ping timeout: 240 seconds) |
2022-08-09 03:39:17 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-08-09 03:45:11 +0200 | instantaphex | (~jb@c-73-171-252-84.hsd1.fl.comcast.net) |
2022-08-09 03:47:25 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
2022-08-09 03:47:38 +0200 | gurkengl1s | (~gurkengla@84.138.199.46) (Ping timeout: 240 seconds) |
2022-08-09 03:50:17 +0200 | lemonsnicks | (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Ping timeout: 268 seconds) |
2022-08-09 03:50:33 +0200 | xff0x_ | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2022-08-09 03:50:55 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 268 seconds) |
2022-08-09 03:51:49 +0200 | aeka | (~aeka@2606:6080:1001:17:9ea4:71f9:d294:d7b7) (Quit: ZNC 1.8.2 - https://znc.in) |
2022-08-09 03:52:06 +0200 | aeka | (~aeka@2606:6080:1001:17:9ea4:71f9:d294:d7b7) |
2022-08-09 04:09:07 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-08-09 04:16:40 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2022-08-09 04:16:40 +0200 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2022-08-09 04:16:40 +0200 | finn_elija | FinnElija |
2022-08-09 04:22:20 +0200 | merijn | (~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 +0200 | stef204 | (~stef204@user/stef204) (Quit: WeeChat 3.6) |
2022-08-09 04:31:41 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-08-09 04:32:20 +0200 | hsw | (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) |
2022-08-09 04:34:40 +0200 | td_ | (~td@muedsl-82-207-238-079.citykom.de) (Ping timeout: 268 seconds) |
2022-08-09 04:35:58 +0200 | td_ | (~td@94.134.91.254) |
2022-08-09 04:38:02 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
2022-08-09 04:39:04 +0200 | noteness | (~noteness@user/noteness) (Ping timeout: 268 seconds) |
2022-08-09 04:39:14 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-08-09 04:39:36 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-08-09 04:40:16 +0200 | noteness | (~noteness@user/noteness) |
2022-08-09 04:49:28 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
2022-08-09 04:51:19 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 04:54:44 +0200 | Katarushisu3 | (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) |
2022-08-09 04:55:18 +0200 | ysh__ | (sid6017@id-6017.ilkley.irccloud.com) |
2022-08-09 04:55:18 +0200 | jmct_ | (sid160793@id-160793.tinside.irccloud.com) |
2022-08-09 04:55:19 +0200 | megeve_ | (sid523379@id-523379.hampstead.irccloud.com) |
2022-08-09 04:55:28 +0200 | agander_m__ | (sid407952@id-407952.tinside.irccloud.com) |
2022-08-09 04:55:34 +0200 | Noinia | (~Frank@77-162-168-71.fixed.kpn.net) |
2022-08-09 04:56:27 +0200 | bollu4 | (~bollu@159.65.151.13) |
2022-08-09 04:56:34 +0200 | rush | (~sloorush@52.187.184.81) |
2022-08-09 04:56:44 +0200 | jludwig89 | (~justin@li657-110.members.linode.com) |
2022-08-09 04:56:45 +0200 | Hafydd_ | (jc@user/hafydd) |
2022-08-09 04:57:01 +0200 | bonz060_ | (~quassel@2001:bc8:47a4:a23::1) |
2022-08-09 04:57:05 +0200 | dumptruckman_ | (~dumptruck@23-239-13-163.ip.linodeusercontent.com) |
2022-08-09 04:57:22 +0200 | marquis_1ndras | (~marquis_a@124-150-76-210.tpgi.com.au) |
2022-08-09 04:57:33 +0200 | Clint_ | (~Clint@user/clint) |
2022-08-09 04:57:44 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-08-09 04:57:54 +0200 | Jonno_FTW | (~come@api.carswap.me) |
2022-08-09 04:57:55 +0200 | Jonno_FTW | (~come@api.carswap.me) (Changing host) |
2022-08-09 04:57:55 +0200 | Jonno_FTW | (~come@user/jonno-ftw/x-0835346) |
2022-08-09 04:57:56 +0200 | wagle_ | (~wagle@quassel.wagle.io) |
2022-08-09 04:58:05 +0200 | Hecate_ | (~mariposa@user/hecate) |
2022-08-09 04:58:18 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-08-09 04:58:26 +0200 | red-snail | (~snail@static.151.210.203.116.clients.your-server.de) |
2022-08-09 04:58:27 +0200 | byorgey_ | (~byorgey@155.138.238.211) |
2022-08-09 04:58:30 +0200 | uroboros | (~ouroboros@user/ouroboros) |
2022-08-09 04:58:31 +0200 | poscat0x04 | (~poscat@114.245.109.158) |
2022-08-09 04:58:31 +0200 | bgamari_ | (~bgamari@64.223.132.170) |
2022-08-09 04:58:31 +0200 | kaol_ | (~kaol@94-237-42-30.nl-ams1.upcloud.host) |
2022-08-09 04:59:06 +0200 | Philonous_ | (~Philonous@user/philonous) |
2022-08-09 04:59:23 +0200 | absentia_ | (~absentia@24-246-53-210.cable.teksavvy.com) |
2022-08-09 04:59:28 +0200 | aku_ | (~aku@163.172.137.34) |
2022-08-09 04:59:36 +0200 | ente` | (~daemon@inferno.barfooze.de) |
2022-08-09 04:59:43 +0200 | Igloo | (~ian@matrix.chaos.earth.li) |
2022-08-09 04:59:47 +0200 | carbolymer_ | (~carbolyme@dropacid.net) |
2022-08-09 04:59:49 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 04:59:55 +0200 | lisk1n | (~liskin@xmonad/liskin) |
2022-08-09 05:00:19 +0200 | Fischmie1 | (~Fischmiep@user/Fischmiep) |
2022-08-09 05:00:32 +0200 | orcus- | (~orcus@user/brprice) |
2022-08-09 05:00:44 +0200 | gonz_______ | (sid304396@id-304396.lymington.irccloud.com) |
2022-08-09 05:01:03 +0200 | wallymathieu_ | (sid533252@id-533252.uxbridge.irccloud.com) |
2022-08-09 05:01:06 +0200 | LiChen_ | (uid561437@id-561437.tinside.irccloud.com) |
2022-08-09 05:01:06 +0200 | elvishjerricco1 | (~elvishjer@2001:470:69fc:105::6172) |
2022-08-09 05:01:18 +0200 | statusfailed | (~statusfai@statusfailed.com) |
2022-08-09 05:01:26 +0200 | pierrot_ | (~pi@user/pierrot) |
2022-08-09 05:01:29 +0200 | dunj3_ | (~dunj3@kingdread.de) |
2022-08-09 05:01:33 +0200 | hyiltiz_ | (~quassel@31.220.5.250) |
2022-08-09 05:01:48 +0200 | lagash | (lagash@lagash.shelltalk.net) |
2022-08-09 05:02:01 +0200 | dyniec | (~dyniec@mail.dybiec.info) |
2022-08-09 05:02:15 +0200 | systemfault_ | (sid267009@id-267009.uxbridge.irccloud.com) |
2022-08-09 05:03:04 +0200 | rodental | (~rodental@38.146.5.222) (*.net *.split) |
2022-08-09 05:03:04 +0200 | zaquest | (~notzaques@5.130.79.72) (*.net *.split) |
2022-08-09 05:03:04 +0200 | jludwig | (~justin@li657-110.members.linode.com) (*.net *.split) |
2022-08-09 05:03:04 +0200 | anderson | (~ande@user/anderson) (*.net *.split) |
2022-08-09 05:03:04 +0200 | Square2 | (~a@user/square) (*.net *.split) |
2022-08-09 05:03:04 +0200 | Vajb | (~Vajb@2001:999:70c:2b99:3e15:6929:5bc6:c014) (*.net *.split) |
2022-08-09 05:03:04 +0200 | statusfa1led | (~statusfai@statusfailed.com) (*.net *.split) |
2022-08-09 05:03:04 +0200 | lagash_ | (lagash@lagash.shelltalk.net) (*.net *.split) |
2022-08-09 05:03:04 +0200 | Jonno_FT1 | (~come@api.carswap.me) (*.net *.split) |
2022-08-09 05:03:04 +0200 | glider_ | (~glider@user/glider) (*.net *.split) |
2022-08-09 05:03:04 +0200 | WzC | (~Frank@77-162-168-71.fixed.kpn.net) (*.net *.split) |
2022-08-09 05:03:04 +0200 | ente`_ | (~daemon@inferno.barfooze.de) (*.net *.split) |
2022-08-09 05:03:04 +0200 | barrucadu | (~barrucadu@carcosa.barrucadu.co.uk) (*.net *.split) |
2022-08-09 05:03:04 +0200 | jao- | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (*.net *.split) |
2022-08-09 05:03:04 +0200 | absentia | (~absentia@user/absentia) (*.net *.split) |
2022-08-09 05:03:04 +0200 | sloorush | (~sloorush@52.187.184.81) (*.net *.split) |
2022-08-09 05:03:04 +0200 | ian_ | (~ian@matrix.chaos.earth.li) (*.net *.split) |
2022-08-09 05:03:04 +0200 | Katarushisu | (~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (*.net *.split) |
2022-08-09 05:03:04 +0200 | bollu | (~bollu@159.65.151.13) (*.net *.split) |
2022-08-09 05:03:04 +0200 | byorgey | (~byorgey@155.138.238.211) (*.net *.split) |
2022-08-09 05:03:04 +0200 | cosimone` | (~user@93-44-186-171.ip98.fastwebnet.it) (*.net *.split) |
2022-08-09 05:03:04 +0200 | shailangsa_ | (~shailangs@host86-185-98-81.range86-185.btcentralplus.com) (*.net *.split) |
2022-08-09 05:03:04 +0200 | poscat | (~poscat@114.245.109.158) (*.net *.split) |
2022-08-09 05:03:04 +0200 | sektor[m] | (~sektor@2001:470:69fc:105::2:3f60) (*.net *.split) |
2022-08-09 05:03:04 +0200 | jean-paul[m] | (~jean-paul@2001:470:69fc:105::d1ab) (*.net *.split) |
2022-08-09 05:03:04 +0200 | wallymathieu | (sid533252@id-533252.uxbridge.irccloud.com) (*.net *.split) |
2022-08-09 05:03:04 +0200 | megeve | (sid523379@id-523379.hampstead.irccloud.com) (*.net *.split) |
2022-08-09 05:03:04 +0200 | agander_m_ | (sid407952@id-407952.tinside.irccloud.com) (*.net *.split) |
2022-08-09 05:03:04 +0200 | Boarders__ | (sid425905@id-425905.lymington.irccloud.com) (*.net *.split) |
2022-08-09 05:03:04 +0200 | gonz______ | (sid304396@id-304396.lymington.irccloud.com) (*.net *.split) |
2022-08-09 05:03:04 +0200 | mht-wtf | (~mht@2a03:b0c0:3:e0::1e2:c001) (*.net *.split) |
2022-08-09 05:03:04 +0200 | liskin | (~liskin@xmonad/liskin) (*.net *.split) |
2022-08-09 05:03:04 +0200 | Hafydd | (jc@owlchat.newnet.net) (*.net *.split) |
2022-08-09 05:03:04 +0200 | jmct | (sid160793@id-160793.tinside.irccloud.com) (*.net *.split) |
2022-08-09 05:03:04 +0200 | dyniec_ | (~dyniec@mail.dybiec.info) (*.net *.split) |
2022-08-09 05:03:04 +0200 | ysh_ | (sid6017@id-6017.ilkley.irccloud.com) (*.net *.split) |
2022-08-09 05:03:04 +0200 | nshepperd | (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) (*.net *.split) |
2022-08-09 05:03:04 +0200 | berberman | (~berberman@user/berberman) (*.net *.split) |
2022-08-09 05:03:04 +0200 | pierrot | (~pi@user/pierrot) (*.net *.split) |
2022-08-09 05:03:04 +0200 | marquis_andras | (~marquis_a@124-150-76-210.tpgi.com.au) (*.net *.split) |
2022-08-09 05:03:04 +0200 | catern | (~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407) (*.net *.split) |
2022-08-09 05:03:04 +0200 | bonz060 | (~quassel@2001:bc8:47a4:a23::1) (*.net *.split) |
2022-08-09 05:03:04 +0200 | Hash | (~Hash@tunnel686959-pt.tunnel.tserv15.lax1.ipv6.he.net) (*.net *.split) |
2022-08-09 05:03:04 +0200 | bgamari | (~bgamari@64.223.132.170) (*.net *.split) |
2022-08-09 05:03:04 +0200 | auri | (~auri@fsf/member/auri) (*.net *.split) |
2022-08-09 05:03:04 +0200 | systemfault | (sid267009@id-267009.uxbridge.irccloud.com) (*.net *.split) |
2022-08-09 05:03:04 +0200 | aku | (~aku@163.172.137.34) (*.net *.split) |
2022-08-09 05:03:04 +0200 | Hecate | (~mariposa@user/hecate) (*.net *.split) |
2022-08-09 05:03:04 +0200 | kaol | (~kaol@94-237-42-30.nl-ams1.upcloud.host) (*.net *.split) |
2022-08-09 05:03:04 +0200 | heath | (~heath@user/heath) (*.net *.split) |
2022-08-09 05:03:04 +0200 | xstill_ | (xstill@fimu/xstill) (*.net *.split) |
2022-08-09 05:03:04 +0200 | orcus | (~orcus@user/brprice) (*.net *.split) |
2022-08-09 05:03:04 +0200 | ouroboros | (~ouroboros@user/ouroboros) (*.net *.split) |
2022-08-09 05:03:05 +0200 | dunj3 | (~dunj3@kingdread.de) (*.net *.split) |
2022-08-09 05:03:05 +0200 | hyiltiz | (~quassel@31.220.5.250) (*.net *.split) |
2022-08-09 05:03:05 +0200 | elvishjerricco | (~elvishjer@2001:470:69fc:105::6172) (*.net *.split) |
2022-08-09 05:03:05 +0200 | Fischmiep | (~Fischmiep@user/Fischmiep) (*.net *.split) |
2022-08-09 05:03:05 +0200 | DigitalKiwi | (~kiwi@137.184.156.191) (*.net *.split) |
2022-08-09 05:03:05 +0200 | mjacob | (~mjacob@adrastea.uberspace.de) (*.net *.split) |
2022-08-09 05:03:05 +0200 | wagle | (~wagle@quassel.wagle.io) (*.net *.split) |
2022-08-09 05:03:05 +0200 | LiChen | (uid561437@id-561437.tinside.irccloud.com) (*.net *.split) |
2022-08-09 05:03:05 +0200 | forell | (~forell@user/forell) (*.net *.split) |
2022-08-09 05:03:05 +0200 | Philonous | (~Philonous@user/philonous) (*.net *.split) |
2022-08-09 05:03:05 +0200 | JSharp | (sid4580@id-4580.lymington.irccloud.com) (*.net *.split) |
2022-08-09 05:03:05 +0200 | Clint | (~Clint@user/clint) (*.net *.split) |
2022-08-09 05:03:05 +0200 | carbolymer | (~carbolyme@dropacid.net) (*.net *.split) |
2022-08-09 05:03:05 +0200 | dumptruckman | (~dumptruck@23-239-13-163.ip.linodeusercontent.com) (*.net *.split) |
2022-08-09 05:03:05 +0200 | red-snail1 | (~snail@static.151.210.203.116.clients.your-server.de) (*.net *.split) |
2022-08-09 05:03:05 +0200 | remexre | (~remexre@user/remexre) (*.net *.split) |
2022-08-09 05:03:05 +0200 | leah2 | (~leah@vuxu.org) (*.net *.split) |
2022-08-09 05:03:06 +0200 | jmct_ | jmct |
2022-08-09 05:03:06 +0200 | wallymathieu_ | wallymathieu |
2022-08-09 05:03:06 +0200 | systemfault_ | systemfault |
2022-08-09 05:03:07 +0200 | megeve_ | megeve |
2022-08-09 05:03:08 +0200 | jludwig89 | jludwig |
2022-08-09 05:03:08 +0200 | Katarushisu3 | Katarushisu |
2022-08-09 05:03:08 +0200 | bollu4 | bollu |
2022-08-09 05:03:08 +0200 | uroboros | ouroboros |
2022-08-09 05:03:08 +0200 | dumptruckman_ | dumptruckman |
2022-08-09 05:03:18 +0200 | Boarders___ | (sid425905@id-425905.lymington.irccloud.com) |
2022-08-09 05:03:24 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-08-09 05:03:37 +0200 | zaquest | (~notzaques@5.130.79.72) |
2022-08-09 05:03:47 +0200 | remexre | (~remexre@user/remexre) |
2022-08-09 05:04:14 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-08-09 05:04:47 +0200 | mht-wtf | (~mht@mht.wtf) |
2022-08-09 05:05:01 +0200 | JSharp | (sid4580@id-4580.lymington.irccloud.com) |
2022-08-09 05:05:33 +0200 | anderson | (~ande@user/anderson) |
2022-08-09 05:06:34 +0200 | glider | (~glider@user/glider) |
2022-08-09 05:06:40 +0200 | cosimone` | (~user@93-44-186-171.ip98.fastwebnet.it) |
2022-08-09 05:07:40 +0200 | nshepperd | (nshepperd@2600:3c03::f03c:92ff:fe28:92c9) |
2022-08-09 05:08:00 +0200 | barrucadu | (~barrucadu@carcosa.barrucadu.co.uk) |
2022-08-09 05:08:24 +0200 | DigitalKiwi | (~kiwi@2604:a880:400:d0::1ca0:e001) |
2022-08-09 05:08:36 +0200 | heath | (~heath@user/heath) |
2022-08-09 05:08:40 +0200 | sektor[m] | (~sektor@2001:470:69fc:105::2:3f60) |
2022-08-09 05:08:54 +0200 | mjacob | (~mjacob@adrastea.uberspace.de) |
2022-08-09 05:10:38 +0200 | rodental | (~rodental@38.146.5.222) |
2022-08-09 05:11:48 +0200 | jean-paul[m] | (~jean-paul@2001:470:69fc:105::d1ab) |
2022-08-09 05:11:53 +0200 | Square | (~a@user/square) |
2022-08-09 05:12:05 +0200 | leah2 | (~leah@vuxu.org) |
2022-08-09 05:12:41 +0200 | Hash | (~Hash@tunnel686959-pt.tunnel.tserv15.lax1.ipv6.he.net) |
2022-08-09 05:12:47 +0200 | hololeap_ | hololeap |
2022-08-09 05:13:36 +0200 | auri | (~auri@fsf/member/auri) |
2022-08-09 05:13:40 +0200 | forell | (~forell@user/forell) |
2022-08-09 05:13:42 +0200 | xstill_ | (xstill@fimu/xstill) |
2022-08-09 05:13:45 +0200 | berberman | (~berberman@user/berberman) |
2022-08-09 05:18:29 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
2022-08-09 05:20:21 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 05:27:01 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) |
2022-08-09 05:27:10 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 268 seconds) |
2022-08-09 05:28:10 +0200 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-08-09 05:28:45 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 05:29:47 +0200 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-08-09 05:30:03 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 05:30:41 +0200 | jargon | (~jargon@153.sub-174-205-231.myvzw.com) |
2022-08-09 05:35:05 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-08-09 05:35:34 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-08-09 05:39:28 +0200 | lemonsnicks | (~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 +0200 | instantaphex | (~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 +0200 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-08-09 05:47:11 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 05:47:18 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
2022-08-09 05:51:13 +0200 | shailangsa | (~shailangs@host86-185-98-81.range86-185.btcentralplus.com) |
2022-08-09 05:51:47 +0200 | nilradical | (~nilradica@user/naso) (Ping timeout: 252 seconds) |
2022-08-09 05:52:58 +0200 | hakutaku | (~hakutaku@94.25.228.55) |
2022-08-09 06:03:10 +0200 | Vajb | (~Vajb@hag-jnsbng11-58c3ad-40.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-08-09 06:03:42 +0200 | Vajb | (~Vajb@2001:999:70c:2b99:3e15:6929:5bc6:c014) |
2022-08-09 06:04:45 +0200 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2022-08-09 06:10:38 +0200 | vglfr | (~vglfr@194.9.14.33) (Ping timeout: 240 seconds) |
2022-08-09 06:12:44 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-08-09 06:13:28 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 06:19:30 +0200 | EsoAlgo | (~EsoAlgo@129.146.136.145) (Ping timeout: 268 seconds) |
2022-08-09 06:19:45 +0200 | gmg | (~user@user/gehmehgeh) |
2022-08-09 06:21:29 +0200 | vglfr | (~vglfr@194.9.14.33) (Ping timeout: 252 seconds) |
2022-08-09 06:21:38 +0200 | merijn | (~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 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-08-09 06:24:22 +0200 | kazaf | (~kazaf@94.180.63.53) |
2022-08-09 06:26:08 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Read error: Connection reset by peer) |
2022-08-09 06:26:08 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-08-09 06:26:08 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2022-08-09 06:26:08 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Write error: Connection reset by peer) |
2022-08-09 06:26:08 +0200 | noteness | (~noteness@user/noteness) (Read error: Connection reset by peer) |
2022-08-09 06:26:08 +0200 | gmg | (~user@user/gehmehgeh) (Remote host closed the connection) |
2022-08-09 06:26:08 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Read error: Connection reset by peer) |
2022-08-09 06:26:08 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-08-09 06:26:31 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-08-09 06:26:37 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-08-09 06:26:41 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-08-09 06:26:44 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-08-09 06:26:56 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-08-09 06:26:57 +0200 | noteness | (~noteness@user/noteness) |
2022-08-09 06:27:23 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-08-09 06:28:49 +0200 | gmg | (~user@user/gehmehgeh) |
2022-08-09 06:30:06 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-08-09 06:30:29 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-08-09 06:31:14 +0200 | agander_m__ | agander_m |
2022-08-09 06:33:05 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-08-09 06:33:27 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-08-09 06:34:55 +0200 | luffy | (~chenqisu1@183.217.201.23) (Ping timeout: 268 seconds) |
2022-08-09 06:35:28 +0200 | johnw | (~johnw@2600:1700:cf00:db0:c8aa:85f9:feb6:ad6f) (Quit: ZNC - http://znc.in) |
2022-08-09 06:38:18 +0200 | absentia_ | absentia |
2022-08-09 06:38:26 +0200 | absentia | (~absentia@24-246-53-210.cable.teksavvy.com) (Changing host) |
2022-08-09 06:38:26 +0200 | absentia | (~absentia@user/absentia) |
2022-08-09 06:38:43 +0200 | Kaipei | (~Kaiepi@142.68.249.28) (Ping timeout: 252 seconds) |
2022-08-09 06:47:56 +0200 | irfan | (~irfan@user/irfan) |
2022-08-09 06:51:06 +0200 | pragma- | (~chaos@user/pragmatic-chaos) (Bye!) |
2022-08-09 06:52:35 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2022-08-09 06:53:58 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-08-09 06:55:01 +0200 | titibandit | (~titibandi@xdsl-212-8-147-38.nc.de) |
2022-08-09 06:57:11 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 255 seconds) |
2022-08-09 07:00:46 +0200 | kazaf | (~kazaf@94.180.63.53) (Ping timeout: 252 seconds) |
2022-08-09 07:04:23 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 252 seconds) |
2022-08-09 07:05:13 +0200 | noteness | (~noteness@user/noteness) (Ping timeout: 268 seconds) |
2022-08-09 07:07:22 +0200 | noteness | (~noteness@user/noteness) |
2022-08-09 07:07:50 +0200 | catern | (~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407) |
2022-08-09 07:10:40 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 07:17:28 +0200 | hakutaku | (~hakutaku@94.25.228.55) (Ping timeout: 268 seconds) |
2022-08-09 07:22:41 +0200 | raym | (~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 +0200 | jargon | (~jargon@153.sub-174-205-231.myvzw.com) (Remote host closed the connection) |
2022-08-09 07:27:11 +0200 | notzmv | (~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 +0200 | monadplus | (~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) |
2022-08-09 07:42:10 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 268 seconds) |
2022-08-09 07:46:45 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
2022-08-09 07:55:58 +0200 | coot | (~coot@213.134.176.158) |
2022-08-09 07:57:16 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-08-09 07:57:36 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-08-09 08:02:17 +0200 | johnw | (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) |
2022-08-09 08:06:03 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
2022-08-09 08:06:27 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-08-09 08:07:05 +0200 | ccntrq | (~Thunderbi@172.209.94.92.rev.sfr.net) |
2022-08-09 08:07:07 +0200 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-08-09 08:07:52 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 08:08:11 +0200 | ski | (~ski@102-198-142-46.pool.kielnet.net) (Ping timeout: 252 seconds) |
2022-08-09 08:09:11 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 255 seconds) |
2022-08-09 08:11:46 +0200 | vglfr | (~vglfr@194.9.14.33) (Ping timeout: 268 seconds) |
2022-08-09 08:12:33 +0200 | benin0 | (~benin@183.82.204.69) |
2022-08-09 08:14:29 +0200 | ski | (~ski@102-198-142-46.pool.kielnet.net) |
2022-08-09 08:15:09 +0200 | nilradical | (~nilradica@user/naso) (Ping timeout: 252 seconds) |
2022-08-09 08:17:32 +0200 | mbuf | (~Shakthi@2401:4900:264d:2a18:1375:61b7:aab6:5d70) |
2022-08-09 08:19:01 +0200 | ubert | (~Thunderbi@178.115.60.12.wireless.dyn.drei.com) |
2022-08-09 08:22:54 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-08-09 08:27:48 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-08-09 08:31:25 +0200 | cheater | (~Username@user/cheater) |
2022-08-09 08:35:20 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
2022-08-09 08:35:49 +0200 | xff0x_ | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 268 seconds) |
2022-08-09 08:36:43 +0200 | tzh_ | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2022-08-09 08:37:26 +0200 | xff0x_ | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
2022-08-09 08:37:31 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2022-08-09 08:39:09 +0200 | vglfr | (~vglfr@194.9.14.33) |
2022-08-09 08:40:45 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 08:42:41 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 08:47:55 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:f6c8:3b8a:6258:a564) |
2022-08-09 08:49:52 +0200 | cheater | (~Username@user/cheater) |
2022-08-09 08:51:51 +0200 | nilradical | (~nilradica@user/naso) (Ping timeout: 268 seconds) |
2022-08-09 08:52:20 +0200 | chele | (~chele@user/chele) |
2022-08-09 08:53:01 +0200 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-08-09 08:57:20 +0200 | cheater1__ | (~Username@user/cheater) |
2022-08-09 08:58:01 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 268 seconds) |
2022-08-09 09:01:44 +0200 | cheater | (~Username@user/cheater) |
2022-08-09 09:02:05 +0200 | cheater1__ | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2022-08-09 09:05:25 +0200 | MajorBiscuit | (~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl) |
2022-08-09 09:08:14 +0200 | michalz | (~michalz@185.246.204.73) (Remote host closed the connection) |
2022-08-09 09:08:41 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 252 seconds) |
2022-08-09 09:08:49 +0200 | michalz | (~michalz@185.246.204.75) |
2022-08-09 09:11:03 +0200 | MajorBiscuit | (~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl) (Quit: WeeChat 3.5) |
2022-08-09 09:11:14 +0200 | MajorBiscuit | (~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl) |
2022-08-09 09:11:56 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 09:12:35 +0200 | vysn | (~vysn@user/vysn) |
2022-08-09 09:16:31 +0200 | rush | sloorush |
2022-08-09 09:18:27 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) |
2022-08-09 09:22:26 +0200 | chomwitt | (~chomwitt@2a02:587:dc12:7400:755f:cb3e:e77d:78e6) |
2022-08-09 09:22:44 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 268 seconds) |
2022-08-09 09:23:13 +0200 | fserucas | (~fserucas@46.50.4.9) |
2022-08-09 09:24:50 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-08-09 09:25:16 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2022-08-09 09:26:19 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-08-09 09:27:16 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
2022-08-09 09:28:18 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-08-09 09:28:20 +0200 | aforemny_ | aforemny |
2022-08-09 09:29:35 +0200 | nilradical | (~nilradica@user/naso) (Ping timeout: 252 seconds) |
2022-08-09 09:32:14 +0200 | cfricke | (~cfricke@user/cfricke) |
2022-08-09 09:34:22 +0200 | cosimone` | (~user@93-44-186-171.ip98.fastwebnet.it) (Read error: Connection reset by peer) |
2022-08-09 09:35:29 +0200 | jgeerds | (~jgeerds@55d46bad.access.ecotel.net) |
2022-08-09 09:36:17 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 09:38:00 +0200 | kuribas | (~user@ptr-17d51en70upy9zs31tv.18120a2.ip6.access.telenet.be) |
2022-08-09 09:39:20 +0200 | chomwitt | (~chomwitt@2a02:587:dc12:7400:755f:cb3e:e77d:78e6) (Ping timeout: 268 seconds) |
2022-08-09 09:41:11 +0200 | nilradical | (~nilradica@user/naso) (Ping timeout: 268 seconds) |
2022-08-09 09:42:55 +0200 | hakutaku | (~hakutaku@62.32.91.171) |
2022-08-09 09:43:14 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-08-09 09:47:41 +0200 | LiChen_ | (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 +0200 | carbolymer_ | carbolymer |
2022-08-09 09:50:32 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 09:50:47 +0200 | cosimone | (~user@93-44-186-171.ip98.fastwebnet.it) |
2022-08-09 09:52:45 +0200 | cheater | (~Username@user/cheater) (Read error: Connection reset by peer) |
2022-08-09 09:53:41 +0200 | zer0bitz | (~zer0bitz@2001:2003:f748:2000:7d58:b5e3:80b4:aa10) |
2022-08-09 09:55:07 +0200 | cheater | (~Username@user/cheater) |
2022-08-09 09:55:24 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 09:55:42 +0200 | machinedgod | (~machinedg@d172-219-86-154.abhsia.telus.net) |
2022-08-09 09:57:07 +0200 | acidjnk_new | (~acidjnk@p200300d6e70586665c86bfb0acf03c2b.dip0.t-ipconnect.de) |
2022-08-09 09:58:40 +0200 | cosimone | (~user@93-44-186-171.ip98.fastwebnet.it) (Remote host closed the connection) |
2022-08-09 09:59:46 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-08-09 10:00:14 +0200 | yvan-sraka | (~yvan-srak@105.67.135.250) |
2022-08-09 10:00:21 +0200 | kawzeg_ | (kawzeg@2a01:7e01::f03c:92ff:fee2:ec34) (Quit: WeeChat 3.3) |
2022-08-09 10:00:30 +0200 | kawzeg | (kawzeg@2a01:7e01::f03c:92ff:fee2:ec34) |
2022-08-09 10:01:33 +0200 | ell | (~ellie@user/ellie) |
2022-08-09 10:02:15 +0200 | cosimone | (~user@93-44-186-171.ip98.fastwebnet.it) |
2022-08-09 10:05:14 +0200 | jese | (~nikola@93-86-182-196.dynamic.isp.telekom.rs) |
2022-08-09 10:09:41 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2022-08-09 10:09:41 +0200 | noteness | (~noteness@user/noteness) (Remote host closed the connection) |
2022-08-09 10:09:41 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-08-09 10:09:50 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2022-08-09 10:10:10 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-08-09 10:10:20 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-08-09 10:10:27 +0200 | noteness | (~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 +0200 | matthewmosior | (~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 +0200 | raehik | (~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 +0200 | alternateved | (~user@staticline-31-183-149-36.toya.net.pl) |
2022-08-09 10:21:46 +0200 | noteness | (~noteness@user/noteness) (Remote host closed the connection) |
2022-08-09 10:22:01 +0200 | noteness | (~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 +0200 | eggplant_ | (~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 +0200 | ubert1 | (~Thunderbi@77.119.164.0.wireless.dyn.drei.com) |
2022-08-09 10:38:30 +0200 | ubert | (~Thunderbi@178.115.60.12.wireless.dyn.drei.com) (Ping timeout: 268 seconds) |
2022-08-09 10:38:31 +0200 | ubert1 | ubert |
2022-08-09 10:39:33 +0200 | merijn | (~merijn@c-001-001-007.client.esciencecenter.eduvpn.nl) (Ping timeout: 244 seconds) |
2022-08-09 10:40:11 +0200 | nilradical | (~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 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 10:43:30 +0200 | kawen_ | kawen |
2022-08-09 10:43:34 +0200 | shriekingnoise | (~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 +0200 | nilradical | (~nilradica@user/naso) (Ping timeout: 268 seconds) |
2022-08-09 10:48:50 +0200 | mmhat | (~mmh@p200300f1c72ee918ee086bfffe095315.dip0.t-ipconnect.de) |
2022-08-09 10:48:57 +0200 | nilradical | (~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 +0200 | merijn | (~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 +0200 | mmhat | (~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 +0200 | jgeerds | (~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 +0200 | ski | (~ski@102-198-142-46.pool.kielnet.net) (Ping timeout: 268 seconds) |
2022-08-09 10:59:08 +0200 | alp_ | (~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 +0200 | steve[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 +0200 | jese | (~nikola@93-86-182-196.dynamic.isp.telekom.rs) (Quit: leaving) |
2022-08-09 11:01:07 +0200 | steve[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 +0200 | merijn | (~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 +0200 | noteness | (~noteness@user/noteness) (Remote host closed the connection) |
2022-08-09 11:03:25 +0200 | noteness | (~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 +0200 | steve[m] | (~stevetrou@2001:470:69fc:105::e0b) () |
2022-08-09 11:04:30 +0200 | alternateved | (~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 +0200 | raehik | (~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 +0200 | mmhat | (~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 +0200 | mima | (mmh@gateway/vpn/airvpn/mima) |
2022-08-09 11:13:10 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-08-09 11:15:46 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2022-08-09 11:16:02 +0200 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2022-08-09 11:17:23 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2022-08-09 11:17:46 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-08-09 11:23:23 +0200 | cheater | (~Username@user/cheater) (Read error: Connection reset by peer) |
2022-08-09 11:24:19 +0200 | cheater | (~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 +0200 | luffy | (~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 +0200 | Kaipei | (~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 +0200 | eggplantade | (~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 +0200 | coot | (~coot@213.134.176.158) (Quit: coot) |
2022-08-09 11:34:59 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
2022-08-09 11:35:39 +0200 | cheater1__ | (~Username@user/cheater) |
2022-08-09 11:35:43 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 252 seconds) |
2022-08-09 11:35:53 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 268 seconds) |
2022-08-09 11:36:02 +0200 | cheater1__ | cheater |
2022-08-09 11:36:21 +0200 | chomwitt | (~chomwitt@2a02:587:dc15:ef00:5da3:5948:b4:5053) |
2022-08-09 11:39:34 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 11:44:09 +0200 | yvan-sraka | (~yvan-srak@105.67.135.250) (Remote host closed the connection) |
2022-08-09 11:51:02 +0200 | yvan-sraka | (~yvan-srak@105.67.135.250) |
2022-08-09 11:55:22 +0200 | mbuf | (~Shakthi@2401:4900:264d:2a18:1375:61b7:aab6:5d70) (Quit: Leaving) |
2022-08-09 11:56:40 +0200 | ski | (~ski@185.109.152.13) |
2022-08-09 11:58:52 +0200 | titibandit | (~titibandi@xdsl-212-8-147-38.nc.de) (Quit: Leaving.) |
2022-08-09 12:05:52 +0200 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) |
2022-08-09 12:07:15 +0200 | cheater | (~Username@user/cheater) (Ping timeout: 252 seconds) |
2022-08-09 12:08:25 +0200 | darchitect1 | (~darchitec@2a00:23c6:3584:df01:2d0:4120:37b2:95) (Ping timeout: 244 seconds) |
2022-08-09 12:11:17 +0200 | xff0x_ | (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds) |
2022-08-09 12:13:08 +0200 | monadplus | (~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) (Quit: Client closed) |
2022-08-09 12:16:01 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds) |
2022-08-09 12:16:42 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) (Ping timeout: 268 seconds) |
2022-08-09 12:17:50 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-08-09 12:23:45 +0200 | monadplus | (~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) |
2022-08-09 12:26:58 +0200 | aliosablack | (~chomwitt@ppp-94-67-201-122.home.otenet.gr) |
2022-08-09 12:27:04 +0200 | chomwitt | (~chomwitt@2a02:587:dc15:ef00:5da3:5948:b4:5053) (Ping timeout: 268 seconds) |
2022-08-09 12:29:29 +0200 | gurkenglas | (~gurkengla@p548ac72e.dip0.t-ipconnect.de) |
2022-08-09 12:34:49 +0200 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-08-09 12:37:28 +0200 | alternateved | (~user@staticline-31-183-149-36.toya.net.pl) |
2022-08-09 12:40:36 +0200 | mastarija | (~mastarija@2a05:4f46:e03:6000:18f8:fb5b:a843:cd18) |
2022-08-09 12:41:55 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-09 12:42:27 +0200 | hakutaku | (~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 +0200 | hakutaku | (~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 +0200 | BanUtama | (~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 +0200 | eggplantade | (~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 +0200 | titibandit | (~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 +0200 | vglfr | (~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 +0200 | hakutaku | (~hakutaku@62.32.91.171) (Ping timeout: 268 seconds) |
2022-08-09 12:50:27 +0200 | BanUtama | (~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 +0200 | hakutaku | (~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 +0200 | Kaipei | Kaiepi |
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 +0200 | merijn | (~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 +0200 | kritzefitz | (~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 +0200 | kritzefitz | (~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 +0200 | ski | (~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 +0200 | xff0x_ | (~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 +0200 | monadplus[m] | (~monadplus@2001:470:69fc:105::2:5fa2) |
2022-08-09 13:19:29 +0200 | alp_ | (~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 +0200 | tubogram44 | (~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 +0200 | tubogram44 | (~tubogram@user/tubogram) |
2022-08-09 13:21:08 +0200 | <tomsmeding> | that is unambiguously distinct from r-> |
2022-08-09 13:22:21 +0200 | cosimone | (~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 +0200 | yaroot_ | (~yaroot@p2550227-ipngn11101souka.saitama.ocn.ne.jp) |
2022-08-09 13:27:47 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-08-09 13:28:45 +0200 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-08-09 13:29:01 +0200 | yaroot | (~yaroot@p2543146-ipngn11101souka.saitama.ocn.ne.jp) (Ping timeout: 252 seconds) |
2022-08-09 13:29:01 +0200 | yaroot_ | yaroot |
2022-08-09 13:29:04 +0200 | monadplus | (~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) (Ping timeout: 252 seconds) |
2022-08-09 13:30:14 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 13:34:18 +0200 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-08-09 13:34:38 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 13:35:06 +0200 | zeenk | (~zeenk@2a02:2f04:a311:2d00:6865:d863:4c93:799f) |
2022-08-09 13:40:57 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 13:42:12 +0200 | noteness_ | (~noteness@user/noteness) |
2022-08-09 13:42:58 +0200 | noteness | (~noteness@user/noteness) (Ping timeout: 268 seconds) |
2022-08-09 13:49:01 +0200 | alp_ | (~alp@user/alp) |
2022-08-09 13:53:31 +0200 | titibandit | (~titibandi@xdsl-212-8-147-38.nc.de) (Quit: Leaving.) |
2022-08-09 13:54:41 +0200 | califax | (~califax@user/califx) (Ping timeout: 268 seconds) |
2022-08-09 13:54:46 +0200 | califax_ | (~califax@user/califx) |
2022-08-09 13:55:15 +0200 | mastarija | (~mastarija@2a05:4f46:e03:6000:18f8:fb5b:a843:cd18) (Ping timeout: 268 seconds) |
2022-08-09 13:55:57 +0200 | califax_ | califax |
2022-08-09 13:57:45 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-08-09 13:58:03 +0200 | califax | (~califax@user/califx) |
2022-08-09 14:00:15 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 255 seconds) |
2022-08-09 14:01:22 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-08-09 14:02:51 +0200 | vglfr | (~vglfr@37.73.110.255) |
2022-08-09 14:05:29 +0200 | cosimone | (~user@93-44-186-171.ip98.fastwebnet.it) |
2022-08-09 14:07:35 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Ping timeout: 268 seconds) |
2022-08-09 14:10:26 +0200 | kavvadias | (~kavvadias@2001:9e8:6331:f600:aebb:e42c:4fd0:32c7) |
2022-08-09 14:10:59 +0200 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) (Ping timeout: 255 seconds) |
2022-08-09 14:13:23 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-08-09 14:13:45 +0200 | vglfr | (~vglfr@37.73.110.255) (Ping timeout: 252 seconds) |
2022-08-09 14:14:01 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-08-09 14:16:15 +0200 | mncheck | (~mncheck@193.224.205.254) |
2022-08-09 14:17:32 +0200 | Milan | (~Milan@46.245.72.105) |
2022-08-09 14:17:34 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-09 14:19:55 +0200 | mima | (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 +0200 | frost | (~frost@user/frost) (Quit: Client closed) |
2022-08-09 14:21:44 +0200 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Ping timeout: 268 seconds) |
2022-08-09 14:22:21 +0200 | eggplantade | (~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 +0200 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2022-08-09 14:25:19 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-08-09 14:25:28 +0200 | vysn | (~vysn@user/vysn) (Ping timeout: 268 seconds) |
2022-08-09 14:26:09 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-08-09 14:28:50 +0200 | kavvadias | (~kavvadias@2001:9e8:6331:f600:aebb:e42c:4fd0:32c7) (Ping timeout: 252 seconds) |
2022-08-09 14:29:31 +0200 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "") |
2022-08-09 14:30:08 +0200 | nilradical | (~nilradica@user/naso) (Remote host closed the connection) |
2022-08-09 14:30:54 +0200 | nilradical | (~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 +0200 | yvan-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 +0200 | monadplus | (~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) |
2022-08-09 14:44:16 +0200 | Milan | (~Milan@46.245.72.105) (Quit: Client closed) |
2022-08-09 14:44:17 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-08-09 14:46:09 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-08-09 14:47:03 +0200 | cfricke | (~cfricke@user/cfricke) (Ping timeout: 268 seconds) |
2022-08-09 14:47:07 +0200 | alp_ | (~alp@user/alp) (Ping timeout: 252 seconds) |
2022-08-09 14:51:00 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 14:52:37 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-09 14:53:05 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 14:53:39 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-08-09 14:53:46 +0200 | MajorBiscuit | (~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl) (Ping timeout: 244 seconds) |
2022-08-09 14:54:06 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-08-09 14:56:02 +0200 | kuribas | (~user@ptr-17d51en70upy9zs31tv.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
2022-08-09 14:56:13 +0200 | titibandit | (~titibandi@2a00:8a60:c000:1:8a13:bf74:b2:8d47) |
2022-08-09 14:57:47 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-08-09 15:02:31 +0200 | aliosablack | (~chomwitt@ppp-94-67-201-122.home.otenet.gr) (Ping timeout: 252 seconds) |
2022-08-09 15:03:40 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 15:04:05 +0200 | acidjnk_new | (~acidjnk@p200300d6e70586665c86bfb0acf03c2b.dip0.t-ipconnect.de) (Ping timeout: 255 seconds) |
2022-08-09 15:04:29 +0200 | off^ | (~off@206.85.120.17) (Remote host closed the connection) |
2022-08-09 15:05:32 +0200 | mc47 | (~mc47@xmonad/TheMC47) |
2022-08-09 15:05:36 +0200 | Natch | (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Remote host closed the connection) |
2022-08-09 15:06:50 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 268 seconds) |
2022-08-09 15:07:44 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-08-09 15:07:59 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-09 15:08:06 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 15:09:16 +0200 | Guest45 | (~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net) |
2022-08-09 15:09:30 +0200 | jakalx | (~jakalx@base.jakalx.net) () |
2022-08-09 15:10:29 +0200 | jakalx | (~jakalx@base.jakalx.net) |
2022-08-09 15:11:05 +0200 | nilradical | (~nilradica@user/naso) () |
2022-08-09 15:11:44 +0200 | frost | (~frost@user/frost) |
2022-08-09 15:11:53 +0200 | MajorBiscuit | (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) |
2022-08-09 15:15:06 +0200 | Major_Biscuit | (~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl) |
2022-08-09 15:16:39 +0200 | MajorBiscuit | (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Ping timeout: 268 seconds) |
2022-08-09 15:16:53 +0200 | pmarg | (~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02) |
2022-08-09 15:17:16 +0200 | pmarg | (~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02) (Remote host closed the connection) |
2022-08-09 15:18:34 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 15:18:58 +0200 | byorgey_ | byorgey |
2022-08-09 15:19:02 +0200 | nilradical | (~nilradica@user/naso) (Client Quit) |
2022-08-09 15:19:19 +0200 | nilradical | (~nilradica@user/naso) |
2022-08-09 15:20:35 +0200 | pmarg | (~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02) |
2022-08-09 15:22:00 +0200 | lisk1n | liskin |
2022-08-09 15:24:15 +0200 | pmarg | (~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02) (Client Quit) |
2022-08-09 15:24:52 +0200 | Natch | (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) |
2022-08-09 15:25:32 +0200 | pmarg | (~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02) |
2022-08-09 15:27:21 +0200 | zxx7529 | (~Thunderbi@user/zxx7529) |
2022-08-09 15:29:15 +0200 | Midjak | (~Midjak@82.66.147.146) |
2022-08-09 15:30:13 +0200 | titibandit | (~titibandi@2a00:8a60:c000:1:8a13:bf74:b2:8d47) (Ping timeout: 268 seconds) |
2022-08-09 15:31:18 +0200 | azimut_ | (~azimut@gateway/tor-sasl/azimut) |
2022-08-09 15:31:23 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) (Quit: ZNC - https://znc.in) |
2022-08-09 15:31:29 +0200 | Major_Biscuit | (~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl) (Ping timeout: 252 seconds) |
2022-08-09 15:31:55 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2022-08-09 15:35:10 +0200 | Major_Biscuit | (~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e) |
2022-08-09 15:36:02 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-09 15:36:13 +0200 | Major_Biscuit | (~MajorBisc@2a02:a461:129d:1:193d:75d8:745d:e91e) (Client Quit) |
2022-08-09 15:36:31 +0200 | pmarg | (~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02) (Quit: pmarg) |
2022-08-09 15:37:54 +0200 | pmarg | (~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 +0200 | luffy | (~chenqisu1@183.217.201.23) (Ping timeout: 252 seconds) |
2022-08-09 15:40:02 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 15:40:31 +0200 | <tomsmeding> | O.o |
2022-08-09 15:41:26 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-09 15:41:59 +0200 | noteness_ | (~noteness@user/noteness) (Ping timeout: 268 seconds) |
2022-08-09 15:42:52 +0200 | noteness | (~noteness@user/noteness) |
2022-08-09 15:43:27 +0200 | MajorBiscuit | (~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl) |
2022-08-09 15:43:30 +0200 | Sciencentistguy | (~sciencent@hacksoc/ordinary-member) (Quit: o/) |
2022-08-09 15:43:36 +0200 | titibandit | (~titibandi@sunp.ient.rwth-aachen.de) |
2022-08-09 15:44:27 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 15:46:31 +0200 | Sciencentistguy | (~sciencent@hacksoc/ordinary-member) |
2022-08-09 15:46:53 +0200 | finsternis | (~X@23.226.237.192) (Read error: Connection reset by peer) |
2022-08-09 15:47:08 +0200 | mima | (~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 +0200 | Guest3727 | (~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 +0200 | Guest3727 | (~Guest37@31.129.248.21) (Client Quit) |
2022-08-09 15:53:52 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2022-08-09 15:54:17 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-08-09 15:55:05 +0200 | coot | (~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 +0200 | Guest45 | (~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net) (Quit: Client closed) |
2022-08-09 15:57:55 +0200 | Guest45 | (~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net) |
2022-08-09 15:58:13 +0200 | mncheckm | (~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 +0200 | kuribas | (~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 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-08-09 16:01:02 +0200 | mncheck | (~mncheck@193.224.205.254) (Ping timeout: 268 seconds) |
2022-08-09 16:01:06 +0200 | zanyan | (~zanyan@2a02:6b64:f194:0:1d3f:ed4e:5027:57f2) |
2022-08-09 16:01:09 +0200 | califax | (~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 +0200 | frost | (~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 +0200 | coot | (~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 +0200 | noteness | (~noteness@user/noteness) (Write error: Connection reset by peer) |
2022-08-09 16:04:15 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2022-08-09 16:04:31 +0200 | noteness | (~noteness@user/noteness) |
2022-08-09 16:04:37 +0200 | jpds | (~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 +0200 | matthewmosior | (~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 +0200 | zebrag | (~chris@user/zebrag) |
2022-08-09 16:08:25 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) |
2022-08-09 16:09:04 +0200 | mima | (~mmh@dhcp-138-246-3-117.dynamic.eduroam.mwn.de) (Ping timeout: 268 seconds) |
2022-08-09 16:09:51 +0200 | Clint_ | Clint |
2022-08-09 16:12:53 +0200 | aweinstock | (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) (Ping timeout: 268 seconds) |
2022-08-09 16:13:11 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2022-08-09 16:13:42 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 16:14:45 +0200 | qhong | (~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 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-08-09 16:18:06 +0200 | mastarija | (~mastarija@2a05:4f46:e03:6000:c421:108c:b5ba:309e) |
2022-08-09 16:19:16 +0200 | pmarg | (~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02) (Quit: pmarg) |
2022-08-09 16:20:14 +0200 | aweinstock | (~aweinstoc@cpe-74-76-189-75.nycap.res.rr.com) |
2022-08-09 16:20:32 +0200 | pmarg | (~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02) |
2022-08-09 16:20:46 +0200 | aliosablack | (~chomwitt@2a02:587:dc15:5e00:4013:2028:e3f3:d52d) |
2022-08-09 16:21:51 +0200 | kuribas | (~user@ptr-17d51en70upy9zs31tv.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
2022-08-09 16:22:41 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 268 seconds) |
2022-08-09 16:24:08 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2022-08-09 16:25:47 +0200 | acidjnk_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 +0200 | ec | (~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 +0200 | ec | (~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 +0200 | cfricke | (~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 +0200 | matthewmosior | (~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 +0200 | mima | (~mmh@dhcp-138-246-3-117.dynamic.eduroam.mwn.de) |
2022-08-09 16:37:26 +0200 | mastarija | (~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 +0200 | aliosablack | (~chomwitt@2a02:587:dc15:5e00:4013:2028:e3f3:d52d) (Remote host closed the connection) |
2022-08-09 16:40:02 +0200 | aliosablack | (~chomwitt@2a02:587:dc15:5e00:ea1e:e5c0:de8:53e2) |
2022-08-09 16:41:29 +0200 | eggplantade | (~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 +0200 | Guest45 | (~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net) (Quit: Client closed) |
2022-08-09 16:45:23 +0200 | Guest45 | (~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net) |
2022-08-09 16:45:36 +0200 | shriekingnoise | (~shrieking@186.137.167.202) |
2022-08-09 16:45:38 +0200 | zanyan | (~zanyan@2a02:6b64:f194:0:1d3f:ed4e:5027:57f2) (Quit: Ping timeout (120 seconds)) |
2022-08-09 16:45:55 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds) |
2022-08-09 16:48:14 +0200 | noteness | (~noteness@user/noteness) (Remote host closed the connection) |
2022-08-09 16:48:42 +0200 | noteness | (~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 +0200 | In0perable | (~PLAYER_1@fancydata.science) (Quit: All your buffer are belong to us!) |
2022-08-09 16:51:02 +0200 | dfg | (~dfg@user/dfg) (Ping timeout: 244 seconds) |
2022-08-09 16:51:35 +0200 | mud | (~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 +0200 | dfg | (~dfg@dfg.rocks) |
2022-08-09 16:53:09 +0200 | dfg | (~dfg@dfg.rocks) (Changing host) |
2022-08-09 16:53:09 +0200 | dfg | (~dfg@user/dfg) |
2022-08-09 16:53:25 +0200 | Guest26 | (~Guest26@cpc151201-smal19-2-0-cust133.19-1.cable.virginm.net) |
2022-08-09 16:53:37 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 252 seconds) |
2022-08-09 16:54:13 +0200 | alternateved | (~user@staticline-31-183-149-36.toya.net.pl) (Remote host closed the connection) |
2022-08-09 16:56:57 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 16:57:53 +0200 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-08-09 16:57:56 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-08-09 16:59:19 +0200 | EsoAlgo | (~EsoAlgo@129.146.136.145) |
2022-08-09 17:00:14 +0200 | kuribas | (~user@ptr-17d51epg7uxmm3fpjg8.18120a2.ip6.access.telenet.be) |
2022-08-09 17:01:02 +0200 | monadplus | (~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) (Quit: Client closed) |
2022-08-09 17:01:05 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2022-08-09 17:01:06 +0200 | vglfr | (~vglfr@37.73.110.255) |
2022-08-09 17:01:25 +0200 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2022-08-09 17:02:11 +0200 | Guest45 | (~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net) (Quit: Client closed) |
2022-08-09 17:02:24 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 244 seconds) |
2022-08-09 17:02:31 +0200 | Guest45 | (~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 +0200 | Inoperable | (~PLAYER_1@fancydata.science) |
2022-08-09 17:04:41 +0200 | GoldsteinQ | (~goldstein@goldstein.rs) (Ping timeout: 268 seconds) |
2022-08-09 17:04:50 +0200 | gmg | (~user@user/gehmehgeh) |
2022-08-09 17:07:34 +0200 | vglfr | (~vglfr@37.73.110.255) (Ping timeout: 244 seconds) |
2022-08-09 17:07:39 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-08-09 17:07:57 +0200 | monadplus | (~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) |
2022-08-09 17:08:13 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-08-09 17:09:28 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 17:10:58 +0200 | alp_ | (~alp@user/alp) |
2022-08-09 17:11:42 +0200 | vglfr | (~vglfr@37.73.110.255) |
2022-08-09 17:13:13 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 17:13:51 +0200 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
2022-08-09 17:14:15 +0200 | lortabac | (~lortabac@2a01:e0a:541:b8f0:f6c8:3b8a:6258:a564) (Quit: WeeChat 2.8) |
2022-08-09 17:16:17 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds) |
2022-08-09 17:17:41 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-08-09 17:21:59 +0200 | adanwan | (~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 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-08-09 17:22:27 +0200 | BanUtama | (~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 +0200 | Guest45 | (~Guest45@d-216-246-141-77.nh.cpe.atlanticbb.net) (Quit: Client closed) |
2022-08-09 17:34:08 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 17:35:47 +0200 | vglfr | (~vglfr@37.73.110.255) (Ping timeout: 252 seconds) |
2022-08-09 17:37:05 +0200 | Inst | (~Inst@2601:6c4:4080:3f80:258f:9da7:8d32:3e0c) (Ping timeout: 255 seconds) |
2022-08-09 17:37:22 +0200 | hakutaku | (~hakutaku@62.32.91.171) (Quit: WeeChat 3.6) |
2022-08-09 17:39:43 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
2022-08-09 17:40:07 +0200 | acidjnk_new | (~acidjnk@p200300d6e705866645103b1bac763c69.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
2022-08-09 17:40:33 +0200 | causal | (~user@50.35.83.177) (Quit: WeeChat 3.6) |
2022-08-09 17:41:09 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-09 17:44:56 +0200 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) |
2022-08-09 17:45:46 +0200 | cheater | (~Username@user/cheater) |
2022-08-09 17:47:18 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 17:50:52 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
2022-08-09 17:51:11 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-08-09 17:52:01 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
2022-08-09 17:52:33 +0200 | titibandit | (~titibandi@sunp.ient.rwth-aachen.de) (Remote host closed the connection) |
2022-08-09 17:54:51 +0200 | fserucas | (~fserucas@46.50.4.9) (Ping timeout: 252 seconds) |
2022-08-09 17:56:26 +0200 | slack1256 | (~slack1256@wsip-184-177-0-226.no.no.cox.net) |
2022-08-09 17:56:52 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 17:57:11 +0200 | Milan | (~Milan@46.245.72.105) |
2022-08-09 17:57:34 +0200 | Milan | (~Milan@46.245.72.105) (Client Quit) |
2022-08-09 18:02:25 +0200 | azimut_ | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2022-08-09 18:02:53 +0200 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2022-08-09 18:03:07 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
2022-08-09 18:03:31 +0200 | Guest94 | (~Guest94@pool-100-40-26-64.prvdri.fios.verizon.net) |
2022-08-09 18:03:48 +0200 | Guest26 | (~Guest26@cpc151201-smal19-2-0-cust133.19-1.cable.virginm.net) (Quit: Client closed) |
2022-08-09 18:04:21 +0200 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.6) |
2022-08-09 18:05:19 +0200 | Guest94 | (~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 +0200 | qhong | (~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 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 18:11:07 +0200 | eggplantade | (~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 +0200 | cheater | (~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 +0200 | alp_ | (~alp@user/alp) (Ping timeout: 268 seconds) |
2022-08-09 18:12:40 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 244 seconds) |
2022-08-09 18:14:15 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds) |
2022-08-09 18:17:28 +0200 | vysn | (~vysn@user/vysn) |
2022-08-09 18:18:09 +0200 | coot | (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot) |
2022-08-09 18:18:49 +0200 | cheater | (~Username@user/cheater) |
2022-08-09 18:23:52 +0200 | nilradical | (~nilradica@user/naso) () |
2022-08-09 18:26:36 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 18:29:03 +0200 | titibandit | (~titibandi@xdsl-212-8-147-38.nc.de) |
2022-08-09 18:30:32 +0200 | Milan | (~Milan@46.245.72.105) |
2022-08-09 18:30:44 +0200 | Milan | (~Milan@46.245.72.105) (Client Quit) |
2022-08-09 18:30:58 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-09 18:31:00 +0200 | jao | (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
2022-08-09 18:34:00 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-12.elisa-laajakaista.fi) |
2022-08-09 18:35:13 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
2022-08-09 18:35:31 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-08-09 18:39:59 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
2022-08-09 18:40:28 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-08-09 18:48:19 +0200 | ski | (~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 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 268 seconds) |
2022-08-09 18:57:11 +0200 | benin0 | (~benin@183.82.204.69) (Ping timeout: 252 seconds) |
2022-08-09 18:57:48 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-08-09 18:58:07 +0200 | raym | (~raym@user/raym) |
2022-08-09 18:59:54 +0200 | benin0 | (~benin@183.82.30.53) |
2022-08-09 18:59:59 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-08-09 19:00:26 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 19:00:38 +0200 | ridcully | (~ridcully@p57b5218b.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
2022-08-09 19:02:05 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-08-09 19:03:03 +0200 | ski | (~ski@217.116.228.14) (Ping timeout: 252 seconds) |
2022-08-09 19:05:25 +0200 | ridcully | (~ridcully@pd951fa32.dip0.t-ipconnect.de) |
2022-08-09 19:05:40 +0200 | monadplus | (~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) (Ping timeout: 252 seconds) |
2022-08-09 19:07:15 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
2022-08-09 19:08:11 +0200 | benin0 | (~benin@183.82.30.53) (Ping timeout: 252 seconds) |
2022-08-09 19:08:24 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 19:08:40 +0200 | benin0 | (~benin@183.82.176.176) |
2022-08-09 19:11:38 +0200 | econo | (uid147250@user/econo) |
2022-08-09 19:13:27 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
2022-08-09 19:15:21 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-08-09 19:15:46 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-08-09 19:16:37 +0200 | benin0 | (~benin@183.82.176.176) (Ping timeout: 252 seconds) |
2022-08-09 19:16:57 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 19:17:30 +0200 | cyanide3dinner | (~cyanide4d@2402:e280:2149:513:931b:41cb:2a7e:791d) |
2022-08-09 19:19:24 +0200 | mud | (~mud@user/kadoban) |
2022-08-09 19:22:03 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |
2022-08-09 19:23:15 +0200 | zxx7529 | (~Thunderbi@user/zxx7529) (Quit: zxx7529) |
2022-08-09 19:23:17 +0200 | coot | (~coot@213.134.176.158) |
2022-08-09 19:23:22 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-08-09 19:27:02 +0200 | kenran | (~kenran@200116b82b0c9300327c25528a273147.dip.versatel-1u1.de) |
2022-08-09 19:28:37 +0200 | acidjnk_new | (~acidjnk@p200300d6e705866691d881defe97b1cb.dip0.t-ipconnect.de) |
2022-08-09 19:30:06 +0200 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds) |
2022-08-09 19:34:25 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-09 19:36:03 +0200 | codolio | dolio |
2022-08-09 19:37:22 +0200 | ski | (~ski@217.116.228.14) |
2022-08-09 19:37:36 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 19:39:58 +0200 | kenran | (~kenran@200116b82b0c9300327c25528a273147.dip.versatel-1u1.de) (Ping timeout: 268 seconds) |
2022-08-09 19:42:38 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 255 seconds) |
2022-08-09 19:43:59 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Ping timeout: 255 seconds) |
2022-08-09 19:44:32 +0200 | kenran | (~kenran@200116b82b0c93001ede1376b194f04b.dip.versatel-1u1.de) |
2022-08-09 19:46:35 +0200 | kenran | (~kenran@200116b82b0c93001ede1376b194f04b.dip.versatel-1u1.de) (Client Quit) |
2022-08-09 19:46:41 +0200 | ski | (~ski@217.116.228.14) (Ping timeout: 255 seconds) |
2022-08-09 19:52:33 +0200 | fef | (~thedawn@user/thedawn) |
2022-08-09 19:52:38 +0200 | noteness | (~noteness@user/noteness) (Remote host closed the connection) |
2022-08-09 19:52:55 +0200 | pmarg | (~pmarg@2a01:799:159f:9b00:99a6:120a:920d:bb02) (Ping timeout: 268 seconds) |
2022-08-09 19:53:22 +0200 | noteness | (~noteness@user/noteness) |
2022-08-09 19:55:07 +0200 | ski | (~ski@217.116.228.14) |
2022-08-09 19:57:39 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 19:59:30 +0200 | neceve | (~quassel@2.26.93.14) |
2022-08-09 20:01:49 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-09 20:01:55 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 20:02:07 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 20:03:45 +0200 | raym | (~raym@user/raym) (Remote host closed the connection) |
2022-08-09 20:07:43 +0200 | ski | (~ski@217.116.228.14) (Ping timeout: 268 seconds) |
2022-08-09 20:08:52 +0200 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2022-08-09 20:09:04 +0200 | raym | (~raym@user/raym) |
2022-08-09 20:10:18 +0200 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
2022-08-09 20:10:19 +0200 | Lord_of_Life_ | Lord_of_Life |
2022-08-09 20:12:22 +0200 | ski | (~ski@217.116.228.14) |
2022-08-09 20:15:53 +0200 | irfan | (~irfan@user/irfan) (Quit: leaving) |
2022-08-09 20:18:58 +0200 | mima | (~mmh@dhcp-138-246-3-117.dynamic.eduroam.mwn.de) () |
2022-08-09 20:23:45 +0200 | ski | (~ski@217.116.228.14) (Ping timeout: 268 seconds) |
2022-08-09 20:27:06 +0200 | ski | (~ski@217.116.228.14) |
2022-08-09 20:27:53 +0200 | kuribas | (~user@ptr-17d51epg7uxmm3fpjg8.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
2022-08-09 20:31:08 +0200 | raym | (~raym@user/raym) (Ping timeout: 244 seconds) |
2022-08-09 20:33:20 +0200 | raym | (~raym@user/raym) |
2022-08-09 20:36:56 +0200 | ski | (~ski@217.116.228.14) (Remote host closed the connection) |
2022-08-09 20:38:54 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2022-08-09 20:40:44 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-09 20:42:31 +0200 | ski | (~ski@217.116.228.14) |
2022-08-09 20:43:38 +0200 | seriously | (~seriously@2001:1c06:1b1d:6f00:efd2:b7b6:20af:5f73) |
2022-08-09 20:47:11 +0200 | neceve | (~quassel@2.26.93.14) (Ping timeout: 268 seconds) |
2022-08-09 20:49:36 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-09 20:53:54 +0200 | ski | (~ski@217.116.228.14) (Remote host closed the connection) |
2022-08-09 20:54:04 +0200 | pmarg | (~pmarg@224.80-203-5.customer.lyse.net) |
2022-08-09 20:58:20 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 20:58:54 +0200 | MajorBiscuit | (~MajorBisc@c-001-021-040.client.tudelft.eduvpn.nl) (Ping timeout: 268 seconds) |
2022-08-09 20:59:24 +0200 | Hecate_ | Hecate |
2022-08-09 21:00:48 +0200 | MajorBiscuit | (~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 +0200 | eggplantade | (~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 +0200 | bitmapper | (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 +0200 | MajorBiscuit | (~MajorBisc@2a02-a461-129d-1-193d-75d8-745d-e91e.fixed6.kpn.net) (Quit: WeeChat 3.5) |
2022-08-09 21:06:03 +0200 | matthewmosior | (~matthewmo@173.170.253.91) (Remote host closed the connection) |
2022-08-09 21:06:10 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 21:06:59 +0200 | ccntrq | (~Thunderbi@172.209.94.92.rev.sfr.net) (Remote host closed the connection) |
2022-08-09 21:07:29 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-08-09 21:08:15 +0200 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
2022-08-09 21:08:33 +0200 | adanwan | (~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 +0200 | ski | (~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 +0200 | slack1256 | (~slack1256@wsip-184-177-0-226.no.no.cox.net) (Ping timeout: 268 seconds) |
2022-08-09 21:11:26 +0200 | BanUtama | (~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 +0200 | o-90 | (~o-90@gateway/tor-sasl/o-90) |
2022-08-09 21:14:01 +0200 | Kaiepi | (~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 +0200 | Kaiepi | (~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 +0200 | eggplantade | (~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 +0200 | ski | (~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 +0200 | ski | (~ski@217.116.228.14) |
2022-08-09 21:18:16 +0200 | o-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 +0200 | notzmv | (~zmv@user/notzmv) (Ping timeout: 268 seconds) |
2022-08-09 21:20:46 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 21:22:08 +0200 | Topsi | (~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 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 244 seconds) |
2022-08-09 21:27:34 +0200 | hgolden | (~hgolden2@cpe-172-251-233-141.socal.res.rr.com) (Quit: Konversation terminated!) |
2022-08-09 21:28:28 +0200 | waleee | (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) |
2022-08-09 21:29:40 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-08-09 21:30:28 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-08-09 21:32:51 +0200 | jmdaemon | (~jmdaemon@user/jmdaemon) |
2022-08-09 21:35:57 +0200 | raym | (~raym@user/raym) (Ping timeout: 252 seconds) |
2022-08-09 21:37:46 +0200 | raym | (~raym@user/raym) |
2022-08-09 21:41:21 +0200 | ski | (~ski@217.116.228.14) (Remote host closed the connection) |
2022-08-09 21:42:07 +0200 | vglfr | (~vglfr@37.73.110.255) |
2022-08-09 21:42:35 +0200 | BanUtama | (~blake.rai@user/BanUtama) |
2022-08-09 21:43:43 +0200 | ski | (~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 +0200 | matthewmosior | (~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 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 21:53:11 +0200 | ski | (~ski@217.116.228.14) (Ping timeout: 252 seconds) |
2022-08-09 21:55:50 +0200 | matthewmosior | (~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 +0200 | seriously | (~seriously@2001:1c06:1b1d:6f00:efd2:b7b6:20af:5f73) (Quit: Client closed) |
2022-08-09 21:58:19 +0200 | machinedgod | (~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 +0200 | ski | (~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 +0200 | raehik | (~raehik@82.21.176.157) |
2022-08-09 22:04:44 +0200 | riverside | (~riverside@109.249.184.161) |
2022-08-09 22:05:22 +0200 | machinedgod | (~machinedg@d172-219-86-154.abhsia.telus.net) |
2022-08-09 22:06:47 +0200 | fef | (~thedawn@user/thedawn) (Ping timeout: 268 seconds) |
2022-08-09 22:07:39 +0200 | monadplus | (~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) |
2022-08-09 22:08:19 +0200 | fserucas | (~fserucas@46.50.4.9) |
2022-08-09 22:08:23 +0200 | gdown | (~gavin@h69-11-149-231.kndrid.broadband.dynamic.tds.net) |
2022-08-09 22:09:03 +0200 | matthewmosior | (~matthewmo@173.170.253.91) |
2022-08-09 22:09:24 +0200 | fserucas | (~fserucas@46.50.4.9) (Client Quit) |
2022-08-09 22:09:28 +0200 | monadplus | (~monadplus@130.red-83-43-6.dynamicip.rima-tde.net) (Client Quit) |
2022-08-09 22:09:28 +0200 | titibandit | (~titibandi@xdsl-212-8-147-38.nc.de) (Remote host closed the connection) |
2022-08-09 22:09:55 +0200 | ski | (~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 +0200 | gehmehgeh | (~user@user/gehmehgeh) |
2022-08-09 22:16:02 +0200 | gmg | (~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 +0200 | eggplantade | (~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 +0200 | kadoban1 | (~kadoban@user/kadoban) () |
2022-08-09 22:19:57 +0200 | raehik | (~raehik@82.21.176.157) (Ping timeout: 252 seconds) |
2022-08-09 22:21:02 +0200 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds) |
2022-08-09 22:23:46 +0200 | asdf_ | (~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 +0200 | pgib | (~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 +0200 | eternalforms | (~obsrwr@46.101.168.131) (Remote host closed the connection) |
2022-08-09 22:29:39 +0200 | asdf_ | (~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 +0200 | biberu | (~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 +0200 | gehmehgeh | gmg |
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 +0200 | slack1256 | (~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 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-08-09 22:44:36 +0200 | ChaiTRex | (~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 +0200 | califax | (~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 +0200 | califax | (~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 +0200 | darchitect1 | (~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 +0200 | pmarg | (~pmarg@224.80-203-5.customer.lyse.net) (Remote host closed the connection) |
2022-08-09 22:47:29 +0200 | noteness | (~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 +0200 | tomsmeding | has 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 +0200 | noteness | (~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 +0200 | vysn | (~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 +0200 | causal | (~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 +0200 | biberu | (~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 +0200 | mmhat | (~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 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-08-09 23:08:01 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection) |
2022-08-09 23:08:01 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) (Remote host closed the connection) |
2022-08-09 23:08:01 +0200 | gmg | (~user@user/gehmehgeh) (Remote host closed the connection) |
2022-08-09 23:08:01 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2022-08-09 23:08:01 +0200 | noteness | (~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 +0200 | noteness | (~noteness@user/noteness) |
2022-08-09 23:08:34 +0200 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2022-08-09 23:08:36 +0200 | ec | (~ec@gateway/tor-sasl/ec) |
2022-08-09 23:08:36 +0200 | ChaiTRex | (~ChaiTRex@user/chaitrex) |
2022-08-09 23:08:36 +0200 | chele | (~chele@user/chele) (Remote host closed the connection) |
2022-08-09 23:08:38 +0200 | <riverside> | tomsmeding: sure |
2022-08-09 23:08:53 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2022-08-09 23:09:02 +0200 | gmg | (~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 +0200 | zer0bitz | (~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 +0200 | matthewmosior | (~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 +0200 | dashkal1 | (~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 +0200 | pavonia | (~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 +0200 | mmhat | (~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 +0200 | ubert | (~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 +0200 | ec | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2022-08-09 23:27:14 +0200 | ec | (~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 +0200 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2022-08-09 23:28:22 +0200 | notzmv | (~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 +0200 | Topsi | (~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 +0200 | matthewmosior | (~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 +0200 | alp_ | (~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 +0200 | raehik | (~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 +0200 | finsternis | (~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 +0200 | jgeerds | (~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 +0200 | riverside | (~riverside@109.249.184.161) (Remote host closed the connection) |
2022-08-09 23:45:28 +0200 | Midjak | (~Midjak@82.66.147.146) (Quit: Leaving) |
2022-08-09 23:47:17 +0200 | Kaipei | (~Kaiepi@142.68.249.28) |
2022-08-09 23:47:36 +0200 | Midjak | (~Midjak@82.66.147.146) |
2022-08-09 23:48:14 +0200 | Midjak | (~Midjak@82.66.147.146) (Remote host closed the connection) |
2022-08-09 23:49:05 +0200 | Midjak | (~Midjak@82.66.147.146) |
2022-08-09 23:50:34 +0200 | Kaiepi | (~Kaiepi@142.68.249.28) (Ping timeout: 244 seconds) |
2022-08-09 23:52:11 +0200 | Midjak | (~Midjak@82.66.147.146) (Client Quit) |
2022-08-09 23:53:35 +0200 | michalz | (~michalz@185.246.204.75) (Remote host closed the connection) |
2022-08-09 23:58:21 +0200 | BanUtama | (~blake.rai@user/BanUtama) (Ping timeout: 268 seconds) |