2021-11-16 00:07:00 +0100 | alzgh | (~alzgh@user/alzgh) |
2021-11-16 00:08:19 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:2831:8d93:d152:2332) |
2021-11-16 00:11:10 +0100 | epolanski | (uid312403@helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-16 00:12:22 +0100 | Techcable_ | (~Techcable@168.235.93.147) (Quit: ZNC - https://znc.in) |
2021-11-16 00:14:19 +0100 | jbox | (~jbox@user/jbox) |
2021-11-16 00:14:26 +0100 | Techcable | (~Techcable@168.235.93.147) |
2021-11-16 00:14:49 +0100 | atlas | (~jbox@user/jbox) |
2021-11-16 00:16:14 +0100 | cosimone | (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Quit: ERC (IRC client for Emacs 27.1)) |
2021-11-16 00:16:15 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-11-16 00:18:38 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
2021-11-16 00:19:14 +0100 | sagax | (~sagax_nb@user/sagax) (Excess Flood) |
2021-11-16 00:19:22 +0100 | jbox | (~jbox@user/jbox) (Ping timeout: 268 seconds) |
2021-11-16 00:21:49 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
2021-11-16 00:26:25 +0100 | puke | (~puke@user/puke) (Quit: puke) |
2021-11-16 00:29:09 +0100 | cjb | (~cjbayliss@user/cjb) (Remote host closed the connection) |
2021-11-16 00:29:35 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
2021-11-16 00:31:13 +0100 | michalz | (~michalz@185.246.204.57) (Remote host closed the connection) |
2021-11-16 00:32:23 +0100 | cjb | (~cjbayliss@user/cjb) |
2021-11-16 00:32:43 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2021-11-16 00:40:18 +0100 | ChanServ | +o geekosaur |
2021-11-16 00:40:32 +0100 | geekosaur | -b *!*@180.230.60.84 |
2021-11-16 00:40:36 +0100 | geekosaur | -o geekosaur |
2021-11-16 00:40:53 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3) |
2021-11-16 00:42:18 +0100 | mimmy | (~mimmy@2607:fea8:6e0:7f90:d1ec:e4ac:744a:8e08) |
2021-11-16 00:50:14 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2021-11-16 00:52:30 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-11-16 00:53:54 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-16 00:53:54 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-16 00:53:54 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-16 00:54:38 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2021-11-16 00:55:04 +0100 | srk | (~sorki@user/srk) (Remote host closed the connection) |
2021-11-16 00:55:22 +0100 | srk | (~sorki@user/srk) |
2021-11-16 00:58:10 +0100 | perrierjouet | (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
2021-11-16 01:02:50 +0100 | mimmy | (~mimmy@2607:fea8:6e0:7f90:d1ec:e4ac:744a:8e08) (Ping timeout: 265 seconds) |
2021-11-16 01:09:33 +0100 | mark__ | (~a@p200300ef973db1d9502293e1a26d2ca1.dip0.t-ipconnect.de) (Quit: WeeChat 3.0.1) |
2021-11-16 01:11:30 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 276 seconds) |
2021-11-16 01:14:13 +0100 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 250 seconds) |
2021-11-16 01:14:36 +0100 | zava | (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Quit: WeeChat 3.3) |
2021-11-16 01:19:25 +0100 | jkaye | (~jkaye@2601:281:8300:7530:7289:19f7:f3fa:e188) (Ping timeout: 250 seconds) |
2021-11-16 01:22:27 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:2831:8d93:d152:2332) (Remote host closed the connection) |
2021-11-16 01:22:35 +0100 | emf_ | (~emf@2620:10d:c090:400::5:91bf) (Ping timeout: 264 seconds) |
2021-11-16 01:23:28 +0100 | max22- | (~maxime@2a01cb08833598005714d2986a3eb6d2.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2021-11-16 01:23:58 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) |
2021-11-16 01:25:09 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-11-16 01:29:40 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds) |
2021-11-16 01:30:01 +0100 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) |
2021-11-16 01:30:27 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) |
2021-11-16 01:32:06 +0100 | mimmy | (~mimmy@2607:fea8:6e0:7f90:e4cb:5a57:fd6e:e655) |
2021-11-16 01:33:10 +0100 | renzhi | (~xp@2607:fa49:6500:b100::6e7f) |
2021-11-16 01:33:34 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) |
2021-11-16 01:36:19 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
2021-11-16 01:38:03 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
2021-11-16 01:39:02 +0100 | mimmy_ | (~mimmy@2607:fea8:6e0:7f90:20d6:2b3a:ce41:e0b6) |
2021-11-16 01:41:47 +0100 | mimmy | (~mimmy@2607:fea8:6e0:7f90:e4cb:5a57:fd6e:e655) (Ping timeout: 264 seconds) |
2021-11-16 01:42:03 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:2d58:181a:7f09:e906) |
2021-11-16 01:46:53 +0100 | mimmy | (~mimmy@2607:fea8:6e0:7f90:fc41:a35f:792:b57c) |
2021-11-16 01:48:27 +0100 | mimmy_ | (~mimmy@2607:fea8:6e0:7f90:20d6:2b3a:ce41:e0b6) (Ping timeout: 250 seconds) |
2021-11-16 01:53:08 +0100 | sagax | (~sagax_nb@user/sagax) |
2021-11-16 01:54:57 +0100 | waleee | (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 268 seconds) |
2021-11-16 01:58:26 +0100 | mvk | (~mvk@2607:fea8:5cc3:e900::df92) |
2021-11-16 02:11:15 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2021-11-16 02:17:22 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2021-11-16 02:23:53 +0100 | Guest4530 | (~Guest45@185.16.69.203) (Ping timeout: 256 seconds) |
2021-11-16 02:25:51 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 02:26:41 +0100 | <shapr> | OH: Don't use comments. Use PackageImports |
2021-11-16 02:27:31 +0100 | <dsal> | PackageImports looks weird to me. I'm not sure it's valuable enough for mem. |
2021-11-16 02:27:51 +0100 | <geekosaur> | either one is scary imo |
2021-11-16 02:28:21 +0100 | burnsidesLlama | (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-11-16 02:28:45 +0100 | <geekosaur> | comments are too easy to miss, PackageImports is "wtf are you doin mate?" |
2021-11-16 02:28:53 +0100 | burnsidesLlama | (~burnsides@client-8-81.eduroam.oxuni.org.uk) |
2021-11-16 02:29:08 +0100 | <glguy> | Given that we have PackageImports, using comments is just a way to have wrong comments |
2021-11-16 02:30:09 +0100 | <dsal> | I don't know that I could argue against PackageImports in anyway that would be consistent with arguing against unqualified/naked imports |
2021-11-16 02:32:37 +0100 | <dsal> | I guess my only argument is that it sounds hard to do. |
2021-11-16 02:33:13 +0100 | burnsidesLlama | (~burnsides@client-8-81.eduroam.oxuni.org.uk) (Ping timeout: 265 seconds) |
2021-11-16 02:43:13 +0100 | JonasTripps | (~user@bras-base-crnwon2435w-grc-27-76-70-40-124.dsl.bell.ca) |
2021-11-16 02:43:17 +0100 | <JonasTripps> | https://youtu.be/ykT_g0-bgZo |
2021-11-16 02:44:34 +0100 | JonasTripps | (~user@bras-base-crnwon2435w-grc-27-76-70-40-124.dsl.bell.ca) (K-Lined) |
2021-11-16 02:47:10 +0100 | mimmy_ | (~mimmy@2607:fea8:6e0:7f90:ec1e:7b74:9028:2102) |
2021-11-16 02:47:43 +0100 | mimmy | (~mimmy@2607:fea8:6e0:7f90:fc41:a35f:792:b57c) (Ping timeout: 265 seconds) |
2021-11-16 02:52:36 +0100 | rtsn | (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 245 seconds) |
2021-11-16 02:52:46 +0100 | yauhsien | (~yauhsien@49.216.238.61) |
2021-11-16 02:53:24 +0100 | rtsn | (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) |
2021-11-16 02:54:28 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-11-16 02:58:44 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3) |
2021-11-16 02:59:19 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
2021-11-16 03:00:08 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-11-16 03:10:23 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2021-11-16 03:15:34 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-16 03:15:34 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-16 03:15:34 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-16 03:20:35 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
2021-11-16 03:21:37 +0100 | renzhi | (~xp@2607:fa49:6500:b100::6e7f) (Ping timeout: 250 seconds) |
2021-11-16 03:26:03 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2021-11-16 03:26:03 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2021-11-16 03:26:03 +0100 | finn_elija | FinnElija |
2021-11-16 03:28:00 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 276 seconds) |
2021-11-16 03:34:11 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-11-16 03:34:30 +0100 | jkaye | (~jkaye@2601:281:8300:7530:6f4:bc42:8be5:e20d) |
2021-11-16 03:37:01 +0100 | mimmy_ | (~mimmy@2607:fea8:6e0:7f90:ec1e:7b74:9028:2102) (Ping timeout: 265 seconds) |
2021-11-16 03:39:31 +0100 | mimmy_ | (~mimmy@185.244.215.86) |
2021-11-16 03:40:03 +0100 | alzgh | (~alzgh@user/alzgh) (Remote host closed the connection) |
2021-11-16 03:40:24 +0100 | alzgh | (~alzgh@user/alzgh) |
2021-11-16 03:42:42 +0100 | alx741 | (~alx741@181.196.68.87) (Quit: alx741) |
2021-11-16 03:47:32 +0100 | Lycurgus | (~juan@98.4.112.204) |
2021-11-16 03:47:36 +0100 | paddymahoney | (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Ping timeout: 245 seconds) |
2021-11-16 03:48:04 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-16 03:48:23 +0100 | jinsun | (~quassel@user/jinsun) (Ping timeout: 264 seconds) |
2021-11-16 03:49:02 +0100 | mimmy_ | (~mimmy@185.244.215.86) (Ping timeout: 268 seconds) |
2021-11-16 03:49:30 +0100 | paddymahoney | (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) |
2021-11-16 03:50:11 +0100 | xff0x | (~xff0x@2001:1a81:52ee:6600:288d:876:4868:af07) (Ping timeout: 264 seconds) |
2021-11-16 03:51:42 +0100 | xff0x | (~xff0x@2001:1a81:5330:8c00:519e:34db:fab7:a573) |
2021-11-16 03:52:50 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2021-11-16 03:54:03 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-11-16 03:54:13 +0100 | mimmy_ | (~mimmy@185.244.215.86) |
2021-11-16 03:56:17 +0100 | neurocyte0132889 | (~neurocyte@user/neurocyte) (Ping timeout: 250 seconds) |
2021-11-16 04:03:50 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection) |
2021-11-16 04:03:58 +0100 | chexum_ | (~quassel@gateway/tor-sasl/chexum) |
2021-11-16 04:17:57 +0100 | yauhsien | (~yauhsien@49.216.238.61) (Ping timeout: 250 seconds) |
2021-11-16 04:18:33 +0100 | <pop3> | tomsmeding, thanks |
2021-11-16 04:26:29 +0100 | asivitz | (uid178348@tinside.irccloud.com) |
2021-11-16 04:31:22 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
2021-11-16 04:36:36 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2021-11-16 04:36:36 +0100 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) |
2021-11-16 04:36:36 +0100 | finn_elija | FinnElija |
2021-11-16 04:36:56 +0100 | <asivitz> | not sure what the right place to ask is, but stack is segfaulting when I use it for basically anything. I got stack from nixpkgs. this is on an m1 mac. anyone seen this before? |
2021-11-16 04:37:27 +0100 | <dsal> | asivitz: What system? |
2021-11-16 04:38:03 +0100 | <asivitz> | system? |
2021-11-16 04:38:14 +0100 | <dsal> | You can override the system in /etc/nix/nix.conf |
2021-11-16 04:38:40 +0100 | <asivitz> | hm no override there. (I am brand new to nix) |
2021-11-16 04:39:05 +0100 | <dsal> | Ah. It used to ship as aarch64, but it works natively now. I've not done a recent install, so I don't know where it leaves you. |
2021-11-16 04:39:20 +0100 | <dsal> | What does "file `which nix`" say? |
2021-11-16 04:39:42 +0100 | <asivitz> | `/nix/var/nix/profiles/default/bin/nix: Mach-O 64-bit executable arm64` |
2021-11-16 04:39:58 +0100 | <dsal> | Huh. What about stack? |
2021-11-16 04:40:09 +0100 | <asivitz> | same |
2021-11-16 04:40:38 +0100 | <asivitz> | it can run --help and --version. seems to die when running ghc |
2021-11-16 04:40:39 +0100 | <dsal> | Interesting. I'm not using a global install, but otherwise that's basically what I'm doing. Is this a recent project? |
2021-11-16 04:40:55 +0100 | <dsal> | i.e., that combination would only work on a fairly recent LTS. |
2021-11-16 04:41:10 +0100 | <dsal> | e.g., lts-18.16 |
2021-11-16 04:41:11 +0100 | Nolrai2 | (~Nolrai2@c-76-27-202-218.hsd1.or.comcast.net) |
2021-11-16 04:41:18 +0100 | <asivitz> | looks like my resolver is nightly-2021-03-01 |
2021-11-16 04:41:29 +0100 | <dsal> | That probably won't work. |
2021-11-16 04:41:43 +0100 | <dsal> | If you want to build older stuff, you can do it with rosetta if you change your nix config to amd64 |
2021-11-16 04:42:25 +0100 | <dsal> | Basically echo "system = x86_64-darwin" > /etc/nix/nix.conf |
2021-11-16 04:42:29 +0100 | mimmy_ | (~mimmy@185.244.215.86) (Quit: WeeChat 3.3) |
2021-11-16 04:42:46 +0100 | <dsal> | Then `nix-env -iA nixpkgs.nix` |
2021-11-16 04:43:07 +0100 | <asivitz> | hm, I think I can handle the latest stackage. but, just tried the latest nightly and it still bombs |
2021-11-16 04:43:15 +0100 | <dsal> | I built under emulation for a long time. Only the last month or so has it been useful. |
2021-11-16 04:43:24 +0100 | <dsal> | Yeah, so *newer* GHCs are differently bad. :) |
2021-11-16 04:43:32 +0100 | <asivitz> | haha oh dear |
2021-11-16 04:44:05 +0100 | <dsal> | I've been building with LTS-18.16 just fine. |
2021-11-16 04:44:10 +0100 | <dsal> | Using haskell.nix |
2021-11-16 04:44:24 +0100 | <asivitz> | well, am I right in thinking the problem is in the ghc that built stack when I installed that with nix-env? |
2021-11-16 04:44:25 +0100 | motherfsck | (~motherfsc@user/motherfsck) |
2021-11-16 04:44:55 +0100 | <asivitz> | stack hasn't even attempted to download a ghc binary I don't think |
2021-11-16 04:45:01 +0100 | <dsal> | I don't know for sure. |
2021-11-16 04:45:30 +0100 | <dsal> | stack doesn't *come* with a ghc, but the LTS will define one. |
2021-11-16 04:45:30 +0100 | xkuru | (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
2021-11-16 04:46:07 +0100 | slack1256 | (~slack1256@186.11.99.34) (Ping timeout: 250 seconds) |
2021-11-16 04:46:11 +0100 | <dsal> | There are a few different ways to configure things, so it can get confusing. It works pretty well for me with stack nix integration. |
2021-11-16 04:46:17 +0100 | mbuf | (~Shakthi@223.178.89.16) |
2021-11-16 04:47:29 +0100 | <asivitz> | yea. FWIW I'm familar with stack. but... it bombs immediately when I run any non-trivial command (other than help or version). like it should read my stack.yaml and download the defined ghc and then use that to build other stuff, but it never gets to any of that. so the stack binary itself is messed up somehow... but it is the right arch seemingly :( |
2021-11-16 04:48:39 +0100 | <dsal> | stack nix integration is slightly different. |
2021-11-16 04:48:48 +0100 | <asivitz> | for your setup- you skip stack and turn the stack.yaml into a nix derivation? (do I have that right?) |
2021-11-16 04:48:55 +0100 | <asivitz> | I thought just using stack would be simpler but maybe not |
2021-11-16 04:49:02 +0100 | <Lycurgus> | lol |
2021-11-16 04:49:30 +0100 | <Lycurgus> | (you saved me a status check) |
2021-11-16 04:49:44 +0100 | <dsal> | my ~/.stack/config.nix has "nix:\n enable: true" and my stack projects look like... let me find one. |
2021-11-16 04:50:06 +0100 | <dsal> | Basically this: https://github.com/dustin/waitforsocket/blob/master/stack.yaml |
2021-11-16 04:50:13 +0100 | <dsal> | You'll pretty much always need that zlib thing. heh |
2021-11-16 04:50:25 +0100 | azimut_ | (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
2021-11-16 04:50:42 +0100 | <Nolrai2> | So afaict, the mutable unboxed fixed length boolean vectors in vector-fixed just don't work at all, freezing then thawing sets both the original and the resultant immutable vectors to all FALSE. If I want to make a local version of the library so I can fix the issue how would I do that? |
2021-11-16 04:50:57 +0100 | <Nolrai2> | *False |
2021-11-16 04:50:58 +0100 | azimut | (~azimut@gateway/tor-sasl/azimut) |
2021-11-16 04:50:59 +0100 | <dsal> | Oh, you might need network-3.1.2.5 as well, because that fixes M1 builds. |
2021-11-16 04:54:24 +0100 | <asivitz> | dsal: welp. it still segfaults even with enabling nix in stack |
2021-11-16 04:54:38 +0100 | <dsal> | asivitz: How did you get stack? |
2021-11-16 04:56:15 +0100 | <dsal> | I wonder if you have an older, broken one. You could try: [sudo] nix-channel --update && nix-shell -p stack |
2021-11-16 04:56:32 +0100 | <asivitz> | I think I did the equivalent of `nix-env -iA nixpkgs.stack` |
2021-11-16 04:56:39 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 04:56:52 +0100 | td_ | (~td@muedsl-82-207-238-041.citykom.de) (Ping timeout: 256 seconds) |
2021-11-16 04:56:56 +0100 | alzgh | (~alzgh@user/alzgh) (Remote host closed the connection) |
2021-11-16 04:56:59 +0100 | <Lycurgus> | dsal, are you using nixos or just nix? |
2021-11-16 04:57:04 +0100 | <dsal> | I run both. |
2021-11-16 04:57:09 +0100 | <Lycurgus> | figured |
2021-11-16 04:57:11 +0100 | <dsal> | This is a Mac, though. |
2021-11-16 04:57:16 +0100 | alzgh | (~alzgh@user/alzgh) |
2021-11-16 04:57:51 +0100 | <asivitz> | ok interesting. that does not segfault |
2021-11-16 04:57:56 +0100 | <dsal> | nix-env -u |
2021-11-16 04:58:02 +0100 | <dsal> | It sounds like you just have something old and broken. |
2021-11-16 04:58:20 +0100 | <Axman6> | Nolrai2: that sounds... unfortunate |
2021-11-16 04:58:37 +0100 | td_ | (~td@94.134.91.233) |
2021-11-16 05:00:25 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-16 05:00:25 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-16 05:00:25 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-16 05:03:43 +0100 | <Nolrai2> | Axman6 : It is somewhat. |
2021-11-16 05:04:07 +0100 | <Axman6> | maybe it's a statement on the state of the world, everything is truly false |
2021-11-16 05:04:13 +0100 | <Nolrai2> | >.< |
2021-11-16 05:04:35 +0100 | <Nolrai2> | I mean it works if I don't use a fixed sized vector, so what does that mean? :P |
2021-11-16 05:04:46 +0100 | <asivitz> | dsal: well if you don't mind taking a look, here's basically the set of nix things I'm doing. I'm probably doing something really stupid here. just kind of picking things off the internet. https://paste.tomsmeding.com/hgvAv0QV |
2021-11-16 05:05:26 +0100 | jinsun | (~quassel@user/jinsun) |
2021-11-16 05:06:13 +0100 | <asivitz> | maybe I should just read the nix manual and stop bothering #haskell lol |
2021-11-16 05:06:32 +0100 | <dsal> | Oh interesting. I use home-manager. I don't exactly understand how that installs stuff. You said it works OK in a nix-shell, though? |
2021-11-16 05:07:43 +0100 | <asivitz> | yea it does. so I'm doing something silly. maybe I should just use home-manager |
2021-11-16 05:07:57 +0100 | <asivitz> | thanks so much for your help! I'm on the right track now at least |
2021-11-16 05:09:10 +0100 | puke | (~puke@user/puke) |
2021-11-16 05:12:07 +0100 | zaquest | (~notzaques@5.130.79.72) (Quit: Leaving) |
2021-11-16 05:19:55 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
2021-11-16 05:22:18 +0100 | zaquest | (~notzaques@5.130.79.72) |
2021-11-16 05:24:41 +0100 | jkaye | (~jkaye@2601:281:8300:7530:6f4:bc42:8be5:e20d) (Ping timeout: 250 seconds) |
2021-11-16 05:27:33 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) |
2021-11-16 05:31:05 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-11-16 05:32:11 +0100 | ralu | (~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 264 seconds) |
2021-11-16 05:33:30 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds) |
2021-11-16 05:35:19 +0100 | rkrishnan | (~user@122.167.19.65) |
2021-11-16 05:36:20 +0100 | welterde | (welterde@thinkbase.srv.welterde.de) (Ping timeout: 268 seconds) |
2021-11-16 05:39:50 +0100 | hughjfchen | (~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8) |
2021-11-16 05:40:04 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
2021-11-16 05:42:31 +0100 | Lycurgus | (~juan@98.4.112.204) (Quit: Exeunt) |
2021-11-16 05:44:43 +0100 | deadmarshal | (~deadmarsh@95.38.114.190) |
2021-11-16 05:45:22 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) |
2021-11-16 05:46:08 +0100 | hughjfchen | (~hughjfche@vmi556545.contaboserver.net) |
2021-11-16 05:47:16 +0100 | welterde | (welterde@thinkbase.srv.welterde.de) |
2021-11-16 05:50:58 +0100 | ralu | (~ralu@static.211.245.203.116.clients.your-server.de) |
2021-11-16 05:51:22 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Ping timeout: 260 seconds) |
2021-11-16 05:52:34 +0100 | MoC_ | (~moc@user/moc) |
2021-11-16 05:52:50 +0100 | MoC | (~moc@user/moc) (Ping timeout: 265 seconds) |
2021-11-16 05:53:43 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
2021-11-16 05:55:46 +0100 | pfurla | (~pfurla@2804:14d:5c81:4104:54e1:e6c6:79ac:779c) |
2021-11-16 05:58:32 +0100 | mvk | (~mvk@2607:fea8:5cc3:e900::df92) (Ping timeout: 268 seconds) |
2021-11-16 05:59:07 +0100 | deadmarshal | (~deadmarsh@95.38.114.190) (Ping timeout: 265 seconds) |
2021-11-16 06:00:43 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2021-11-16 06:01:46 +0100 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 245 seconds) |
2021-11-16 06:08:25 +0100 | img | (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-11-16 06:08:41 +0100 | img | (~img@user/img) |
2021-11-16 06:12:20 +0100 | EvanR | (~evan@user/evanr) (Quit: Leaving) |
2021-11-16 06:12:25 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) |
2021-11-16 06:17:01 +0100 | <jackdk> | Given `x :: Lens' a (Maybe b)` and `y :: Lens' b (Maybe c)`, is there a combinator that produces a `Lens' a (Maybe c)`? |
2021-11-16 06:18:35 +0100 | <nshepperd> | There is not |
2021-11-16 06:19:19 +0100 | <jackdk> | darn. feels like there should |
2021-11-16 06:19:36 +0100 | <awpr> | hm, I don't think that can be a valid Lens -- when setting to Nothing, it can't distinguish outer Nothing from inner Nothing |
2021-11-16 06:19:43 +0100 | atlas | (~jbox@user/jbox) (Ping timeout: 250 seconds) |
2021-11-16 06:21:47 +0100 | <nshepperd> | also, putting Just (x :: c) into such a lens if it was initially Nothing would not tell it how to make the required b |
2021-11-16 06:21:51 +0100 | <jackdk> | fair. this is distilled from an example using amazonka-dynamodb's AttributeValue type, which (because of codegen reasons) badly implements a sumtype by providing a set of lenses in lieu of prisms. |
2021-11-16 06:23:12 +0100 | deadmarshal | (~deadmarsh@95.38.114.190) |
2021-11-16 06:23:18 +0100 | <jackdk> | If you parsed AttributeValue into a better AST and then had `x :: Prism' a b` and `y :: Lens' b (Maybe c)`, could you then get a `Lens' a (Maybe c)`? Feels more plausible, anyway |
2021-11-16 06:24:16 +0100 | <nshepperd> | however i think if you have a concept of a "default value" for b, you can convert Lens' a (Maybe b) to Lens' a b |
2021-11-16 06:31:09 +0100 | chexum | (~quassel@gateway/tor-sasl/chexum) |
2021-11-16 06:31:18 +0100 | chexum_ | (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 276 seconds) |
2021-11-16 06:32:32 +0100 | <glguy> | :t non |
2021-11-16 06:32:33 +0100 | <lambdabot> | (Eq a, Profunctor p, Functor f) => a -> p a (f a) -> p (Maybe a) (f (Maybe a)) |
2021-11-16 06:33:11 +0100 | <glguy> | Like: at 'k' . non 0 |
2021-11-16 06:37:22 +0100 | <asivitz> | dsal: lol this was the problem: https://github.com/commercialhaskell/stack/issues/5607 |
2021-11-16 06:38:12 +0100 | <dsal> | Ah, I don't run zsh |
2021-11-16 06:41:54 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2021-11-16 06:51:03 +0100 | <dibblego> | jackdk: there is a traversal |
2021-11-16 06:52:58 +0100 | <dibblego> | @type \x y -> x . _Just . y |
2021-11-16 06:52:59 +0100 | <lambdabot> | (Choice p, Applicative f) => (p (Maybe a1) (f (Maybe b)) -> c) -> (a2 -> p a1 (f b)) -> a2 -> c |
2021-11-16 06:53:06 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) |
2021-11-16 07:04:10 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 260 seconds) |
2021-11-16 07:09:49 +0100 | <jackdk> | dibblego: thanks but i particularly want to be able to write back in . but I think I need to write a proper AST type for amazonka-dynamodb's attributevalue type. After I get around to everything else I need to write |
2021-11-16 07:16:29 +0100 | cjb | (~cjbayliss@user/cjb) () |
2021-11-16 07:20:00 +0100 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2021-11-16 07:20:26 +0100 | mikoto-chan | (~mikoto-ch@esm-84-240-99-143.netplaza.fi) |
2021-11-16 07:25:38 +0100 | phma | (phma@2001:5b0:210f:6c88:14c5:503:d6e5:c919) (Read error: Connection reset by peer) |
2021-11-16 07:26:35 +0100 | phma | (phma@2001:5b0:2172:a9b8:34c1:76b3:d477:41fd) |
2021-11-16 07:27:06 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 07:29:50 +0100 | deadmarshal | (~deadmarsh@95.38.114.190) (Ping timeout: 260 seconds) |
2021-11-16 07:37:06 +0100 | Guest8054 | (~Guest80@pd9ed79bf.dip0.t-ipconnect.de) |
2021-11-16 07:43:24 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-11-16 07:43:53 +0100 | <turlando> | Hello everyone. I'm not sure what's wrong with this code https://pastebin.com/raw/2H6dmtqE GHC says "Could not deduce (Simulation state event0 result)" ... "The type variable ‘event0’ is ambiguous" in the "simulation" function definition |
2021-11-16 07:48:15 +0100 | <sm> | AllowAmbiguousTypes extension makes it go away.. |
2021-11-16 07:49:17 +0100 | atlas | (~jbox@user/jbox) |
2021-11-16 07:51:32 +0100 | _ht | (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
2021-11-16 07:52:30 +0100 | <sm> | ..or maybe just moves it around ? not sure |
2021-11-16 07:53:52 +0100 | atlas | jbox |
2021-11-16 08:01:07 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
2021-11-16 08:06:35 +0100 | <turlando> | sm: I have AllowAmbiguousTypes enabled for the Simulator module (not enabled globally) |
2021-11-16 08:06:54 +0100 | max22- | (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) |
2021-11-16 08:07:16 +0100 | <turlando> | I also have FunctionalDependencies for the module and MultiParamTypeClasses and RankNTypes globally |
2021-11-16 08:12:49 +0100 | deadmarshal | (~deadmarsh@95.38.114.190) |
2021-11-16 08:14:06 +0100 | <sm> | turlando: I'm playing with this much:... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/b695ad494f768676bc5b4018dff0490c9be6…) |
2021-11-16 08:14:43 +0100 | sm2n_ | (~sm2n@user/sm2n) |
2021-11-16 08:14:56 +0100 | sm2n | (~sm2n@user/sm2n) (Read error: Connection reset by peer) |
2021-11-16 08:15:01 +0100 | <sm> | I may have wrong terminology: the rule seems to be that if one of the class type variables is not mentioned in the a type signature, it must be declared as a dependent variable with a functional dependency |
2021-11-16 08:15:26 +0100 | ystael | (~ystael@user/ystael) (Ping timeout: 268 seconds) |
2021-11-16 08:15:27 +0100 | erisco | (~erisco@d24-57-249-233.home.cgocable.net) (Ping timeout: 268 seconds) |
2021-11-16 08:15:59 +0100 | ystael | (~ystael@user/ystael) |
2021-11-16 08:16:38 +0100 | erisco | (~erisco@d24-57-249-233.home.cgocable.net) |
2021-11-16 08:18:51 +0100 | <turlando> | sm: now it cannot deduce result0 in finalState :\ |
2021-11-16 08:18:59 +0100 | <turlando> | May I need to define multiple fundeps? |
2021-11-16 08:20:12 +0100 | <turlando> | Sorry, I misread your comment, that's exactly what you proposed. It worked, thank you a lot |
2021-11-16 08:21:04 +0100 | <sm> | excellent |
2021-11-16 08:22:00 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:c480:7b03:c5d:3876) |
2021-11-16 08:26:16 +0100 | retro_ | (~retro@97e2ba2e.skybroadband.com) |
2021-11-16 08:27:04 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-16 08:29:33 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) |
2021-11-16 08:30:14 +0100 | retroid_ | (~retro@97e2ba2e.skybroadband.com) (Ping timeout: 268 seconds) |
2021-11-16 08:31:38 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2021-11-16 08:34:16 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds) |
2021-11-16 08:41:49 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2021-11-16 08:44:25 +0100 | xff0x | (~xff0x@2001:1a81:5330:8c00:519e:34db:fab7:a573) (Ping timeout: 265 seconds) |
2021-11-16 08:44:53 +0100 | xff0x | (~xff0x@2001:1a81:5330:8c00:614e:b47b:9eaf:eaca) |
2021-11-16 08:49:18 +0100 | the_finn | (uid526334@hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-16 08:54:28 +0100 | max22- | (~maxime@lfbn-ren-1-762-224.w81-53.abo.wanadoo.fr) (Remote host closed the connection) |
2021-11-16 08:56:05 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2021-11-16 08:59:06 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:2831:8d93:d152:2332) |
2021-11-16 09:00:51 +0100 | Everything | (~Everythin@37.115.210.35) |
2021-11-16 09:03:53 +0100 | chele | (~chele@user/chele) |
2021-11-16 09:07:25 +0100 | slice | (~slice@user/slice) |
2021-11-16 09:07:34 +0100 | pfurla_ | (~pfurla@2804:14d:5c81:4104:6cc4:7b65:8ee1:2dd3) |
2021-11-16 09:08:44 +0100 | pfurla__ | (~pfurla@2804:14d:5c81:4104:8de2:1993:a832:eced) |
2021-11-16 09:10:31 +0100 | pfurla | (~pfurla@2804:14d:5c81:4104:54e1:e6c6:79ac:779c) (Ping timeout: 265 seconds) |
2021-11-16 09:12:27 +0100 | pfurla_ | (~pfurla@2804:14d:5c81:4104:6cc4:7b65:8ee1:2dd3) (Ping timeout: 265 seconds) |
2021-11-16 09:12:54 +0100 | michalz | (~michalz@185.246.204.41) |
2021-11-16 09:17:30 +0100 | chomwitt | (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) |
2021-11-16 09:18:05 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2021-11-16 09:25:19 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:2831:8d93:d152:2332) (Remote host closed the connection) |
2021-11-16 09:29:31 +0100 | cfricke | (~cfricke@user/cfricke) |
2021-11-16 09:30:02 +0100 | kuribas | (~user@ptr-25vy0i87u19ttsdwrve.18120a2.ip6.access.telenet.be) |
2021-11-16 09:30:28 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 09:33:19 +0100 | Midjak | (~Midjak@82-65-111-221.subs.proxad.net) |
2021-11-16 09:35:34 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:2d58:181a:7f09:e906) (Remote host closed the connection) |
2021-11-16 09:36:23 +0100 | deadmarshal | (~deadmarsh@95.38.114.190) (Ping timeout: 264 seconds) |
2021-11-16 09:40:32 +0100 | johnjay | (~pi@192.142.100.50) (Ping timeout: 268 seconds) |
2021-11-16 09:42:28 +0100 | johnjay | (~pi@192.142.100.50) |
2021-11-16 09:42:40 +0100 | wei2912 | (~wei2912@138.75.71.147) |
2021-11-16 09:47:38 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2021-11-16 09:48:21 +0100 | neurocyte0132889 | (~neurocyte@45.131.36.116) |
2021-11-16 09:48:21 +0100 | neurocyte0132889 | (~neurocyte@45.131.36.116) (Changing host) |
2021-11-16 09:48:21 +0100 | neurocyte0132889 | (~neurocyte@user/neurocyte) |
2021-11-16 09:50:57 +0100 | smunix | (~smunix@static.26.70.12.49.clients.your-server.de) |
2021-11-16 09:53:08 +0100 | mmhat | (~mmh@55d47041.access.ecotel.net) |
2021-11-16 09:55:35 +0100 | jbox | (~jbox@user/jbox) (Ping timeout: 264 seconds) |
2021-11-16 09:56:43 +0100 | jumper149 | (~jumper149@static.6.71.203.116.clients.your-server.de) |
2021-11-16 09:58:35 +0100 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2021-11-16 09:58:36 +0100 | chele_ | (~chele@user/chele) |
2021-11-16 10:00:00 +0100 | shriekingnoise | (~shrieking@186.137.144.80) (Quit: Quit) |
2021-11-16 10:00:08 +0100 | stoicswe[m] | (~deadlette@2001:470:69fc:105::d277) (Quit: You have been kicked for being idle) |
2021-11-16 10:01:16 +0100 | chele | (~chele@user/chele) (Ping timeout: 265 seconds) |
2021-11-16 10:02:16 +0100 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection) |
2021-11-16 10:02:33 +0100 | jonathanx | (~jonathan@dyn-8-sc.cdg.chalmers.se) |
2021-11-16 10:08:37 +0100 | aegon | (~mike@174.127.249.180) (Remote host closed the connection) |
2021-11-16 10:09:18 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-11-16 10:12:09 +0100 | AlexNoo_ | (~AlexNoo@178.34.150.115) |
2021-11-16 10:14:26 +0100 | AlexNoo | (~AlexNoo@178.34.150.115) (Read error: Connection reset by peer) |
2021-11-16 10:19:15 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2021-11-16 10:20:13 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Ping timeout: 250 seconds) |
2021-11-16 10:36:21 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) |
2021-11-16 10:36:53 +0100 | <zincy> | davean: Hey |
2021-11-16 10:37:02 +0100 | <zincy> | Good meeting? |
2021-11-16 10:39:58 +0100 | vysn | (~vysn@user/vysn) |
2021-11-16 10:40:55 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) |
2021-11-16 10:41:47 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Ping timeout: 264 seconds) |
2021-11-16 10:42:27 +0100 | vysn | (~vysn@user/vysn) (Client Quit) |
2021-11-16 10:42:44 +0100 | vysn | (~vysn@user/vysn) |
2021-11-16 10:44:22 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-11-16 10:48:52 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
2021-11-16 10:49:25 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) |
2021-11-16 10:49:58 +0100 | chele | (~chele@user/chele) |
2021-11-16 10:52:01 +0100 | chele_ | (~chele@user/chele) (Ping timeout: 265 seconds) |
2021-11-16 10:53:36 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-11-16 10:54:28 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) |
2021-11-16 10:54:38 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Quit: WeeChat 3.3) |
2021-11-16 10:55:43 +0100 | <carbolymer> | will `act >>= (\x -> x `seq` pure x)` evalute x in this case? |
2021-11-16 10:57:27 +0100 | <Axman6> | for one, it depends on which monad you're using |
2021-11-16 10:57:46 +0100 | <carbolymer> | a stack, with IO on the bottom |
2021-11-16 10:58:58 +0100 | rtsn | (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 256 seconds) |
2021-11-16 10:59:13 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
2021-11-16 10:59:28 +0100 | rtsn | (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) |
2021-11-16 10:59:35 +0100 | <tomsmeding> | in plain IO, it would because bindIO is strict IIRC |
2021-11-16 10:59:48 +0100 | <tomsmeding> | in a stack it might depend on what exactly is above it? |
2021-11-16 10:59:59 +0100 | <kuribas> | carbolymer: That doesn't evaluate the function, it creates a new IO monad. |
2021-11-16 11:00:20 +0100 | <carbolymer> | kuribas: by function you mean x? |
2021-11-16 11:00:29 +0100 | <carbolymer> | tomsmeding: damn, I forgot that bind can be lazy |
2021-11-16 11:00:29 +0100 | <kuribas> | carbolymer: no (\x -> ..) |
2021-11-16 11:01:54 +0100 | <tomsmeding> | kuribas: point is whether writing that will ensure that x is evaluated before any further evaluation is done in the monad |
2021-11-16 11:02:44 +0100 | <carbolymer> | yeah, going step back, I have `act :: m a`, I want to evaluate `a` when evaluating `act` |
2021-11-16 11:02:45 +0100 | <kuribas> | tomsmeding: yes, to hnf |
2021-11-16 11:02:46 +0100 | <tomsmeding> | like, readFile "a.txt" >>= (\x -> x `deepseq` pure x) >>= (\x -> deleteFile "a.txt" >> doSomethingWith x) |
2021-11-16 11:02:56 +0100 | <tomsmeding> | kuribas: point is, depends on the monad |
2021-11-16 11:03:06 +0100 | <tomsmeding> | >>= may be lazy, in which case no, it will not evaluate |
2021-11-16 11:03:52 +0100 | <tomsmeding> | oh I misplaced some parens |
2021-11-16 11:04:03 +0100 | <tomsmeding> | like, readFile "a.txt" >>= (\x -> x `deepseq` pure x >>= (\x -> deleteFile "a.txt" >> doSomethingWith x)) |
2021-11-16 11:04:05 +0100 | <tomsmeding> | I think |
2021-11-16 11:04:52 +0100 | <tomsmeding> | carbolymer: what kind of monads are on top, if they require sequencing in the underlying IO monad for every >>= of the stack, then it'll probably evaluate |
2021-11-16 11:05:04 +0100 | <tomsmeding> | but I think there are other monads that have lazy bind |
2021-11-16 11:05:39 +0100 | <tomsmeding> | s/have lazy bind/do their bind magic within itself, only calling underlying >>= once in a while or something/ |
2021-11-16 11:05:44 +0100 | <carbolymer> | tomsmeding: ReaderT and ExceptT, I guess you're right, this should evaluate in my case |
2021-11-16 11:05:51 +0100 | <tomsmeding> | yeah those are well-behaving |
2021-11-16 11:06:11 +0100 | <tomsmeding> | was thinking along the lines of ContT or LogicT or what have you |
2021-11-16 11:06:18 +0100 | tomsmeding | doesn't actually know how those things work |
2021-11-16 11:07:02 +0100 | <carbolymer> | yeah, in our team we aren't eager into jumping into that voodoo stuff, we have a lot of fun with laziness already ;] |
2021-11-16 11:07:18 +0100 | <tomsmeding> | sounds smart :p |
2021-11-16 11:14:00 +0100 | <tomsmeding> | carbolymer: example of non-strict >>= https://hackage.haskell.org/package/base-4.16.0.0/docs/src/GHC.Base.html#line-1176 |
2021-11-16 11:14:15 +0100 | xff0x | (~xff0x@2001:1a81:5330:8c00:614e:b47b:9eaf:eaca) (Ping timeout: 265 seconds) |
2021-11-16 11:14:33 +0100 | AlexNoo_ | AlexNoo |
2021-11-16 11:15:05 +0100 | xff0x | (~xff0x@2001:1a81:5330:8c00:7ee9:82eb:bec8:3505) |
2021-11-16 11:15:44 +0100 | <carbolymer> | tomsmeding: hmm, well, this works, i.e. GHCi sees exception: `(foo (pure undefined :: [Int]) >> pure 2)` where `foo act = act >>= (\x -> x `seq` pure x)` |
2021-11-16 11:15:46 +0100 | <tomsmeding> | or hm, maybe it ends up being strict anyway |
2021-11-16 11:15:51 +0100 | <carbolymer> | yeah, seems to be strict |
2021-11-16 11:17:37 +0100 | <carbolymer> | hmm, but why? |
2021-11-16 11:18:48 +0100 | <tomsmeding> | because even >> traverses its left argument |
2021-11-16 11:18:59 +0100 | <tomsmeding> | I believe |
2021-11-16 11:21:00 +0100 | <carbolymer> | > ((pure undefined :: [Int]) >> pure 2) |
2021-11-16 11:21:02 +0100 | <lambdabot> | [2] |
2021-11-16 11:21:06 +0100 | <carbolymer> | tomsmeding: ^ |
2021-11-16 11:21:25 +0100 | <tomsmeding> | yeah traverses its left _monad_ argument |
2021-11-16 11:21:35 +0100 | <tomsmeding> | Control.Monad.Writer.Lazy is an example though |
2021-11-16 11:21:51 +0100 | <tomsmeding> | % foo act = act >>= (\x -> x `seq` pure x) |
2021-11-16 11:21:51 +0100 | <yahb> | tomsmeding: |
2021-11-16 11:22:25 +0100 | <tomsmeding> | % Control.Monad.Trans.Writer.Strict.mapWriter (second (const "")) $ foo (pure undefined :: Writer String Int) >> pure 2 |
2021-11-16 11:22:25 +0100 | <yahb> | tomsmeding: ; <interactive>:78:67: error:; * Couldn't match type: WriterT String Identity; with: Control.Monad.Trans.Writer.Strict.WriterT w0 Identity; Expected: Control.Monad.Trans.Writer.Strict.Writer w0 a; Actual: WriterT String Identity a; NB: `Control.Monad.Trans.Writer.Strict.WriterT' is defined in `Control.Monad.Trans.Writer.Strict'; `WriterT' is defined |
2021-11-16 11:22:46 +0100 | <tomsmeding> | % Control.Monad.Trans.Writer.Strict.mapWriter (second (const "")) $ foo (pure undefined :: Control.Monad.Trans.Writer.Strict.Writer String Int) >> pure 2 |
2021-11-16 11:22:47 +0100 | <yahb> | tomsmeding: WriterT (Identity (*** Exception: Prelude.undefined; CallStack (from HasCallStack):; error, called at libraries/base/GHC/Err.hs:75:14 in base:GHC.Err; undefined, called at <interactive>:79:77 in interactive:Ghci34 |
2021-11-16 11:22:57 +0100 | <tomsmeding> | % Control.Monad.Trans.Writer.Lazy.mapWriter (second (const "")) $ foo (pure undefined :: Control.Monad.Trans.Writer.Lazy.Writer String Int) >> pure 2 |
2021-11-16 11:22:57 +0100 | <yahb> | tomsmeding: WriterT (Identity (2,"")) |
2021-11-16 11:22:59 +0100 | <tomsmeding> | boom |
2021-11-16 11:23:29 +0100 | <tomsmeding> | (you need the mapWriter here because otherwise there is still, of course, a bottom in the written log) |
2021-11-16 11:23:37 +0100 | MarcoZ[m] | (~ocramzmat@2001:470:69fc:105::1:35b0) |
2021-11-16 11:23:43 +0100 | MarcoZ[m] | ocramz[m] |
2021-11-16 11:23:51 +0100 | <ocramz[m]> | o/ |
2021-11-16 11:23:51 +0100 | <tomsmeding> | s/of course/I think/ |
2021-11-16 11:24:12 +0100 | <tomsmeding> | yeah there is because of how >>= works |
2021-11-16 11:24:20 +0100 | <tomsmeding> | carbolymer: ^ |
2021-11-16 11:24:54 +0100 | <tomsmeding> | ocramz[m]: \o |
2021-11-16 11:25:35 +0100 | deadmarshal | (~deadmarsh@95.38.114.190) |
2021-11-16 11:26:16 +0100 | <kuribas> | @hoogle $> |
2021-11-16 11:26:17 +0100 | <lambdabot> | Data.Functor ($>) :: Functor f => f a -> b -> f b |
2021-11-16 11:26:17 +0100 | <lambdabot> | Data.Functor.Compat ($>) :: Functor f => f a -> b -> f b |
2021-11-16 11:26:17 +0100 | <lambdabot> | Data.Functor.Apply ($>) :: Functor f => f a -> b -> f b |
2021-11-16 11:26:25 +0100 | <kuribas> | @hoogle <$ |
2021-11-16 11:26:25 +0100 | <lambdabot> | Prelude (<$) :: Functor f => a -> f b -> f a |
2021-11-16 11:26:25 +0100 | <lambdabot> | Control.Monad (<$) :: Functor f => a -> f b -> f a |
2021-11-16 11:26:25 +0100 | <lambdabot> | Control.Applicative (<$) :: Functor f => a -> f b -> f a |
2021-11-16 11:26:31 +0100 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 250 seconds) |
2021-11-16 11:26:47 +0100 | <tomsmeding> | clearly, you only need <$ when you rose above the world of functors |
2021-11-16 11:27:07 +0100 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2021-11-16 11:27:50 +0100 | <kuribas> | what do you mean? |
2021-11-16 11:28:17 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 11:28:35 +0100 | slice | (~slice@user/slice) (Quit: cya) |
2021-11-16 11:28:37 +0100 | <tomsmeding> | dumb joke, because <$ is in Control.{Applicative,Monad} while $> is in Data.Functor |
2021-11-16 11:29:02 +0100 | <kuribas> | right, strange indeed |
2021-11-16 11:31:33 +0100 | <carbolymer> | tomsmeding: yeah, but https://hackage.haskell.org/package/transformers-0.6.0.2/docs/src/Control.Monad.Trans.Writer.Lazy.… has irrefutable patterns, so it kind of explicitly encodes laziness in Monad instance - so `>>` is strict by default? |
2021-11-16 11:31:48 +0100 | <ocramz[m]> | imagine what kind of shouting match if we were to move <$ and $> to the same module |
2021-11-16 11:32:21 +0100 | <tomsmeding> | carbolymer: note that WriterT doesn't specialise >> |
2021-11-16 11:32:27 +0100 | <tomsmeding> | so the strictness can't come from >> |
2021-11-16 11:32:37 +0100 | <tomsmeding> | ocramz[m]: heh yes |
2021-11-16 11:33:49 +0100 | <tomsmeding> | carbolymer: note that the irrefutable patterns are not essential; that >>= can also be written: m >>= k = WriterT $ runWriterT m >>= \p -> runWriterT (k (fst p)) >>= \q -> return (fst q, snd p `mappend` snd q) |
2021-11-16 11:34:00 +0100 | <tomsmeding> | using fst/snd instead of irrefutable patterns, same semantics |
2021-11-16 11:34:29 +0100 | <carbolymer> | tomsmeding: but you demonstrated the laziness of `>>` in lazy Writer |
2021-11-16 11:34:49 +0100 | <tomsmeding> | which inherits laziness from >>= |
2021-11-16 11:34:50 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-16 11:35:55 +0100 | <tomsmeding> | I wonder if lazy Writer becomes strict if you do 'WriterT StrictIdentity', where StrictIdentity doesn't have 'm >>= k = k (runIdentity m)' but '!m >>= k = k (runIdentity m)' |
2021-11-16 11:36:17 +0100 | <carbolymer> | tomsmeding: so that bind oneliner you wrote is also lazy? |
2021-11-16 11:36:26 +0100 | <tomsmeding> | the fst/snd one? yes |
2021-11-16 11:36:34 +0100 | <tomsmeding> | it's completely equivalent to the ~() version |
2021-11-16 11:38:05 +0100 | <carbolymer> | I think I don't see it (yet) |
2021-11-16 11:38:43 +0100 | <tomsmeding> | that equivalence? or where the laziness comes from |
2021-11-16 11:38:49 +0100 | <tomsmeding> | I'm also not completely sure yet about the latter |
2021-11-16 11:38:59 +0100 | <carbolymer> | the laziness |
2021-11-16 11:45:39 +0100 | <tomsmeding> | ah, making Identity strict indeed defeats the laziness of lazy Writer |
2021-11-16 11:46:10 +0100 | <tomsmeding> | carbolymer: https://paste.tomsmeding.com/iVwhUJ6g |
2021-11-16 11:46:28 +0100 | <tomsmeding> | only difference between Identity and SIdentity is that SIdentity's bind operator is strict, as you can see |
2021-11-16 11:46:40 +0100 | <tomsmeding> | mapWriter' is just mapWriter but then for SIdentity |
2021-11-16 11:47:03 +0100 | <tomsmeding> | thing1 produces 'WriterT (Identity (2,""))', while thing2 produces WriterT (SIdentity (*** Exception: Prelude.undefined' |
2021-11-16 11:47:17 +0100 | <carbolymer> | so now I don't understand why list's `>>` is strict ;] |
2021-11-16 11:48:10 +0100 | <tomsmeding> | carbolymer: >> = *> for lists, and in *> you see that in order to produce items of the result list, you have to evaluate the spine of the left-hand argument to *> |
2021-11-16 11:49:12 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-11-16 11:49:16 +0100 | <tomsmeding> | so the spine (i.e. monad structure) of the result list is dependent on the spine (monad structure) of the left argument |
2021-11-16 11:49:33 +0100 | <carbolymer> | tomsmeding: so this is because of this pattern match: `xs *> ys = [y | _ <- xs, y <- ys]` ? |
2021-11-16 11:49:40 +0100 | <tomsmeding> | yeah talking about that one |
2021-11-16 11:50:16 +0100 | <tomsmeding> | if xs is [], the result is []; if xs is _ : _, the result depends on ys |
2021-11-16 11:50:28 +0100 | <carbolymer> | so this means that list comprehension is strict? |
2021-11-16 11:50:38 +0100 | <tomsmeding> | so evaluating (xs >> ys) to WHNF requires evaluation of xs to WHNF -- to check whether it's [] or _:_ |
2021-11-16 11:51:00 +0100 | <tomsmeding> | it must be! because the outermost constructor of the result depends on the inputs :p |
2021-11-16 11:51:00 +0100 | ubert | (~Thunderbi@p200300ecdf0ba2663873d9a1bfed1dd8.dip0.t-ipconnect.de) |
2021-11-16 11:51:21 +0100 | <carbolymer> | ok, now everything makes sense |
2021-11-16 11:51:22 +0100 | <carbolymer> | ;] |
2021-11-16 11:51:23 +0100 | <tomsmeding> | bit like 'if isJust x then 1 else 2' is strict in x, because, well, it must be |
2021-11-16 11:51:29 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) |
2021-11-16 11:51:34 +0100 | <tomsmeding> | even if there is no seq in sight |
2021-11-16 11:51:48 +0100 | <tomsmeding> | carbolymer: does it? it only half does for me |
2021-11-16 11:51:50 +0100 | <tomsmeding> | :p |
2021-11-16 11:52:14 +0100 | <tomsmeding> | but yeah, lazy bind exists shrugs |
2021-11-16 11:52:59 +0100 | <carbolymer> | tomsmeding: I mean, it still feels that "haskell is lazy, except [list of dozen corner cases" |
2021-11-16 11:53:08 +0100 | <tomsmeding> | haskell is call-by-need |
2021-11-16 11:53:16 +0100 | <tomsmeding> | stuff gets evaluated when the result depends on it |
2021-11-16 11:53:33 +0100 | <tomsmeding> | and you can create artificial dependencies using seq/BangPatterns |
2021-11-16 11:53:46 +0100 | <kuribas> | carbolymer: well, stuff has to be evaluated *some* time :) |
2021-11-16 11:54:09 +0100 | <tomsmeding> | carbolymer: and then you have https://gitlab.haskell.org/ghc/ghc/-/issues/20687 |
2021-11-16 11:54:18 +0100 | ubert | (~Thunderbi@p200300ecdf0ba2663873d9a1bfed1dd8.dip0.t-ipconnect.de) (Client Quit) |
2021-11-16 11:54:27 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-11-16 11:55:53 +0100 | max22- | (~maxime@2a01cb0883359800761b1c69d9198b7f.ipv6.abo.wanadoo.fr) |
2021-11-16 11:56:12 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2021-11-16 11:56:22 +0100 | <carbolymer> | kuribas: well yes, until you use `void` ;] |
2021-11-16 11:56:32 +0100 | <carbolymer> | or similar thing |
2021-11-16 11:58:28 +0100 | <tomsmeding> | carbolymer: my feeling with stuff like this is more, I think I'm okay enough with the low-level rules, like I know what irrefutable patterns do in the common cases and things like that. But then people build skyscrapers on top of that, and hell if I know what the resonance index of a skyscraper is given the resonance indices of all the individual metal panels |
2021-11-16 11:59:03 +0100 | <tomsmeding> | WriterT s Identity is fairly low building still |
2021-11-16 11:59:15 +0100 | <carbolymer> | tomsmeding: that's when abstractions failed you, because you need to know internals to properly use them |
2021-11-16 11:59:17 +0100 | rtsn | (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 268 seconds) |
2021-11-16 11:59:25 +0100 | <tomsmeding> | I guess |
2021-11-16 11:59:35 +0100 | rtsn | (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) |
2021-11-16 12:00:03 +0100 | <carbolymer> | tomsmeding: and then you stick chewing gum to the metal panel - and resonance avoided! |
2021-11-16 12:00:07 +0100 | <tomsmeding> | though Writer in particular also allows you to reason on a higher level: strict WriterT adds strictness, while lazy WriterT doesn't. So it's lazy only if the underlying monad is lazy and you're using lazy WriterT |
2021-11-16 12:00:12 +0100 | <tomsmeding> | :D |
2021-11-16 12:00:37 +0100 | <tomsmeding> | but that high-level reasoning doesn't transfer to other monads |
2021-11-16 12:00:39 +0100 | alx741 | (~alx741@181.196.68.87) |
2021-11-16 12:00:45 +0100 | <carbolymer> | yeah |
2021-11-16 12:01:39 +0100 | <maerwald> | "laziness is a leaky abstraction"? |
2021-11-16 12:01:44 +0100 | <maerwald> | I think I might agree on that |
2021-11-16 12:02:24 +0100 | <maerwald> | at least when you reason operationally |
2021-11-16 12:02:35 +0100 | <kuribas> | laziness isn't an abstraction |
2021-11-16 12:02:35 +0100 | m1dnight | (~christoph@christophe.dev) (Quit: WeeChat 3.1) |
2021-11-16 12:03:00 +0100 | <carbolymer> | pipes are monads, so they sometimes leak |
2021-11-16 12:03:24 +0100 | <maerwald> | kuribas: I think it is |
2021-11-16 12:03:41 +0100 | <maerwald> | you can write lazy code in other languages like C, but it requires manual effort |
2021-11-16 12:03:44 +0100 | <tomsmeding> | laziness is an abstraction, but for something else than we're talking about here |
2021-11-16 12:03:56 +0100 | <tomsmeding> | the topic here was how monads abstract over certain instances of laziness |
2021-11-16 12:03:59 +0100 | m1dnight | (~christoph@christophe.dev) |
2021-11-16 12:04:24 +0100 | <tomsmeding> | what laziness abstracts over is the evaluation model, which we're not even talking about currently |
2021-11-16 12:13:39 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) |
2021-11-16 12:13:49 +0100 | alzgh | (~alzgh@user/alzgh) (Remote host closed the connection) |
2021-11-16 12:14:09 +0100 | alzgh | (~alzgh@user/alzgh) |
2021-11-16 12:17:41 +0100 | __monty__ | (~toonn@user/toonn) |
2021-11-16 12:21:44 +0100 | Guest8054 | (~Guest80@pd9ed79bf.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2021-11-16 12:23:43 +0100 | deadmarshal | (~deadmarsh@95.38.114.190) (Ping timeout: 250 seconds) |
2021-11-16 12:23:44 +0100 | kaychaks__ | (sid236345@helmsley.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-16 12:30:03 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-11-16 12:34:17 +0100 | nschoe | (~quassel@178.251.84.79) |
2021-11-16 12:37:26 +0100 | jakalx | (~jakalx@base.jakalx.net) () |
2021-11-16 12:38:07 +0100 | mark__ | (~a@p200300ef973db1d9502293e1a26d2ca1.dip0.t-ipconnect.de) |
2021-11-16 12:39:04 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) |
2021-11-16 12:41:55 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 250 seconds) |
2021-11-16 12:42:06 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-11-16 12:42:40 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 12:43:35 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Ping timeout: 264 seconds) |
2021-11-16 12:53:11 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
2021-11-16 12:53:39 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 12:54:10 +0100 | dfip^ | (~dfip@h50.174.139.63.static.ip.windstream.net) (Remote host closed the connection) |
2021-11-16 13:01:33 +0100 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 265 seconds) |
2021-11-16 13:04:27 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-11-16 13:04:36 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 13:05:11 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2021-11-16 13:05:15 +0100 | jmorris | (uid433911@hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-16 13:09:52 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-11-16 13:10:00 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 13:11:23 +0100 | dlbh^ | (~dlbh@h50.174.139.63.static.ip.windstream.net) |
2021-11-16 13:13:43 +0100 | jakalx | (~jakalx@base.jakalx.net) |
2021-11-16 13:15:17 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
2021-11-16 13:15:25 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 13:18:54 +0100 | Lycurgus | (~juan@98.4.112.204) |
2021-11-16 13:20:53 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-11-16 13:21:01 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 13:21:15 +0100 | fef | (~thedawn@user/thedawn) |
2021-11-16 13:24:21 +0100 | <dminuoso> | Is there a simple way to have a const generic over the number of arguments? |
2021-11-16 13:24:48 +0100 | Guest4216 | (~Guest42@wificampus-098145.grenet.fr) |
2021-11-16 13:24:57 +0100 | <dminuoso> | Background: Im writing out some servant code, and I have a bunch of handlers where Im writing: { foo = \_ _ _ -> forbidden, bar = \_ -> forbidden, quux = \_ _ _ _ _ -> forbidden } and so on |
2021-11-16 13:25:26 +0100 | <dminuoso> | And it'd be much simpler if I could just write `API { foo = constG forbidden; bar = constG forbidden; quux = constG forbidden }` |
2021-11-16 13:26:07 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
2021-11-16 13:26:11 +0100 | Guest80 | (~Guest80@pd9ed79bf.dip0.t-ipconnect.de) |
2021-11-16 13:26:47 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 13:27:34 +0100 | boxscape_ | (~boxscape_@134.171.69.87) |
2021-11-16 13:28:11 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) (Remote host closed the connection) |
2021-11-16 13:28:36 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) |
2021-11-16 13:32:11 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds) |
2021-11-16 13:32:11 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 264 seconds) |
2021-11-16 13:32:32 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 13:33:39 +0100 | Lycurgus | (~juan@98.4.112.204) (Quit: Exeunt) |
2021-11-16 13:36:20 +0100 | wei2912 | (~wei2912@138.75.71.147) (Quit: Lost terminal) |
2021-11-16 13:36:51 +0100 | jespada | (~jespada@252-155-231-201.fibertel.com.ar) |
2021-11-16 13:47:45 +0100 | jespada | (~jespada@252-155-231-201.fibertel.com.ar) (Quit: Textual IRC Client: www.textualapp.com) |
2021-11-16 13:50:45 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) (Remote host closed the connection) |
2021-11-16 13:55:41 +0100 | <tomsmeding> | I think the only way would be with a printf-like type class, but that won't work here because the final return type doesn't have anything to distinguish it |
2021-11-16 13:56:41 +0100 | <tomsmeding> | or hm, does seem to work? |
2021-11-16 13:56:41 +0100 | <dminuoso> | Indeed, Ive been trying to crack this nut for a while now |
2021-11-16 13:56:46 +0100 | <dminuoso> | How would you? |
2021-11-16 13:57:04 +0100 | <tomsmeding> | % :set -XFlexibleInstances -XMultiParamTypeClasses |
2021-11-16 13:57:04 +0100 | <yahb> | tomsmeding: |
2021-11-16 13:57:11 +0100 | <tomsmeding> | % class GenConst a t where constG :: a -> t |
2021-11-16 13:57:12 +0100 | <yahb> | tomsmeding: |
2021-11-16 13:57:15 +0100 | <tomsmeding> | % instance GenConst a a where constG = id |
2021-11-16 13:57:16 +0100 | <yahb> | tomsmeding: |
2021-11-16 13:57:19 +0100 | <tomsmeding> | % instance GenConst a t => GenConst a (s -> t) where constG x = const (constG x) |
2021-11-16 13:57:20 +0100 | <yahb> | tomsmeding: |
2021-11-16 13:57:24 +0100 | <merijn> | I missed the preamble |
2021-11-16 13:57:27 +0100 | <merijn> | What's the goal? |
2021-11-16 13:57:39 +0100 | <tomsmeding> | % constG 42 'a' [] () :: Int |
2021-11-16 13:57:39 +0100 | <yahb> | tomsmeding: ; <interactive>:85:1: error:; * No instance for (GenConst Integer Int) arising from a use of `constG'; * In the expression: constG 42 'a' [] () :: Int; In an equation for `it': it = constG 42 'a' [] () :: Int |
2021-11-16 13:57:55 +0100 | <tomsmeding> | % (constG :: Int -> a -> b -> c -> Int) 42 'a' [] () :: Int |
2021-11-16 13:57:55 +0100 | <yahb> | tomsmeding: 42 |
2021-11-16 13:58:12 +0100 | <tomsmeding> | okay type inference breaks completely so doesn't help |
2021-11-16 13:58:25 +0100 | <tomsmeding> | merijn: https://ircbrowse.tomsmeding.com/day/lchaskell/2021/11/16?id=274123#trid274123 |
2021-11-16 13:58:39 +0100 | <opqdonut> | % constG (42::Int) 'a' [] () :: Int |
2021-11-16 13:58:39 +0100 | <yahb> | opqdonut: 42 |
2021-11-16 13:58:43 +0100 | <opqdonut> | not completely |
2021-11-16 13:58:44 +0100 | <tomsmeding> | oh! |
2021-11-16 13:58:52 +0100 | <tomsmeding> | oh lol defaulting |
2021-11-16 13:58:59 +0100 | <opqdonut> | yeh |
2021-11-16 13:58:59 +0100 | <tomsmeding> | dminuoso: ^ |
2021-11-16 13:59:08 +0100 | <merijn> | ah |
2021-11-16 13:59:32 +0100 | <tomsmeding> | this seems deceptively simple |
2021-11-16 13:59:33 +0100 | max22- | (~maxime@2a01cb0883359800761b1c69d9198b7f.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds) |
2021-11-16 13:59:47 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) |
2021-11-16 13:59:58 +0100 | <tomsmeding> | how are those instances not overlapping, by the way? |
2021-11-16 13:59:59 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) (Remote host closed the connection) |
2021-11-16 14:00:10 +0100 | <dminuoso> | tomsmeding: Yeah no: https://gist.github.com/dminuoso/3465f25002106f618cf2d69a6deda9e8 |
2021-11-16 14:00:14 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) |
2021-11-16 14:00:16 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) (Remote host closed the connection) |
2021-11-16 14:00:26 +0100 | <dminuoso> | Mmm |
2021-11-16 14:00:31 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) |
2021-11-16 14:00:33 +0100 | <dminuoso> | Probably doesn't help that `forbidden` is polymorphic either |
2021-11-16 14:00:44 +0100 | <tomsmeding> | dminuoso: the problem is precisely that 'forbidden' is polymorphic |
2021-11-16 14:00:53 +0100 | <tomsmeding> | are you ever going to put a function value in that? |
2021-11-16 14:00:53 +0100 | <dminuoso> | Given the problem domain, it has to be |
2021-11-16 14:01:03 +0100 | <dminuoso> | tomsmeding: forbidden just throws an exception. |
2021-11-16 14:01:14 +0100 | <tomsmeding> | like, are you ever going to write 'constG f' with f of function type |
2021-11-16 14:01:16 +0100 | <dminuoso> | You can think of it as type `IO a` |
2021-11-16 14:01:19 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-11-16 14:01:33 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-16 14:01:34 +0100 | <dminuoso> | No |
2021-11-16 14:01:40 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-11-16 14:01:57 +0100 | <tomsmeding> | if not, make the '->' instance OVERLAPPING and rewrite the first instance to 'instance {-# OVERLAPPABLE #-} a ~ b => GenConst a b where constG = id' |
2021-11-16 14:02:07 +0100 | <tomsmeding> | untested :D |
2021-11-16 14:02:28 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) (Client Quit) |
2021-11-16 14:02:36 +0100 | Guest4216 | (~Guest42@wificampus-098145.grenet.fr) (Ping timeout: 256 seconds) |
2021-11-16 14:02:43 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) |
2021-11-16 14:02:56 +0100 | <dminuoso> | tomsmeding: Ah yes, that did the trick. |
2021-11-16 14:03:04 +0100 | <tomsmeding> | \o/ |
2021-11-16 14:03:07 +0100 | kmein_ | kmein |
2021-11-16 14:03:07 +0100 | <dminuoso> | My typeclass-fu is not good enough to understand why that even worked. |
2021-11-16 14:03:29 +0100 | <tomsmeding> | it now always selects the -> instance if possible, which gives the const another argument |
2021-11-16 14:03:33 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) (Client Quit) |
2021-11-16 14:03:39 +0100 | <tomsmeding> | if it's not a function anymore, it always selects the first instance |
2021-11-16 14:03:51 +0100 | <dminuoso> | That much I understand, but why did you move the `a ~ b` into a constraint? |
2021-11-16 14:03:57 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) |
2021-11-16 14:04:05 +0100 | <tomsmeding> | the difference between 'instance GenConst a a' and 'instance a ~ b => GenConst a b' is that with the 'a a' version, ghc has to have proven already that the two arguments are equal |
2021-11-16 14:04:11 +0100 | <tomsmeding> | before being able to use the instance |
2021-11-16 14:04:14 +0100 | <dminuoso> | Is that because instance selection occurs first, and you want that instance to be not preferred? |
2021-11-16 14:04:30 +0100 | <tomsmeding> | with the ~ version, ghc can always select the instance, and then _learn_ that it must also have equality |
2021-11-16 14:04:43 +0100 | <tomsmeding> | which then, subsequently, forces the polymorphic 'forbidden' to have the right type |
2021-11-16 14:04:48 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) |
2021-11-16 14:04:49 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) |
2021-11-16 14:04:51 +0100 | <dminuoso> | Ohh |
2021-11-16 14:04:56 +0100 | <dminuoso> | I kind of.. |
2021-11-16 14:04:59 +0100 | <dminuoso> | Not quite. |
2021-11-16 14:05:05 +0100 | <tomsmeding> | ghc can't prove that GuardM a ~ GuardM [Server], but it can _instantiate_ a to [Server] |
2021-11-16 14:05:28 +0100 | <dminuoso> | Alright. Next up, I have to cook up generic code that can generically set `forbidden` on any handler with this! |
2021-11-16 14:05:35 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-11-16 14:05:43 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) (Remote host closed the connection) |
2021-11-16 14:05:51 +0100 | <dminuoso> | (Arguably, if I have generics, I could just generically do a nested const...) |
2021-11-16 14:06:16 +0100 | <dminuoso> | 14:05:05 tomsmeding | ghc can't prove that GuardM a ~ GuardM [Server], but it can _instantiate_ a to [Server] |
2021-11-16 14:06:19 +0100 | <dminuoso> | Mmm |
2021-11-16 14:06:49 +0100 | <dminuoso> | I think there's an earlier piece that Im missing |
2021-11-16 14:06:52 +0100 | <tomsmeding> | the key thing here, I believe, is that type classes are _open_ |
2021-11-16 14:07:18 +0100 | <tomsmeding> | if they were closed, i.e. ghc could be sure there are no more instances floating around that it doesn't know of, then the ~ version and the 'a a' version would be equivalent |
2021-11-16 14:07:45 +0100 | <tomsmeding> | but because type classes are open, ghc doesn't know that there might not be some other 'GenConst a b' instance around that it should select if the two arguments are _not_ equal |
2021-11-16 14:08:00 +0100 | <dminuoso> | Maybe Im actually confused about your construction of the base case to begin with |
2021-11-16 14:08:07 +0100 | <tomsmeding> | so ghc can't pick the 'GenConst a a' instance if it isn't already sure that the arguments are the same |
2021-11-16 14:08:36 +0100 | <tomsmeding> | whereas writing 'GenConst a b' precludes the existence of any other such instance, so ghc can freely pick this one |
2021-11-16 14:08:48 +0100 | cfricke | (~cfricke@user/cfricke) (Ping timeout: 256 seconds) |
2021-11-16 14:08:57 +0100 | <tomsmeding> | dminuoso: the base case, as in, const with zero ignored arguments is id? |
2021-11-16 14:09:01 +0100 | <dminuoso> | Yes |
2021-11-16 14:09:22 +0100 | nschoe | (~quassel@178.251.84.79) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2021-11-16 14:09:25 +0100 | <dminuoso> | Oh. |
2021-11-16 14:09:31 +0100 | <dminuoso> | I get it. |
2021-11-16 14:09:40 +0100 | tomsmeding | is not quite sure what your confusion as |
2021-11-16 14:09:51 +0100 | <tomsmeding> | but "I get it" sounds good :D |
2021-11-16 14:09:53 +0100 | <dminuoso> | Yeah no, I think Ive looked at this problem for far too long |
2021-11-16 14:10:09 +0100 | <tomsmeding> | 13:59 <tomsmeding> this seems deceptively simple |
2021-11-16 14:10:10 +0100 | <merijn> | dminuoso: My advice would be: just write the lambdas :p |
2021-11-16 14:10:17 +0100 | <tomsmeding> | I didn't expect this to work |
2021-11-16 14:10:30 +0100 | <dminuoso> | merijn: I have a lot of them with varying arguments. |
2021-11-16 14:10:50 +0100 | <merijn> | dminuoso: Write a TH function or just write them out once? :p |
2021-11-16 14:10:51 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-11-16 14:10:51 +0100 | <tomsmeding> | dminuoso: do you see why this breaks completely if you ever pass a function value to constG ? |
2021-11-16 14:11:14 +0100 | <tomsmeding> | % constG (id :: Int -> Int) () [] :: Int -> Int |
2021-11-16 14:11:14 +0100 | <yahb> | tomsmeding: ; <interactive>:88:1: error:; * Overlapping instances for GenConst (Int -> Int) (Int -> Int) arising from a use of `constG'; Matching instances:; instance [safe] forall a. GenConst a a -- Defined at <interactive>:83:10; instance [safe] forall a t s. GenConst a t => GenConst a (s -> t) -- Defined at <interactive>:84:10; * In the expression: constG (id :: Int -> Int) () [] :: |
2021-11-16 14:11:15 +0100 | <merijn> | Write a helper for 1-10 (or whatever) arguments with a number at the end of the name and don't think about it again |
2021-11-16 14:11:25 +0100 | <merijn> | Utils.hs to the rescue |
2021-11-16 14:11:57 +0100 | <tomsmeding> | yeah, functions not working make me sort of prefer merijn's suggestion of const3 const4 const5 const6 |
2021-11-16 14:12:17 +0100 | <dminuoso> | Perhaps if this was ever needed |
2021-11-16 14:12:34 +0100 | neurocyte0132889 | (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat) |
2021-11-16 14:15:46 +0100 | neurocyte0132889 | (~neurocyte@45.131.36.116) |
2021-11-16 14:15:46 +0100 | neurocyte0132889 | (~neurocyte@45.131.36.116) (Changing host) |
2021-11-16 14:15:46 +0100 | neurocyte0132889 | (~neurocyte@user/neurocyte) |
2021-11-16 14:16:45 +0100 | <merijn> | I mean, is it ugly to handwrite that function 10 times? Sure. It's also foolproof and unlikely to ever break or need any maintenance |
2021-11-16 14:16:48 +0100 | <merijn> | so who cares |
2021-11-16 14:17:08 +0100 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2021-11-16 14:17:16 +0100 | <dminuoso> | Perhaps you're right. Another reason is that it doesnt require a trip to #haskell and having luck whether tomsmeding is around to make sense of it. |
2021-11-16 14:17:22 +0100 | <dminuoso> | Mmm |
2021-11-16 14:17:52 +0100 | <tomsmeding> | :p |
2021-11-16 14:18:19 +0100 | <dminuoso> | tomsmeding: To continue the previous, why would it have to prove `GuardM a ~ GuardM [Server]`? |
2021-11-16 14:18:26 +0100 | <tomsmeding> | who knew that I would be in a position to spread type class fu |
2021-11-16 14:18:42 +0100 | <tomsmeding> | dminuoso: for the original 'GenConst a a' instance |
2021-11-16 14:19:17 +0100 | <tomsmeding> | the constraint at that point is 'GenConst (GuardM a) (GuardM [Server])', because the value it's passed is 'forbidden', and the value it should produce is GuardM [Server] |
2021-11-16 14:19:37 +0100 | <tomsmeding> | to be allowed to even look at that 'GenConst a a' instance, ghc has to prove that those arguments are equal |
2021-11-16 14:19:54 +0100 | <tomsmeding> | because there might be another 'GenConst a b' instance around, technically |
2021-11-16 14:20:03 +0100 | wmacmil | (~wmacmil@83-233-165-97.cust.bredband2.com) |
2021-11-16 14:20:10 +0100 | <tomsmeding> | overlapping instances notwithstanding, I guess |
2021-11-16 14:20:45 +0100 | kupi | (uid212005@hampstead.irccloud.com) |
2021-11-16 14:20:53 +0100 | <wmacmil> | whats the easiest way to work with vanilla mutually inductive datatypes in haskell? for gadts? |
2021-11-16 14:20:54 +0100 | <dminuoso> | tomsmeding: But why cant GHC simply insert its `a ~ [Server]` constraint itself? |
2021-11-16 14:21:13 +0100 | <tomsmeding> | dminuoso: because there might be another 'GenConst a b' instance around :p |
2021-11-16 14:21:13 +0100 | <dminuoso> | This might sound a bit dumb, and perhaps ignorant of what you just wrote |
2021-11-16 14:21:15 +0100 | <dminuoso> | Mmm |
2021-11-16 14:21:22 +0100 | <tomsmeding> | which it might have to select if it turns out that a ~ () or something |
2021-11-16 14:21:23 +0100 | <wmacmil> | i.e. how do you replicate the mutual keyword from agda |
2021-11-16 14:21:41 +0100 | <tomsmeding> | wmacmil: gadts are already mutually recursive by default in haskell? |
2021-11-16 14:22:09 +0100 | <tomsmeding> | everything is mutually recursive in haskell, except for template haskell stuff |
2021-11-16 14:22:20 +0100 | <wmacmil> | cool :) |
2021-11-16 14:22:54 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) |
2021-11-16 14:23:35 +0100 | <dminuoso> | tomsmeding: But GHC already sees all instances in scope, the resolution happens right here. My use of constG doesnt produce any GenConst constraint, why would GHC care whether someone on the moon wrote an instance for that? |
2021-11-16 14:23:48 +0100 | <tomsmeding> | dminuoso: no, type classes are open, ghc cannot assume it sees all instances in scope |
2021-11-16 14:24:02 +0100 | <tomsmeding> | compare 'type family F a ; type instance F Int = ... ; ...' with 'type family F a where ...' |
2021-11-16 14:24:06 +0100 | <tomsmeding> | the first is open, the second is closed |
2021-11-16 14:24:10 +0100 | <tomsmeding> | type classes are always open |
2021-11-16 14:24:42 +0100 | <tomsmeding> | type classes are supposed to be coherent |
2021-11-16 14:24:43 +0100 | <dminuoso> | tomsmeding: That cant be entirely true, since clearly you can have more specific instances in some cases. |
2021-11-16 14:25:06 +0100 | <tomsmeding> | ghc isn't allowed to instantiate the same type class with two different dictionaries in two different situations |
2021-11-16 14:25:11 +0100 | <tomsmeding> | so it has to be careful |
2021-11-16 14:25:23 +0100 | <tomsmeding> | dminuoso: with overlapping instances you mean? |
2021-11-16 14:26:07 +0100 | <tomsmeding> | indeed, I believe ghc actively optimises code based on the assumption that two dictionaries of the same type class are always equal |
2021-11-16 14:26:43 +0100 | <dminuoso> | Well you can write this: |
2021-11-16 14:26:43 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) (Remote host closed the connection) |
2021-11-16 14:26:47 +0100 | <dminuoso> | % class F a where f :: a |
2021-11-16 14:26:47 +0100 | <yahb> | dminuoso: |
2021-11-16 14:26:48 +0100 | <tomsmeding> | see the Note [NOINLINE someNatVal] here: https://hackage.haskell.org/package/base-4.15.0.0/docs/src/GHC-TypeNats.html |
2021-11-16 14:26:52 +0100 | <dminuoso> | % instance F [a] where f = [] |
2021-11-16 14:26:52 +0100 | <yahb> | dminuoso: |
2021-11-16 14:26:58 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) |
2021-11-16 14:27:21 +0100 | <tomsmeding> | in particular the second-to-last paragraph of that Note |
2021-11-16 14:27:36 +0100 | <dminuoso> | tomsmeding: If GHC was in a complete open world assumption, GHC was *never* allowed to select that instance for `[T]`, since someone on the moon - outside the scope of the compilation unit - could have written an instance F [T] |
2021-11-16 14:27:49 +0100 | <dminuoso> | (Which would be more specific) |
2021-11-16 14:27:55 +0100 | <dminuoso> | These are not overlapping, mind you |
2021-11-16 14:28:01 +0100 | <dminuoso> | Just more specific |
2021-11-16 14:28:04 +0100 | <tomsmeding> | they are, right? |
2021-11-16 14:28:13 +0100 | <tomsmeding> | % instance F [Int] where f = Maybe |
2021-11-16 14:28:13 +0100 | <yahb> | tomsmeding: ; <interactive>:6:28: error:; * Data constructor not in scope: Maybe :: [Int]; * Perhaps you meant variable `maybe' (imported from Prelude) |
2021-11-16 14:28:17 +0100 | <dminuoso> | Well sure |
2021-11-16 14:28:21 +0100 | <tomsmeding> | % instance F [Int] where f = () |
2021-11-16 14:28:21 +0100 | <yahb> | tomsmeding: ; <interactive>:7:28: error:; * Couldn't match expected type `[Int]' with actual type `()'; * In the expression: (); In an equation for `f': f = (); In the instance declaration for `F [Int]' |
2021-11-16 14:28:29 +0100 | <tomsmeding> | OH it's a class |
2021-11-16 14:28:35 +0100 | <tomsmeding> | % instance F [Int] where f = [] |
2021-11-16 14:28:35 +0100 | <yahb> | tomsmeding: |
2021-11-16 14:28:35 +0100 | <dminuoso> | % instance F String where f = "foo" |
2021-11-16 14:28:35 +0100 | <yahb> | dminuoso: |
2021-11-16 14:28:43 +0100 | <dminuoso> | % f @String |
2021-11-16 14:28:44 +0100 | <yahb> | dminuoso: ; <interactive>:10:1: error:; * Overlapping instances for F String arising from a use of `f'; Matching instances:; instance [safe] F [a] -- Defined at <interactive>:5:10; instance [safe] F String -- Defined at <interactive>:9:10; * In the expression: f @String; In an equation for `it': it = f @String |
2021-11-16 14:28:46 +0100 | tomsmeding | is confused |
2021-11-16 14:28:47 +0100 | <dminuoso> | Oh |
2021-11-16 14:28:48 +0100 | <tomsmeding> | right |
2021-11-16 14:28:49 +0100 | <dminuoso> | Hold on |
2021-11-16 14:28:50 +0100 | <tomsmeding> | there you go |
2021-11-16 14:29:04 +0100 | <tomsmeding> | which you can fix with OVERLAPPING and OVERLAPPABLE pragmas |
2021-11-16 14:29:15 +0100 | <tomsmeding> | which are more specific versions of the earlier INCOHERENT pragma |
2021-11-16 14:29:16 +0100 | <tomsmeding> | ;) |
2021-11-16 14:30:21 +0100 | <dminuoso> | tomsmeding: The error message was that the type variable 'a0' is ambiguous though |
2021-11-16 14:30:34 +0100 | <dminuoso> | But I guess your point is: |
2021-11-16 14:31:11 +0100 | <dminuoso> | GHC doesnt have a mechanism to monomorphize and introduce that constraint in the type checker in general, since in the general case it doesnt make sense in an open world assumption |
2021-11-16 14:31:31 +0100 | <dminuoso> | Since I might as well have written something like `f = genConst forbidden` and exported `f` |
2021-11-16 14:31:46 +0100 | <dminuoso> | Err `f = constG forbidden`, and exported `f`. here we go. |
2021-11-16 14:32:00 +0100 | <tomsmeding> | I think so, yes |
2021-11-16 14:32:13 +0100 | <tomsmeding> | the justifications and details of the algorithm I also don't know :p |
2021-11-16 14:32:19 +0100 | <dminuoso> | Strictly speaking, inside this compilation unit, GHC could have safely made that unfiication |
2021-11-16 14:32:31 +0100 | <dminuoso> | Or introduced that constraint |
2021-11-16 14:32:50 +0100 | <tomsmeding> | I suspect that writing that F [T] instance in another module would be technically invalid |
2021-11-16 14:33:14 +0100 | <tomsmeding> | just like defining the same name in two different compilation units in C/C++ might work sometimes but is technically undefined behaviour |
2021-11-16 14:33:40 +0100 | <tomsmeding> | but this is my feeling, not anything concrete |
2021-11-16 14:34:23 +0100 | <merijn> | Looks like there might be a 2022 NL-FP \o/ |
2021-11-16 14:34:28 +0100 | <merijn> | But it won't be in January >.> |
2021-11-16 14:34:44 +0100 | <tomsmeding> | \o/ |
2021-11-16 14:34:47 +0100 | <tomsmeding> | saw the email |
2021-11-16 14:35:15 +0100 | <maerwald> | merijn: like... remote? |
2021-11-16 14:35:23 +0100 | <merijn> | I think wouter forgot to replace 2021 with 2022 though xD |
2021-11-16 14:36:02 +0100 | <tomsmeding> | heh yes |
2021-11-16 14:36:10 +0100 | <merijn> | I see basically zero value in a remote NL-FP. Better off cancelled than remote |
2021-11-16 14:36:37 +0100 | <maerwald> | I haven't checked whether my front door still works |
2021-11-16 14:37:18 +0100 | <merijn> | Remote conferences already suck with conferences that have actual money to pay for online infrastructure/streaming >.> |
2021-11-16 14:39:21 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) (Remote host closed the connection) |
2021-11-16 14:40:00 +0100 | pfurla__ | (~pfurla@2804:14d:5c81:4104:8de2:1993:a832:eced) (Quit: gone to sleep. ZZZzzz…) |
2021-11-16 14:40:44 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) |
2021-11-16 14:41:17 +0100 | <dminuoso> | Id rather spend 800EUR on a national compulsory vaccination, and then spend another 800 on a cool conference, than some remote conference where you cant hang out with people and talk to them over a beer. |
2021-11-16 14:42:26 +0100 | <maerwald> | Does tea not work for you? |
2021-11-16 14:42:28 +0100 | <maerwald> | :D |
2021-11-16 14:43:08 +0100 | <dminuoso> | Tea, beer, combined, I dont care. |
2021-11-16 14:43:45 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Remote host closed the connection) |
2021-11-16 14:44:00 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds) |
2021-11-16 14:45:23 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Ping timeout: 264 seconds) |
2021-11-16 14:45:33 +0100 | Carras | (~carras@2001:f40:904:54b9:f507:3f1e:f14f:9046) |
2021-11-16 14:45:45 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2021-11-16 14:45:50 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2021-11-16 14:46:27 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) |
2021-11-16 14:46:47 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) (Remote host closed the connection) |
2021-11-16 14:48:17 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) |
2021-11-16 14:51:32 +0100 | fef | (~thedawn@user/thedawn) (Quit: Leaving) |
2021-11-16 14:53:04 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) |
2021-11-16 14:57:59 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 264 seconds) |
2021-11-16 14:58:01 +0100 | Carras | (~carras@2001:f40:904:54b9:f507:3f1e:f14f:9046) (Remote host closed the connection) |
2021-11-16 14:58:32 +0100 | Carras | (~carras@2001:f40:904:54b9:cc2c:1730:8d25:ddca) |
2021-11-16 14:59:07 +0100 | deadmarshal | (~deadmarsh@95.38.114.190) |
2021-11-16 15:00:09 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2021-11-16 15:03:27 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) (Remote host closed the connection) |
2021-11-16 15:03:37 +0100 | deadmarshal | (~deadmarsh@95.38.114.190) (Ping timeout: 250 seconds) |
2021-11-16 15:05:24 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) |
2021-11-16 15:06:31 +0100 | jippiedoe | (~david@2a02-a44c-e14e-1-12d4-e982-14bb-9a24.fixed6.kpn.net) |
2021-11-16 15:07:39 +0100 | shapr | (~user@pool-100-36-247-68.washdc.fios.verizon.net) |
2021-11-16 15:08:36 +0100 | aman | (~aman@user/aman) |
2021-11-16 15:08:57 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) |
2021-11-16 15:10:09 +0100 | pfurla | (~pfurla@201.17.118.230) |
2021-11-16 15:12:16 +0100 | shriekingnoise | (~shrieking@186.137.144.80) |
2021-11-16 15:12:32 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) (Remote host closed the connection) |
2021-11-16 15:13:11 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) |
2021-11-16 15:14:31 +0100 | emerson | (~emerson@libera/staff/emerson) (Quit: Quitting) |
2021-11-16 15:14:40 +0100 | benin | (~benin@183.82.27.20) |
2021-11-16 15:18:13 +0100 | sprout_ | (~quassel@2a02:a467:ccd6:1:e14a:d90e:46d2:87c4) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2021-11-16 15:19:03 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:e14a:d90e:46d2:87c4) |
2021-11-16 15:19:07 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-16 15:23:30 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 260 seconds) |
2021-11-16 15:23:40 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) (Remote host closed the connection) |
2021-11-16 15:26:07 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) |
2021-11-16 15:31:49 +0100 | eruditass | (uid248673@uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-16 15:33:07 +0100 | cfricke | (~cfricke@user/cfricke) |
2021-11-16 15:35:01 +0100 | acarrico1 | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
2021-11-16 15:38:42 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-16 15:38:42 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-16 15:38:42 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-16 15:39:58 +0100 | Guest42 | (~Guest42@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
2021-11-16 15:41:08 +0100 | thyriaen | (~thyriaen@dynamic-077-013-170-047.77.13.pool.telefonica.de) |
2021-11-16 15:42:00 +0100 | <Guest42> | if `(+) :: Num a => a -> a -> a`, then is this a function defined somewhere in Prelude, or is it a compiler intrinsic? |
2021-11-16 15:43:45 +0100 | <Guest42> | all I could find from hackage was the Num type class definition |
2021-11-16 15:43:46 +0100 | <Guest42> | https://hackage.haskell.org/package/base-4.16.0.0/docs/src/GHC.Num.html#%2B |
2021-11-16 15:44:18 +0100 | vysn | (~vysn@user/vysn) |
2021-11-16 15:44:21 +0100 | <maerwald> | Guest42: the instance are right below that |
2021-11-16 15:45:53 +0100 | <Guest42> | so for example Integer defines `(+) = integerAdd` |
2021-11-16 15:46:45 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Excess Flood) |
2021-11-16 15:46:47 +0100 | <Guest42> | trying to click it leads me nowhere, I'll try cloning the source for myself I guess |
2021-11-16 15:46:48 +0100 | <Guest42> | https://hackage.haskell.org/package/base-4.16.0.0/ghc-bignum-1.2/src/GHC-Num-Integer.html#integerAdd |
2021-11-16 15:46:52 +0100 | asm | (~alexander@burner.asm89.io) (Changing host) |
2021-11-16 15:46:52 +0100 | asm | (~alexander@user/asm) |
2021-11-16 15:47:15 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2021-11-16 15:48:11 +0100 | <Guest42> | 640k objects o_O |
2021-11-16 15:48:36 +0100 | <maerwald> | there's also integer-simple |
2021-11-16 15:48:37 +0100 | <Guest42> | ghc's my favourite compiler, it always feels like pure magic |
2021-11-16 15:48:48 +0100 | <maerwald> | https://hackage.haskell.org/package/integer-simple-0.1.1.1/docs/src/GHC.Integer.Type.html#plusInte… |
2021-11-16 15:48:49 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) (Remote host closed the connection) |
2021-11-16 15:48:52 +0100 | <maerwald> | different bignum backend |
2021-11-16 15:48:53 +0100 | <Guest42> | maerwald: yes but what are they? |
2021-11-16 15:49:10 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) |
2021-11-16 15:49:29 +0100 | <maerwald> | ghc-bignum depends on libgmp |
2021-11-16 15:50:00 +0100 | <Guest42> | so compiler instrinsics? |
2021-11-16 15:50:31 +0100 | <Guest42> | integerAdd is in the end a call into GMP? |
2021-11-16 15:50:46 +0100 | <Guest42> | or is there something below integerAdd too |
2021-11-16 15:51:09 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) (Remote host closed the connection) |
2021-11-16 15:51:17 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
2021-11-16 15:52:22 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) |
2021-11-16 15:52:50 +0100 | zincy_ | (~zincy@host-92-8-239-246.as13285.net) (Remote host closed the connection) |
2021-11-16 15:52:55 +0100 | servytor | (uid525486@hampstead.irccloud.com) |
2021-11-16 15:54:14 +0100 | [Kalisto] | (~nico@user/kalisto/x-8968079) (Ping timeout: 268 seconds) |
2021-11-16 15:54:15 +0100 | acarrico1 | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Quit: Leaving.) |
2021-11-16 15:54:15 +0100 | [Kalisto]_ | (~nico@user/kalisto/x-8968079) |
2021-11-16 15:54:31 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
2021-11-16 15:54:31 +0100 | <lortabac> | Guest42: most of these primitives are just FFI calls to C code |
2021-11-16 15:54:39 +0100 | [Kalisto]_ | [Kalisto] |
2021-11-16 15:56:02 +0100 | pfurla | (~pfurla@201.17.118.230) (Quit: gone to sleep. ZZZzzz…) |
2021-11-16 15:56:13 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Client Quit) |
2021-11-16 15:56:31 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
2021-11-16 15:58:42 +0100 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2021-11-16 15:58:50 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Client Quit) |
2021-11-16 15:59:09 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
2021-11-16 16:00:48 +0100 | nvmd | (~nvmd@user/nvmd) |
2021-11-16 16:00:54 +0100 | <merijn> | lortabac: Most of them are primitives that are just primitives in the compiler, tbh |
2021-11-16 16:01:30 +0100 | <merijn> | But the Integer stuff is just libgmp calls, yeah |
2021-11-16 16:01:35 +0100 | mark__ | (~a@p200300ef973db1d9502293e1a26d2ca1.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
2021-11-16 16:01:57 +0100 | mark__ | (~a@p200300ef973db186502293e1a26d2ca1.dip0.t-ipconnect.de) |
2021-11-16 16:02:52 +0100 | <merijn> | Guest42: Most of the primitives are "in" ghc-prim (which mostly exists for typechecking, the primitives themselves are implemented inside GHC's codegen) |
2021-11-16 16:02:57 +0100 | <merijn> | Guest42: See, for example, https://hackage.haskell.org/package/ghc-prim-0.8.0/docs/GHC-PrimopWrappers.html |
2021-11-16 16:03:25 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Remote host closed the connection) |
2021-11-16 16:03:47 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2021-11-16 16:03:48 +0100 | <merijn> | Guest42: Which also shows that Int/Word/Float/Double/Char/etc. are just thing wrappers around primitive types: https://hackage.haskell.org/package/ghc-prim-0.8.0/docs/GHC-Types.html#t:Int |
2021-11-16 16:05:13 +0100 | <lortabac> | the definition of Int# is: data Int# :) |
2021-11-16 16:05:13 +0100 | gentauro | (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
2021-11-16 16:05:15 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-11-16 16:05:58 +0100 | <merijn> | Same for stuff like "gtChar# = gtChar#" |
2021-11-16 16:07:34 +0100 | <boxscape_> | IIRC it used to be a lot of `gtChar# = let x = x in x` - I wonder why it was changed |
2021-11-16 16:07:55 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-16 16:07:55 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-16 16:07:55 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-16 16:08:24 +0100 | <merijn> | I don't recall it being that, so that must've been a *long* time ago |
2021-11-16 16:08:32 +0100 | <boxscape_> | hmm |
2021-11-16 16:09:55 +0100 | Carras | (~carras@2001:f40:904:54b9:cc2c:1730:8d25:ddca) (Ping timeout: 250 seconds) |
2021-11-16 16:10:09 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Excess Flood) |
2021-11-16 16:10:34 +0100 | jkaye | (~jkaye@BELVEDERE-T.ear2.Denver1.Level3.net) |
2021-11-16 16:10:36 +0100 | gentauro | (~gentauro@user/gentauro) |
2021-11-16 16:10:56 +0100 | mimmy | (~mimmy@146.70.75.156) |
2021-11-16 16:11:02 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2021-11-16 16:11:30 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 265 seconds) |
2021-11-16 16:11:53 +0100 | <boxscape_> | looking through the commits there's not a ton of instances of this so maybe I'm misremembering |
2021-11-16 16:12:05 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
2021-11-16 16:12:39 +0100 | <boxscape_> | wait I need to grep the ghc-prim submodule |
2021-11-16 16:13:01 +0100 | <boxscape_> | okay no difference |
2021-11-16 16:13:14 +0100 | Unode | (~Unode@194.94.44.220) (Quit: Not that cable) |
2021-11-16 16:13:52 +0100 | <boxscape_> | https://stackoverflow.com/questions/15893524/what-is-the-meaning-of-let-x-x-in-x-and-data-float-in… |
2021-11-16 16:14:35 +0100 | <boxscape_> | https://hackage.haskell.org/package/ghc-prim-0.3.1.0/docs/src/GHC-Prim.html has a lot of `let x = x in x` |
2021-11-16 16:15:16 +0100 | <boxscape_> | ...clearly I need to hone my grepping skills if I wasn't able to find this with grepping through commits |
2021-11-16 16:15:17 +0100 | cosimone | (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) |
2021-11-16 16:15:55 +0100 | Unode | (~Unode@194.94.44.220) |
2021-11-16 16:17:28 +0100 | <boxscape_> | merijn it was changed in ghc-prim 0.5.0.0, uploaded 2016-05-21 |
2021-11-16 16:18:59 +0100 | srk | (~sorki@user/srk) (Quit: ZNC 1.8.1 - https://znc.in) |
2021-11-16 16:19:18 +0100 | srk | (~sorki@user/srk) |
2021-11-16 16:20:39 +0100 | John_Ivan | (~John_Ivan@user/john-ivan/x-1515935) |
2021-11-16 16:20:56 +0100 | <John_Ivan> | hi. anyone want to teach me haskell? |
2021-11-16 16:21:50 +0100 | dlbh^ | (~dlbh@h50.174.139.63.static.ip.windstream.net) (Remote host closed the connection) |
2021-11-16 16:22:15 +0100 | <sm> | https://wiki.haskell.org/Haskell , ready set go! |
2021-11-16 16:22:33 +0100 | wmacmil | (~wmacmil@83-233-165-97.cust.bredband2.com) (Quit: Leaving) |
2021-11-16 16:23:04 +0100 | <John_Ivan> | sm, without inkhorn please. |
2021-11-16 16:23:08 +0100 | <dminuoso> | John_Ivan: Depends, are you ready to pay usual developer consulting fees? |
2021-11-16 16:23:43 +0100 | <dminuoso> | @where cis194 |
2021-11-16 16:23:44 +0100 | <lambdabot> | https://www.seas.upenn.edu/~cis194/spring13/lectures.html |
2021-11-16 16:24:16 +0100 | <dminuoso> | This is a high quality haskell course that is widely regarded in this community |
2021-11-16 16:24:21 +0100 | <John_Ivan> | dminuoso, sorry. I don't abide by inkhorns ;/ |
2021-11-16 16:24:30 +0100 | <dminuoso> | Im not sure why you think there's an inkhorn here, but okay |
2021-11-16 16:24:32 +0100 | <sm> | @where htac |
2021-11-16 16:24:32 +0100 | <lambdabot> | "Haskell Tutorial and Cookbook" by Mark Watson in 2017-09-04 at <https://leanpub.com/haskell-cookbook> |
2021-11-16 16:25:19 +0100 | <John_Ivan> | right. more inkhorn material. |
2021-11-16 16:25:25 +0100 | John_Ivan | sighs |
2021-11-16 16:25:33 +0100 | <dminuoso> | Not sure what you're asking for. |
2021-11-16 16:25:55 +0100 | <John_Ivan> | I suppose I'm not asking for anything. |
2021-11-16 16:26:17 +0100 | geekosaur | suddenly wants to misquote Hillel |
2021-11-16 16:27:10 +0100 | <shapr> | oh yeah? |
2021-11-16 16:30:01 +0100 | <dminuoso> | "That which is yummy to you, do cook it for another. That is the whole dish. The rest is just side dishes. Now go and eat" |
2021-11-16 16:30:04 +0100 | <dminuoso> | geekosaur: ^- this? |
2021-11-16 16:30:17 +0100 | <geekosaur> | roughly yes |
2021-11-16 16:30:18 +0100 | <geekosaur> | https://www.chabad.org/library/article_cdo/aid/689306/jewish/On-One-Foot.htm |
2021-11-16 16:30:58 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) |
2021-11-16 16:31:03 +0100 | <geekosaur> | problem being I can't come up with a pithy enough Haskellism to teach on one foot :) |
2021-11-16 16:31:21 +0100 | John_Ivan | removes his mask |
2021-11-16 16:31:30 +0100 | <John_Ivan> | it is I, Scooby. |
2021-11-16 16:31:35 +0100 | dminuoso | idly wonders about the lack of division of powers in old religion. |
2021-11-16 16:31:57 +0100 | <merijn> | Now I'm curious what the hell an inkhorn is in this context |
2021-11-16 16:32:10 +0100 | <dminuoso> | Maybe anything that closely resembles writing? |
2021-11-16 16:32:23 +0100 | <dminuoso> | Who knows, they could be illiterate |
2021-11-16 16:32:46 +0100 | rtsn | (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) (Ping timeout: 265 seconds) |
2021-11-16 16:32:53 +0100 | geekosaur | thinking they're the opposite of me, they want a youtube or something |
2021-11-16 16:33:11 +0100 | rtsn | (~nstr@c-c7fe225c.07-59-7570703.bbcust.telenor.se) |
2021-11-16 16:33:38 +0100 | <John_Ivan> | I already know Haskell, sorry to break your bubble. |
2021-11-16 16:33:51 +0100 | John_Ivan | plot twist. |
2021-11-16 16:33:56 +0100 | <dminuoso> | That's what I thought too |
2021-11-16 16:34:04 +0100 | <dminuoso> | Then I discovered functions. |
2021-11-16 16:34:47 +0100 | <maerwald> | John_Ivan: that's amazing |
2021-11-16 16:35:54 +0100 | <John_Ivan> | dminuoso, yeah. damn inkhorns. them applicative functors and their monadic rules. |
2021-11-16 16:36:09 +0100 | <John_Ivan> | burn all higher order level functions |
2021-11-16 16:36:40 +0100 | <John_Ivan> | "function pointer" was a better substitute |
2021-11-16 16:36:43 +0100 | John_Ivan | slaps Jill |
2021-11-16 16:36:53 +0100 | <John_Ivan> | you had one job Jill. one job |
2021-11-16 16:37:03 +0100 | <John_Ivan> | and that was to not go apeshit with your terminology. |
2021-11-16 16:37:08 +0100 | <John_Ivan> | I don't care if math is your background |
2021-11-16 16:37:13 +0100 | <geekosaur> | wat |
2021-11-16 16:37:16 +0100 | <John_Ivan> | when in Rome, you do as the Romans do. |
2021-11-16 16:37:38 +0100 | <John_Ivan> | don't ever let a mathematician touch a compiler |
2021-11-16 16:37:45 +0100 | aman | (~aman@user/aman) (Quit: aman) |
2021-11-16 16:37:47 +0100 | <John_Ivan> | they will start producing the plague |
2021-11-16 16:38:48 +0100 | <yushyin> | What is going on? o.O |
2021-11-16 16:39:37 +0100 | <merijn> | yushyin: (an attempt at) trolling, presumably |
2021-11-16 16:39:52 +0100 | <maerwald> | I could see this happening from a mile away |
2021-11-16 16:40:23 +0100 | <dminuoso> | maerwald: Is that a nautic mile? |
2021-11-16 16:40:54 +0100 | <Franciman> | hi maerwald how are you? |
2021-11-16 16:40:59 +0100 | <John_Ivan> | side effects my ass and zypper my balls |
2021-11-16 16:41:03 +0100 | <maerwald> | So... after I've read some non-trivial code using freer-simple, I'm starting to form the opinion that I dislike effects systems that are used for high-level effects |
2021-11-16 16:41:08 +0100 | <merijn> | @where ops |
2021-11-16 16:41:08 +0100 | <lambdabot> | byorgey Cale conal copumpkin dcoutts dibblego dolio edwardk geekosaur glguy jmcarthur johnw mniip monochrom quicksilver shachaf shapr ski |
2021-11-16 16:41:24 +0100 | ChanServ | +o geekosaur |
2021-11-16 16:41:27 +0100 | <merijn> | maerwald: See, I just skipped all that effort |
2021-11-16 16:41:33 +0100 | geekosaur | +b *!*@*user/john-ivan/x-1515935 |
2021-11-16 16:41:34 +0100 | John_Ivan | geekosaur (John_Ivan) |
2021-11-16 16:41:34 +0100 | <boxscape_> | what counts as a high-level effect? |
2021-11-16 16:41:38 +0100 | <merijn> | maerwald: And went straight to "I don't think they're worth the effort" |
2021-11-16 16:41:48 +0100 | <merijn> | boxscape_: The various composable effects stuff |
2021-11-16 16:41:55 +0100 | <boxscape_> | I see |
2021-11-16 16:41:56 +0100 | <maerwald> | it's impossible to understand what the code does, unless you constantly jump back and forth between the effect handlers and re-examine the code over and over again |
2021-11-16 16:42:21 +0100 | geekosaur | -o geekosaur |
2021-11-16 16:42:25 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) |
2021-11-16 16:42:32 +0100 | <geekosaur> | and I think I already like litharge :) |
2021-11-16 16:43:19 +0100 | <maerwald> | I mean... low-level effects like filesystem operations, maybe |
2021-11-16 16:43:24 +0100 | max22- | (~maxime@2a01cb0883359800502e2c31bca551ab.ipv6.abo.wanadoo.fr) |
2021-11-16 16:43:35 +0100 | <maerwald> | but complex effects make it really impossible to understand behavior |
2021-11-16 16:44:59 +0100 | <maerwald> | and... you can't understand an effect handler isolated |
2021-11-16 16:45:22 +0100 | <Franciman> | that's the curse of delconts, right? |
2021-11-16 16:45:26 +0100 | <Franciman> | you jumping around |
2021-11-16 16:45:29 +0100 | <maerwald> | so the code structure is bad as well |
2021-11-16 16:46:18 +0100 | <maerwald> | if the domain is spaghetti... better keep it in one pot |
2021-11-16 16:46:49 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) (Remote host closed the connection) |
2021-11-16 16:47:08 +0100 | Kaiepi | (~Kaiepi@156.34.44.192) |
2021-11-16 16:47:11 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Ping timeout: 264 seconds) |
2021-11-16 16:47:59 +0100 | <Franciman> | is mtl style better, tho maerwald ? |
2021-11-16 16:48:12 +0100 | <maerwald> | Franciman: mtl are not high-level effects |
2021-11-16 16:48:23 +0100 | <Franciman> | ah I don't know what they are then |
2021-11-16 16:48:25 +0100 | <Franciman> | sorry |
2021-11-16 16:49:14 +0100 | <maerwald> | think of effects as business domain effects |
2021-11-16 16:49:45 +0100 | <Franciman> | like, downloadPirateMusic |
2021-11-16 16:49:48 +0100 | <Franciman> | for a clone of napsters? |
2021-11-16 16:49:57 +0100 | <maerwald> | now you read the code... and your functions fire different effects everywhere and they are intertwined, maybe through remote state... so you jump to the handler, but that doesn't make sense on its own |
2021-11-16 16:51:03 +0100 | <Franciman> | so you are basically arguing that having this concept gets you nothing because it's so powerful you get fully side effected code |
2021-11-16 16:51:05 +0100 | <Franciman> | it's like coding in C |
2021-11-16 16:51:39 +0100 | <maerwald> | no, the separation of effects code and interpreters clouds control flow and breaks reasoning about actual behavior |
2021-11-16 16:51:41 +0100 | <Hecate> | merijn: oh, I was looking for you! |
2021-11-16 16:51:51 +0100 | merijn | hides |
2021-11-16 16:51:52 +0100 | <Hecate> | merijn: What are you doing these days, Haskell-wise? |
2021-11-16 16:52:14 +0100 | <merijn> | atm nothing :p |
2021-11-16 16:52:30 +0100 | <Hecate> | merijn: needing to rest, or is boredom eating at you? :p |
2021-11-16 16:52:42 +0100 | <Franciman> | maerwald: to be more clear, you don't know what the heck is going on in your code, when using the damn abstraction? |
2021-11-16 16:52:56 +0100 | <maerwald> | Franciman: I don't use effects systems in my own code |
2021-11-16 16:53:34 +0100 | Gurkenglas | (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) |
2021-11-16 16:54:46 +0100 | <merijn> | Hecate: thesis is at the committee, so no need to touch my phd code for awhile and I still haven't fixed any of my CIs from Travis breaking, so I can't be arsed to update stuff until I fix that >.> |
2021-11-16 16:55:01 +0100 | <Franciman> | merijn: what is your phd thesis about? |
2021-11-16 16:55:14 +0100 | thyriaen | (~thyriaen@dynamic-077-013-170-047.77.13.pool.telefonica.de) (Quit: Leaving) |
2021-11-16 16:55:16 +0100 | <Franciman> | maerwald: wise |
2021-11-16 16:55:18 +0100 | <Franciman> | I see |
2021-11-16 16:55:53 +0100 | <maerwald> | merijn: I might have broken your travis xD |
2021-11-16 16:56:14 +0100 | <merijn> | Franciman: Supposedly graph processing on GPUs. In reality it's me whining that everyone's terrible at empirical computer science and showing that 5 years is just enough time to built infrastructure to *begin* research :p |
2021-11-16 16:56:32 +0100 | <maerwald> | Franciman: I mean... to understand effects code, you either need an *intuition* about the effects or *total understanding* of the interpreters |
2021-11-16 16:56:40 +0100 | <merijn> | maerwald: Naah, ran out of free minutes in half a month after they limited open source CI time |
2021-11-16 16:56:44 +0100 | <Franciman> | ggwp merijn |
2021-11-16 16:56:52 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-11-16 16:56:52 +0100 | <merijn> | maerwald: So I should migrate to github actions |
2021-11-16 16:57:20 +0100 | <Franciman> | maerwald: unfortunately I am still miles away from learning about these stuff |
2021-11-16 16:57:24 +0100 | <Franciman> | that's why I asked |
2021-11-16 16:57:27 +0100 | <maerwald> | intuition is difficult if your effects are very high-level |
2021-11-16 16:57:49 +0100 | <Franciman> | i like conal's idea of denotational semantics design |
2021-11-16 16:58:02 +0100 | <Franciman> | for very high level things |
2021-11-16 16:58:12 +0100 | <dminuoso> | Franciman: The idea is good and noble, but I think its hard to employ in a lot of situations. |
2021-11-16 16:58:14 +0100 | <Franciman> | if I interpret it correctly, sorry if I don't |
2021-11-16 16:58:23 +0100 | <Franciman> | you deliver a dumbass easy model |
2021-11-16 16:58:26 +0100 | <merijn> | Hecate: tbh, I haven't really done any programming "as hobby" since, like, Advent of Code last year and with a new round of semi-lockdown, I doubt I will do any any time soon |
2021-11-16 16:58:27 +0100 | burnsidesLlama | (~burnsides@dhcp168-035.wadham.ox.ac.uk) |
2021-11-16 16:58:27 +0100 | <dminuoso> | The example frequently picked, namely that of an image transformation library, is extremely cherry picked. |
2021-11-16 16:58:32 +0100 | <maerwald> | merijn: I mean I broke github actions |
2021-11-16 16:58:43 +0100 | <Franciman> | I see dminuoso |
2021-11-16 16:58:45 +0100 | <Franciman> | thanks |
2021-11-16 16:58:54 +0100 | <merijn> | Hecate: I have plans to try and sucker the people on my new project into letting me do it in Haskell, but we'll have to see :p |
2021-11-16 16:59:09 +0100 | <maerwald> | merijn: github actions environments are not fixed... they are rebuilt every week and may change randomly |
2021-11-16 16:59:22 +0100 | <maerwald> | that has some merits though |
2021-11-16 16:59:29 +0100 | <Franciman> | dminuoso: I mostly think about it liek this, you define your language, your laws |
2021-11-16 16:59:34 +0100 | <merijn> | maerwald: Well, that's one reason why I haven't bothered fixing anything :p |
2021-11-16 16:59:36 +0100 | <Franciman> | and give a dumbass easy model for it |
2021-11-16 16:59:36 +0100 | <dminuoso> | Franciman: And on a high level it becomes quickly hard, because at some point you need to prove an equivalence of your implementation to mathematical models. |
2021-11-16 16:59:45 +0100 | <dminuoso> | Franciman: so it's easier on a small level |
2021-11-16 16:59:48 +0100 | <Franciman> | I see |
2021-11-16 16:59:52 +0100 | <merijn> | I made a new command to migrate the Travis setups from Haskell-CI to the github ones |
2021-11-16 17:00:00 +0100 | <merijn> | But phadej hasn't commented on that PR yet |
2021-11-16 17:00:00 +0100 | <Franciman> | for high level we should then give up to the our lord compositionality? |
2021-11-16 17:00:02 +0100 | <Franciman> | I hope |
2021-11-16 17:00:06 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2021-11-16 17:00:08 +0100 | afotgkmnzj7asv3r | (~afotgkmnz@2001:470:69fc:105::c24b) (Quit: You have been kicked for being idle) |
2021-11-16 17:00:12 +0100 | <merijn> | Not sure if he's still working much on Haskell-CI |
2021-11-16 17:00:16 +0100 | <dminuoso> | What does "compositionality" even mean? |
2021-11-16 17:00:25 +0100 | <Franciman> | that's the lord part |
2021-11-16 17:00:27 +0100 | afotgkmnzj7asv3r | (~afotgkmnz@2001:470:69fc:105::c24b) |
2021-11-16 17:00:27 +0100 | afotgkmnzj7asv3r | (~afotgkmnz@2001:470:69fc:105::c24b) () |
2021-11-16 17:00:31 +0100 | <Franciman> | I don'tu nderstand what it means |
2021-11-16 17:00:35 +0100 | <Franciman> | just try to make things compose |
2021-11-16 17:00:39 +0100 | <dminuoso> | Denotational semantics has little to do with expression effects, it's more about linking a programs meaning to mathematical models. |
2021-11-16 17:00:40 +0100 | <Franciman> | and say hey that's from CT |
2021-11-16 17:00:43 +0100 | <Franciman> | that's why it works |
2021-11-16 17:01:30 +0100 | <maerwald> | high-level effects are like microservices... if you get the boundaries wrong, you're f****d |
2021-11-16 17:02:11 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-11-16 17:02:42 +0100 | jippiedoe | (~david@2a02-a44c-e14e-1-12d4-e982-14bb-9a24.fixed6.kpn.net) (Quit: Leaving) |
2021-11-16 17:03:00 +0100 | <Franciman> | I understand thanks dminuoso |
2021-11-16 17:03:04 +0100 | <Franciman> | and maerwald |
2021-11-16 17:03:15 +0100 | waleee | (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) |
2021-11-16 17:03:17 +0100 | <Franciman> | I will probably try to use comonads to infer purity, on the other hand, in my journey |
2021-11-16 17:03:29 +0100 | <Franciman> | seems easier to start with |
2021-11-16 17:06:47 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-11-16 17:07:04 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-11-16 17:07:06 +0100 | boxscape_ | (~boxscape_@134.171.69.87) (Ping timeout: 260 seconds) |
2021-11-16 17:07:37 +0100 | zebrag | (~chris@user/zebrag) |
2021-11-16 17:08:00 +0100 | benin | (~benin@183.82.27.20) (Quit: The Lounge - https://thelounge.chat) |
2021-11-16 17:09:00 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2021-11-16 17:09:14 +0100 | Vajb | (~Vajb@nalkaylds2h97nzof-2.v6.elisa-mobile.fi) |
2021-11-16 17:10:08 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2021-11-16 17:11:55 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2021-11-16 17:13:40 +0100 | MidAutumnMoon3 | (~MidAutumn@user/midautumnmoon) |
2021-11-16 17:14:06 +0100 | MidAutumnMoon | (~MidAutumn@user/midautumnmoon) (Ping timeout: 256 seconds) |
2021-11-16 17:14:06 +0100 | MidAutumnMoon3 | MidAutumnMoon |
2021-11-16 17:15:46 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 17:16:04 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 17:17:14 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2021-11-16 17:19:03 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Quit: Reconnecting) |
2021-11-16 17:19:13 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 17:20:39 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-11-16 17:22:45 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 17:23:01 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 17:23:03 +0100 | xkuru | (~xkuru@user/xkuru) |
2021-11-16 17:24:43 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 17:27:05 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2021-11-16 17:27:32 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 17:31:40 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 17:31:58 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 17:35:38 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 17:35:56 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 17:36:58 +0100 | <dolio> | "Compositionality" means that you can understand something by understanding smaller pieces of it individually, together with understanding the ways of combining those pieces. |
2021-11-16 17:37:24 +0100 | <dolio> | Rather than having to understand the entire system as an irreducible unit. |
2021-11-16 17:39:36 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 17:39:53 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 17:40:17 +0100 | <dolio> | For instance, some category theorists are trying to figure out how Petri nets form a topos, so that instead of just figuring out an entire net as a blob, you might be able to analyze it as a product/sum/exponential/... of smaller nets. |
2021-11-16 17:40:48 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2) |
2021-11-16 17:43:21 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-16 17:44:18 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 265 seconds) |
2021-11-16 17:44:23 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 250 seconds) |
2021-11-16 17:45:21 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-11-16 17:46:09 +0100 | Guest68 | (~Guest68@2401:4900:1f2a:2065:285b:1f0c:e2ab:1175) |
2021-11-16 17:46:35 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2021-11-16 17:47:51 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
2021-11-16 17:48:11 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) |
2021-11-16 17:48:36 +0100 | <Guest68> | Iam trying to create an API using servant |
2021-11-16 17:48:37 +0100 | <Guest68> | To begin I want to load some config which includes config db creds |
2021-11-16 17:48:37 +0100 | <Guest68> | What is the best practice to do so |
2021-11-16 17:48:38 +0100 | <Guest68> | 1. create a config.json file read interpret it as a data type and pass it to server |
2021-11-16 17:48:38 +0100 | <Guest68> | 2. read each parameter from env variables and create a data type or map and pass it to the server |
2021-11-16 17:49:37 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:c480:7b03:c5d:3876) (Ping timeout: 265 seconds) |
2021-11-16 17:49:37 +0100 | Vajb | (~Vajb@nalkaylds2h97nzof-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer) |
2021-11-16 17:49:47 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2021-11-16 17:50:33 +0100 | <ocramz[m]> | @Guest68 I made a little utility package to embed environment variables into the binary itself https://hackage.haskell.org/package/include-env-0.4.0.0 . I use it for building on CI |
2021-11-16 17:50:33 +0100 | <lambdabot> | Unknown command, try @list |
2021-11-16 17:50:39 +0100 | EvanR | (~evan@user/evanr) |
2021-11-16 17:50:47 +0100 | <ocramz[m]> | s/@// |
2021-11-16 17:51:39 +0100 | moet | (~moet@mobile-166-171-251-187.mycingular.net) |
2021-11-16 17:51:56 +0100 | <ocramz[m]> | this requires you trust your CI agent. I use repo secrets, works well with github actions |
2021-11-16 17:52:25 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2021-11-16 17:52:35 +0100 | <Guest68> | Sounds cool I'll check it out .. |
2021-11-16 17:53:37 +0100 | <Guest68> | But wouldn't this be a problem if I dockerize the app |
2021-11-16 17:54:03 +0100 | <Guest68> | if it was env vars I could deploy from the same image to all envs |
2021-11-16 17:55:27 +0100 | <ocramz[m]> | where do you build your docker images? |
2021-11-16 17:57:10 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 17:57:28 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 17:57:44 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-11-16 17:57:49 +0100 | rkrishnan | (~user@122.167.19.65) (Ping timeout: 250 seconds) |
2021-11-16 17:58:28 +0100 | pfurla | (~pfurla@2804:14d:5c81:4104:8de2:1993:a832:eced) |
2021-11-16 17:59:17 +0100 | [itchyjunk] | (~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving) |
2021-11-16 17:59:39 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) |
2021-11-16 18:00:52 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 18:01:11 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 18:01:20 +0100 | <Guest68> | Oh I am learning |
2021-11-16 18:01:24 +0100 | <Guest68> | now locally |
2021-11-16 18:01:42 +0100 | <Guest68> | but eventually some CI pipeline |
2021-11-16 18:03:22 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 18:05:27 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) |
2021-11-16 18:05:35 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 18:06:53 +0100 | zincy_ | (~zincy@host86-181-60-139.range86-181.btcentralplus.com) |
2021-11-16 18:09:16 +0100 | <moet> | as a general rule, don't put secrets in env-vars .. any process on the same machine can read your secrets out of the env-vars |
2021-11-16 18:10:14 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
2021-11-16 18:11:22 +0100 | zincy_ | (~zincy@host86-181-60-139.range86-181.btcentralplus.com) (Ping timeout: 265 seconds) |
2021-11-16 18:11:39 +0100 | <Guest68> | Ok but what is the best way to do include creds |
2021-11-16 18:11:43 +0100 | <EvanR> | imagine sharing a machine with literal other users that you can't trust xD |
2021-11-16 18:14:19 +0100 | <Guest68> | embed to binary? |
2021-11-16 18:14:46 +0100 | <EvanR> | how many levels of paranoia are we on |
2021-11-16 18:14:57 +0100 | ubert | (~Thunderbi@2a02:8109:9880:303c:ca5b:76ff:fe29:f233) (Remote host closed the connection) |
2021-11-16 18:15:18 +0100 | <Guest68> | wont docker containers give enough isolation to prevent that |
2021-11-16 18:15:39 +0100 | mbuf | (~Shakthi@223.178.89.16) (Quit: Leaving) |
2021-11-16 18:15:49 +0100 | <Guest68> | And why would we share a machine with others we dont trust |
2021-11-16 18:16:49 +0100 | <EvanR> | if someone got access to any user at all, then you could be thinking of ways to mitigate the fallout of that |
2021-11-16 18:19:06 +0100 | son0p | (~ff@181.136.122.143) (Ping timeout: 265 seconds) |
2021-11-16 18:19:45 +0100 | MidAutumnMoon | (~MidAutumn@user/midautumnmoon) (Read error: Connection reset by peer) |
2021-11-16 18:19:48 +0100 | MidAutumnMoon6 | (~MidAutumn@user/midautumnmoon) |
2021-11-16 18:21:51 +0100 | Nolrai2 | (~Nolrai2@c-76-27-202-218.hsd1.or.comcast.net) (Quit: Client closed) |
2021-11-16 18:22:14 +0100 | tired | (~tired@user/tired) (Ping timeout: 268 seconds) |
2021-11-16 18:22:16 +0100 | tired- | (~tired@user/tired) |
2021-11-16 18:23:26 +0100 | <moet> | Guest68: the way this is done in larger companies is: after your production service starts up it requests credentials scoped to the task it needs to perform from some credentialing service.. there needs to be material provided to auth against the credentialing service, and the credentialing service should also look up the identity of the requester in a table, etc.. all of that might be too much for your use |
2021-11-16 18:23:32 +0100 | <moet> | case |
2021-11-16 18:24:13 +0100 | <moet> | Guest68: a simpler approach would be to have your deployment system provide the creds to the production service at startup, though instead of envvars or the cli, write them to stdin |
2021-11-16 18:24:27 +0100 | desantra | (~skykanin@user/skykanin) |
2021-11-16 18:25:51 +0100 | <Guest68> | something like aws secrets manager right? |
2021-11-16 18:25:52 +0100 | <Guest68> | So what about the creds for authenticating with thta service ? |
2021-11-16 18:26:06 +0100 | alzgh | (~alzgh@user/alzgh) (Ping timeout: 256 seconds) |
2021-11-16 18:26:33 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 268 seconds) |
2021-11-16 18:26:34 +0100 | <Guest68> | moet You mean giving them as arguments while running |
2021-11-16 18:27:46 +0100 | pfurla | (~pfurla@2804:14d:5c81:4104:8de2:1993:a832:eced) (Quit: gone to sleep. ZZZzzz…) |
2021-11-16 18:27:56 +0100 | <moet> | Guest68: the heavyweight approach is to give credentials after startup, the lightweight approach is to give credentials at startup, but never via envvars or cli |
2021-11-16 18:29:18 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) (Quit: WeeChat 3.3) |
2021-11-16 18:29:24 +0100 | <moet> | aws secrets manager falls into the heavyweight approach, but that's probably the right approach if you're building on aws.. if you're building on aws you can dictate access to secrets via the requester iam role |
2021-11-16 18:29:42 +0100 | enoq | (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq) |
2021-11-16 18:30:05 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection) |
2021-11-16 18:30:20 +0100 | emf | (~emf@2620:10d:c090:400::5:69fc) |
2021-11-16 18:31:23 +0100 | jpds | (~jpds@gateway/tor-sasl/jpds) |
2021-11-16 18:31:55 +0100 | <Guest68> | moet thank you |
2021-11-16 18:31:56 +0100 | <Guest68> | could you please elaborate a little on the lightweight approach |
2021-11-16 18:32:35 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 18:32:50 +0100 | alzgh | (alzgh@user/alzgh) |
2021-11-16 18:33:58 +0100 | deadmarshal | (~deadmarsh@95.38.114.190) |
2021-11-16 18:34:17 +0100 | <EvanR> | how do you provide the material the authenticate with the credentially service |
2021-11-16 18:34:36 +0100 | <EvanR> | oof |
2021-11-16 18:35:37 +0100 | Guest80 | (~Guest80@pd9ed79bf.dip0.t-ipconnect.de) (Quit: Client closed) |
2021-11-16 18:36:25 +0100 | <moet> | EvanR: you could embed a key in the binary or some other less secure path, but the point is that the credentialing service doesn't only use that data, it also checks a table using the identity of the requester .. this isn't foolproof.. if you want to go the really heavyweight approach, you'd have a TOFU key exchanged for an expiring key and the production service is responsible for continually updating the |
2021-11-16 18:36:26 +0100 | Guest80 | (~Guest80@pd9ed79bf.dip0.t-ipconnect.de) |
2021-11-16 18:36:31 +0100 | <moet> | expiring key forever |
2021-11-16 18:37:26 +0100 | burnsidesLlama | (~burnsides@dhcp168-035.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-11-16 18:37:34 +0100 | <moet> | Guest68: lightweight approach: on startup, your production service reads stdin; your deployment service starts your production service and then writes data to its stdin |
2021-11-16 18:37:52 +0100 | burnsidesLlama | (~burnsides@dhcp168-035.wadham.ox.ac.uk) |
2021-11-16 18:37:57 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-11-16 18:38:05 +0100 | <EvanR> | the more over engineered it is, the less I believe it's secure xD |
2021-11-16 18:38:07 +0100 | <moet> | it's hard to elaborate further because i don't know what deployment service you're using .. also, your deployment service should have documentation about how to provide secrets to your production service |
2021-11-16 18:38:25 +0100 | <moet> | EvanR: you're gonna be surprised when you take a look at encryption code <3 |
2021-11-16 18:38:39 +0100 | <moet> | s/surprised/horrified/g |
2021-11-16 18:39:26 +0100 | <EvanR> | steps taken in encryption are always for a good reason though, sort of another topic from configuring web apps |
2021-11-16 18:39:44 +0100 | burnside_ | (~burnsides@dhcp168-035.wadham.ox.ac.uk) |
2021-11-16 18:39:53 +0100 | burnsidesLlama | (~burnsides@dhcp168-035.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-11-16 18:39:53 +0100 | <moet> | sure |
2021-11-16 18:40:19 +0100 | <moet> | Guest68: if the stdin thing doesn't seem like it'll work, you could always use a file with permissions locked down, as long as you have a secure way to put the file in place |
2021-11-16 18:41:03 +0100 | <moet> | really, don't go nuts with this; the security precautions you take should reflect the risk of a breach.. if you're not risking anything, then you don't need to worry about this as much.. |
2021-11-16 18:42:08 +0100 | <maerwald> | You should at least follow IEC 62443 |
2021-11-16 18:46:20 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-16 18:48:23 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) |
2021-11-16 18:49:54 +0100 | mmhat | (~mmh@55d47041.access.ecotel.net) (Quit: WeeChat 3.3) |
2021-11-16 18:53:04 +0100 | dschrempf | (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 268 seconds) |
2021-11-16 18:53:30 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 18:54:58 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Remote host closed the connection) |
2021-11-16 18:56:24 +0100 | <maerwald> | is there a version of hp2ps that doesn't suck? (e.g. doesn't cut off half of the graph/legend) |
2021-11-16 18:57:01 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.3) |
2021-11-16 18:59:30 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 18:59:43 +0100 | <glguy> | maerwald: have you used this? https://hackage.haskell.org/package/hp2html |
2021-11-16 18:59:47 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 19:01:01 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) |
2021-11-16 19:02:38 +0100 | Guest68 | (~Guest68@2401:4900:1f2a:2065:285b:1f0c:e2ab:1175) (Quit: Client closed) |
2021-11-16 19:02:57 +0100 | fef | (~thedawn@user/thedawn) |
2021-11-16 19:03:30 +0100 | <maerwald> | it seems to leak memory... let's see if it finishes |
2021-11-16 19:04:13 +0100 | epolanski | (uid312403@helmsley.irccloud.com) |
2021-11-16 19:05:34 +0100 | gensyst | (gensyst@user/gensyst) |
2021-11-16 19:05:39 +0100 | <maerwald> | 27mb html file, let's see how that goes |
2021-11-16 19:05:44 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2021-11-16 19:05:56 +0100 | <gensyst> | Hi, how come Data.Finite (https://hackage.haskell.org/package/finite-typelits-0.1.4.2/docs/Data-Finite.html) has no monadic indexing? Is it someplace else or do I have to write my own utility func? |
2021-11-16 19:05:56 +0100 | <maerwald> | well, it doesn't: entirely broken page :D |
2021-11-16 19:06:12 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2021-11-16 19:06:17 +0100 | <gensyst> | (such a utility func would unwrap it and rewrap it..) |
2021-11-16 19:06:52 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2021-11-16 19:08:32 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 19:08:50 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 19:10:31 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 19:10:48 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 19:13:12 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 19:13:30 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 19:18:13 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Ping timeout: 256 seconds) |
2021-11-16 19:18:50 +0100 | drewolson | (~drewolson@user/drewolson) (Quit: Ping timeout (120 seconds)) |
2021-11-16 19:19:01 +0100 | drewolson | (~drewolson@user/drewolson) |
2021-11-16 19:19:36 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 276 seconds) |
2021-11-16 19:19:41 +0100 | FragByte | (~christian@user/fragbyte) (Ping timeout: 245 seconds) |
2021-11-16 19:20:01 +0100 | cfebs | (~cfebs@user/cfebs) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-11-16 19:20:06 +0100 | thaumavorio_ | (~thaumavor@thaumavor.io) (Ping timeout: 260 seconds) |
2021-11-16 19:20:21 +0100 | dragestil_ | (~znc@user/dragestil) |
2021-11-16 19:20:50 +0100 | dragestil | (~znc@user/dragestil) (Ping timeout: 246 seconds) |
2021-11-16 19:20:56 +0100 | eldritch | (~eldritch@user/eldritch/x-9272577) (Ping timeout: 245 seconds) |
2021-11-16 19:20:56 +0100 | Aleksejs | (~Aleksejs@haskell.lv) (Ping timeout: 245 seconds) |
2021-11-16 19:21:26 +0100 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) |
2021-11-16 19:21:46 +0100 | FragByte | (~christian@user/fragbyte) |
2021-11-16 19:22:02 +0100 | Aleksejs | (~Aleksejs@haskell.lv) |
2021-11-16 19:22:23 +0100 | dragestil_ | dragestil |
2021-11-16 19:22:23 +0100 | cfebs | (~cfebs@user/cfebs) |
2021-11-16 19:22:30 +0100 | gensyst | (gensyst@user/gensyst) (Quit: Leaving) |
2021-11-16 19:24:54 +0100 | Guest80 | (~Guest80@pd9ed79bf.dip0.t-ipconnect.de) (Quit: Client closed) |
2021-11-16 19:25:13 +0100 | eldritch_ | (~eldritch@user/eldritch/x-9272577) |
2021-11-16 19:25:36 +0100 | Guest80 | (~Guest80@pd9ed79bf.dip0.t-ipconnect.de) |
2021-11-16 19:25:55 +0100 | boxscape_ | (~boxscape_@i59F67A72.versanet.de) |
2021-11-16 19:26:05 +0100 | thaumavorio | (~thaumavor@thaumavor.io) |
2021-11-16 19:26:16 +0100 | <boxscape_> | Can i tell cabal to use a particular ghc executable rather than the one in path? |
2021-11-16 19:26:35 +0100 | <glguy> | boxscape_: -w |
2021-11-16 19:26:40 +0100 | <boxscape_> | thanks! |
2021-11-16 19:27:05 +0100 | mimmy | (~mimmy@146.70.75.156) (Ping timeout: 250 seconds) |
2021-11-16 19:27:36 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 19:27:56 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
2021-11-16 19:28:18 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) |
2021-11-16 19:28:21 +0100 | aegon | (~mike@174.127.249.180) |
2021-11-16 19:33:02 +0100 | econo | (uid147250@user/econo) |
2021-11-16 19:33:23 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 19:35:01 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 19:35:18 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 19:35:42 +0100 | <dminuoso> | 18:09:16 moet | as a general rule, don't put secrets in env-vars .. any process on the same machine can read your secrets out of the env-vars |
2021-11-16 19:35:46 +0100 | alzgh | (alzgh@user/alzgh) (Remote host closed the connection) |
2021-11-16 19:35:48 +0100 | <dminuoso> | This is grossly misleading. |
2021-11-16 19:36:08 +0100 | alzgh | (alzgh@user/alzgh) |
2021-11-16 19:36:13 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) |
2021-11-16 19:36:17 +0100 | <moet> | dminuoso: okay? |
2021-11-16 19:36:23 +0100 | <moet> | dminuoso: any more? :) |
2021-11-16 19:36:23 +0100 | <dminuoso> | On linux the only API you have to access this is via procfs, but /proc/$pid/environ has permissions matching the owner of the process. |
2021-11-16 19:36:43 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-11-16 19:36:45 +0100 | <dminuoso> | And if you have *that* much access, you can pretty much get access to its credentials anyway |
2021-11-16 19:36:55 +0100 | <dminuoso> | In other words: environment variables are perfectly safe. |
2021-11-16 19:36:55 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-16 19:38:27 +0100 | fef | (~thedawn@user/thedawn) (Ping timeout: 276 seconds) |
2021-11-16 19:38:28 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Remote host closed the connection) |
2021-11-16 19:39:22 +0100 | <dminuoso> | And arguably "credential manager" are a double edged sword. Poor security can result to a much larger leak, and now you have additional runtime dependencies on services and on networking. |
2021-11-16 19:39:31 +0100 | <boxscape_> | You love to see it: "Could not deduce (Braided JSFunc (Product JSFunc)) from the context: Braided JSFunc (Product JSFunc)" |
2021-11-16 19:40:19 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-11-16 19:40:33 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-16 19:40:41 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2021-11-16 19:40:46 +0100 | <boxscape_> | (problem is invisible kind arguments are different) |
2021-11-16 19:41:02 +0100 | <dminuoso> | And it dramatically increases the security implications, since if you have wide spread credentials, are they all accessible via a singular host? |
2021-11-16 19:41:34 +0100 | <EvanR> | all your eggs in one basket / are belong to us |
2021-11-16 19:42:05 +0100 | ChanServ | +o litharge |
2021-11-16 19:42:05 +0100 | litharge | -bo *!*@*user/john-ivan/x-1515935 litharge |
2021-11-16 19:42:23 +0100 | Everything | (~Everythin@37.115.210.35) (Quit: leaving) |
2021-11-16 19:43:23 +0100 | <dminuoso> | And then you quickly get to the point "why do we want another poor reimplementation of kerberos, when you should be using kerberos instead" |
2021-11-16 19:43:33 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
2021-11-16 19:44:22 +0100 | <dminuoso> | Or having all your services depend on an additional network path/firewall/routers/hypervisor/VM/credential service to potentially come up. If that service goes down, how much of your infrastructure will follow? |
2021-11-16 19:45:06 +0100 | dminuoso | finds it ridiculous how some people overengineer |
2021-11-16 19:49:12 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2021-11-16 19:51:16 +0100 | fef | (~thedawn@user/thedawn) |
2021-11-16 19:51:21 +0100 | xff0x | (~xff0x@2001:1a81:5330:8c00:7ee9:82eb:bec8:3505) (Ping timeout: 250 seconds) |
2021-11-16 19:51:41 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) |
2021-11-16 19:52:17 +0100 | xff0x | (~xff0x@port-92-195-74-242.dynamic.as20676.net) |
2021-11-16 19:54:16 +0100 | mimmy | (~mimmy@146.70.75.158) |
2021-11-16 19:55:34 +0100 | deadmarshal | (~deadmarsh@95.38.114.190) (Ping timeout: 260 seconds) |
2021-11-16 19:57:18 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 19:57:36 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 19:57:40 +0100 | jespada | (~jespada@252-155-231-201.fibertel.com.ar) |
2021-11-16 19:58:19 +0100 | eruditass | (uid248673@uxbridge.irccloud.com) |
2021-11-16 19:59:00 +0100 | mimmy | (~mimmy@146.70.75.158) (Ping timeout: 256 seconds) |
2021-11-16 19:59:03 +0100 | Guest42 | (~Guest42@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed) |
2021-11-16 19:59:25 +0100 | <moet> | dminuoso: fwiw, i recommended that Guest68 not overengineer it and suggested two lightweight approaches |
2021-11-16 19:59:40 +0100 | <dminuoso> | moet: Absolutely. |
2021-11-16 20:00:05 +0100 | <dminuoso> | That wasn't really meant as criticsm towards you |
2021-11-16 20:01:45 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 20:01:50 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-11-16 20:02:04 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 20:02:16 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Remote host closed the connection) |
2021-11-16 20:03:15 +0100 | fef | (~thedawn@user/thedawn) (Remote host closed the connection) |
2021-11-16 20:03:37 +0100 | desantra | (~skykanin@user/skykanin) (Quit: WeeChat 3.3) |
2021-11-16 20:03:51 +0100 | fef | (~thedawn@user/thedawn) |
2021-11-16 20:05:48 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 20:05:55 +0100 | max22- | (~maxime@2a01cb0883359800502e2c31bca551ab.ipv6.abo.wanadoo.fr) (Ping timeout: 265 seconds) |
2021-11-16 20:06:06 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 20:07:46 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 20:08:03 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) |
2021-11-16 20:09:02 +0100 | unit73e | (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) |
2021-11-16 20:10:18 +0100 | fef | (~thedawn@user/thedawn) (Ping timeout: 276 seconds) |
2021-11-16 20:11:11 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-16 20:11:13 +0100 | Guest80 | (~Guest80@pd9ed79bf.dip0.t-ipconnect.de) (Quit: Client closed) |
2021-11-16 20:11:58 +0100 | Guest80 | (~Guest80@pd9ed79bf.dip0.t-ipconnect.de) |
2021-11-16 20:13:12 +0100 | jkhs | (~jkhs@94-255-217-215.cust.bredband2.com) (Remote host closed the connection) |
2021-11-16 20:13:27 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 250 seconds) |
2021-11-16 20:14:10 +0100 | mimmy | (~mimmy@146.70.75.158) |
2021-11-16 20:15:37 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 250 seconds) |
2021-11-16 20:16:07 +0100 | asivitz | (uid178348@tinside.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-16 20:17:36 +0100 | pfurla | (~pfurla@2804:14d:5c81:4104:8de2:1993:a832:eced) |
2021-11-16 20:21:11 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) |
2021-11-16 20:23:19 +0100 | desantra | (~skykanin@user/skykanin) |
2021-11-16 20:42:10 +0100 | max22- | (~maxime@2a01cb0883359800fa2f4e7c9f6204ba.ipv6.abo.wanadoo.fr) |
2021-11-16 20:42:47 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) |
2021-11-16 20:43:50 +0100 | Guest42 | (~Guest42@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
2021-11-16 20:46:03 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-16 20:50:27 +0100 | kupi | (uid212005@hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-16 20:50:52 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 265 seconds) |
2021-11-16 21:02:00 +0100 | <moet> | totally. and you're totally right that awsthings are easy to misuse and create gaping security holes.. thanks for pointing out the thing about /proc/$pid/environ .. now I want to follow up with the people who taught me this and figure out what they were referring to |
2021-11-16 21:02:51 +0100 | <monochrom> | Perhaps a long long time ago in a unix version far far away it was true. |
2021-11-16 21:03:08 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection) |
2021-11-16 21:03:50 +0100 | <monochrom> | You should still check it on Solaris, Mac, various BSDs, etc. |
2021-11-16 21:04:20 +0100 | <monochrom> | But the over-arching lesson is: check before speaking up. |
2021-11-16 21:04:45 +0100 | Guest80 | (~Guest80@pd9ed79bf.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
2021-11-16 21:05:05 +0100 | <monochrom> | You would be surprised how many conventional wisdoms are outdated or even prejudiced. |
2021-11-16 21:05:39 +0100 | juhp | (~juhp@128.106.188.82) (Ping timeout: 268 seconds) |
2021-11-16 21:06:11 +0100 | pop3 | (~pop3@user/pop3) (Remote host closed the connection) |
2021-11-16 21:06:43 +0100 | juhp | (~juhp@128.106.188.82) |
2021-11-16 21:06:52 +0100 | pop3 | (~pop3@user/pop3) |
2021-11-16 21:08:29 +0100 | <monochrom> | Even I am surprised once in a while, e.g., https://mail.haskell.org/pipermail/haskell-cafe/2013-April/107775.html |
2021-11-16 21:10:00 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2021-11-16 21:11:39 +0100 | moet | (~moet@mobile-166-171-251-187.mycingular.net) (Ping timeout: 265 seconds) |
2021-11-16 21:15:59 +0100 | <boxscape_> | is there a way to refer to (%1 ->) with LinearHaskell just like how you can refer to (->) for regular functions usually? |
2021-11-16 21:16:03 +0100 | <boxscape_> | that particular syntax doesn't seem to wkr |
2021-11-16 21:16:03 +0100 | <Rembane_> | monochrom: That's so good. |
2021-11-16 21:16:08 +0100 | <boxscape_> | s/wkr/work |
2021-11-16 21:16:33 +0100 | <boxscape_> | oh I suppose maybe I have to use FUN from GHC.Exts |
2021-11-16 21:16:43 +0100 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 250 seconds) |
2021-11-16 21:17:27 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Remote host closed the connection) |
2021-11-16 21:17:53 +0100 | <boxscape_> | s/GHC.Exts/Data.Kind |
2021-11-16 21:18:42 +0100 | moet | (~moet@mobile-166-171-249-243.mycingular.net) |
2021-11-16 21:20:59 +0100 | myShoggoth | (~myShoggot@97-120-85-195.ptld.qwest.net) |
2021-11-16 21:21:24 +0100 | kuribas | (~user@ptr-25vy0i87u19ttsdwrve.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
2021-11-16 21:21:41 +0100 | kaizen | (sid501599@helmsley.irccloud.com) (Ping timeout: 268 seconds) |
2021-11-16 21:22:16 +0100 | <boxscape_> | yeah that works |
2021-11-16 21:22:17 +0100 | mimmy | (~mimmy@146.70.75.158) (Ping timeout: 265 seconds) |
2021-11-16 21:22:33 +0100 | kaizen | (sid501599@helmsley.irccloud.com) |
2021-11-16 21:25:35 +0100 | burnside_ | (~burnsides@dhcp168-035.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-11-16 21:27:15 +0100 | nvmd | (~nvmd@user/nvmd) (Quit: Later, nerds.) |
2021-11-16 21:28:19 +0100 | pavonia | (~user@user/siracusa) |
2021-11-16 21:28:52 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) |
2021-11-16 21:31:02 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-16 21:31:02 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-16 21:31:02 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-16 21:31:33 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2021-11-16 21:31:53 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Ping timeout: 250 seconds) |
2021-11-16 21:33:04 +0100 | carter | (sid14827@helmsley.irccloud.com) (Ping timeout: 256 seconds) |
2021-11-16 21:34:31 +0100 | carter | (sid14827@helmsley.irccloud.com) |
2021-11-16 21:34:46 +0100 | nrr__ | (sid20938@lymington.irccloud.com) (Ping timeout: 256 seconds) |
2021-11-16 21:36:09 +0100 | nrr__ | (sid20938@lymington.irccloud.com) |
2021-11-16 21:36:18 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
2021-11-16 21:36:51 +0100 | <boxscape_> | Am I seeing this right that I cannot have {-# OVERLAPPING #-} instances for classes with associated types, because GHC would always complain about conflicting family instance declarations? |
2021-11-16 21:37:06 +0100 | <boxscape_> | (i.e. I would have to make it a non-associated type family?) |
2021-11-16 21:37:45 +0100 | <c_wraith> | Well, you can't create conflicting type families. Doesn't matter whether you put them inside a class or not. |
2021-11-16 21:38:03 +0100 | <boxscape_> | but GHC won't let me compile it :( |
2021-11-16 21:38:09 +0100 | <boxscape_> | oh wait |
2021-11-16 21:38:12 +0100 | <boxscape_> | I thought you wrote "can" |
2021-11-16 21:38:37 +0100 | <boxscape_> | I know I can't do it anyway, it's just that the type family instances happen to match for the overlapping and the overlapped instance |
2021-11-16 21:38:46 +0100 | <boxscape_> | so separating it out would work in this case, I think |
2021-11-16 21:43:08 +0100 | EvanR | (~evan@user/evanr) (Quit: Leaving) |
2021-11-16 21:46:28 +0100 | werner100 | (~werner100@2601:2c2:400:4440:517c:b3d6:3517:bdd4) |
2021-11-16 21:48:59 +0100 | mimmy | (~mimmy@146.70.75.156) |
2021-11-16 21:49:48 +0100 | jmorris | (uid433911@hampstead.irccloud.com) |
2021-11-16 21:54:06 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) |
2021-11-16 21:54:17 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) |
2021-11-16 21:55:35 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) (Client Quit) |
2021-11-16 21:56:12 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) |
2021-11-16 21:56:31 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) |
2021-11-16 21:56:35 +0100 | neurocyte0132889 | (~neurocyte@user/neurocyte) (Ping timeout: 250 seconds) |
2021-11-16 21:58:30 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-11-16 22:01:26 +0100 | yauhsien | (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 265 seconds) |
2021-11-16 22:02:30 +0100 | desantra | (~skykanin@user/skykanin) (Quit: WeeChat 3.3) |
2021-11-16 22:03:11 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) |
2021-11-16 22:04:20 +0100 | rond_ | (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) |
2021-11-16 22:05:36 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection) |
2021-11-16 22:05:54 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) |
2021-11-16 22:07:38 +0100 | eruditass | (uid248673@uxbridge.irccloud.com) (Ping timeout: 256 seconds) |
2021-11-16 22:07:38 +0100 | obviyus | (sid415299@user/obviyus) (Ping timeout: 256 seconds) |
2021-11-16 22:07:58 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) |
2021-11-16 22:08:32 +0100 | obviyus | (sid415299@user/obviyus) |
2021-11-16 22:09:21 +0100 | eruditass | (uid248673@uxbridge.irccloud.com) |
2021-11-16 22:10:40 +0100 | coolnickname | (~omg@user/coolnickname) |
2021-11-16 22:11:32 +0100 | jespada | (~jespada@252-155-231-201.fibertel.com.ar) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2021-11-16 22:16:16 +0100 | eruditass | (uid248673@uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2021-11-16 22:16:43 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2021-11-16 22:18:53 +0100 | burnsidesLlama | (~burnsides@dhcp168-035.wadham.ox.ac.uk) |
2021-11-16 22:22:14 +0100 | werner100 | (~werner100@2601:2c2:400:4440:517c:b3d6:3517:bdd4) (Quit: Ping timeout (120 seconds)) |
2021-11-16 22:23:25 +0100 | zincy_ | (~zincy@2a00:23c8:970c:4801:78f3:43f3:fd48:5ac3) (Remote host closed the connection) |
2021-11-16 22:23:53 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-16 22:23:53 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-16 22:23:53 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-16 22:24:34 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset) |
2021-11-16 22:26:46 +0100 | jurjen | (~jurjen@62-133-96-120.mobile.kpn.net) |
2021-11-16 22:27:02 +0100 | zincy_ | (~zincy@host86-181-60-139.range86-181.btcentralplus.com) |
2021-11-16 22:28:14 +0100 | troydm | (~troydm@host-176-37-124-197.b025.la.net.ua) |
2021-11-16 22:32:07 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
2021-11-16 22:32:51 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-11-16 22:35:54 +0100 | lavaman | (~lavaman@98.38.249.169) |
2021-11-16 22:36:56 +0100 | son0p | (~ff@181.136.122.143) |
2021-11-16 22:38:52 +0100 | Pickchea | (~private@user/pickchea) |
2021-11-16 22:40:30 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2021-11-16 22:42:45 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2021-11-16 22:49:29 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-11-16 22:49:29 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host) |
2021-11-16 22:49:29 +0100 | wroathe | (~wroathe@user/wroathe) |
2021-11-16 22:54:07 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 265 seconds) |
2021-11-16 22:56:23 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 250 seconds) |
2021-11-16 22:59:38 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:85c4:4386:63fc:8e9) (Remote host closed the connection) |
2021-11-16 22:59:38 +0100 | jurjen | (~jurjen@62-133-96-120.mobile.kpn.net) (Read error: Connection reset by peer) |
2021-11-16 23:00:38 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2021-11-16 23:03:11 +0100 | <__monty__> | Has anyone written up the potential for confusion of $? |
2021-11-16 23:03:18 +0100 | pop3 | (~pop3@user/pop3) (Remote host closed the connection) |
2021-11-16 23:04:00 +0100 | <dsal> | :t ($?) |
2021-11-16 23:04:01 +0100 | <lambdabot> | error: |
2021-11-16 23:04:01 +0100 | <lambdabot> | • Variable not in scope: $? |
2021-11-16 23:04:01 +0100 | <lambdabot> | • Perhaps you meant one of these: |
2021-11-16 23:04:57 +0100 | <monochrom> | I think it would be just one short sentence. |
2021-11-16 23:05:17 +0100 | <monochrom> | I mean, if there were any confusion in the first place. |
2021-11-16 23:05:32 +0100 | <dsal> | What is the confusion? |
2021-11-16 23:05:49 +0100 | <int-e> | ($) is just an ordinary infix operator |
2021-11-16 23:06:02 +0100 | <int-e> | `otherwise` is a Prelude function defined as True |
2021-11-16 23:06:36 +0100 | <int-e> | what other things do we have that could be mistaken for syntax but really aren't? |
2021-11-16 23:06:38 +0100 | <dsal> | `otherwise` has confused me a few times. |
2021-11-16 23:06:41 +0100 | <geekosaur> | newcomers often get confused about (.) vs. ($)? |
2021-11-16 23:07:22 +0100 | <int-e> | newcomers need to learn about types |
2021-11-16 23:07:27 +0100 | <int-e> | so... that's expected |
2021-11-16 23:07:51 +0100 | <dsal> | I find people tend to just put $ everywhere because it often does what they expect as a `(` kind of thing. |
2021-11-16 23:07:52 +0100 | <monochrom> | To be sure, I speak against overused of ($) too, but the root issue is people going out of their way to hate parentheses, and digging deeper, people going out of their way to hate math. If ($) didn't exist, people would still find other ways to hate math (and they do). |
2021-11-16 23:08:08 +0100 | <dsal> | I just hate money. |
2021-11-16 23:08:16 +0100 | <int-e> | @src ($) |
2021-11-16 23:08:16 +0100 | <lambdabot> | f $ x = f x |
2021-11-16 23:08:55 +0100 | <maerwald> | monochrom: people also think using lambdas (the core of our language) is uncool |
2021-11-16 23:11:07 +0100 | mimmy | (~mimmy@146.70.75.156) (Ping timeout: 250 seconds) |
2021-11-16 23:11:36 +0100 | <monochrom> | Regarding being confused about (.) vs ($): I see that as comparable to math newcomers confusing "x*(y+z) = x*y + x*z" with "sqrt(y+z) = sqrt(y) + sqrt(z)", too. Does that mean the former is confusing, therefore we should just never teach distributivity, period? |
2021-11-16 23:11:40 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish) |
2021-11-16 23:12:41 +0100 | <monochrom> | People always look for oversimplifications to comfort themselves. They will always confused by facts. |
2021-11-16 23:13:40 +0100 | Axman6 | needs to remember to return otherwise more often, and also use it as a binder name sometimes |
2021-11-16 23:14:23 +0100 | <geekosaur> | meh. we're writing haskell, not perl |
2021-11-16 23:14:36 +0100 | mc47 | (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
2021-11-16 23:19:11 +0100 | burnsidesLlama | (~burnsides@dhcp168-035.wadham.ox.ac.uk) (Remote host closed the connection) |
2021-11-16 23:19:34 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) |
2021-11-16 23:19:43 +0100 | burnsidesLlama | (~burnsides@client-8-84.eduroam.oxuni.org.uk) |
2021-11-16 23:20:12 +0100 | Midjak | (~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep) |
2021-11-16 23:21:55 +0100 | <dsal> | The thing that's a little confusing about operators is that their precedence is invisible. |
2021-11-16 23:22:27 +0100 | <maerwald> | if unsure about precedence, use ($) :D |
2021-11-16 23:24:05 +0100 | burnsidesLlama | (~burnsides@client-8-84.eduroam.oxuni.org.uk) (Ping timeout: 265 seconds) |
2021-11-16 23:26:46 +0100 | <int-e> | > ((succ $ 2) + (pred $ 3)) |
2021-11-16 23:26:47 +0100 | <lambdabot> | 5 |
2021-11-16 23:27:02 +0100 | <int-e> | (better safe than sorry) |
2021-11-16 23:27:38 +0100 | <monochrom> | > (((succ) $ (2)) + ((pred) $ (3))) -- really, really safe >:) |
2021-11-16 23:27:39 +0100 | <lambdabot> | 5 |
2021-11-16 23:27:56 +0100 | <hpc> | this is why i always write ((-)1) instead of (-1) |
2021-11-16 23:28:06 +0100 | <monochrom> | heh |
2021-11-16 23:28:15 +0100 | <kronicmage> | int-e: "($) is just an infix operator" I thought there was special casing for higher rank types? |
2021-11-16 23:28:20 +0100 | <monochrom> | But you should write ((-) (1)) >:) |
2021-11-16 23:28:35 +0100 | <kronicmage> | So you can't actually define your own ($) that works the same way |
2021-11-16 23:28:48 +0100 | <hpc> | ((-) ( ) (1)), just to be sure |
2021-11-16 23:29:04 +0100 | <monochrom> | haha that's the best |
2021-11-16 23:29:24 +0100 | <janus> | kronicmage: the workaround has been removed with the new quick look impredicativity i think? |
2021-11-16 23:29:48 +0100 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 256 seconds) |
2021-11-16 23:29:51 +0100 | <int-e> | kronicmage: Yes there is an ad-hoc hack that makes runST $ foo work |
2021-11-16 23:30:02 +0100 | <janus> | int-e: even in 9.2? why? |
2021-11-16 23:30:05 +0100 | <geekosaur> | supposedly the only part that remains is that ($) is alway simpredicative |
2021-11-16 23:30:06 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2021-11-16 23:30:26 +0100 | <int-e> | janus: Sorry I checked 8.10.7 |
2021-11-16 23:31:48 +0100 | michalz | (~michalz@185.246.204.41) (Remote host closed the connection) |
2021-11-16 23:32:07 +0100 | <int-e> | And now 9.0.1 as well... |
2021-11-16 23:32:24 +0100 | <int-e> | 9.2 is way too new :P |
2021-11-16 23:32:47 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 250 seconds) |
2021-11-16 23:33:51 +0100 | <hpc> | maybe a dependent-typed ($) will fix runST |
2021-11-16 23:33:59 +0100 | <hpc> | just wait for ghc 10 |
2021-11-16 23:36:06 +0100 | mimmy | (~mimmy@146.70.75.156) |
2021-11-16 23:36:42 +0100 | <maerwald> | hpc: hopefully we'll get the long awaited No-Neq patch by then |
2021-11-16 23:37:11 +0100 | jkaye | (~jkaye@BELVEDERE-T.ear2.Denver1.Level3.net) (Quit: Leaving) |
2021-11-16 23:38:54 +0100 | alzgh | (alzgh@user/alzgh) (Remote host closed the connection) |
2021-11-16 23:39:15 +0100 | alzgh | (alzgh@user/alzgh) |
2021-11-16 23:41:11 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish) |
2021-11-16 23:45:17 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
2021-11-16 23:46:15 +0100 | alzgh | (alzgh@user/alzgh) (Ping timeout: 256 seconds) |
2021-11-16 23:47:14 +0100 | <monochrom> | No-Neq is a little bit of witch-hunting IMO. Although, it's a pretty small issue either way, so I won't make a big fuss about it. |
2021-11-16 23:47:47 +0100 | <monochrom> | But if they try to apply the same thinking to the "redundant" methods of Ord, now that will be very alarming. |
2021-11-16 23:47:47 +0100 | Flonk | (~Flonk@vps-zap441517-1.zap-srv.com) (Remote host closed the connection) |
2021-11-16 23:48:08 +0100 | <maerwald> | No-Neq is irrelevant as a proposal |
2021-11-16 23:48:16 +0100 | <maerwald> | but the discussion is relevant |
2021-11-16 23:48:31 +0100 | <monochrom> | Yeah that's true. |
2021-11-16 23:48:41 +0100 | johnny_sitar | (~artur@078088015209.bialystok.vectranet.pl) |
2021-11-16 23:48:59 +0100 | <maerwald> | Not that I envy the CLC stepping into that discussion on their first decision, haha |
2021-11-16 23:49:32 +0100 | cosimone | (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Quit: ERC (IRC client for Emacs 27.1)) |
2021-11-16 23:49:54 +0100 | <maerwald> | like on a landmine |
2021-11-16 23:50:19 +0100 | <maerwald> | "this probably won't be controversial..." |
2021-11-16 23:50:23 +0100 | alzgh | (~alzgh@user/alzgh) |
2021-11-16 23:50:24 +0100 | <unit73e> | I need to simplify this: https://paste.tomsmeding.com/iDgRrIMF |
2021-11-16 23:50:32 +0100 | <unit73e> | all that occurs to me is mapAccumR |
2021-11-16 23:50:41 +0100 | <[exa]> | wth, like removing /= from the typeclass? |
2021-11-16 23:51:03 +0100 | <monochrom> | Oh, every ideology believer also believes that their ideology is uncontroverial. |
2021-11-16 23:51:04 +0100 | <hpc> | we should save our brainpower for more important proposals, like (<>) = getLine like every other sane language has |
2021-11-16 23:51:50 +0100 | <monochrom> | Yes I'm saying that No-Neq is driven by ideology. It's why I conclude that it's witch-hunting. |
2021-11-16 23:52:07 +0100 | <monochrom> | haha hpc |
2021-11-16 23:52:32 +0100 | <monochrom> | Yes [exa]. |
2021-11-16 23:53:07 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2021-11-16 23:53:31 +0100 | <[exa]> | actually in hs you lose functionality if you remove either of == or /= right? (for partial results) |
2021-11-16 23:53:49 +0100 | <[exa]> | s/partial results/non-total comparisons) |
2021-11-16 23:55:44 +0100 | TheCoffeMaker | (~TheCoffeM@user/thecoffemaker) |
2021-11-16 23:56:24 +0100 | <unit73e> | nvm I was being dumb, as usual |
2021-11-16 23:57:08 +0100 | <int-e> | janus: 9.2 does the same thing (runST $ return () type-checks; replacing $ by a custom operator doesn't) |
2021-11-16 23:57:08 +0100 | Pickchea | (~private@user/pickchea) (Remote host closed the connection) |
2021-11-16 23:57:33 +0100 | <int-e> | (that's without enabling any extra extensions) |