Home liberachat/#haskell: Logs Calendar

Logs on 2021-08-24 (liberachat/#haskell)

00:24:43 × d0ku quits (~d0ku@178.43.56.75.ipv4.supernova.orange.pl) (Ping timeout: 250 seconds)
00:27:38 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
00:27:53 juhp joins (~juhp@128.106.188.220)
00:31:17 × xlei quits (znc@pool-68-129-84-118.nycmny.fios.verizon.net) (Quit: ZNC - https://znc.in)
00:32:05 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds)
00:35:17 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:35:40 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
00:36:30 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
00:36:40 × tommd quits (~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 240 seconds)
00:37:20 × jespada quits (~jespada@90.254.247.46) (Ping timeout: 258 seconds)
00:39:06 xlei joins (znc@pool-68-129-84-118.nycmny.fios.verizon.net)
00:40:01 × shailangsa quits (~shailangs@host86-186-136-25.range86-186.btcentralplus.com) (Ping timeout: 248 seconds)
00:40:03 lavaman joins (~lavaman@98.38.249.169)
00:41:24 × aegon quits (~mike@174.127.249.180) (Quit: leaving)
00:42:21 jespada joins (~jespada@90.254.245.194)
00:48:11 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
00:53:40 × urdh quits (~urdh@user/urdh) (Ping timeout: 240 seconds)
00:57:46 × cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
01:00:52 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
01:01:21 cjb joins (~cjb@user/cjb)
01:04:18 urdh joins (~urdh@user/urdh)
01:12:17 Nosrep joins (~archbox@user/nosrep)
01:12:56 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
01:16:34 shailangsa joins (~shailangs@host86-185-102-120.range86-185.btcentralplus.com)
01:20:50 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Remote host closed the connection)
01:22:33 × alx741 quits (~alx741@181.196.68.94) (Quit: alx741)
01:23:14 × Guest86 quits (~Guest86@68.233.176.29) (Quit: Client closed)
01:29:44 tommd joins (~tommd@75-164-130-101.ptld.qwest.net)
01:30:45 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
01:31:02 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:37:31 lavaman joins (~lavaman@98.38.249.169)
01:42:43 × xff0x quits (~xff0x@2001:1a81:52f9:3300:b601:7649:8935:742b) (Ping timeout: 250 seconds)
01:44:22 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
01:44:40 xff0x joins (~xff0x@2001:1a81:5333:b100:e90f:35ab:1ea2:78fd)
01:45:17 × dsrt^ quits (~dsrt@12.16.129.111) (Remote host closed the connection)
01:46:34 dsrt^ joins (~dsrt@12.16.129.111)
01:47:29 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds)
01:48:00 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2)
01:54:41 × dsrt^ quits (~dsrt@12.16.129.111) (Remote host closed the connection)
01:56:28 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
01:56:33 × notzmv quits (~zmv@user/notzmv) (Read error: Connection reset by peer)
01:59:51 notzmv joins (~zmv@user/notzmv)
02:00:38 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Remote host closed the connection)
02:01:10 × tommd quits (~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 240 seconds)
02:01:13 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Read error: Connection reset by peer)
02:01:26 dsrt^ joins (~dsrt@12.16.129.111)
02:01:51 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
02:03:48 tommd joins (~tommd@75-164-130-101.ptld.qwest.net)
02:05:10 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
02:06:26 × dsrt^ quits (~dsrt@12.16.129.111) (Ping timeout: 250 seconds)
02:08:57 Erutuon joins (~Erutuon@user/erutuon)
02:13:30 dsrt^ joins (~dsrt@12.16.129.111)
02:15:58 × favonia quits (~favonia@user/favonia) (Ping timeout: 250 seconds)
02:19:18 notzmv is now known as zimmybot
02:19:25 zimmybot is now known as notzmv
02:19:27 × tommd quits (~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 240 seconds)
02:20:46 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
02:21:10 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 252 seconds)
02:22:59 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:27:28 favonia joins (~favonia@user/favonia)
02:37:40 × td_ quits (~td@94.134.91.226) (Ping timeout: 240 seconds)
02:39:50 td_ joins (~td@94.134.91.225)
02:47:54 × abrantesasf quits (~abrantesa@2804:14d:b086:4b3c:2e56:dcff:fedb:62f) (Quit: Leaving)
02:53:48 ikex1 joins (ash@user/ikex)
02:57:08 × ikex quits (~ash@user/ikex) (Ping timeout: 250 seconds)
02:57:09 ikex1 is now known as ikex
03:00:10 × bontaq quits (~user@ool-18e47f8d.dyn.optonline.net) (Ping timeout: 250 seconds)
03:17:27 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
03:18:44 × thornAvery quits (~thorn@137.147.64.16) (Quit: WeeChat 3.2)
03:21:40 × otto_s quits (~user@p4ff270c5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
03:22:03 × notzmv quits (~zmv@user/notzmv) (Remote host closed the connection)
03:23:16 otto_s joins (~user@p5de2f618.dip0.t-ipconnect.de)
03:28:09 notzmv joins (~zmv@user/notzmv)
03:28:53 keutoi joins (~keutoi@157.48.145.7)
03:35:07 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds)
03:39:00 elf_fortrez joins (~elf_fortr@adsl-72-50-7-12.prtc.net)
03:49:49 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
04:00:33 × keutoi quits (~keutoi@157.48.145.7) (Ping timeout: 248 seconds)
04:00:59 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:07:53 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
04:11:17 × Guest2290 quits (~chris@81.96.113.213) (Remote host closed the connection)
04:15:06 × bbear quits (~znc@21212.s.t4vps.eu) (Quit: ZNC 1.7.4 - https://znc.in)
04:15:20 bbear joins (~znc@21212.s.t4vps.eu)
04:16:28 chris joins (~chris@81.96.113.213)
04:16:32 chris is now known as Guest8132
04:19:33 sjb0 joins (~stephen@2001:8004:5170:3b13:8c1d:1f1c:70aa:a42e)
04:20:30 mei joins (~mei@user/mei)
04:20:46 × Guest8132 quits (~chris@81.96.113.213) (Ping timeout: 250 seconds)
04:21:47 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
04:23:05 keutoi joins (~keutoi@157.47.104.135)
04:23:57 thornAvery joins (~Thorn@2401:c080:1800:4346:5400:3ff:fe2c:c8f8)
04:24:35 × haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
04:24:49 haykam joins (~haykam@static.100.2.21.65.clients.your-server.de)
04:32:04 × aman quits (~aman@user/aman) (Ping timeout: 252 seconds)
04:35:04 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
04:44:04 aman joins (~aman@user/aman)
04:48:25 × cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
04:49:48 vysn joins (~vysn@user/vysn)
04:55:14 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 272 seconds)
04:55:30 Maxdamantus joins (~Maxdamant@user/maxdamantus)
05:01:27 falafel joins (~falafel@2601:280:4e00:9970:69e8:224d:d22f:fb15)
05:04:38 × elf_fortrez quits (~elf_fortr@adsl-72-50-7-12.prtc.net) (Quit: Client closed)
05:05:05 × favonia quits (~favonia@user/favonia) (Ping timeout: 250 seconds)
05:05:24 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
05:07:38 falafel_ joins (~falafel@2601:280:4e00:9970:69e8:224d:d22f:fb15)
05:09:47 × batch12 quits (~user@192.152.118.97) (Ping timeout: 240 seconds)
05:10:01 × epolanski quits (uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
05:10:43 × falafel quits (~falafel@2601:280:4e00:9970:69e8:224d:d22f:fb15) (Ping timeout: 250 seconds)
05:20:34 slack1256 joins (~slack1256@181.203.9.71)
05:22:51 slack1256[m] joins (~slack1256@2001:470:69fc:105::e068)
05:23:04 slack1256[m] parts (~slack1256@2001:470:69fc:105::e068) ()
05:34:59 × benin036932 quits (~benin@183.82.178.142) (Ping timeout: 250 seconds)
05:39:19 × slack1256 quits (~slack1256@181.203.9.71) (Ping timeout: 250 seconds)
05:44:51 × vysn quits (~vysn@user/vysn) (Remote host closed the connection)
05:45:03 <talismanick> Does GHC play nice with distcc?
05:45:37 <talismanick> (I have several mediocre laptops on hand, and no beefy server to handle long compiles)
05:45:51 <Axman6> Since it manages it own scheduling I would be surprised if it did, you would have to work to set that up I would believe
05:46:36 <talismanick> Or ccache, for that matter
05:52:04 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
05:52:46 chris joins (~chris@81.96.113.213)
05:52:49 chris is now known as Guest3531
05:55:39 vysn joins (~vysn@user/vysn)
05:57:25 ubert joins (~Thunderbi@91.141.36.16.wireless.dyn.drei.com)
06:14:15 elf_fortrezz joins (~elf_fortr@adsl-72-50-6-135.prtc.net)
06:14:23 × shriekingnoise quits (~shrieking@186.137.144.80) (Read error: Connection reset by peer)
06:18:06 jakalx parts (~jakalx@base.jakalx.net) ()
06:18:51 Gurkenglas joins (~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de)
06:22:36 × elf_fortrezz quits (~elf_fortr@adsl-72-50-6-135.prtc.net) (Quit: Client closed)
06:25:25 jakalx joins (~jakalx@base.jakalx.net)
06:30:57 × azeem quits (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 248 seconds)
06:31:38 azeem joins (~azeem@176.201.15.223)
06:31:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:33:26 × azeem quits (~azeem@176.201.15.223) (Read error: Connection reset by peer)
06:33:39 azeem joins (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
06:34:56 lortabac joins (~lortabac@62.98.34.238)
06:44:19 × falafel_ quits (~falafel@2601:280:4e00:9970:69e8:224d:d22f:fb15) (Ping timeout: 250 seconds)
06:52:24 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
06:56:11 mc47 joins (~mc47@xmonad/TheMC47)
06:56:32 <arahael> My yesod webserver suddenly runs out of file handles after I run it for a few days. Any tips or suggestions I should be aware of to help identify the culprit?
06:56:46 <arahael> I'm not deliberately opening or closing files, except for a single .tar.gz file at the very start.
06:57:17 timCF joins (~timCF@m91-129-108-244.cust.tele2.ee)
06:57:21 <Rembane_> File handles are also used for sockets. Sockets are connections to the HTTP clients. Maybe something isn't closing them as they should.
06:57:56 <arahael> Yeah, it's got to be sockets.
06:58:28 <Rembane_> Is the application doing Websockets or long polling or something other exciting like that?
06:58:44 <arahael> Nope.
06:59:03 <timCF> Hello! Does anybody have idea why lens functions compose "backwards" if compare with standard field accessor functions in Haskell? Is it intentional thing and what's the reasoning behind this reversed style of composition?
06:59:12 <arahael> It's basically a google protocol buffers web api, but a naive one at that.
06:59:17 <dminuoso> timCF: It's a natural consequence from the construction.
06:59:18 <arahael> (Instead of JSON)
06:59:23 <dminuoso> timCF: To see why, consider the following:
06:59:43 <dminuoso> timCF: `traverse (traverse f) [[1,2,3], [2,3,4]]]`
06:59:55 <dminuoso> Which traverse touches the "inner" numbers", and which traverse works on the lists?
07:00:36 <arahael> Rembane_: I'm just wondering if there's any way of, eg, remotely loading it in some sort of real-time debugger or log viewer where I can see a report of open files.
07:00:47 <timCF> dminuoso: 2nd works on numbers I ghuess
07:01:03 <arahael> Rembane_: Such that I could test for any leaks when I do a curl or something.
07:01:03 <dminuoso> timCF: Can you try and assert this for yourself?
07:01:14 <dminuoso> timCF: Want to ensure that you yourself are sure of this fact.
07:01:15 <Rembane_> arahael: If you're running Linux you can get that by the command lsof -i
07:02:24 <Rembane_> arahael: lsof -ai -p PIDOFTHEPROCESS
07:02:32 d0ku joins (~d0ku@178.43.56.75.ipv4.supernova.orange.pl)
07:02:40 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
07:03:29 gehmehgeh joins (~user@user/gehmehgeh)
07:04:14 <arahael> Rembane_: That just gives: familyser 585947 arahael 3u IPv4 184973807 0t0 TCP *:hbci (LISTEN)
07:04:25 × Kaiepi quits (~Kaiepi@156.34.44.192) (Ping timeout: 252 seconds)
07:05:05 <timCF> dminuoso: yeah, I did tried it here https://replit.com/languages/haskell like this `traverse (traverse print) [[1,2,3], [2,3,4]]` and got column of numbers
07:05:26 <Rembane_> arahael: I wonder if your server process starts a sub process to hold the connections, does it seem to do that or is it just one process?
07:05:52 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
07:06:56 <arahael> Rembane_: I don't think so. I mean, there's the cabal process itself, but that then just starts the actual server.
07:07:39 tomsmeding . o O ( pstree PIDOFPROCESS )
07:09:14 <dminuoso> timCF: Alright. Now consider:
07:09:25 <dminuoso> (traverse . traverse) f [[1,2,3], [2,3,4]]
07:09:29 <dminuoso> Do you agree that this is the same thing?
07:09:51 <arahael> tomsmeding: That seems to identify that I have the right PID, at least.
07:09:54 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
07:10:02 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
07:10:13 <tomsmeding> arahael: and, apparently, shows that there are no subprocesses you didn't know about :)
07:11:38 <arahael> tomsmeding: Indeed, it doesn't! Actually I just restarted my client application, and then that lsof command showed a billion lines. (No, not a billion, a great many), but now a few seconds later when I ran it again, there's just that line I showed already.
07:11:52 Boomerang joins (~Boomerang@xd520f68c.cust.hiper.dk)
07:12:08 <arahael> So I for a very short time had many, many lines that looked like this:
07:12:10 <arahael> familyser 585947 arahael 53u IPv4 185217813 0t0 TCP pihole:hbci->192.168.1.105:52946 (ESTABLISHED)
07:12:29 × azeem quits (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 250 seconds)
07:12:34 <arahael> (The local server also happens to run pihole, hence that appearing there)
07:13:25 <timCF> dminuoso: yeah, result seems the same
07:13:37 <arahael> Just counted them with wc -l: It outputs 52 lines.
07:13:52 <tomsmeding> that's not too many
07:13:54 azeem joins (~azeem@176.201.15.223)
07:14:13 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 250 seconds)
07:14:30 <tomsmeding> try adding -n to the lsof command, less weird port names
07:14:41 <timCF> dminuoso: but I think this time first in the line "traverse" is responsible for applying `f` to numbers
07:15:43 <tomsmeding> timCF: (traverse1 . traverse2) f x = (\y -> traverse1 (traverse2 y)) f x = traverse1 (traverse2 f) x
07:15:53 <arahael> tomsmeding: Good tip. Still, this doesn't seem to be indicating any problems - zero lines where there are indeed zero connections - and presumeably, one line for each connection.
07:16:22 <arahael> Yet, in a few days, at some random point (haven't seen a pattern), it'll just suddenly die.
07:16:24 <tomsmeding> arahael: kind of sounds like in normal operation there aren't too many FDs open, but when the problem arises, it suddenly spikes or something
07:16:35 <arahael> tomsmeding: Could be, yes.
07:18:39 hannessteffenhag joins (~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de)
07:18:54 <arahael> Going to spam the localhost with a while true; connect loop.
07:19:15 <tomsmeding> arahael: what I would do is set up a process that just does 'while true; do echo "$(date) $(lsof -ni PIDOFPROCESS | wc -l)"; sleep 120; done >>log.txt'
07:19:37 <tomsmeding> and you'll find whether it's a gradual rise or something more sudden :)
07:20:39 <arahael> Hmm, odd. I couldn't kill the server that way, using `while true; curl...&; done`, ended up having lines like: curl: c(u7r)l :C o(u7l)d nC'otu lcdonn'nte ccto ntnoe cste rtvoe rs
07:20:58 <tomsmeding> :D
07:20:59 <timCF> tomsmeding: hmm, you are right. In my mind I've always pronounced `.` not as "compose" but as "after" when I'm writing or reading some code. Because "after" is much easier to imagine than "compose". But seems like in some cases this is misleading.
07:21:01 <arahael> Which means after a while I was getting "Couldn't connect to server".
07:21:06 <Rembane_> arahael: I like the level of chaos in that. :D
07:21:10 <Axman6> concurr is hard cy
07:21:11 <arahael> Rembane_: :D
07:21:15 <tomsmeding> timCF: "after" is definitely correct
07:21:25 <dminuoso> timCF: Now, the next bit is this:
07:21:31 <dminuoso> `traverse` *is* a valid traversal
07:21:33 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
07:21:37 <tomsmeding> it's applying traverse1 after traverse2 to f
07:21:41 <dminuoso> It's the traversal that targets *each* element in a given structure.
07:21:54 <timCF> Yeah
07:22:00 <dminuoso> And `traverse . traverse` is a composed traversal.
07:22:06 <dminuoso> We can even use this with lens:
07:22:16 <dminuoso> % toListOf (traverse . traverse) [[1,2,3,], [2,3,4]]
07:22:17 <yahb> dminuoso: ; <interactive>:11:40: error: parse error on input `]'
07:22:23 <dminuoso> % toListOf (traverse . traverse) [[1,2,3], [2,3,4]]
07:22:23 <yahb> dminuoso: [1,2,3,2,3,4]
07:22:24 jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
07:23:04 <dminuoso> c.f.:
07:23:08 <dminuoso> % :i Traversal
07:23:09 <yahb> dminuoso: type role ReifiedTraversal representational nominal representational nominal; type ReifiedTraversal :: * -> * -> * -> * -> *; newtype ReifiedTraversal s t a b = Traversal {...}; -- Defined in `Control.Lens.Reified'; type Traversal :: * -> * -> * -> * -> *; type Traversal s t a b = forall (f :: * -> *). Applicative f => (a -> f b) -> s -> f t; -- Defined in `Control.Lens.Type'
07:23:30 <dminuoso> type Traversal s t a b = forall (f :: * -> *). Applicative f => (a -> f b) -> s -> f t;
07:23:33 <dminuoso> % :t traverse
07:23:33 <yahb> dminuoso: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
07:23:45 <arahael> tomsmeding: It seems that wc -l will usually report in just '2'. I guess I have to watch it, and take note of the actual error message to cut&paste, I only remember that it was running out of files somehow, and that it suggested I run it in a threaded configuration instead to work around it.
07:23:49 <dminuoso> timCF: A lens is something similar to this, except the constraint is Functor, not Applicative.
07:24:04 <dminuoso> timCF: If you care, I can give you a set of simple examples to explore this further
07:24:12 <dminuoso> Well. Tasks really
07:24:18 <arahael> Ooh, I've got it to slowly accumulate more and more connections. Nice. (Found a slow API, which I'm polling as fast as I can)
07:24:24 <tomsmeding> arahael: yeah my intent with that while-loop was to let that running for a few days until it crashes
07:26:10 <arahael> tomsmeding: I think I'll get it to crash in a few moments. Possibly minutes. :) I've realised that my testing with the client where there's only 52 connections was problematic because I've implemented etags, so now it's too fast if it's already cached.
07:26:21 <arahael> It's up to 550 files now.
07:26:32 <arahael> Or at least, 550-2 files.
07:26:33 <tomsmeding> "yay"?
07:27:11 <arahael> Yeah.
07:27:18 <arahael> Stupid optimisations. ;)
07:27:50 <arahael> I can tell that the server is clearly single-threaded, processing connections very very sequentially.
07:28:10 <timCF> dminuoso: Thanks! Seems like explanation why lens compose "backwards" is more complex than I can handle right now) Probably I need to read some FPComplete tutorials and implement it myself to really understand why it works this way)
07:28:12 <tomsmeding> arahael: seems that if the server runs out of FDs, then the client should also be using quite a significant number of connections by then
07:28:25 <arahael> That's my thinking, yeah.
07:28:26 <dminuoso> 09:14:41 timCF | dminuoso: but I think this time first in the line "traverse" is responsible for applying `f` to numbers
07:28:35 <dminuoso> timCF: If you understood this, you already understood why lenses compose "backwards"
07:28:43 <dminuoso> Nothing further to be understood.
07:28:45 <timCF> dminuoso: :)
07:29:03 <arahael> tomsmeding: Just passed a thousand connections!
07:29:12 <dminuoso> It's just that `traverse` is characterstic of the thing that lets you "operate on each thing". So `traverse` itself is a first class optic, a Traversal.
07:29:30 <dminuoso> If you monomorphize this into
07:29:31 <arahael> Aaand error message!
07:29:34 <arahael> 24/Aug/2021:17:28:58 +1000 [Error#yesod-core] Exception from Warp: Network.Socket.accept: resource exhausted (Too many open files) @(yesod-core-1.6.21.0-aa8cb2d15ab3f57565dd6843d5c747c9da7580c51a33acffed1522ce0cdf2caa:Yesod.Core.Dispatch src/Yesod/Core/Dispatch.hs:205:23)
07:29:46 <tomsmeding> yay
07:29:51 <dminuoso> traverseList :: Applicative f => (a -> f b) -> [a] -> f [b]
07:30:02 <dminuoso> Then thats a "traversal that targets each item in a list"
07:30:13 <dminuoso> But we could also write such a thing, that targets each *second* item in a list.
07:30:37 <Athas> Is there a function '[a] -> [(a,a)]' that turns '[1,2,3,4]' into '[(1,2),(3,4)]'?
07:31:01 <dminuoso> Athas: What are the rules of that function?
07:31:06 <tomsmeding> dminuoso's and Athas's last messages seem strangely related
07:31:17 <Athas> dminuoso: I don't care about the edge cases, if that's what you mean.
07:31:25 <dminuoso> Athas: No I really dont know what that function is supposed to do
07:31:32 <Athas> Clearly I should add a dependency on topograph to get it!
07:31:52 <dminuoso> Athas: I can think of at least a handful of differnet implementations that would produce that result given [1,2,3,4]
07:32:02 <Athas> dminuoso: this is its specification: pairs [] = []; pairs (x:y:l) = (x,y) : pairs l
07:32:04 <dminuoso> What would the function produce given [1,2,3], or [1...100]?
07:32:22 <dminuoso> I see
07:32:23 <Rembane_> arahael: Yay! It just struck me, you can lower the number of allowed open files using the command ulimit, this will make testing faster.
07:32:35 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
07:33:21 <arahael> Rembane_: Im' actually wondering how to make it multithreaded, as I have several cores.
07:33:28 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
07:33:38 <dminuoso> Athas: does it have to be tuples, or can it be lists too?
07:33:53 <Rembane_> arahael: That will certainly make your troubleshooting more interesting. :)
07:34:00 <arahael> Rembane_: Then, my next thing will be to more simplistically configure my client apps not to open so many connections. :)
07:34:11 <Athas> dminuoso: Is there space for that kind of wiggle room in type type?
07:34:29 <dminuoso> Athas: I can conjure up some `Int -> [a] -> [[a]]` fairly easily?
07:34:37 <dminuoso> I know you know this too
07:34:43 <dminuoso> So Im thinking we have our wires crossed
07:34:46 <arahael> Yesod's website says this: "The Haskell runtime is asynchronous automatically. Instead of dealing with... blah blah blah"... So I'm wondering how, now. :)
07:34:52 <Athas> But the type must be '[a] -> [(a,a)]'.
07:35:08 <dminuoso> So that's a no on "can it be lists too".
07:35:11 <Rembane_> arahael: Or make them close them faster. IIRC the web server that Yesod is built upon opens a green thread for each connection, so if you compile the project using -threaded you should get one executing thread per core.
07:35:35 <arahael> Rembane_: Thanks, will look that up...
07:35:38 <Drew[m]> tomsmeding: you said a few days ago that you were able to use HLS without issue on ghcup when you compiled it under GHC 9.0.1. I tried it and I get dependency resolution errors for days. How were you building it?
07:36:32 <dminuoso> timCF: As a simplification, you can think of every lens/traversal as something sort of like "traverse", and functions like `view/over` just use this "traverse-like" thing by providing it some `f`.
07:36:50 cfricke joins (~cfricke@user/cfricke)
07:36:51 <arahael> Rembane_: Ah, so I have to set ghc-options in the cabal file.
07:38:01 <dminuoso> Athas: Im not seeing any non-convoluted option to construct `pairs` other than just writing it out like you did.
07:38:36 <Rembane_> arahael: Exactly.
07:39:03 <arahael> Hmm, odd... Rembane_ If I compile it with -threaded, shouldn't it consume something like 400% CPU if I have closer to four cores and they're all otherwise idle?
07:39:14 <timCF> dminuoso: thanks for simple explanations)
07:39:37 × son0p quits (~ff@181.136.122.143) (Ping timeout: 252 seconds)
07:40:39 × azeem quits (~azeem@176.201.15.223) (Read error: Connection reset by peer)
07:40:50 <Rembane_> arahael: It should, if they have something to do. Are they idle?
07:41:38 × cfricke quits (~cfricke@user/cfricke) (Client Quit)
07:41:38 <arahael> Rembane_: My load average is only 1.58
07:42:11 <arahael> (And the CPU utilisation for the particular yesod server never goes above 100%, except sometimes 100.3%, which I guess is a rounding error)
07:42:52 <arahael> Nothing else is consuming significant CPU now. I've even killed the test script, though the yesod service hasn't noticed yet as it's still chewing through a pile of old connections.
07:43:17 azeem joins (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
07:44:07 <Rembane_> arahael: Run the program with the -N4 command line argument and see if it gets better.
07:44:54 <arahael> Rembane_: As in, `cabal run -N4 familyserver...`?
07:45:14 <Rembane_> arahael: I think so, or perhaps use -- -N4 at the end of the command
07:45:21 <Rembane_> arahael: More on multicore here: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/using-concurrent.html
07:45:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:46:53 <arahael> Ah, interesting, so I probably should use something like `+RTS -N4 -RTS`
07:47:25 <tomsmeding> Drew[m]: 'cp cabal.project.ghc901 cabal.project; cabal build'
07:47:35 <Rembane_> arahael: YEs!
07:47:35 <tomsmeding> (after 'git pull; cabal update')
07:47:57 <tomsmeding> Drew[m]: let me guess: you missed the cabal.project.ghc901 :p (I missed it for a while too)
07:48:43 <tomsmeding> arahael: cabal run familyserver
07:48:47 <tomsmeding> arahael: cabal run familyserver -- +RTS -N4
07:48:48 <tomsmeding> sorry
07:49:02 <tomsmeding> oh you got that already :p
07:50:15 cfricke joins (~cfricke@user/cfricke)
07:50:18 <arahael> Odd, I had to put that at the very end, not at the start of the arguments, but using `-- +RTS -N4` makes a huge difference, it's now using almost 400% of the CPU.
07:50:39 <Rembane_> Ha! Win! :D
07:50:59 <arahael> And it's substantially faster now.
07:51:50 <arahael> Taking forever to handle a new connection when there's a massive backlog, though.
07:52:06 lavaman joins (~lavaman@98.38.249.169)
07:52:09 <Rembane_> Does the program talk to anything else? Like a database.
07:52:13 <arahael> (So I think each of the 4 threads is still themselves inherently sequential)
07:52:16 <arahael> Nope. All memory.
07:52:29 <Rembane_> They probably are. Think of each connection as its own thread.
07:52:49 <arahael> Yeah, they don't seem to be that concurrent.
07:52:51 × timCF quits (~timCF@m91-129-108-244.cust.tele2.ee) (Quit: leaving)
07:52:59 __monty__ joins (~toonn@user/toonn)
07:55:21 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
07:56:41 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
07:58:51 <merijn> arahael: oh, wanna bet I know the problem?
07:59:05 <merijn> arahael: Run with "+RTS -sstderr"
07:59:18 <merijn> And then pastebin the GC log at the end :p
07:59:48 <arahael> Yep, I'm happy with this. Also I've noticed that my client program has `config.httpMaximumConnectionsPerHost = 50` which explains why I was getting `wc -l` to report 52.
08:00:13 <arahael> merijn: I didn't get a GC log!
08:00:37 <merijn> arahael: Does your program terminate or do you SIGINT it?
08:00:53 <arahael> merijn: I think it's SIGINT, ie, I kill it by using ^c.
08:01:02 <arahael> It otherwise never terminates.
08:01:06 <merijn> yeah, it doesn't report a log then :p
08:01:07 <arahael> (Unless it runs out of file handles)
08:01:26 <merijn> I forgot how to make it print a GC log early, though
08:01:39 reumeth joins (~reumeth@user/reumeth)
08:01:40 <arahael> Will do that another day, then. :) It's bound to be interesting.
08:03:22 <merijn> arahael: The real question I wanted to know is: Is it spending ages GCing, because then you're getting hurt by "the parallel GC is garbage and shouldn't be enabled"
08:03:48 <merijn> You can try using "+RTS -qg" and see if it's faster that way
08:03:58 <Drew[m]> tomsmeding: I noticed that but it turns out I didn't know the propper way to select the right project file in a folder with two of them
08:03:59 <arahael> merijn: Ah, no, I doubt it, I'm subjectively seeing much more work being done.
08:04:16 <arahael> merijn: Ie, my client app seems faster, and the logs from the server are definitely visibily significantly faster.
08:04:32 <merijn> arahael: Sure, but maybe they could be *even* faster :p
08:05:20 <arahael> Heh. :)
08:05:28 <jchia[m]> QuickCheck question: How can I set the random seed for running quickCheck? QCGen seems to be an opaque type and google shows many outdated answers that don't work. I just want quickcheck to run with the same failing input every time so that I can debug.
08:06:14 hendursa1 joins (~weechat@user/hendursaga)
08:08:22 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
08:11:10 <tomsmeding> Drew[m]: I also don't, hence I just copied it over :p
08:15:24 acidjnk_new joins (~acidjnk@p200300d0c72b9556a59b812708dd2de4.dip0.t-ipconnect.de)
08:17:11 <tomsmeding> jchia[m]: apparently this exists in Test.QuickCheck.Random https://github.com/nick8325/quickcheck/blob/master/src/Test/QuickCheck/Random.hs#L71
08:17:38 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
08:17:39 allbery_b joins (~geekosaur@xmonad/geekosaur)
08:17:42 allbery_b is now known as geekosaur
08:17:54 qbt joins (~edun@user/edun)
08:17:56 <tomsmeding> don't know why there's no documentation generated (I found it by scouting down https://github.com/UnkindPartition/tasty/blob/efe0ad287032b17bfd78c646db62e833518eeb19/quickcheck/Test/Tasty/QuickCheck.hs#L163 )
08:19:36 <Drew[m]> tomsmeding: turns out there is a --project-file flag
08:20:02 <jchia[m]> The haddock is broken. Maybe that's why I couldn't find the relevant docs.
08:20:17 <tomsmeding> jchia[m]: yeah, no idea why
08:20:43 <jchia[m]> I often come across packages having partially or totally broken haddock.
08:20:45 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:24:47 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Remote host closed the connection)
08:26:25 lavaman joins (~lavaman@98.38.249.169)
08:30:40 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
08:31:10 × talismanick quits (~user@2601:644:8500:8350::e26b) (Ping timeout: 240 seconds)
08:31:43 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
08:34:35 × jonathanx quits (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
08:46:52 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
08:48:48 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
08:53:46 polyphem joins (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3)
08:56:19 × jtomas quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
08:57:27 jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
09:00:36 × jtomas quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
09:02:07 × azeem quits (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 250 seconds)
09:03:04 jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
09:03:27 × jtomas quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
09:03:48 azeem joins (~azeem@176.201.15.223)
09:04:20 elf_fortrez joins (~elf_fortr@adsl-72-50-7-11.prtc.net)
09:05:18 × azeem quits (~azeem@176.201.15.223) (Read error: Connection reset by peer)
09:05:36 azeem joins (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
09:06:21 jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
09:06:48 × elf_fortrez quits (~elf_fortr@adsl-72-50-7-11.prtc.net) (Client Quit)
09:09:02 elf_fortrez joins (~elf_fortr@adsl-72-50-6-136.prtc.net)
09:24:05 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
09:25:17 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
09:26:00 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
09:29:51 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Ping timeout: 250 seconds)
09:30:07 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
09:31:35 × azeem quits (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Read error: Connection reset by peer)
09:35:49 ubert1 joins (~Thunderbi@91.141.36.16.wireless.dyn.drei.com)
09:37:13 × ubert quits (~Thunderbi@91.141.36.16.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
09:37:13 ubert1 is now known as ubert
09:37:33 icebreaker joins (~icebreake@user/icebreaker)
09:40:55 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
09:40:57 × icebreaker quits (~icebreake@user/icebreaker) (Client Quit)
09:41:14 icebreaker joins (~icebreake@user/icebreaker)
09:41:27 × Morrow_ quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 240 seconds)
09:41:43 × shailangsa quits (~shailangs@host86-185-102-120.range86-185.btcentralplus.com) (Ping timeout: 252 seconds)
09:42:16 × Moyst quits (~moyst@user/moyst) (Ping timeout: 252 seconds)
09:43:43 azeem joins (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
09:44:03 Moyst joins (~moyst@user/moyst)
09:44:44 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
09:47:43 × mniip quits (mniip@libera/staff/mniip) (Quit: This page is intentionally left blank.)
09:47:46 mniip_ joins (mniip@libera/staff/mniip)
09:57:41 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
10:02:24 jippiedoe joins (~david@2a02-a44c-e14e-1-d8c8-4f7-e34-193e.fixed6.kpn.net)
10:04:00 × lortabac quits (~lortabac@62.98.34.238) (Quit: WeeChat 2.8)
10:04:49 × elf_fortrez quits (~elf_fortr@adsl-72-50-6-136.prtc.net) (Ping timeout: 246 seconds)
10:08:07 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
10:12:42 drsocks joins (~aaashutos@113.199.149.122)
10:12:57 × drsocks quits (~aaashutos@113.199.149.122) (Client Quit)
10:14:02 shailangsa_ joins (~shailangs@host86-185-102-120.range86-185.btcentralplus.com)
10:15:20 × mcglk quits (~mcglk@131.191.49.120) (Read error: Connection reset by peer)
10:16:14 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
10:16:20 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
10:16:38 lavaman joins (~lavaman@98.38.249.169)
10:16:45 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
10:17:00 mcglk joins (~mcglk@131.191.49.120)
10:18:15 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
10:18:34 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
10:22:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
10:24:07 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:25:12 × ubert quits (~Thunderbi@91.141.36.16.wireless.dyn.drei.com) (Remote host closed the connection)
10:26:22 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
10:28:47 × hannessteffenhag quits (~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
10:29:07 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
10:29:52 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:30:34 × dsrt^ quits (~dsrt@12.16.129.111) (Remote host closed the connection)
10:30:57 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Ping timeout: 250 seconds)
10:33:22 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
10:34:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
10:35:32 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:35:39 dschrempf joins (~dominik@92-249-199-97.pool.digikabel.hu)
10:37:27 × keutoi quits (~keutoi@157.47.104.135) (Ping timeout: 250 seconds)
10:39:19 keutoi joins (~keutoi@106.208.52.196)
10:40:55 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
10:41:32 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:43:58 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
10:47:25 × aman quits (~aman@user/aman) (Ping timeout: 250 seconds)
10:47:30 lavaman joins (~lavaman@98.38.249.169)
10:48:28 aman joins (~aman@user/aman)
10:48:43 × keutoi quits (~keutoi@106.208.52.196) (Ping timeout: 250 seconds)
10:48:46 × dschrempf quits (~dominik@92-249-199-97.pool.digikabel.hu) (Quit: WeeChat 3.2)
10:48:57 Morrow_ joins (~Morrow@31.154.96.164)
10:50:08 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Quit: ERC (IRC client for Emacs 28.0.50))
10:50:39 keutoi joins (~keutoi@157.48.189.217)
10:51:45 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
10:51:47 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
10:52:38 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:55:13 hannessteffenhag joins (~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de)
10:55:58 <siers> I found hlint complaining about a redundant bang pattern, which was necessary :)
10:56:14 chisui joins (~chisui@200116b868760900ef247521c8a78041.dip.versatel-1u1.de)
10:57:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
10:58:20 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:59:16 mouseghost joins (~draco@user/mouseghost)
10:59:23 <mouseghost> i wish i understood this language arhhh
10:59:49 × hannessteffenhag quits (~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
11:00:05 <Drew[m]> mouseghost: having a particular problem?
11:00:23 <mouseghost> looking at basic parser implementation
11:01:03 alx741 joins (~alx741@181.196.68.94)
11:01:24 <mouseghost> but i guess this is mostly an issue of the notation here, hmm
11:02:02 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
11:06:18 <tomsmeding> siers: report a bug :)
11:06:40 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
11:06:40 <siers> tomsmeding, I guess I should, but I don't have a good testcase
11:06:44 × polyphem quits (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) (Remote host closed the connection)
11:06:55 polyphem joins (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3)
11:07:26 <tomsmeding> ah right
11:07:36 ChaiTRex joins (~ChaiTRex@user/chaitrex)
11:07:41 <siers> I mean I have a self-contained simple to run one, but it's not small at all
11:08:13 <tomsmeding> I doubt that hlint does sophisticated full-program analysis, so you might be able to significantly reduce it without influencing hlint's behaviour
11:08:39 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
11:09:21 AlexNoo_ joins (~AlexNoo@178.34.150.125)
11:10:17 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:11:22 × AlexZenon quits (~alzenon@94.233.241.255) (Ping timeout: 252 seconds)
11:11:22 × Alex_test quits (~al_test@94.233.241.255) (Ping timeout: 252 seconds)
11:12:28 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
11:12:54 × AlexNoo quits (~AlexNoo@94.233.241.255) (Ping timeout: 258 seconds)
11:17:04 Alex_test joins (~al_test@178.34.150.125)
11:17:19 AlexZenon joins (~alzenon@178.34.150.125)
11:19:04 × Morrow_ quits (~Morrow@31.154.96.164) (Ping timeout: 252 seconds)
11:19:14 <siers> what do you mean?
11:21:15 <tomsmeding> siers: you might be able to significantly reduce your code where hlint makes a mistake without influencing hlint's behaviour
11:21:43 <siers> meaning it's worthwhile most of the time or?
11:21:47 <siers> the false flag
11:21:50 <tomsmeding> because I don't think it looks very far from the point where the lint is triggered
11:22:10 <tomsmeding> no you should be able to fairly easily reduce your code to a small reproducing example :p
11:22:12 <tomsmeding> I think
11:22:26 felixphew joins (~felix@cssa/committee/felix)
11:23:04 lortabac joins (~lortabac@62.98.34.238)
11:23:13 jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
11:23:41 <felixphew> hi! I'm trying to use ghcup on FreeBSD 13.0, and having some difficulties
11:23:50 <felixphew> I hit this issue and fixed it with a symlink: https://gitlab.haskell.org/ghc/ghc/-/issues/20095
11:24:05 <felixphew> but now I'm getting a missing libgmp.so.10
11:24:36 <felixphew> does ghcup require GMP from ports? if so, do you know if this is documented anywhere?
11:24:41 acidjnk_new3 joins (~acidjnk@p200300d0c72b9534e4a445cd6b407eb5.dip0.t-ipconnect.de)
11:24:55 <felixphew> FreeBSD hasn't come with libgmp for a good 2 decades afaict
11:25:48 <maerwald> felixphew: install the 12.2 compat libs
11:26:50 <maerwald> https://www.freshports.org/misc/compat12x/
11:27:22 <felixphew> that doesn't come with libgmp.so.10, though...?
11:27:36 <felixphew> https://cgit.freebsd.org/ports/tree/misc/compat12x/pkg-plist.amd64
11:27:43 × acidjnk_new quits (~acidjnk@p200300d0c72b9556a59b812708dd2de4.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
11:28:54 <maerwald> it's built on 12.2, so you need whatever is on 12.2
11:29:14 <felixphew> yes, and I'm pretty sure libgmp.so.10 isn't in 12.2
11:29:55 <felixphew> I can grab a tarball and check, though
11:30:06 <maerwald> the binary was built here: https://gitlab.haskell.org/haskell/ghcup-hs/-/jobs/759970
11:30:09 <maerwald> clearly on 12.2
11:30:24 <felixphew> I'll have a look at that now
11:32:59 hannessteffenhag joins (~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de)
11:34:14 <felixphew> I strongly suspect that whatever this is running on has math/gmp installed
11:34:16 <felixphew> I can
11:34:31 <felixphew> 't check, of course, because it's not a Docker image (being not Linux)
11:35:34 <maerwald> yeah, imagine freebsd had working docker support
11:35:55 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
11:36:02 <felixphew> well, it does as a host (using jails with Linux emulation)
11:36:05 <felixphew> just not as a guest
11:36:26 <felixphew> and... yep, judging by this comment: https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/.gitlab/before_script/freebsd/install_deps.sh#L5
11:37:06 <felixphew> cool, I'll go and install that - it's probably worth noting somewhere that this won't run on a completely fresh FreeBSD system, though
11:37:14 <maerwald> what's the package name
11:37:19 <felixphew> gmp
11:37:27 × hannessteffenhag quits (~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
11:37:35 <maerwald> https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/ghcup-0.0.6.yaml#L137
11:37:43 <maerwald> it's there
11:37:57 <maerwald> and presented during installation
11:38:18 <felixphew> no it's not, because ghcup _itself_ needs it
11:38:24 <maerwald> ah right
11:38:32 <maerwald> damn bootstrapping
11:38:46 <maerwald> can't win
11:40:59 <maerwald> well, let me know when FreeBSD fixes static linking :p
11:41:24 hannessteffenhag joins (~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de)
11:41:49 vs^ joins (~vs@12.16.129.111)
11:45:50 <merijn> maerwald: What's broken about it?
11:46:02 <maerwald> merijn: all of it?
11:46:25 <maerwald> I don't remember the details, but I spent probably an entire weekend on that idea
11:49:48 × yaroot quits (~yaroot@6.3.30.125.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat)
11:50:37 yaroot joins (~yaroot@6.3.30.125.dy.iij4u.or.jp)
11:50:41 × acidjnk_new3 quits (~acidjnk@p200300d0c72b9534e4a445cd6b407eb5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
11:51:47 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds)
11:52:46 geekosaur joins (~geekosaur@xmonad/geekosaur)
11:52:58 _ak_ joins (~akspecs@136.24.181.20)
11:54:46 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
11:55:29 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
11:55:59 burnside_ joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
11:55:59 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer)
11:56:32 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
11:56:32 × burnside_ quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer)
11:58:36 Sinbad joins (~Sinbad@user/sinbad)
11:58:55 × xff0x quits (~xff0x@2001:1a81:5333:b100:e90f:35ab:1ea2:78fd) (Ping timeout: 250 seconds)
11:59:51 xff0x joins (~xff0x@2001:1a81:5333:b100:677b:385:c244:5fff)
12:01:32 × chisui quits (~chisui@200116b868760900ef247521c8a78041.dip.versatel-1u1.de) (Quit: Client closed)
12:03:02 × icebreaker quits (~icebreake@user/icebreaker) (Quit: leaving)
12:03:06 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
12:03:20 icebreaker joins (~icebreake@user/icebreaker)
12:03:37 chisui joins (~chisui@200116b868760900d980a481ca884939.dip.versatel-1u1.de)
12:04:40 × icebreaker quits (~icebreake@user/icebreaker) (Client Quit)
12:04:57 icebreaker joins (~icebreake@user/icebreaker)
12:08:30 thornAvery parts (~Thorn@2401:c080:1800:4346:5400:3ff:fe2c:c8f8) ()
12:08:53 trcc joins (~trcc@users-5343.st.net.au.dk)
12:09:27 × polyphem quits (~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) (Ping timeout: 240 seconds)
12:11:39 thornAvery joins (~Thorn@2401:c080:1800:4346:5400:3ff:fe2c:c8f8)
12:11:39 thornAvery is now known as Thorn
12:12:20 Thorn is now known as thornAvery
12:13:19 <kuribas> How do you enable tracing in production? For example if I want to trace the queries generated?
12:13:27 <maerwald> https://paste.tomsmeding.com/DS3Bgy4l that looks wrong
12:13:49 <kuribas> create a query generator that runs in a logging monad transformer?
12:13:51 <thornAvery> why do people hate static linking?
12:14:02 <dminuoso> thornAvery: Who says people hate static linking?
12:14:19 epolanski joins (uid312403@id-312403.brockwell.irccloud.com)
12:14:21 <thornAvery> I just hear a lot of people going on about it
12:14:23 <dminuoso> There's just a lot of myths that people appear to readily accept as truth..
12:14:29 <kuribas> thornAvery: the only problem is linking libc...
12:14:48 <kuribas> thornAvery: because it is not compatible between systems.
12:14:57 <thornAvery> Oh fair call
12:15:08 <maerwald> musl?
12:15:20 <maerwald> linking crypto libs is more problematic than that
12:15:21 <kuribas> yeah, musl solves it, but introduces other problems.
12:15:28 <dminuoso> thornAvery: In principle there's nothing wrong with static linking, and it generally makes shipping isolated packages easier.
12:15:29 <kuribas> with networking
12:15:31 shriekingnoise joins (~shrieking@186.137.144.80)
12:15:32 <maerwald> nothing is without problems
12:15:58 <tomsmeding> maerwald: two different versions of the prettyprint library?
12:16:05 <maerwald> tomsmeding: no
12:16:23 <maerwald> it's type level hackery
12:16:30 <maerwald> https://hackage.haskell.org/package/haskus-utils-variant-3.0/docs/Haskus-Utils-Variant-Excepts.html#v:catchAllE
12:16:46 <dminuoso> thornAvery: It's just that static linking makes it harder to replace a *shared* library in one go and fix some underlying issue, since every package needs to receive that same update. But at the same time, replacing a shared library can easily break a multitude of packages.A
12:17:00 <dminuoso> And any memory arguments have been largely moot a long time ago
12:17:25 <maerwald> yeah, if you ship static binaries, don't link against ssl
12:18:29 <dminuoso> It's a trade off either way. For some reasons, it's just that folks like Ulrich Drepper held some incredibly strong opinions about it, and pushed against static linking extremely hard.
12:18:37 <tdammers> the Free Lunch Theory strikes again
12:18:52 <dminuoso> Heh yeah
12:19:29 gehmehgeh joins (~user@user/gehmehgeh)
12:20:30 <dminuoso> maerwald: This is an interesting proposition.
12:21:04 <dminuoso> Dynamically link against libraries that can introduce severe security issues, where prompt updates are important. Or against particularly weak software that is error prone.
12:21:17 <maerwald> well, there are implementations that are made to be statically linked, such as polarssl
12:21:41 <maerwald> but you as a static binary distributor will generally do a worse job than the distro
12:21:54 <dminuoso> But perhaps the real solution here is to simply ship the source code with enough wizardry to link in the flavor that *you* want
12:21:59 <dminuoso> Then you can update libraries yourself whenever you feel like it
12:22:15 <dminuoso> Perhaps users have become too accustomed to binary packages..
12:22:21 <Jack> How can dynamically linking be insecure? This is a serious question
12:22:28 <tdammers> problem is of course that it's not entirely clear which libraries might introduce severe security issues
12:22:31 <dminuoso> Jack: not insecure, but they can introduce brittleness
12:22:42 <maerwald> tdammers: yeah, like png
12:22:50 <maerwald> not everything needs to be crypto
12:22:55 <dminuoso> because the linked library is not under your control, it might not exist, might exist in wrong flavor, wrong compilation flags, wrong versions
12:23:04 <dminuoso> and all existing mechanisms to at least control this are error prone
12:23:50 <dminuoso> most of the time we dont notice this, because its the distribution maintainers that cherry pick everything so the dynamic libraries on your system will work with the programs
12:24:07 <dminuoso> or they add patches left and right to make things work
12:24:12 <maerwald> dynamic linking is fine as long as the distro controls it... when you have things like steam dropping random stuff that may or may not work together is a different story
12:24:17 <dminuoso> right
12:24:27 <dminuoso> I think this is the key part.
12:24:39 <maerwald> sonames aren't fool proof etc
12:24:48 <dminuoso> dynamic linking moves responsibility of library management to the distribution maintainer, because there's no real portable way to depend on shared libraries that really works.
12:24:59 <dminuoso> maerwald: indeed.
12:25:45 <dminuoso> For package inside your own organization, this becomes an interesting topic now.
12:25:57 <maerwald> the problem with ssl static linking is also that there's an amount of compile time configuration about certificate store etc afair
12:26:08 <dminuoso> Because then it essentialy becomes a question of whether your system administrators are capabable of managing your softwares dynamic dependencies or not.
12:26:20 <dminuoso> If not, you're better of just distributing static artifacts.
12:26:38 <dminuoso> maerwald: oh really?
12:26:52 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
12:26:59 <maerwald> I mean there are a number of directories an SSL implementations is *supposed* to search
12:27:09 <maerwald> but some of these are set at compile time afair
12:27:14 <maerwald> it's pretty confusing
12:27:16 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
12:27:31 <merijn> This just in, CA based certificates are a maddening clusterfuck :p
12:27:40 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
12:27:44 <maerwald> just using the system dynamic lib will do the right thing
12:27:55 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
12:27:55 maroloccio joins (~marolocci@37.100.40.252)
12:27:57 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 250 seconds)
12:28:22 favonia joins (~favonia@user/favonia)
12:29:13 <merijn> I would disagree. I might concede that it will do the thing most people expect nowadays, but I wouldn't necessarily call that the right thing :p
12:31:36 <tdammers> problem is that you want both "give me this exact version so that my stuff is guaranteed to not break" and "give me a version that has all the latest security fixes"
12:31:57 <tdammers> but logic says you can't have both at the same time
12:32:17 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Ping timeout: 250 seconds)
12:32:18 bontaq joins (~user@ool-18e47f8d.dyn.optonline.net)
12:32:30 <maerwald> security is expensive
12:32:41 <Taneb> Often, not security is even more expensive
12:32:42 <merijn> It's almost like half of us programmers don't deserve to call themselves engineers :p
12:32:47 pbrisbin joins (~patrick@174-081-116-011.res.spectrum.com)
12:34:18 <maerwald> what's an engineer anyway... someone following best practices?
12:34:39 <maerwald> like running hlint over their codebase?
12:35:03 fef joins (~thedawn@user/thedawn)
12:35:22 <maerwald> 'you could write this pointfree'
12:35:28 <tdammers> merijn: actually the majority of programmers does not hold an engineering degree, so technically only a small minority deserves the title
12:35:30 <merijn> maerwald: No, someone who *plans* for actual long term
12:35:42 <maerwald> merijn: don't talk crazy
12:35:57 maerwald buys more crypto
12:36:00 <merijn> You plan a bridge to last actual decades. Which means planning how the fuck you will be able to fix/maintain things latr
12:36:04 × markpythonicbtc quits (~textual@2601:647:5a00:35:f45e:90a7:31f1:d8ef) (Quit: My MacBook has gone to sleep. ZZZzzz…)
12:36:28 <merijn> If you wanna pretend your a software *engineer*, start planning how that shit will work *long* term, instead of this one sprint
12:36:34 <Taneb> Oh god is that a mood. "This'll go wrong in ten years", I say, "In ten years neither of us or this system will still be here" is the response
12:36:46 <merijn> That includes, updating libraries, handling libraries disappearing, whatever
12:37:20 <maerwald> tdammers: not sure it's worth much... the greatest coders I met were wizards, some of them did know nothing of CS. But generally, everyone who is afraid of complexity is a good fit
12:37:32 <maralorn> When building with ghc 9.0 (in nixpkgs) in blaze-textual 0.2.1 I get "Ambiguous occurrence ‘quotRemInteger’" between base 4.15 and integer-gmp 1.1. This is a dependency of ghcide so it’s supposed to be working but I can‘t figure out in which way I have wrong versions. Can anyone help me?
12:37:37 <tdammers> Reminds me of that story about programmers working on a cruise missile control system. They found a memory leak, but it was a very consistent and predictable one, so they just calculated how much memory the code would leak over the duration of a mission, doubled that, and just added that much more RAM to the system
12:37:50 <merijn> tdammers: tbh, I can respect that
12:38:08 <maerwald> well, they don't just update the compiler, I hope :p
12:38:33 <tdammers> merijn: thing is, IMO programming is nothing like engineering. The constraints are just so radically different that comparing the two disciplines is not awfully useful.
12:38:35 <merijn> maerwald: Missile guidance people don't change software versions in their pipeline
12:38:36 <maralorn> maralorn: The fact, that integer-gmp 1.1 is not even on hackage does not help.
12:38:52 <merijn> tdammers: I agree that software isn't very similar to engineering
12:39:07 <tomsmeding> maralorn: how does it depend on it then :p
12:39:15 <merijn> tdammers: I'm just saying the attitude of most programmers is shite and they could learn a lot from engineers in many things
12:39:19 <tdammers> maerwald: the point being, you don't need fancy garbage collection in a computer system that, by design, literally explodes after one program run
12:39:29 <Logio_> software isn't like engineering only because not enough people have been killed by bad software (yet)
12:39:32 <tdammers> merijn: agree on this much.
12:39:52 <maralorn> tomsmeding: I suspect integer-gmp 1.1 is the one bundled with ghc 9.0?
12:39:59 <tdammers> Logio_: no, it's fundamentally different because information systems have different dynamics than physical machines and structures
12:40:09 acidjnk_new3 joins (~acidjnk@p200300d0c72b9534e4a445cd6b407eb5.dip0.t-ipconnect.de)
12:40:30 <Taneb> maralorn: I think the right solution here will be drop the dependency on integer-gmp on that version of GHC.
12:40:36 × sjb0 quits (~stephen@2001:8004:5170:3b13:8c1d:1f1c:70aa:a42e) (Quit: Leaving.)
12:40:42 × maroloccio quits (~marolocci@37.100.40.252) (Quit: WeeChat 3.0)
12:40:51 <dminuoso> Taneb: Id say "not security" is like gambling, but the jackbot has a negative sign attached to it.
12:41:07 <Logio_> tdammers: not in any fundamental sense, IMO. Software is about controlling something in the real world at the end of the day
12:41:11 <Taneb> dminuoso: reverse gambling, and yet, the house still always wins
12:41:24 <Logio_> the implementation details are not what defines engineering
12:41:27 <tdammers> Logio_: the difference is in the economics of the production process
12:41:33 maroloccio joins (~marolocci@37.100.40.252)
12:42:11 <maralorn> Taneb: Sorry, I don‘t understand. Do you mean building ghc without gmp?
12:42:14 <tomsmeding> maralorn: is blaze-textual a dependency of your project? Are you building using cabal or stack?
12:42:35 <tdammers> Logio_: in industrial design, "production" is elaborate, expensive, and bound to severe physical constraints. In programming, the "production" part is a matter of running the build script. Changing an industrial production process is expensive; changing a deployment script is cheap.
12:42:43 <Logio_> tdammers: not the economics of the production, but of failure. As I said, once bad software starts killing enough people than things will change
12:42:54 <dminuoso> merijn: Regarding your bridge argument, it's my opinion that the main problem is that there's no liability for software. If you simply neglect security for hospital software, and this allows an attacker to turn off the entire ICU equipment, nobody goes to jail because of the dozens people that die. Nobody pays even a fine.
12:43:01 <Taneb> maralorn: no, I mean blaze-textual has a dependency on integer-gmp, but on newer GHCs I don't think this should be necessary
12:43:05 <merijn> dminuoso: Agreed
12:43:20 <tdammers> Logio_: no, the economics of production as well. It's just that people call the process of writing code "production", when that's really the equivalent of "design" in an industrial engineering process
12:43:44 <maralorn> tomsmeding: blaze-textual is a dependency of ghcide. I am building with nix which has the famous "not-doing-it" dependency resolution algorithm.
12:43:51 <Taneb> maralorn: the direct dependency shouldn't be necessary, I mean. There may still be an indirect dependency
12:44:02 <maralorn> Taneb: Ah, thanks.
12:44:26 <Logio_> tdammers: engineering cheap things is similar whether it's hardware or software, see chinese manufacturing
12:44:30 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
12:44:37 <Taneb> maralorn: I reserve the right to be horribly wrong about this ;)
12:45:06 <tomsmeding> maralorn: the cabal.project in the haskell-language-server repo for ghc 9.0.1 has a specific git dependency on blaze-textual on a particular commit
12:45:09 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Read error: Connection reset by peer)
12:45:21 <tomsmeding> maralorn: https://github.com/haskell/haskell-language-server/blob/master/cabal-ghc901.project#L33
12:45:28 <tomsmeding> perhaps this is your problem
12:45:33 × shailangsa_ quits (~shailangs@host86-185-102-120.range86-185.btcentralplus.com) ()
12:46:00 <tdammers> Logio_: even if you produce in China, changing your design in the middle of a production run is a lot more cumbersome and time consuming
12:46:12 <tomsmeding> maralorn: that seems to be exactly your problem
12:46:18 × maroloccio quits (~marolocci@37.100.40.252) (Client Quit)
12:46:22 <Logio_> tdammers: that's still just a quantitative difference, not a qualitative one
12:46:57 <maerwald> it's as if "agile" isn't an actual engineering practice :p
12:47:12 <maralorn> tomsmeding: Thanks! I’ll try passing integer-simple.
12:47:19 <maerwald> you don't build a sky-scraper agile
12:47:26 <tdammers> Logio_: it becomes quasi-qualitative when you consider that "production" is practically always a commodity in programming, and practically never in industrial production
12:47:30 <tomsmeding> maralorn: or using that fork of blaze-textual
12:47:58 maroloccio joins (~marolocci@37.100.40.252)
12:48:10 <maralorn> tomsmeding: Since I am trying to upstream this into nixpkgs I‘d prefer to not do that to much.
12:49:10 <Taneb> maralorn: nixpkgs does sometimes do that
12:49:56 <maralorn> I will go there if there is no other way.
12:50:12 <Taneb> e.g. https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/haskell-modules/configuration-ghc-8.10.x.nix#L74 (there's a file for ghc 9.0 as well)
12:51:39 <maralorn> Yeah, I am familiar with those files.
12:51:51 <maralorn> Working on the 9.0 one right now.
12:52:11 <tomsmeding> all too familiar? :p
12:53:04 <Taneb> OK, I'll leave you to it
12:55:15 × ac quits (~aloiscoch@2001:470:69fc:105::65) (Quit: You have been idle for 30+ days)
12:55:16 × hsiktas[m] quits (~hsiktasma@2001:470:69fc:105::30d4) (Quit: You have been idle for 30+ days)
12:55:34 × yin[m] quits (~zwromatri@2001:470:69fc:105::1d4) (Quit: You have been idle for 30+ days)
12:57:26 AlexNoo_ is now known as AlexNoo
12:57:47 jakalx joins (~jakalx@base.jakalx.net)
13:00:53 × vs^ quits (~vs@12.16.129.111) (Ping timeout: 250 seconds)
13:05:31 markpythonicbtc joins (~textual@50.228.44.6)
13:06:16 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
13:09:34 trcc_ joins (~trcc@users-5343.st.net.au.dk)
13:10:21 <maerwald> ok, now I'm confused... my code type checks if I move a function to a different module...
13:12:07 × trcc quits (~trcc@users-5343.st.net.au.dk) (Ping timeout: 240 seconds)
13:13:12 <maerwald> do module boundaries affect some type level hackery?
13:14:35 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
13:14:59 hendursaga joins (~weechat@user/hendursaga)
13:16:24 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
13:16:51 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
13:18:17 lavaman joins (~lavaman@98.38.249.169)
13:18:49 shailangsa joins (~shailangs@host86-185-102-120.range86-185.btcentralplus.com)
13:19:44 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
13:19:51 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
13:20:12 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
13:20:43 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
13:20:45 felixphew parts (~felix@cssa/committee/felix) ()
13:21:08 × trcc_ quits (~trcc@users-5343.st.net.au.dk) (Ping timeout: 250 seconds)
13:21:29 vs^ joins (~vs@12.16.129.111)
13:22:33 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
13:24:21 × mcglk quits (~mcglk@131.191.49.120) (*.net *.split)
13:24:21 × awth13 quits (~awth13@user/awth13) (*.net *.split)
13:24:21 × Techcable quits (~Techcable@168.235.93.147) (*.net *.split)
13:24:21 × Dykam quits (Dykam@dykam.nl) (*.net *.split)
13:24:21 × polux quits (~polux@51.15.169.172) (*.net *.split)
13:24:21 × Eoco quits (~ian@x-160-94-179-157.acm.umn.edu) (*.net *.split)
13:24:21 × drewolson1 quits (~drewolson@user/drewolson) (*.net *.split)
13:24:21 × wrunt quits (~ajc@vmx14030.hosting24.com.au) (*.net *.split)
13:24:21 × glider_ quits (~glider@user/glider) (*.net *.split)
13:24:21 × orzo_ quits (joe@lasker.childrenofmay.org) (*.net *.split)
13:24:21 × Vq quits (~vq@90-227-195-41-no77.tbcn.telia.com) (*.net *.split)
13:24:21 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (*.net *.split)
13:24:21 × dave_uy quits (~dave_uy@108.61.193.26) (*.net *.split)
13:24:21 × Teacup quits (~teacup@user/teacup) (*.net *.split)
13:24:21 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (*.net *.split)
13:24:21 × glguy quits (x@libera/staff/glguy) (*.net *.split)
13:24:21 × Unode quits (~Unode@194.94.44.220) (*.net *.split)
13:24:21 × pierrot quits (~pi@user/pierrot) (*.net *.split)
13:24:21 × ellie quits (~ellie@user/ellie) (*.net *.split)
13:24:21 × tristanC quits (~tristanC@user/tristanc) (*.net *.split)
13:24:21 × relrod quits (~relrod@redhat/ansible.staff.relrod) (*.net *.split)
13:24:21 × aweinstock quits (~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com) (*.net *.split)
13:24:21 × ishutin quits (~ishutin@92-249-150-163.static.digikabel.hu) (*.net *.split)
13:24:21 × micro quits (~micro@user/micro) (*.net *.split)
13:24:21 × arahael quits (~arahael@203.221.97.63) (*.net *.split)
13:24:21 × monochrom quits (trebla@216.138.220.146) (*.net *.split)
13:24:21 × lambdap quits (~lambdap@static.167.190.119.168.clients.your-server.de) (*.net *.split)
13:24:21 × paddymahoney quits (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (*.net *.split)
13:24:21 × Ananta-shesha quits (~pjetcetal@2.95.210.196) (*.net *.split)
13:24:21 × L29Ah quits (~L29Ah@user/l29ah) (*.net *.split)
13:24:21 × CannabisIndica quits (~herb@user/mesaboogie) (*.net *.split)
13:24:21 × adium quits (adium@user/adium) (*.net *.split)
13:24:21 × gauss quits (~gauss@139.180.175.160) (*.net *.split)
13:24:21 × hamishmack quits (sid389057@stonehaven.irccloud.com) (*.net *.split)
13:24:21 × jonrh quits (sid5185@charlton.irccloud.com) (*.net *.split)
13:24:21 × kaizen quits (sid501599@brockwell.irccloud.com) (*.net *.split)
13:24:21 × hsiktas quits (sid224847@tooting.irccloud.com) (*.net *.split)
13:24:21 × elvishjerricco quits (sid237756@brockwell.irccloud.com) (*.net *.split)
13:24:21 × conjunctive quits (sid433686@brockwell.irccloud.com) (*.net *.split)
13:24:21 × whez quits (sid470288@tooting.irccloud.com) (*.net *.split)
13:24:21 × cbarrett quits (sid192934@brockwell.irccloud.com) (*.net *.split)
13:24:21 × edwardk quits (sid47016@haskell/developer/edwardk) (*.net *.split)
13:24:21 × cross quits (~cross@spitfire.i.gajendra.net) (*.net *.split)
13:24:21 × shredder quits (~user@user/shredder) (*.net *.split)
13:24:21 × sm2n quits (~sm2n@user/sm2n) (*.net *.split)
13:24:21 × fjmorazan quits (~quassel@user/fjmorazan) (*.net *.split)
13:24:21 × energizer quits (~energizer@user/energizer) (*.net *.split)
13:24:21 × gabiruh quits (~gabiruh@vps19177.publiccloud.com.br) (*.net *.split)
13:24:21 × hays quits (~rootveget@fsf/member/hays) (*.net *.split)
13:24:21 × Clint quits (~Clint@user/clint) (*.net *.split)
13:24:21 × finsternis quits (~X@23.226.237.192) (*.net *.split)
13:24:21 × wanko quits (~wanko@51.15.4.226) (*.net *.split)
13:24:21 × cods quits (~fred@82-65-232-44.subs.proxad.net) (*.net *.split)
13:24:21 × remexre quits (~nathan@user/remexre) (*.net *.split)
13:24:21 × Patternmaster quits (~georg@li1192-118.members.linode.com) (*.net *.split)
13:24:21 × vk3wtf quits (~doc@220-245-2-190.tpgi.com.au) (*.net *.split)
13:24:21 × typedfern__ quits (~Typedfern@28.red-83-57-142.dynamicip.rima-tde.net) (*.net *.split)
13:24:21 × jackhill quits (~jackhill@kalessin.dragonsnail.net) (*.net *.split)
13:24:21 × EvanR quits (~evan@mail.evanr.info) (*.net *.split)
13:24:21 × ridcully_ quits (~ridcully@p508ac428.dip0.t-ipconnect.de) (*.net *.split)
13:24:21 × spoonm quits (spoonm@inaba.spoonm.org) (*.net *.split)
13:24:21 × natechan quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (*.net *.split)
13:24:21 × drewr quits (~drew@user/drewr) (*.net *.split)
13:24:47 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
13:27:59 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
13:28:13 juhp joins (~juhp@128.106.188.220)
13:28:24 <Logio_> some malarky with non-qualified imports?
13:28:38 mcglk joins (~mcglk@131.191.49.120)
13:28:38 awth13 joins (~awth13@user/awth13)
13:28:38 Techcable joins (~Techcable@168.235.93.147)
13:28:38 Dykam joins (Dykam@dykam.nl)
13:28:38 polux joins (~polux@51.15.169.172)
13:28:38 Eoco joins (~ian@x-160-94-179-157.acm.umn.edu)
13:28:38 drewolson1 joins (~drewolson@user/drewolson)
13:28:38 wrunt joins (~ajc@vmx14030.hosting24.com.au)
13:28:38 glider_ joins (~glider@user/glider)
13:28:38 orzo_ joins (joe@lasker.childrenofmay.org)
13:28:38 Vq joins (~vq@90-227-195-41-no77.tbcn.telia.com)
13:28:38 dave_uy joins (~dave_uy@108.61.193.26)
13:28:38 Teacup joins (~teacup@user/teacup)
13:28:38 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
13:28:38 glguy joins (x@libera/staff/glguy)
13:28:38 Unode joins (~Unode@194.94.44.220)
13:28:38 pierrot joins (~pi@user/pierrot)
13:28:38 ellie joins (~ellie@user/ellie)
13:28:38 tristanC joins (~tristanC@user/tristanc)
13:28:38 relrod joins (~relrod@redhat/ansible.staff.relrod)
13:28:38 aweinstock joins (~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com)
13:28:38 ishutin joins (~ishutin@92-249-150-163.static.digikabel.hu)
13:28:38 micro joins (~micro@user/micro)
13:28:38 arahael joins (~arahael@203.221.97.63)
13:28:38 monochrom joins (trebla@216.138.220.146)
13:28:38 lambdap joins (~lambdap@static.167.190.119.168.clients.your-server.de)
13:28:38 paddymahoney joins (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
13:28:38 Ananta-shesha joins (~pjetcetal@2.95.210.196)
13:28:38 L29Ah joins (~L29Ah@user/l29ah)
13:28:38 CannabisIndica joins (~herb@user/mesaboogie)
13:28:38 adium joins (adium@user/adium)
13:28:38 gauss joins (~gauss@139.180.175.160)
13:28:38 hamishmack joins (sid389057@stonehaven.irccloud.com)
13:28:38 jonrh joins (sid5185@charlton.irccloud.com)
13:28:38 kaizen joins (sid501599@brockwell.irccloud.com)
13:28:38 hsiktas joins (sid224847@tooting.irccloud.com)
13:28:38 elvishjerricco joins (sid237756@brockwell.irccloud.com)
13:28:38 conjunctive joins (sid433686@brockwell.irccloud.com)
13:28:38 whez joins (sid470288@tooting.irccloud.com)
13:28:38 cbarrett joins (sid192934@brockwell.irccloud.com)
13:28:38 edwardk joins (sid47016@haskell/developer/edwardk)
13:28:38 cross joins (~cross@spitfire.i.gajendra.net)
13:28:38 shredder joins (~user@user/shredder)
13:28:38 sm2n joins (~sm2n@user/sm2n)
13:28:38 fjmorazan joins (~quassel@user/fjmorazan)
13:28:38 energizer joins (~energizer@user/energizer)
13:28:38 gabiruh joins (~gabiruh@vps19177.publiccloud.com.br)
13:28:38 hays joins (~rootveget@fsf/member/hays)
13:28:38 Clint joins (~Clint@user/clint)
13:28:38 finsternis joins (~X@23.226.237.192)
13:28:38 wanko joins (~wanko@51.15.4.226)
13:28:38 cods joins (~fred@82-65-232-44.subs.proxad.net)
13:28:38 remexre joins (~nathan@user/remexre)
13:28:38 Patternmaster joins (~georg@li1192-118.members.linode.com)
13:28:38 vk3wtf joins (~doc@220-245-2-190.tpgi.com.au)
13:28:38 typedfern__ joins (~Typedfern@28.red-83-57-142.dynamicip.rima-tde.net)
13:28:38 jackhill joins (~jackhill@kalessin.dragonsnail.net)
13:28:38 EvanR joins (~evan@mail.evanr.info)
13:28:38 ridcully_ joins (~ridcully@p508ac428.dip0.t-ipconnect.de)
13:28:38 spoonm joins (spoonm@inaba.spoonm.org)
13:28:38 natechan joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
13:28:38 drewr joins (~drew@user/drewr)
13:28:42 × finsternis quits (~X@23.226.237.192) (Max SendQ exceeded)
13:28:59 finsternis joins (~X@23.226.237.192)
13:32:14 neo joins (~neo3@cpe-292712.ip.primehome.com)
13:32:39 × haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
13:32:53 haykam joins (~haykam@static.100.2.21.65.clients.your-server.de)
13:34:24 <maerwald> yeah, must be import foo
13:41:10 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
13:44:25 <merijn> maerwald: Is there TH involved?
13:44:27 × keutoi quits (~keutoi@157.48.189.217) (Ping timeout: 240 seconds)
13:44:37 <maerwald> ya
13:44:41 keutoi joins (~keutoi@157.48.189.217)
13:45:02 <maerwald> I fiddled around until it worked, now I'm pretending this never happened
13:45:06 <merijn> TH splices introduce grouping
13:45:17 <merijn> Code can't see definitions *below* a TH splice
13:45:53 <merijn> so if you have "foo <TH splice 1> bar <TH splice 2> quux" then code in 'foo' can't see any definitions in bar/quux
13:46:16 <merijn> bar can't see quux and quux can see everything
13:46:39 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
13:47:01 <merijn> This is so that it's unambiguous what is/isn't in scope for the splices (i.e. only things above it)
13:51:35 × acidjnk_new3 quits (~acidjnk@p200300d0c72b9534e4a445cd6b407eb5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
13:52:33 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
13:53:00 × markpythonicbtc quits (~textual@50.228.44.6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:56:21 × fendor quits (~fendor@77.119.197.208.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
13:56:49 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 248 seconds)
14:02:58 Sgeo joins (~Sgeo@user/sgeo)
14:11:11 × chisui quits (~chisui@200116b868760900d980a481ca884939.dip.versatel-1u1.de) (Quit: Client closed)
14:12:46 <kuribas> has any work been done on enforcing permissions using types? I saw something recently using liquid haskell I remember...
14:13:18 <kuribas> For example, carrying a typelevel proof that someone can access a resource...
14:14:06 <kuribas> As long as you don't use (undefined :: HasPermission UserFoo ResourceBar)...
14:16:20 fendor joins (~fendor@91.141.62.188.wireless.dyn.drei.com)
14:16:32 <maerwald> https://hackage.haskell.org/package/mac
14:16:44 × Guest3531 quits (~chris@81.96.113.213) (Remote host closed the connection)
14:16:54 <maerwald> there are 3+ implementations of data flow control in haskell
14:17:05 <maerwald> the first one used arrows afair
14:17:05 × haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
14:17:16 chris joins (~chris@81.96.113.213)
14:17:19 haykam joins (~haykam@static.100.2.21.65.clients.your-server.de)
14:17:21 chris is now known as Guest2329
14:17:28 <maerwald> there are also papers, I'm too lazy to find them
14:18:25 <kuribas> maerwald: that looks very interesting, but maybe not quite what I look for.
14:18:54 <kuribas> maerwald: It's not really about untrusted code, more like ensuring our trusted code works correctly.
14:19:21 <kuribas> more like an aid to the developers than as a security guard.
14:21:05 slack1256 joins (~slack1256@191.125.33.180)
14:21:40 × Guest2329 quits (~chris@81.96.113.213) (Ping timeout: 240 seconds)
14:22:30 slowButPresent joins (~slowButPr@user/slowbutpresent)
14:25:04 <kuribas> Maybe using a free variable, like in the St Monad as proof of permission...
14:26:40 <kuribas> So you have a low level library which stores permission in the database.
14:27:06 <kuribas> And the logic to process those is kept in a small part of the code.
14:27:31 <kuribas> This code also propagates a phantom variable "proof" of permission.
14:28:02 <maerwald> https://blog.b123400.net/type-level-permission-checking/
14:29:13 markpythonicbtc joins (~textual@2601:647:5a00:35:999f:46ac:3d0f:19d0)
14:29:29 arjun joins (~Srain@user/arjun)
14:29:30 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
14:29:51 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
14:30:03 × carter quits (sid14827@brockwell.irccloud.com) ()
14:30:40 carter joins (sid14827@id-14827.helmsley.irccloud.com)
14:30:57 <kuribas> something like that.
14:31:07 × Franciman quits (~francesco@openglass.it) (Quit: WeeChat 2.3)
14:31:29 <kuribas> I think the free phantom variable is necessary because confidential information shouldn't *escape* from the user context.
14:31:41 <kuribas> So a monad which cannot be escaped.
14:32:13 <jippiedoe> Maybe you want to look for 'information flow control' libraries?
14:32:57 <maerwald> I already linked one :p
14:33:24 zebrag joins (~chris@user/zebrag)
14:34:03 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Ping timeout: 250 seconds)
14:34:26 <kuribas> jippiedoe: indeed...
14:35:38 <maerwald> java has better stuff there
14:35:48 <maerwald> https://www.cs.cornell.edu/jif/
14:36:14 × meinside_ quits (uid24933@id-24933.brockwell.irccloud.com) ()
14:36:29 meinside_ joins (uid24933@id-24933.helmsley.irccloud.com)
14:37:17 <maerwald> but don't think anyone really uses that
14:37:21 <maerwald> in any language
14:38:35 <kuribas> they should, it's so easy to get a security breach...
14:38:51 <maerwald> no one reads langsec anymore
14:39:45 × feepo quits (sid28508@id-28508.brockwell.irccloud.com) ()
14:39:59 feepo joins (sid28508@id-28508.helmsley.irccloud.com)
14:45:35 lbseale joins (~lbseale@user/ep1ctetus)
14:46:40 × kimjetwav quits (~user@2607:fea8:235f:9730:b47e:9266:a80c:4549) (Ping timeout: 240 seconds)
14:47:04 × haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
14:47:15 lbseale_ joins (~lbseale@user/ep1ctetus)
14:47:19 haykam joins (~haykam@static.100.2.21.65.clients.your-server.de)
14:47:29 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
14:48:29 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
14:50:27 × lbseale quits (~lbseale@user/ep1ctetus) (Ping timeout: 240 seconds)
14:53:34 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
14:54:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
14:57:31 chris joins (~chris@81.96.113.213)
14:57:35 chris is now known as Guest1613
14:59:55 × lightandlight quits (sid135476@id-135476.brockwell.irccloud.com) ()
15:00:09 lightandlight joins (sid135476@id-135476.helmsley.irccloud.com)
15:00:49 × d0ku quits (~d0ku@178.43.56.75.ipv4.supernova.orange.pl) (Ping timeout: 248 seconds)
15:02:49 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:02:49 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
15:02:49 wroathe joins (~wroathe@user/wroathe)
15:04:01 × hannessteffenhag quits (~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
15:04:47 × haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
15:04:50 meejah_ is now known as meejah
15:04:59 haykam joins (~haykam@static.100.2.21.65.clients.your-server.de)
15:05:25 <tdammers> I think the main reason type-level permissions aren't used more widely is because in most practical systems where it matters and enough budget is available to build something like that, permissions pretty much need to be runtime-configurable
15:05:38 × haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
15:05:52 haykam joins (~haykam@static.100.2.21.65.clients.your-server.de)
15:07:51 × haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
15:08:05 haykam joins (~haykam@static.100.2.21.65.clients.your-server.de)
15:12:47 lbseale__ joins (~lbseale@user/ep1ctetus)
15:14:32 × bjs quits (sid190364@user/bjs) ()
15:14:50 bjs joins (sid190364@user/bjs)
15:16:25 drd joins (~drd@93-39-151-19.ip76.fastwebnet.it)
15:16:25 × cbarrett quits (sid192934@brockwell.irccloud.com) ()
15:16:27 × lbseale_ quits (~lbseale@user/ep1ctetus) (Ping timeout: 240 seconds)
15:16:39 × dpratt_ quits (sid193493@id-193493.brockwell.irccloud.com) ()
15:16:41 cbarrett joins (sid192934@id-192934.helmsley.irccloud.com)
15:16:58 dpratt_ joins (sid193493@id-193493.helmsley.irccloud.com)
15:21:27 × keutoi quits (~keutoi@157.48.189.217) (Ping timeout: 240 seconds)
15:21:55 skykanin joins (~skykanin@115.81-166-221.customer.lyse.net)
15:23:27 keutoi joins (~keutoi@157.48.189.217)
15:23:38 × dajoer quits (~david@user/gvx) (Quit: leaving)
15:24:42 × skykanin quits (~skykanin@115.81-166-221.customer.lyse.net) (Client Quit)
15:25:25 × slack1256 quits (~slack1256@191.125.33.180) (Remote host closed the connection)
15:25:27 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 240 seconds)
15:25:31 skykanin joins (~skykanin@115.81-166-221.customer.lyse.net)
15:25:47 × azeem quits (~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 240 seconds)
15:25:54 hyiltiz joins (~quassel@31.220.5.250)
15:26:48 × mouseghost quits (~draco@user/mouseghost) (Quit: mew wew)
15:26:59 × hendursaga quits (~weechat@user/hendursaga) (Remote host closed the connection)
15:27:23 hendursaga joins (~weechat@user/hendursaga)
15:29:40 chisui joins (~chisui@200116b868760900d980a481ca884939.dip.versatel-1u1.de)
15:30:19 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.2)
15:30:20 slack1256 joins (~slack1256@191.125.33.180)
15:30:28 <chisui> Hey, is there any documentation of the dark art of writing compiler plugins?
15:30:40 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2)
15:31:21 × vs^ quits (~vs@12.16.129.111) (Remote host closed the connection)
15:32:25 × edmundnoble quits (sid229620@id-229620.brockwell.irccloud.com) ()
15:32:40 edmundnoble joins (sid229620@id-229620.helmsley.irccloud.com)
15:33:53 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds)
15:34:00 <tomsmeding> chisui: there are some notes here, not sure how extensive they are https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/extending_ghc.html
15:34:52 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
15:35:52 <chisui> thanks
15:36:53 × arjun quits (~Srain@user/arjun) (Ping timeout: 250 seconds)
15:37:09 <kuribas> tdammers: is it that expensive though?
15:37:41 <kuribas> tdammers: would it be harder than using any monad library?
15:38:23 × flukiluke quits (~flukiluke@2603:c023:c000:6c7e:8945:ad24:9113:a962) (Remote host closed the connection)
15:39:10 buggymcbugfix joins (~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de)
15:39:20 flukiluke joins (~flukiluke@2603:c023:c000:6c7e:8945:ad24:9113:a962)
15:41:13 × Boomerang quits (~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 250 seconds)
15:43:19 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
15:43:33 juhp joins (~juhp@128.106.188.220)
15:45:47 × farn quits (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Ping timeout: 240 seconds)
15:46:11 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
15:46:40 × oxytocat quits (~alloca@user/suppi) (Ping timeout: 240 seconds)
15:47:05 farn joins (~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
15:47:52 oxytocat joins (~alloca@user/suppi)
15:50:06 dsrt^ joins (~dsrt@12.16.129.111)
15:50:32 × buggymcbugfix quits (~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de) (Quit: Connection closed)
15:51:49 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 244 seconds)
15:52:59 buggymcbugfix joins (~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de)
15:53:00 × lortabac quits (~lortabac@62.98.34.238) (Quit: WeeChat 2.8)
15:53:53 ChaiTRex joins (~ChaiTRex@user/chaitrex)
15:54:20 econo joins (uid147250@user/econo)
15:56:27 × jippiedoe quits (~david@2a02-a44c-e14e-1-d8c8-4f7-e34-193e.fixed6.kpn.net) (Ping timeout: 240 seconds)
15:58:33 × buggymcbugfix quits (~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
16:00:10 × jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
16:01:02 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:02:26 × zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection)
16:03:25 × kaychaks__ quits (sid236345@id-236345.brockwell.irccloud.com) ()
16:03:45 kaychaks__ joins (sid236345@id-236345.helmsley.irccloud.com)
16:04:52 × Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
16:05:02 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
16:05:06 × elvishjerricco quits (sid237756@brockwell.irccloud.com) ()
16:05:21 elvishjerricco joins (sid237756@id-237756.helmsley.irccloud.com)
16:06:22 × parseval quits (sid239098@id-239098.brockwell.irccloud.com) ()
16:06:36 parseval joins (sid239098@id-239098.helmsley.irccloud.com)
16:06:55 × lbseale__ quits (~lbseale@user/ep1ctetus) (Remote host closed the connection)
16:08:01 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
16:08:05 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
16:11:57 <kuribas> hmm, but for a web service it probably doesn't matter, because each request will run in one user context...
16:12:37 <kuribas> So you need to just enforce that all resources are going through the permission checker...
16:12:53 alicebudda joins (~alicebudd@cold.passenger.volia.net)
16:13:44 azeem joins (~azeem@176.201.15.223)
16:13:47 × Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Ping timeout: 240 seconds)
16:16:18 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 26.3))
16:16:21 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
16:24:01 × alicebudda quits (~alicebudd@cold.passenger.volia.net) (Quit: Client closed)
16:24:37 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
16:26:55 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
16:29:56 son0p joins (~ff@181.136.122.143)
16:30:11 zaquest joins (~notzaques@5.128.210.178)
16:31:28 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 252 seconds)
16:32:43 azeem joins (~azeem@176.201.15.223)
16:40:23 zzz parts (~yin@user/yin) ()
16:40:41 zzz joins (~yin@user/yin)
16:42:51 Sqaure is now known as B2G2_
16:43:12 B2G2_ is now known as Sqaure
16:43:16 zebrag joins (~chris@user/zebrag)
16:43:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:47:30 <gaze___> is there a nice utility for string templating in haskell but inline as a template haskell extension?
16:47:39 <gaze___> something closer to python’s string formatting
16:47:53 <gaze___> or alternatively — is there a nice utility for generating c++ code?
16:48:31 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
16:51:43 ec_ joins (~ec@gateway/tor-sasl/ec)
16:52:45 <gaze___> ah test.shakespeare.text
16:52:51 <gaze___> *text.shakespeare.text
16:53:28 × shailangsa quits (~shailangs@host86-185-102-120.range86-185.btcentralplus.com) (Ping timeout: 252 seconds)
16:53:58 oxide joins (~lambda@user/oxide)
16:54:39 arjun joins (~Srain@110.235.239.43)
16:54:42 × arjun quits (~Srain@110.235.239.43) (Remote host closed the connection)
16:55:56 × oxide quits (~lambda@user/oxide) (Client Quit)
17:00:01 pavonia joins (~user@user/siracusa)
17:00:17 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 248 seconds)
17:00:37 × Sinbad quits (~Sinbad@user/sinbad) (Ping timeout: 252 seconds)
17:03:12 azeem joins (~azeem@176.201.15.223)
17:05:06 buggymcbugfix joins (~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de)
17:05:53 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Remote host closed the connection)
17:08:07 × drd quits (~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 240 seconds)
17:12:27 × keutoi quits (~keutoi@157.48.189.217) (Ping timeout: 240 seconds)
17:13:27 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
17:13:51 Achylles joins (~Achylles_@2804:431:d724:c077:94a6:8465:b517:1da8)
17:14:24 keutoi joins (~keutoi@223.238.95.231)
17:14:42 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
17:16:16 × azeem quits (~azeem@176.201.15.223) (Read error: Connection reset by peer)
17:16:28 azeem joins (~azeem@dynamic-adsl-94-34-21-20.clienti.tiscali.it)
17:16:35 cuz joins (~user@38.140.58.234)
17:17:51 × jespada quits (~jespada@90.254.245.194) (Ping timeout: 250 seconds)
17:18:51 × Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
17:19:54 × keutoi quits (~keutoi@223.238.95.231) (Quit: leaving)
17:19:57 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
17:20:01 lavaman joins (~lavaman@98.38.249.169)
17:20:10 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
17:20:21 jespada joins (~jespada@90.254.245.194)
17:21:18 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
17:21:48 fef joins (~thedawn@user/thedawn)
17:21:49 <buggymcbugfix> how would i create a dependency graph of a haskell definition (not module!) wrt to its free variables?
17:22:31 <buggymcbugfix> automatically..
17:22:34 × Achylles quits (~Achylles_@2804:431:d724:c077:94a6:8465:b517:1da8) (Remote host closed the connection)
17:23:25 <c_wraith> I don't think there's anything easily adapted to that purpose.
17:24:16 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
17:25:22 <c_wraith> The various IDE support tools probably are the closest tools to that, but they only work with source.
17:25:37 <buggymcbugfix> yep, i've got the sources
17:25:44 <c_wraith> Of course, giving how aggressive GHC can be with inlining, source is the only reliable way to do it in the first place
17:25:56 <buggymcbugfix> which IDE support tools do you have in mind?
17:26:33 <c_wraith> anything that supports "jump to definition" has all the pieces you need, but they aren't arranged the way you want
17:26:33 × azeem quits (~azeem@dynamic-adsl-94-34-21-20.clienti.tiscali.it) (Read error: Connection reset by peer)
17:27:11 × Vajb quits (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
17:27:54 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
17:28:41 <buggymcbugfix> if i want to use ghc itself for this, i'm assuming all the information i need is at the renaming stage
17:28:48 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:29:27 azeem joins (~azeem@dynamic-adsl-94-34-21-20.clienti.tiscali.it)
17:29:33 × reumeth quits (~reumeth@user/reumeth) (Ping timeout: 250 seconds)
17:31:09 ec_ joins (~ec@gateway/tor-sasl/ec)
17:34:38 <buggymcbugfix> aha, this seems interesting: https://hackage.haskell.org/package/ghc-8.10.2/docs/src/GHC.Hs.Binds.html#HsBindLR
17:35:21 wjl joins (~wjl@024-241-014-164.res.spectrum.com)
17:35:36 wjl parts (~wjl@024-241-014-164.res.spectrum.com) ()
17:36:03 <cdsmith> Is there any way to say something like this in a rewrite rule? {-# RULES "foo" forall a. Show a => forall (x :: a). foo x = fooWithShow x #-}
17:36:40 <cdsmith> That fails with a syntax error, but hopefully gets the idea across
17:37:16 × haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
17:37:29 haykam joins (~haykam@static.100.2.21.65.clients.your-server.de)
17:37:47 <cdsmith> If I leave out the Show, I get an error saying "Possible fix: Add Show a to the context of the RULE", which makes me hopeful!
17:38:07 × azeem quits (~azeem@dynamic-adsl-94-34-21-20.clienti.tiscali.it) (Ping timeout: 240 seconds)
17:38:46 Guest42 joins (~Guest42@adsl-72-50-7-6.prtc.net)
17:39:25 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Remote host closed the connection)
17:40:12 azeem joins (~azeem@176.201.15.223)
17:45:40 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
17:45:43 × zer0bitz quits (~zer0bitz@dsl-hkibng31-58c384-213.dhcp.inet.fi) (Ping timeout: 252 seconds)
17:46:13 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
17:46:28 PinealGlandOptic joins (~PinealGla@195.60.174.145)
17:46:36 stiell joins (~stiell@gateway/tor-sasl/stiell)
17:48:06 <carter> cdsmith: I think you can just syntactically inject show
17:48:15 <carter> And … it’ll mostly work?
17:48:28 <cdsmith> @carter I'm not sure what that means.
17:48:29 <lambdabot> A rocky road is easier to travel than a stone wall.
17:48:42 <carter> Do it without the type constraints ?
17:49:24 <cdsmith> Like this? https://code.world/haskell#Pxi2jzEgRtHTbbZHuPbIfew Doesn't work
17:49:48 <carter> Hrmm
17:50:17 <cdsmith> I would love to "add Show a to the context of the RULE" as suggested. I just cannot find the syntax to do so
17:51:26 <carter> cdsmith: the issue may also be that foralls in rules also are used for quantifying over syntax?
17:51:41 <carter> fgaz: you have any ideas here ?
17:52:13 <carter> This is actually a kinda cool problem you’ve hit
17:52:55 <carter> cdsmith: I pulled my back this AM, but I totally will dig into this :)
17:52:59 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
17:53:16 <cdsmith> Yikes! Hope your back gets better quickly
17:54:13 <cdsmith> You definitely need two foralls if you want type-level explicit quantifiers. That's clear from the GHC user guide.
17:54:30 <cdsmith> like: forall a. forall (x :: a). ...
17:54:54 <cdsmith> But none of the user guide examples have a context for the RULE
17:58:35 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
17:59:21 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
18:00:05 zer0bitz joins (~zer0bitz@dsl-hkibng31-58c384-213.dhcp.inet.fi)
18:00:53 <cdsmith> Builds, but doesn't work: https://code.world/haskell#Pd4WZhPErm5DuwdYa4YzL8g
18:01:55 gensyst joins (gensyst@user/gensyst)
18:03:32 × mud quits (~mud@user/kadoban) (Remote host closed the connection)
18:03:35 <gensyst> What's the way to stream a list to/from files? If the byte length of each element is not always same, how do you indicate a "separator"?
18:04:23 smarton joins (~smarton@gnu/webmaster/smarton)
18:04:36 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
18:04:50 <cdsmith> gensyst: There are several ways: lazy I/O is convenient for scripting, but not suitable for long-running programs. Libraries like conduit, pipes, and io-streams are better for long-running programs.
18:05:40 <gensyst> cdsmith, yes that's what i actually meant by "list".. even with conduit, i still have the question how the data is read back into haskell
18:06:03 <gensyst> How does "it" know where to separate?
18:06:04 × Guest42 quits (~Guest42@adsl-72-50-7-6.prtc.net) (Ping timeout: 246 seconds)
18:06:53 <gensyst> conduit just gets me bytestring chunks i presume
18:07:12 <gensyst> (when reading a file)
18:07:58 ubert joins (~Thunderbi@178.165.204.112.wireless.dyn.drei.com)
18:08:59 × smarton quits (~smarton@gnu/webmaster/smarton) (Read error: Connection reset by peer)
18:09:29 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Remote host closed the connection)
18:09:45 ec_ joins (~ec@gateway/tor-sasl/ec)
18:10:17 smarton joins (~smarton@gnu/webmaster/smarton)
18:12:41 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
18:12:53 <cdsmith> Right. I also lets you unpush leftovers. So you can read a chunk, look for the next separator, and either emit an element downstream and then unpush the leftover, or else block to read more if you don't have a complete element
18:13:12 <cdsmith> There may be combinators to make that sort of thing easier. I honestly am not knowledgable about conduit off-hand
18:13:23 <cdsmith> Looking at docs now to see if there's something I see there
18:15:23 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
18:15:58 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
18:17:07 × buggymcbugfix quits (~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
18:17:10 <carter> cdsmith: yeah I don’t think that other rule will ever run except in code in ghci
18:17:23 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
18:18:11 gentauro joins (~gentauro@user/gentauro)
18:18:34 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
18:19:35 <cdsmith> gensyst: Looks like takeExactlyUntilE might be your friend here if you want to take everything up to a field separator. Or line, if that field separator is \n
18:19:35 × smarton quits (~smarton@gnu/webmaster/smarton) (Read error: Connection reset by peer)
18:20:14 smarton joins (~smarton@gnu/webmaster/smarton)
18:20:34 × wrengr_away quits (~wrengr@56.4.82.34.bc.googleusercontent.com) (Quit: leaving)
18:20:45 <gensyst> cdsmith, ok so it all boils down to some sort of magic separators?
18:20:50 <gensyst> (if byte length of each is not fixed)
18:21:40 <cdsmith> Sure, that's one way to do it. Another would be to use some kind of parser. Depends on what your input data looks like. If you get to choose, then separating with \n and using linesUnbounded or something like that seems good.
18:23:14 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
18:23:31 × cohn quits (~noone@user/cohn) (Quit: leaving)
18:23:44 <gensyst> cdsmith, ah i think your "unpush leftovers" is the key. combined with "decodeExPortionWith" here: https://hackage.haskell.org/package/store-0.7.12/docs/Data-Store.html
18:25:16 mud joins (~mud@user/kadoban)
18:25:26 <cdsmith> gensyst: Yes, that will work. https://hackage.haskell.org/package/conduit-1.3.4.1/docs/Data-Conduit.html#v:leftover is how you unread the rest
18:25:55 <gensyst> thanks!
18:26:54 × maroloccio quits (~marolocci@37.100.40.252) (Quit: WeeChat 3.0)
18:27:10 smarton parts (~smarton@gnu/webmaster/smarton) (Leaving)
18:29:28 wrengr joins (~wrengr@56.72.82.34.bc.googleusercontent.com)
18:30:03 <cdsmith> carter: Yeah, I think that required x to be polymorphic, which isn't what I want
18:30:43 <cdsmith> So I'm back with https://code.world/haskell#PPy7SH19I_3Pu4KUz7s3K_g and no idea how to do the suggested fix
18:31:33 delYsid joins (~user@84-115-55-45.cable.dynamic.surfer.at)
18:33:34 × gensyst quits (gensyst@user/gensyst) (Quit: Leaving)
18:34:34 PinealGlandOptic parts (~PinealGla@195.60.174.145) ()
18:37:31 <carter> So …. I think it’s actually impossible in ghcs current rule engine to express what you want. It might be possible in a future ghc or a different system. Partly because type class constraints are only solved at type checking time, and this rule kinda creates a new type class dictionary pass through site that didn’t exist at the time of type checking. Because the rule that would introduce it hasn’t run till after type checking
18:38:36 <carter> Like, you could imagine some sort of version of rules that sortah works backward to add those inference constraints. But I think the only fix you can do is add a show constraint to the parent
18:38:47 <carter> cdsmith: wait! There’s a tool you can use
18:38:53 <carter> That might do what you want
18:39:45 <carter> https://github.com/well-typed/recover-rtti … would this work for you or does it need to run in ghcjs?
18:40:23 <carter> In which case, we could just ffi bind an evil js print fucntion as a -> String and just use that ?
18:41:02 <carter> Would
18:41:05 <carter> That work?
18:41:37 <cdsmith> I want this to work in as many places as possible. Found https://stackoverflow.com/questions/19745038/ghc-rewrite-rule-specialising-a-function-for-a-type-class, which points to https://hackage.haskell.org/package/ifcxt, which is bitrotted but looks easy to understand and reproduce in HMock
18:42:08 <cdsmith> So I think that solves it (as well as explaining why RULES aren't viable, just as you did)
18:43:03 <carter> Ohhh the bit about not being in a type class?
18:43:16 <carter> I don’t think that’s even the issue, though it’s related
18:44:12 <carter> Hrmmm. Yeah this gets into needing something like multimethods for runtime attempts to work
18:44:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:45:10 Vajb joins (~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
18:46:43 lavaman joins (~lavaman@98.38.249.169)
18:46:58 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
18:47:08 _crazygirl joins (~hola@213.94.16.140)
18:48:03 oxide joins (~lambda@user/oxide)
18:48:25 × _crazygirl quits (~hola@213.94.16.140) (Killed (ozone (No Spam)))
18:52:44 × remedan quits (~remedan@balak.me) (Quit: Bye!)
18:54:30 ec_ joins (~ec@gateway/tor-sasl/ec)
18:57:28 Sinbad joins (~Sinbad@user/sinbad)
18:57:40 jakalx joins (~jakalx@base.jakalx.net)
19:01:29 remedan joins (~remedan@balak.me)
19:04:16 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
19:05:19 × mei quits (~mei@user/mei) (Ping timeout: 250 seconds)
19:05:46 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
19:07:10 jumper149 joins (~jumper149@80.240.31.34)
19:07:50 buggymcbugfix joins (~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de)
19:08:06 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
19:11:31 × cuz quits (~user@38.140.58.234) (Ping timeout: 252 seconds)
19:12:27 × buggymcbugfix quits (~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
19:14:44 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
19:17:58 d0ku joins (~d0ku@178.43.56.75.ipv4.supernova.orange.pl)
19:18:47 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
19:22:26 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Remote host closed the connection)
19:23:25 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
19:23:25 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
19:23:25 wroathe joins (~wroathe@user/wroathe)
19:24:02 mniip_ is now known as mniip
19:26:27 cuz joins (~user@38.140.58.234)
19:29:16 Erutuon joins (~Erutuon@user/erutuon)
19:29:41 maroloccio joins (~marolocci@37.100.40.252)
19:30:53 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
19:30:53 × lavaman quits (~lavaman@98.38.249.169) (Read error: Connection reset by peer)
19:31:04 lavaman joins (~lavaman@98.38.249.169)
19:31:19 × neo quits (~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 252 seconds)
19:32:30 Pickchea joins (~private@user/pickchea)
19:33:42 hseg joins (~gesh@IGLD-84-228-238-79.inter.net.il)
19:34:23 <zzz> Data.Graph from containers or fgl?
19:34:54 <Rembane_> zzz: You could also use Data.Map.
19:35:12 <zzz> Rembane_: how so?
19:35:41 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
19:38:11 ec_ joins (~ec@gateway/tor-sasl/ec)
19:39:14 × qbt quits (~edun@user/edun) (Remote host closed the connection)
19:39:51 <monochrom> Also [] and [[]]
19:41:26 <Rembane_> zzz: A graph has many representations, a mapping between nodes is one of them. OTOH fgl is fun!
19:43:00 <monochrom> The fgl paper would be fun to read. I don't find fgl fun to use. Unless "fun" means many type parameters and many classes.
19:48:13 × alx741 quits (~alx741@181.196.68.94) (Ping timeout: 250 seconds)
19:49:28 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
19:51:47 × jtomas quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Ping timeout: 240 seconds)
19:53:23 <zzz> this seems fun: https://hackage.haskell.org/package/algebraic-graphs
19:57:09 × maroloccio quits (~marolocci@37.100.40.252) (Quit: WeeChat 3.0)
19:58:56 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 250 seconds)
19:59:45 azeem joins (~azeem@176.201.15.223)
20:00:30 × slack1256 quits (~slack1256@191.125.33.180) (Remote host closed the connection)
20:01:13 alx741 joins (~alx741@186.178.108.43)
20:03:43 jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
20:05:26 × juhp quits (~juhp@128.106.188.220) (Ping timeout: 250 seconds)
20:05:34 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:05:53 × oxide quits (~lambda@user/oxide) (Quit: oxide)
20:07:29 × Guest1613 quits (~chris@81.96.113.213) (Ping timeout: 248 seconds)
20:08:09 juhp joins (~juhp@128.106.188.220)
20:08:38 × mrmonday quits (~robert@what.i.hope.is.not.a.tabernaevagant.es) (Quit: .)
20:08:49 mrmonday joins (robert@2a01:7e00::f03c:91ff:fe24:1bd)
20:13:20 talismanick joins (~user@2601:644:8500:8350::cc04)
20:17:47 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 240 seconds)
20:18:27 azeem joins (~azeem@176.201.15.223)
20:19:51 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 250 seconds)
20:21:43 meriadoc joins (~meriadoc@097-086-004-112.res.spectrum.com)
20:22:23 meriadoc parts (~meriadoc@097-086-004-112.res.spectrum.com) (WeeChat 2.3)
20:22:55 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
20:25:08 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
20:27:13 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Ping timeout: 250 seconds)
20:29:02 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
20:31:20 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
20:33:10 × Sinbad quits (~Sinbad@user/sinbad) (Quit: WeeChat 3.2)
20:33:28 ec_ joins (~ec@gateway/tor-sasl/ec)
20:36:19 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
20:44:33 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 250 seconds)
20:48:31 × aman quits (~aman@user/aman) (Quit: aman)
20:49:23 azeem joins (~azeem@176.201.15.223)
20:51:48 × MQ-17J quits (~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 250 seconds)
20:52:10 × mcfilib quits (sid302703@user/mcfilib) ()
20:52:25 mcfilib joins (sid302703@user/mcfilib)
20:54:31 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 250 seconds)
20:58:05 × scav quits (sid309693@id-309693.brockwell.irccloud.com) ()
20:58:20 scav joins (sid309693@id-309693.helmsley.irccloud.com)
20:58:36 MQ-17J joins (~MQ-17J@2607:fb90:888c:3321:7349:4005:9638:7e44)
21:00:33 acidjnk_new3 joins (~acidjnk@p200300d0c72b9534e4a445cd6b407eb5.dip0.t-ipconnect.de)
21:01:15 × MQ-17J quits (~MQ-17J@2607:fb90:888c:3321:7349:4005:9638:7e44) (Read error: Connection reset by peer)
21:01:21 × epolanski quits (uid312403@id-312403.brockwell.irccloud.com) ()
21:01:36 epolanski joins (uid312403@id-312403.helmsley.irccloud.com)
21:02:44 MQ-17J joins (~MQ-17J@d14-69-206-129.try.wideopenwest.com)
21:03:26 × gregberns__ quits (sid315709@id-315709.brockwell.irccloud.com) ()
21:03:40 gregberns__ joins (sid315709@id-315709.helmsley.irccloud.com)
21:04:27 × d0ku quits (~d0ku@178.43.56.75.ipv4.supernova.orange.pl) (Ping timeout: 240 seconds)
21:05:11 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:05:16 × remedan quits (~remedan@balak.me) (Quit: Bye!)
21:05:57 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
21:08:49 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Remote host closed the connection)
21:09:49 remedan joins (~remedan@balak.me)
21:10:21 ec_ joins (~ec@gateway/tor-sasl/ec)
21:10:45 × remedan quits (~remedan@balak.me) (Client Quit)
21:10:58 × Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
21:13:02 remedan joins (~remedan@balak.me)
21:15:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:15:19 × ubert quits (~Thunderbi@178.165.204.112.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
21:18:57 × Natch quits (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se) (Ping timeout: 248 seconds)
21:23:27 <nshepperd> i need to send in a patch to that package
21:23:45 <nshepperd> The documented complexity for 'vertexCount :: AdjacencyIntMap -> Int' is wrong
21:23:47 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 240 seconds)
21:24:16 azeem joins (~azeem@176.201.15.223)
21:24:49 <nshepperd> because IntMap.size is o(n)
21:30:40 × jespada quits (~jespada@90.254.245.194) (Ping timeout: 252 seconds)
21:30:55 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 250 seconds)
21:31:07 × remedan quits (~remedan@balak.me) (Quit: Bye!)
21:32:07 azeem joins (~azeem@176.201.15.223)
21:32:28 × parisienne quits (sid383587@id-383587.brockwell.irccloud.com) ()
21:32:42 parisienne joins (sid383587@id-383587.helmsley.irccloud.com)
21:33:20 × NiKaN quits (sid385034@id-385034.brockwell.irccloud.com) ()
21:33:40 jespada joins (~jespada@90.254.245.194)
21:34:05 NiKaN joins (sid385034@id-385034.helmsley.irccloud.com)
21:34:14 oldsk00l joins (~znc@ec2-3-120-38-228.eu-central-1.compute.amazonaws.com)
21:34:59 × gaze___ quits (sid387101@id-387101.brockwell.irccloud.com) ()
21:35:13 gaze___ joins (sid387101@id-387101.helmsley.irccloud.com)
21:37:13 remedan joins (~remedan@balak.me)
21:40:45 mouseghost joins (~draco@user/mouseghost)
21:42:07 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
21:43:00 × remedan quits (~remedan@balak.me) (Quit: Bye!)
21:45:04 remedan joins (~remedan@balak.me)
21:47:42 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
21:49:22 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
21:51:11 × markpythonicbtc quits (~textual@2601:647:5a00:35:999f:46ac:3d0f:19d0) (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:51:45 markpythonicbtc joins (~textual@2601:647:5a00:35:999f:46ac:3d0f:19d0)
21:53:45 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
21:54:59 × haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
21:55:12 haykam joins (~haykam@static.100.2.21.65.clients.your-server.de)
21:57:36 jgeerds joins (~jgeerds@55d4b311.access.ecotel.net)
21:58:50 × jtomas quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
21:59:14 jtomas joins (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
21:59:29 × cuz quits (~user@38.140.58.234) (Ping timeout: 248 seconds)
22:04:33 × skykanin quits (~skykanin@115.81-166-221.customer.lyse.net) (Quit: WeeChat 3.2)
22:05:35 chris joins (~chris@81.96.113.213)
22:05:38 chris is now known as Guest1966
22:05:39 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:06:28 ubert joins (~Thunderbi@178.165.204.112.wireless.dyn.drei.com)
22:06:53 × acidjnk_new3 quits (~acidjnk@p200300d0c72b9534e4a445cd6b407eb5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
22:07:59 × ubert quits (~Thunderbi@178.165.204.112.wireless.dyn.drei.com) (Client Quit)
22:08:17 ubert joins (~Thunderbi@178.165.204.112.wireless.dyn.drei.com)
22:09:19 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
22:11:22 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
22:12:31 × ubert quits (~Thunderbi@178.165.204.112.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
22:13:49 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Ping timeout: 250 seconds)
22:14:27 ubert joins (~Thunderbi@178.165.204.112.wireless.dyn.drei.com)
22:15:10 × ubert quits (~Thunderbi@178.165.204.112.wireless.dyn.drei.com) (Client Quit)
22:15:51 <hseg> why is ghc complaining it cannot prove c (Sum a) in the call to f here? http://ix.io/3wRV
22:15:55 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
22:16:13 × mouseghost quits (~draco@user/mouseghost) (Quit: mew wew)
22:19:18 × jtomas quits (~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
22:19:25 <glguy> f @Sum :: c a => c (Sum a) => [Sum a] -> [Sum a]
22:19:37 <glguy> but you only asserted that: c a => on the outside
22:19:43 <glguy> so c (Sum a) is leftover
22:20:18 <hseg> not sure I follow
22:20:32 <glguy> to use f @Sum, you need two instances: c a, and c (Sum a)
22:20:42 <glguy> you only had one of those available so you got an error about the other
22:20:42 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
22:20:56 <hseg> ah. meant a quantified constraint instead
22:21:03 <hseg> not a curried constraint arrow
22:21:07 <glguy> ah
22:21:37 <hseg> wanted "you can call this function whose type depends on f provided you show c a implies c (f a)"
22:22:42 <glguy> What you wrote means you can only use f *if* it's true that c a implies c (Sum a), right?
22:22:56 <hseg> yup
22:23:00 <glguy> but we don't know that
22:23:45 <glguy> did you want that implication as a top-level constraint perhaps instead of attached to 'f'?
22:23:48 <hseg> .. meant the first parameter to test can only be called at such f s.t. c a implies c (f a)
22:24:10 <glguy> since we don't know that c a implies c (Sum a) we can't use f
22:25:07 <hseg> ah, right
22:25:11 <hseg> hrmph
22:25:56 <hseg> original usecase was that I want a combinator that will tag/untag variables that have useless Monoid constraints
22:26:00 <hseg> which worked fine
22:26:47 <hseg> (so my passed function was eg :: (forall f. Monoid (f l) => t (f l) -> t (f l) -> t (f l))
22:27:14 <hseg> except now I want to pass a function that makes an additional assumption on this f l
22:27:35 <hseg> hrm
22:28:31 <hseg> ig the way to spell this would be to have test constrained with (c a => c (Sum a)), and have its parameter just assume c (f a)
22:29:36 <hseg> ... and indeed, am forced to write what can equivalently and more simply can be written test :: c (Sum a) => ...
22:31:07 <hseg> iow, qc wouldn't help me here unless I could magically synthesise a type constructor f s.t. c a => c (f a)
22:33:44 <hseg> thanks!
22:41:27 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:42:10 × Gurkenglas quits (~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
22:42:13 shailangsa joins (~shailangs@host86-185-102-120.range86-185.btcentralplus.com)
22:45:33 abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
22:45:53 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
22:46:01 jakalx joins (~jakalx@base.jakalx.net)
22:46:13 lavaman joins (~lavaman@98.38.249.169)
22:50:39 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
22:52:15 sjb0 joins (~stephen@1.145.81.71)
22:55:00 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Remote host closed the connection)
22:56:38 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
22:58:08 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
22:59:03 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Read error: Connection reset by peer)
22:59:22 × chisui quits (~chisui@200116b868760900d980a481ca884939.dip.versatel-1u1.de) (Ping timeout: 246 seconds)
22:59:48 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
23:03:49 × Ananta-shesha quits (~pjetcetal@2.95.210.196) (Remote host closed the connection)
23:05:19 × haykam quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
23:05:33 haykam joins (~haykam@static.100.2.21.65.clients.your-server.de)
23:11:09 Natch joins (~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se)
23:11:32 Ananta-shesha joins (~pjetcetal@2.95.210.196)
23:12:10 × dextaa quits (~DV@user/dextaa) (Ping timeout: 240 seconds)
23:13:39 dextaa joins (~DV@user/dextaa)
23:15:17 <hseg> hrmmph. any ideas on how to reduce this boilerplate? http://ix.io/3wS6
23:16:27 × jgeerds quits (~jgeerds@55d4b311.access.ecotel.net) (Ping timeout: 240 seconds)
23:17:21 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:17:27 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 240 seconds)
23:18:58 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2)
23:21:23 × oldsk00l quits (~znc@ec2-3-120-38-228.eu-central-1.compute.amazonaws.com) (Remote host closed the connection)
23:22:14 benin036932 joins (~benin@183.82.178.142)
23:25:49 <hseg> so it seems I'm falling into the same trap I did a couple minutes ago here? http://ix.io/3wS8
23:26:34 <hseg> viz. I'm expecting a constrained parameter to bring the required dicts with it
23:27:13 <hseg> where instead a parameter (c => t) means I can only call that parameter in contexts where c is true
23:27:46 hyiltiz joins (~quassel@31.220.5.250)
23:28:14 <hseg> it seems what I want is an existential quantifier
23:28:42 <hseg> which requires me to pack that parameter up in a GADT
23:29:13 × vysn quits (~vysn@user/vysn) (Ping timeout: 250 seconds)
23:29:14 <hseg> in which case I can scrap most of this approach, and try just doing GADT+evaluator
23:33:18 aegon joins (~mike@174.127.249.180)
23:33:52 × Guest1966 quits (~chris@81.96.113.213) (Ping timeout: 252 seconds)
23:34:22 <aegon> I need to compose effects in a new project and am realizing mtl is not the best choice according to what I am reading. Whats the actual difference of transformers? Is there something that summarizes the differences / reasoning behind transformers vs mtl?
23:35:04 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Remote host closed the connection)
23:35:09 <hpc> iirc one is the types and the other is the type classes
23:35:42 <hpc> i usually just think of them as the same thing
23:36:37 <aegon> so i should depend on both?
23:36:40 d0ku joins (~d0ku@178.43.56.75.ipv4.supernova.orange.pl)
23:37:10 <hpc> depend on mtl, and it depends on transformers
23:38:10 <aegon> kk, thanks. Wierd, saw some stack overflow about one being a replacement for the other with monads-fd / monads-tf
23:38:38 <geekosaur> mtl is more or less monads-fd
23:39:08 <geekosaur> monads-tf was an old experimental alternative implementation
23:39:32 <geekosaur> both were based on transformers iirc
23:39:42 <hpc> yeah, monads-tf depends on transformers too
23:40:21 <hpc> fd = functional dependencies, tf = type families
23:41:04 chris joins (~chris@81.96.113.213)
23:41:07 chris is now known as Guest4855
23:44:19 <aegon> hpc: geekosaur: thanks for demystifying things
23:47:27 × dextaa quits (~DV@user/dextaa) (Ping timeout: 240 seconds)
23:48:16 <monochrom> There was a historical point of reorganization, before which mtl and transformers were repeating the same labour, after which they divided the labour.
23:48:27 dextaa joins (~DV@user/dextaa)
23:49:58 × sjb0 quits (~stephen@1.145.81.71) (Read error: Connection reset by peer)
23:54:58 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 240 seconds)
23:55:19 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 252 seconds)
23:55:44 azeem joins (~azeem@176.201.15.223)

All times are in UTC on 2021-08-24.