2021/08/24

2021-08-24 00:00:18 +0200 <dminuoso> Or "I can't believe that your prof's course material didn't start off with type families"
2021-08-24 00:00:26 +0200 <dminuoso> That's where your job is headed.
2021-08-24 00:00:46 +0200 <dminuoso> Soon we will abolish code generation in GHC.
2021-08-24 00:01:29 +0200 <batch12> dminuoso: This does the job:
2021-08-24 00:01:29 +0200 <batch12> type family IsShow (a :: [*]) :: Constraint where
2021-08-24 00:01:29 +0200 <batch12> IsShow '[] = ()
2021-08-24 00:01:29 +0200 <batch12> IsShow (h:t) = (Show h, IsShow t)
2021-08-24 00:01:59 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Remote host closed the connection)
2021-08-24 00:02:28 +0200 <dminuoso> % type family IsShow (a :: [*]) :: Constraint where IsShow '[] = (); IsShow (h:t) = (Show h, IsShow t)
2021-08-24 00:02:28 +0200 <yahb> dminuoso:
2021-08-24 00:03:01 +0200 <dminuoso> And how do you intend to use this?
2021-08-24 00:04:58 +0200 <batch12> I'm maintaining a stack of operations that are attached to some values
2021-08-24 00:05:43 +0200 <batch12> (the actual class is not show..)
2021-08-24 00:05:57 +0200 <batch12> Thanks for the help!
2021-08-24 00:08:18 +0200 <fresheyeball> ok I got another quandry
2021-08-24 00:08:25 +0200 <fresheyeball> postgresql simple
2021-08-24 00:08:35 +0200 <fresheyeball> Incompatible {errSQLType = "record", errSQLTableOid = Nothing, errSQLField = "row", errHaskellType = "Text", errMessage = "types incompatible"}
2021-08-24 00:08:44 +0200 <fresheyeball> The column has type text
2021-08-24 00:08:49 +0200 <fresheyeball> and the haskell type is Text
2021-08-24 00:08:53 +0200 <fresheyeball> I am at a loss
2021-08-24 00:09:25 +0200 <dminuoso> fresheyeball: can you show the code?
2021-08-24 00:09:55 +0200 <hpc> can the column be null?
2021-08-24 00:09:58 +0200 <fresheyeball> dminuoso: http://ix.io/3wMj
2021-08-24 00:10:05 +0200 <fresheyeball> no it cannot be null
2021-08-24 00:10:27 +0200 <fresheyeball> http://ix.io/3wMk
2021-08-24 00:10:31 +0200 <fresheyeball> this is the schema
2021-08-24 00:12:06 +0200 <dminuoso> fresheyeball: Is there valid utf8 in there?
2021-08-24 00:12:16 +0200benin036932(~benin@183.82.178.142)
2021-08-24 00:12:41 +0200 <dminuoso> I expect not.
2021-08-24 00:13:34 +0200 <fresheyeball> dminuoso: I am not sure, it's being generated by an Arbitrary instance
2021-08-24 00:14:07 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-08-24 00:14:19 +0200 <fresheyeball> ok I hard coded it to "user" and "pass" and the error persists
2021-08-24 00:14:23 +0200 <fresheyeball> those are both utf8
2021-08-24 00:15:27 +0200batch12(~user@192.152.118.97) (Ping timeout: 240 seconds)
2021-08-24 00:17:21 +0200 <dminuoso> errSQLField = "row"
2021-08-24 00:17:37 +0200 <fresheyeball> ?
2021-08-24 00:18:12 +0200 <dminuoso> I find that curious
2021-08-24 00:18:19 +0200 <dminuoso> It should mention the column name
2021-08-24 00:18:58 +0200 <fresheyeball> It was the parens in the query
2021-08-24 00:19:19 +0200 <dminuoso> fresheyeball: Does this trigger on insert or select?
2021-08-24 00:19:28 +0200 <fresheyeball> select
2021-08-24 00:19:53 +0200 <dminuoso> 00:18:58 fresheyeball | It was the parens in the query
2021-08-24 00:19:55 +0200 <dminuoso> Yeah.
2021-08-24 00:19:59 +0200 <dminuoso> That explains it.
2021-08-24 00:20:30 +0200 <dminuoso> Also why there's no table oid, or SQLType "record"
2021-08-24 00:20:47 +0200 <fresheyeball> well onto the next error
2021-08-24 00:20:54 +0200d0ku(~d0ku@37.30.113.168.nat.umts.dynamic.t-mobile.pl)
2021-08-24 00:21:06 +0200 <fresheyeball> apparently my createUser query doesn't make a user that is fount by my lookupHashByUsername function
2021-08-24 00:22:26 +0200 <dminuoso> fresheyeball: the order of columns is swapped around in the insert.
2021-08-24 00:22:33 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
2021-08-24 00:22:35 +0200 <fresheyeball> so
2021-08-24 00:22:39 +0200 <dminuoso> or not?
2021-08-24 00:22:52 +0200 <fresheyeball> I don't understand why it matters the order
2021-08-24 00:22:55 +0200 <fresheyeball> they are named
2021-08-24 00:23:20 +0200 <dminuoso> fresheyeball: what does the ToField instance for User look like?
2021-08-24 00:23:31 +0200 <fresheyeball> it's derived from a newtype of Text
2021-08-24 00:24:13 +0200 <dminuoso> Anyway. Enable debugging in your postgresql server
2021-08-24 00:24:20 +0200 <dminuoso> That way you can see what queries your database is actually getting
2021-08-24 00:24:25 +0200 <dminuoso> This can be a gods end with postgresql-simple
2021-08-24 00:26:27 +0200 <fresheyeball> well I looked in the db
2021-08-24 00:26:33 +0200 <fresheyeball> and there is in fact a user there
2021-08-24 00:26:35 +0200 <fresheyeball> oh shit
2021-08-24 00:26:37 +0200 <fresheyeball> I see
2021-08-24 00:26:51 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Ping timeout: 250 seconds)
2021-08-24 00:27:23 +0200 <aegon> fresheyeball: does the flow your trying to emulate in haskell work in raw sql?
2021-08-24 00:27:31 +0200 <fresheyeball> user_name needs UNIQUE
2021-08-24 00:27:57 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-08-24 00:28:31 +0200 <fresheyeball> ok tests run now atleast
2021-08-24 00:28:53 +0200 <dminuoso> fresheyeball: Btw, you might want to use cryptonite rather if security is important to you. :)
2021-08-24 00:29:06 +0200 <dminuoso> Argh
2021-08-24 00:29:09 +0200 <dminuoso> I meant libsodium,
2021-08-24 00:29:11 +0200 <fresheyeball> what is wrong with Data.Password.Argon2
2021-08-24 00:29:13 +0200 <fresheyeball> ?
2021-08-24 00:29:15 +0200 <dminuoso> Im really tired and need to go to bed.
2021-08-24 00:29:19 +0200 <dminuoso> No I meant libsodium
2021-08-24 00:29:35 +0200 <dminuoso> fresheyeball: libsodium is written by crypto experts with a keen focus on avoiding side channels
2021-08-24 00:29:35 +0200 <fresheyeball> well apparently Data.Password cannot handle all strings
2021-08-24 00:29:38 +0200 <dminuoso> all these haskell libraries are not.
2021-08-24 00:29:47 +0200d0ku(~d0ku@37.30.113.168.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds)
2021-08-24 00:30:40 +0200 <dminuoso> There's not even published papers on side channels in haskell semantics, the code that GHC produces, the way its optimized works, how this affects cache lines, CPU instructions, and everything
2021-08-24 00:31:44 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
2021-08-24 00:32:22 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-08-24 00:32:24 +0200 <fresheyeball> ok
2021-08-24 00:32:28 +0200 <fresheyeball> this is good enough for now
2021-08-24 00:32:31 +0200 <fresheyeball> I will look into it
2021-08-24 00:32:49 +0200 <fresheyeball> either way, it's actually the user check that is failing now
2021-08-24 00:32:58 +0200 <fresheyeball> "L\NUL'\"?Dk"
2021-08-24 00:32:59 +0200 <fresheyeball> expected: "L\NUL'\"?Dk"
2021-08-24 00:33:01 +0200 <fresheyeball> but got: "L"
2021-08-24 00:33:22 +0200 <fresheyeball> utf8 problem?
2021-08-24 00:34:19 +0200 <dminuoso> Postgresql does not permit NUL bytes in text
2021-08-24 00:34:41 +0200 <dminuoso> It's surprising this gets truncated silently
2021-08-24 00:35:54 +0200 <fresheyeball> ok well I seriously doubt that users are going manage to get a NUL byte into a webform
2021-08-24 00:37:05 +0200 <dminuoso> And this is how bugs and security issues are born
2021-08-24 00:37:34 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
2021-08-24 00:37:43 +0200 <dminuoso> I seriously doubt someone is named "; DROP ALL TABLES"
2021-08-24 00:38:03 +0200 <hseg> (except for bobby tables)
2021-08-24 00:38:52 +0200 <dminuoso> fresheyeball: Ignoring these types of bugs can have surprising results
2021-08-24 00:39:00 +0200 <dminuoso> Consider the case where a user might call themselves
2021-08-24 00:39:04 +0200 <dminuoso> a\BELdmin
2021-08-24 00:39:31 +0200 <dminuoso> And suddenly this becomes `admin` after roundtripping say through the database, or some rendering engine
2021-08-24 00:40:07 +0200jgeerds(~jgeerds@55d4b311.access.ecotel.net) (Ping timeout: 240 seconds)
2021-08-24 00:41:03 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-08-24 00:43:03 +0200 <fresheyeball> dminuoso: ouch
2021-08-24 00:43:12 +0200ham(~ham4@user/ham) (Quit: Leaving)
2021-08-24 00:43:29 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-08-24 00:50:07 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-08-24 00:52:15 +0200cjb(~cjb@user/cjb)
2021-08-24 00:53:42 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-08-24 00:53:56 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de)
2021-08-24 00:54:00 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-08-24 00:57:13 +0200elf_fortrez(~elf_fortr@adsl-72-50-6-134.prtc.net) (Quit: Client closed)
2021-08-24 00:59:31 +0200elf_fortrezz(~elf_fortr@adsl-72-50-6-134.prtc.net)
2021-08-24 01:00:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 01:01:31 +0200acidjnk_new(~acidjnk@p200300d0c72b9556a59b812708dd2de4.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-08-24 01:01:38 +0200forell(~forell@user/forell) (Ping timeout: 268 seconds)
2021-08-24 01:01:50 +0200elf_fortrezz(~elf_fortr@adsl-72-50-6-134.prtc.net) (Client Quit)
2021-08-24 01:02:12 +0200elf_fortrez(~elf_fortr@adsl-72-50-6-134.prtc.net)
2021-08-24 01:03:42 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2021-08-24 01:04:30 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-08-24 01:06:58 +0200lavaman(~lavaman@98.38.249.169)
2021-08-24 01:07:48 +0200dsrt^(~dsrt@12.16.129.111) (Remote host closed the connection)
2021-08-24 01:08:30 +0200dsrt^(~dsrt@12.16.129.111)
2021-08-24 01:11:07 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-08-24 01:11:43 +0200chisui(~chisui@200116b868b05800c65627e740591fd3.dip.versatel-1u1.de) (Ping timeout: 246 seconds)
2021-08-24 01:12:06 +0200elf_fortrez(~elf_fortr@adsl-72-50-6-134.prtc.net) (Quit: Client closed)
2021-08-24 01:16:04 +0200forell(~forell@user/forell)
2021-08-24 01:17:39 +0200teo(~teo@137.220.120.222)
2021-08-24 01:17:52 +0200hseg(~gesh@IGLD-84-228-238-79.inter.net.il) (Ping timeout: 250 seconds)
2021-08-24 01:18:20 +0200Katarushisu(~Katarushi@cpc147334-finc20-2-0-cust27.4-2.cable.virginm.net) (Quit: Ping timeout (120 seconds))
2021-08-24 01:19:37 +0200teo(~teo@137.220.120.222) (Remote host closed the connection)
2021-08-24 01:21:04 +0200dajoer(~david@user/gvx)
2021-08-24 01:23:14 +0200venue(~venue@user/venue)
2021-08-24 01:27:27 +0200vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2021-08-24 01:34:31 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-24 01:34:40 +0200 <Cajun> yeah anything that has to do with user entry should be essentially babied from your code. sanitize it in every possible way
2021-08-24 01:35:10 +0200 <Cajun> as much as script injection/ACE is fun to mess with, its not fun when someone messes with it on your platform :P
2021-08-24 01:35:52 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-08-24 01:36:30 +0200Gurkenglas(~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de) (Ping timeout: 250 seconds)
2021-08-24 01:36:46 +0200ft(~ft@shell.chaostreff-dortmund.de) (Ping timeout: 268 seconds)
2021-08-24 01:41:24 +0200d0ku(~d0ku@178.43.56.75.ipv4.supernova.orange.pl)
2021-08-24 01:45:26 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-08-24 01:45:44 +0200ft(~ft@shell.chaostreff-dortmund.de)
2021-08-24 01:54:50 +0200fresheyeball(~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
2021-08-24 01:55:44 +0200batch12(~user@192.152.118.97)
2021-08-24 02:24:43 +0200d0ku(~d0ku@178.43.56.75.ipv4.supernova.orange.pl) (Ping timeout: 250 seconds)
2021-08-24 02:27:38 +0200juhp(~juhp@128.106.188.220) (Quit: juhp)
2021-08-24 02:27:53 +0200juhp(~juhp@128.106.188.220)
2021-08-24 02:31:17 +0200xlei(znc@pool-68-129-84-118.nycmny.fios.verizon.net) (Quit: ZNC - https://znc.in)
2021-08-24 02:32:05 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds)
2021-08-24 02:35:17 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2021-08-24 02:35:40 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
2021-08-24 02:36:30 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf)
2021-08-24 02:36:40 +0200tommd(~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 240 seconds)
2021-08-24 02:37:20 +0200jespada(~jespada@90.254.247.46) (Ping timeout: 258 seconds)
2021-08-24 02:39:06 +0200xlei(znc@pool-68-129-84-118.nycmny.fios.verizon.net)
2021-08-24 02:40:01 +0200shailangsa(~shailangs@host86-186-136-25.range86-186.btcentralplus.com) (Ping timeout: 248 seconds)
2021-08-24 02:40:03 +0200lavaman(~lavaman@98.38.249.169)
2021-08-24 02:41:24 +0200aegon(~mike@174.127.249.180) (Quit: leaving)
2021-08-24 02:42:21 +0200jespada(~jespada@90.254.245.194)
2021-08-24 02:48:11 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-08-24 02:53:40 +0200urdh(~urdh@user/urdh) (Ping timeout: 240 seconds)
2021-08-24 02:57:46 +0200cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
2021-08-24 03:00:52 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
2021-08-24 03:01:21 +0200cjb(~cjb@user/cjb)
2021-08-24 03:04:18 +0200urdh(~urdh@user/urdh)
2021-08-24 03:12:17 +0200Nosrep(~archbox@user/nosrep)
2021-08-24 03:12:56 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2021-08-24 03:16:34 +0200shailangsa(~shailangs@host86-185-102-120.range86-185.btcentralplus.com)
2021-08-24 03:20:50 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Remote host closed the connection)
2021-08-24 03:22:33 +0200alx741(~alx741@181.196.68.94) (Quit: alx741)
2021-08-24 03:23:14 +0200Guest86(~Guest86@68.233.176.29) (Quit: Client closed)
2021-08-24 03:29:44 +0200tommd(~tommd@75-164-130-101.ptld.qwest.net)
2021-08-24 03:30:45 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-08-24 03:31:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 03:37:31 +0200lavaman(~lavaman@98.38.249.169)
2021-08-24 03:42:43 +0200xff0x(~xff0x@2001:1a81:52f9:3300:b601:7649:8935:742b) (Ping timeout: 250 seconds)
2021-08-24 03:44:22 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
2021-08-24 03:44:40 +0200xff0x(~xff0x@2001:1a81:5333:b100:e90f:35ab:1ea2:78fd)
2021-08-24 03:45:17 +0200dsrt^(~dsrt@12.16.129.111) (Remote host closed the connection)
2021-08-24 03:46:34 +0200dsrt^(~dsrt@12.16.129.111)
2021-08-24 03:47:29 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds)
2021-08-24 03:48:00 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2)
2021-08-24 03:54:41 +0200dsrt^(~dsrt@12.16.129.111) (Remote host closed the connection)
2021-08-24 03:56:28 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-08-24 03:56:33 +0200notzmv(~zmv@user/notzmv) (Read error: Connection reset by peer)
2021-08-24 03:59:51 +0200notzmv(~zmv@user/notzmv)
2021-08-24 04:00:38 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Remote host closed the connection)
2021-08-24 04:01:10 +0200tommd(~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 240 seconds)
2021-08-24 04:01:13 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Read error: Connection reset by peer)
2021-08-24 04:01:26 +0200dsrt^(~dsrt@12.16.129.111)
2021-08-24 04:01:51 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-08-24 04:03:48 +0200tommd(~tommd@75-164-130-101.ptld.qwest.net)
2021-08-24 04:05:10 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-24 04:06:26 +0200dsrt^(~dsrt@12.16.129.111) (Ping timeout: 250 seconds)
2021-08-24 04:08:57 +0200Erutuon(~Erutuon@user/erutuon)
2021-08-24 04:13:30 +0200dsrt^(~dsrt@12.16.129.111)
2021-08-24 04:15:58 +0200favonia(~favonia@user/favonia) (Ping timeout: 250 seconds)
2021-08-24 04:19:18 +0200notzmvzimmybot
2021-08-24 04:19:25 +0200zimmybotnotzmv
2021-08-24 04:19:27 +0200tommd(~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 240 seconds)
2021-08-24 04:20:46 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
2021-08-24 04:21:10 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 252 seconds)
2021-08-24 04:22:59 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-08-24 04:27:28 +0200favonia(~favonia@user/favonia)
2021-08-24 04:37:40 +0200td_(~td@94.134.91.226) (Ping timeout: 240 seconds)
2021-08-24 04:39:50 +0200td_(~td@94.134.91.225)
2021-08-24 04:47:54 +0200abrantesasf(~abrantesa@2804:14d:b086:4b3c:2e56:dcff:fedb:62f) (Quit: Leaving)
2021-08-24 04:53:48 +0200ikex1(ash@user/ikex)
2021-08-24 04:57:08 +0200ikex(~ash@user/ikex) (Ping timeout: 250 seconds)
2021-08-24 04:57:09 +0200ikex1ikex
2021-08-24 05:00:10 +0200bontaq(~user@ool-18e47f8d.dyn.optonline.net) (Ping timeout: 250 seconds)
2021-08-24 05:17:27 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-08-24 05:18:44 +0200thornAvery(~thorn@137.147.64.16) (Quit: WeeChat 3.2)
2021-08-24 05:21:40 +0200otto_s(~user@p4ff270c5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-08-24 05:22:03 +0200notzmv(~zmv@user/notzmv) (Remote host closed the connection)
2021-08-24 05:23:16 +0200otto_s(~user@p5de2f618.dip0.t-ipconnect.de)
2021-08-24 05:28:09 +0200notzmv(~zmv@user/notzmv)
2021-08-24 05:28:53 +0200keutoi(~keutoi@157.48.145.7)
2021-08-24 05:35:07 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds)
2021-08-24 05:39:00 +0200elf_fortrez(~elf_fortr@adsl-72-50-7-12.prtc.net)
2021-08-24 05:49:49 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-08-24 06:00:33 +0200keutoi(~keutoi@157.48.145.7) (Ping timeout: 248 seconds)
2021-08-24 06:00:59 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 06:07:53 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2021-08-24 06:11:17 +0200Guest2290(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-24 06:15:06 +0200bbear(~znc@21212.s.t4vps.eu) (Quit: ZNC 1.7.4 - https://znc.in)
2021-08-24 06:15:20 +0200bbear(~znc@21212.s.t4vps.eu)
2021-08-24 06:16:28 +0200chris(~chris@81.96.113.213)
2021-08-24 06:16:32 +0200chrisGuest8132
2021-08-24 06:19:33 +0200sjb0(~stephen@2001:8004:5170:3b13:8c1d:1f1c:70aa:a42e)
2021-08-24 06:20:30 +0200mei(~mei@user/mei)
2021-08-24 06:20:46 +0200Guest8132(~chris@81.96.113.213) (Ping timeout: 250 seconds)
2021-08-24 06:21:47 +0200nate1(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-08-24 06:23:05 +0200keutoi(~keutoi@157.47.104.135)
2021-08-24 06:23:57 +0200thornAvery(~Thorn@2401:c080:1800:4346:5400:3ff:fe2c:c8f8)
2021-08-24 06:24:35 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-08-24 06:24:49 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de)
2021-08-24 06:32:04 +0200aman(~aman@user/aman) (Ping timeout: 252 seconds)
2021-08-24 06:35:04 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-24 06:44:04 +0200aman(~aman@user/aman)
2021-08-24 06:48:25 +0200cjb(~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
2021-08-24 06:49:48 +0200vysn(~vysn@user/vysn)
2021-08-24 06:55:14 +0200Maxdamantus(~Maxdamant@user/maxdamantus) (Ping timeout: 272 seconds)
2021-08-24 06:55:30 +0200Maxdamantus(~Maxdamant@user/maxdamantus)
2021-08-24 07:01:27 +0200falafel(~falafel@2601:280:4e00:9970:69e8:224d:d22f:fb15)
2021-08-24 07:04:38 +0200elf_fortrez(~elf_fortr@adsl-72-50-7-12.prtc.net) (Quit: Client closed)
2021-08-24 07:05:05 +0200favonia(~favonia@user/favonia) (Ping timeout: 250 seconds)
2021-08-24 07:05:24 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-08-24 07:07:38 +0200falafel_(~falafel@2601:280:4e00:9970:69e8:224d:d22f:fb15)
2021-08-24 07:09:47 +0200batch12(~user@192.152.118.97) (Ping timeout: 240 seconds)
2021-08-24 07:10:01 +0200epolanski(uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
2021-08-24 07:10:43 +0200falafel(~falafel@2601:280:4e00:9970:69e8:224d:d22f:fb15) (Ping timeout: 250 seconds)
2021-08-24 07:20:34 +0200slack1256(~slack1256@181.203.9.71)
2021-08-24 07:22:51 +0200slack1256[m](~slack1256@2001:470:69fc:105::e068)
2021-08-24 07:23:04 +0200slack1256[m](~slack1256@2001:470:69fc:105::e068) ()
2021-08-24 07:34:59 +0200benin036932(~benin@183.82.178.142) (Ping timeout: 250 seconds)
2021-08-24 07:39:19 +0200slack1256(~slack1256@181.203.9.71) (Ping timeout: 250 seconds)
2021-08-24 07:44:51 +0200vysn(~vysn@user/vysn) (Remote host closed the connection)
2021-08-24 07:45:03 +0200 <talismanick> Does GHC play nice with distcc?
2021-08-24 07:45:37 +0200 <talismanick> (I have several mediocre laptops on hand, and no beefy server to handle long compiles)
2021-08-24 07:45:51 +0200 <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
2021-08-24 07:46:36 +0200 <talismanick> Or ccache, for that matter
2021-08-24 07:52:04 +0200slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-08-24 07:52:46 +0200chris(~chris@81.96.113.213)
2021-08-24 07:52:49 +0200chrisGuest3531
2021-08-24 07:55:39 +0200vysn(~vysn@user/vysn)
2021-08-24 07:57:25 +0200ubert(~Thunderbi@91.141.36.16.wireless.dyn.drei.com)
2021-08-24 08:14:15 +0200elf_fortrezz(~elf_fortr@adsl-72-50-6-135.prtc.net)
2021-08-24 08:14:23 +0200shriekingnoise(~shrieking@186.137.144.80) (Read error: Connection reset by peer)
2021-08-24 08:18:06 +0200jakalx(~jakalx@base.jakalx.net) ()
2021-08-24 08:18:51 +0200Gurkenglas(~Gurkengla@dslb-088-064-053-140.088.064.pools.vodafone-ip.de)
2021-08-24 08:22:36 +0200elf_fortrezz(~elf_fortr@adsl-72-50-6-135.prtc.net) (Quit: Client closed)
2021-08-24 08:25:25 +0200jakalx(~jakalx@base.jakalx.net)
2021-08-24 08:30:57 +0200azeem(~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 248 seconds)
2021-08-24 08:31:38 +0200azeem(~azeem@176.201.15.223)
2021-08-24 08:31:53 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 08:33:26 +0200azeem(~azeem@176.201.15.223) (Read error: Connection reset by peer)
2021-08-24 08:33:39 +0200azeem(~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
2021-08-24 08:34:56 +0200lortabac(~lortabac@62.98.34.238)
2021-08-24 08:44:19 +0200falafel_(~falafel@2601:280:4e00:9970:69e8:224d:d22f:fb15) (Ping timeout: 250 seconds)
2021-08-24 08:52:24 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2021-08-24 08:56:11 +0200mc47(~mc47@xmonad/TheMC47)
2021-08-24 08:56:32 +0200 <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?
2021-08-24 08:56:46 +0200 <arahael> I'm not deliberately opening or closing files, except for a single .tar.gz file at the very start.
2021-08-24 08:57:17 +0200timCF(~timCF@m91-129-108-244.cust.tele2.ee)
2021-08-24 08:57:21 +0200 <Rembane_> File handles are also used for sockets. Sockets are connections to the HTTP clients. Maybe something isn't closing them as they should.
2021-08-24 08:57:56 +0200 <arahael> Yeah, it's got to be sockets.
2021-08-24 08:58:28 +0200 <Rembane_> Is the application doing Websockets or long polling or something other exciting like that?
2021-08-24 08:58:44 +0200 <arahael> Nope.
2021-08-24 08:59:03 +0200 <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?
2021-08-24 08:59:12 +0200 <arahael> It's basically a google protocol buffers web api, but a naive one at that.
2021-08-24 08:59:17 +0200 <dminuoso> timCF: It's a natural consequence from the construction.
2021-08-24 08:59:18 +0200 <arahael> (Instead of JSON)
2021-08-24 08:59:23 +0200 <dminuoso> timCF: To see why, consider the following:
2021-08-24 08:59:43 +0200 <dminuoso> timCF: `traverse (traverse f) [[1,2,3], [2,3,4]]]`
2021-08-24 08:59:55 +0200 <dminuoso> Which traverse touches the "inner" numbers", and which traverse works on the lists?
2021-08-24 09:00:36 +0200 <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.
2021-08-24 09:00:47 +0200 <timCF> dminuoso: 2nd works on numbers I ghuess
2021-08-24 09:01:03 +0200 <arahael> Rembane_: Such that I could test for any leaks when I do a curl or something.
2021-08-24 09:01:03 +0200 <dminuoso> timCF: Can you try and assert this for yourself?
2021-08-24 09:01:14 +0200 <dminuoso> timCF: Want to ensure that you yourself are sure of this fact.
2021-08-24 09:01:15 +0200 <Rembane_> arahael: If you're running Linux you can get that by the command lsof -i
2021-08-24 09:02:24 +0200 <Rembane_> arahael: lsof -ai -p PIDOFTHEPROCESS
2021-08-24 09:02:32 +0200d0ku(~d0ku@178.43.56.75.ipv4.supernova.orange.pl)
2021-08-24 09:02:40 +0200tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-08-24 09:03:29 +0200gehmehgeh(~user@user/gehmehgeh)
2021-08-24 09:04:14 +0200 <arahael> Rembane_: That just gives: familyser 585947 arahael 3u IPv4 184973807 0t0 TCP *:hbci (LISTEN)
2021-08-24 09:04:25 +0200Kaiepi(~Kaiepi@156.34.44.192) (Ping timeout: 252 seconds)
2021-08-24 09:05:05 +0200 <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
2021-08-24 09:05:26 +0200 <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?
2021-08-24 09:05:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-24 09:06:56 +0200 <arahael> Rembane_: I don't think so. I mean, there's the cabal process itself, but that then just starts the actual server.
2021-08-24 09:07:39 +0200tomsmeding. o O ( pstree PIDOFPROCESS )
2021-08-24 09:09:14 +0200 <dminuoso> timCF: Alright. Now consider:
2021-08-24 09:09:25 +0200 <dminuoso> (traverse . traverse) f [[1,2,3], [2,3,4]]
2021-08-24 09:09:29 +0200 <dminuoso> Do you agree that this is the same thing?
2021-08-24 09:09:51 +0200 <arahael> tomsmeding: That seems to identify that I have the right PID, at least.
2021-08-24 09:09:54 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2021-08-24 09:10:02 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-08-24 09:10:13 +0200 <tomsmeding> arahael: and, apparently, shows that there are no subprocesses you didn't know about :)
2021-08-24 09:11:38 +0200 <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.
2021-08-24 09:11:52 +0200Boomerang(~Boomerang@xd520f68c.cust.hiper.dk)
2021-08-24 09:12:08 +0200 <arahael> So I for a very short time had many, many lines that looked like this:
2021-08-24 09:12:10 +0200 <arahael> familyser 585947 arahael 53u IPv4 185217813 0t0 TCP pihole:hbci->192.168.1.105:52946 (ESTABLISHED)
2021-08-24 09:12:29 +0200azeem(~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 250 seconds)
2021-08-24 09:12:34 +0200 <arahael> (The local server also happens to run pihole, hence that appearing there)
2021-08-24 09:13:25 +0200 <timCF> dminuoso: yeah, result seems the same
2021-08-24 09:13:37 +0200 <arahael> Just counted them with wc -l: It outputs 52 lines.
2021-08-24 09:13:52 +0200 <tomsmeding> that's not too many
2021-08-24 09:13:54 +0200azeem(~azeem@176.201.15.223)
2021-08-24 09:14:13 +0200Erutuon(~Erutuon@user/erutuon) (Ping timeout: 250 seconds)
2021-08-24 09:14:30 +0200 <tomsmeding> try adding -n to the lsof command, less weird port names
2021-08-24 09:14:41 +0200 <timCF> dminuoso: but I think this time first in the line "traverse" is responsible for applying `f` to numbers
2021-08-24 09:15:43 +0200 <tomsmeding> timCF: (traverse1 . traverse2) f x = (\y -> traverse1 (traverse2 y)) f x = traverse1 (traverse2 f) x
2021-08-24 09:15:53 +0200 <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.
2021-08-24 09:16:22 +0200 <arahael> Yet, in a few days, at some random point (haven't seen a pattern), it'll just suddenly die.
2021-08-24 09:16:24 +0200 <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
2021-08-24 09:16:35 +0200 <arahael> tomsmeding: Could be, yes.
2021-08-24 09:18:39 +0200hannessteffenhag(~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de)
2021-08-24 09:18:54 +0200 <arahael> Going to spam the localhost with a while true; connect loop.
2021-08-24 09:19:15 +0200 <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'
2021-08-24 09:19:37 +0200 <tomsmeding> and you'll find whether it's a gradual rise or something more sudden :)
2021-08-24 09:20:39 +0200 <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
2021-08-24 09:20:58 +0200 <tomsmeding> :D
2021-08-24 09:20:59 +0200 <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.
2021-08-24 09:21:01 +0200 <arahael> Which means after a while I was getting "Couldn't connect to server".
2021-08-24 09:21:06 +0200 <Rembane_> arahael: I like the level of chaos in that. :D
2021-08-24 09:21:10 +0200 <Axman6> concurr is hard cy
2021-08-24 09:21:11 +0200 <arahael> Rembane_: :D
2021-08-24 09:21:15 +0200 <tomsmeding> timCF: "after" is definitely correct
2021-08-24 09:21:25 +0200 <dminuoso> timCF: Now, the next bit is this:
2021-08-24 09:21:31 +0200 <dminuoso> `traverse` *is* a valid traversal
2021-08-24 09:21:33 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-08-24 09:21:37 +0200 <tomsmeding> it's applying traverse1 after traverse2 to f
2021-08-24 09:21:41 +0200 <dminuoso> It's the traversal that targets *each* element in a given structure.
2021-08-24 09:21:54 +0200 <timCF> Yeah
2021-08-24 09:22:00 +0200 <dminuoso> And `traverse . traverse` is a composed traversal.
2021-08-24 09:22:06 +0200 <dminuoso> We can even use this with lens:
2021-08-24 09:22:16 +0200 <dminuoso> % toListOf (traverse . traverse) [[1,2,3,], [2,3,4]]
2021-08-24 09:22:17 +0200 <yahb> dminuoso: ; <interactive>:11:40: error: parse error on input `]'
2021-08-24 09:22:23 +0200 <dminuoso> % toListOf (traverse . traverse) [[1,2,3], [2,3,4]]
2021-08-24 09:22:23 +0200 <yahb> dminuoso: [1,2,3,2,3,4]
2021-08-24 09:22:24 +0200jtomas(~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
2021-08-24 09:23:04 +0200 <dminuoso> c.f.:
2021-08-24 09:23:08 +0200 <dminuoso> % :i Traversal
2021-08-24 09:23:09 +0200 <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'
2021-08-24 09:23:30 +0200 <dminuoso> type Traversal s t a b = forall (f :: * -> *). Applicative f => (a -> f b) -> s -> f t;
2021-08-24 09:23:33 +0200 <dminuoso> % :t traverse
2021-08-24 09:23:33 +0200 <yahb> dminuoso: (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b)
2021-08-24 09:23:45 +0200 <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.
2021-08-24 09:23:49 +0200 <dminuoso> timCF: A lens is something similar to this, except the constraint is Functor, not Applicative.
2021-08-24 09:24:04 +0200 <dminuoso> timCF: If you care, I can give you a set of simple examples to explore this further
2021-08-24 09:24:12 +0200 <dminuoso> Well. Tasks really
2021-08-24 09:24:18 +0200 <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)
2021-08-24 09:24:24 +0200 <tomsmeding> arahael: yeah my intent with that while-loop was to let that running for a few days until it crashes
2021-08-24 09:26:10 +0200 <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.
2021-08-24 09:26:21 +0200 <arahael> It's up to 550 files now.
2021-08-24 09:26:32 +0200 <arahael> Or at least, 550-2 files.
2021-08-24 09:26:33 +0200 <tomsmeding> "yay"?
2021-08-24 09:27:11 +0200 <arahael> Yeah.
2021-08-24 09:27:18 +0200 <arahael> Stupid optimisations. ;)
2021-08-24 09:27:50 +0200 <arahael> I can tell that the server is clearly single-threaded, processing connections very very sequentially.
2021-08-24 09:28:10 +0200 <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)
2021-08-24 09:28:12 +0200 <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
2021-08-24 09:28:25 +0200 <arahael> That's my thinking, yeah.
2021-08-24 09:28:26 +0200 <dminuoso> 09:14:41 timCF | dminuoso: but I think this time first in the line "traverse" is responsible for applying `f` to numbers
2021-08-24 09:28:35 +0200 <dminuoso> timCF: If you understood this, you already understood why lenses compose "backwards"
2021-08-24 09:28:43 +0200 <dminuoso> Nothing further to be understood.
2021-08-24 09:28:45 +0200 <timCF> dminuoso: :)
2021-08-24 09:29:03 +0200 <arahael> tomsmeding: Just passed a thousand connections!
2021-08-24 09:29:12 +0200 <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.
2021-08-24 09:29:30 +0200 <dminuoso> If you monomorphize this into
2021-08-24 09:29:31 +0200 <arahael> Aaand error message!
2021-08-24 09:29:34 +0200 <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)
2021-08-24 09:29:46 +0200 <tomsmeding> yay
2021-08-24 09:29:51 +0200 <dminuoso> traverseList :: Applicative f => (a -> f b) -> [a] -> f [b]
2021-08-24 09:30:02 +0200 <dminuoso> Then thats a "traversal that targets each item in a list"
2021-08-24 09:30:13 +0200 <dminuoso> But we could also write such a thing, that targets each *second* item in a list.
2021-08-24 09:30:37 +0200 <Athas> Is there a function '[a] -> [(a,a)]' that turns '[1,2,3,4]' into '[(1,2),(3,4)]'?
2021-08-24 09:31:01 +0200 <dminuoso> Athas: What are the rules of that function?
2021-08-24 09:31:06 +0200 <tomsmeding> dminuoso's and Athas's last messages seem strangely related
2021-08-24 09:31:17 +0200 <Athas> dminuoso: I don't care about the edge cases, if that's what you mean.
2021-08-24 09:31:25 +0200 <dminuoso> Athas: No I really dont know what that function is supposed to do
2021-08-24 09:31:32 +0200 <Athas> Clearly I should add a dependency on topograph to get it!
2021-08-24 09:31:52 +0200 <dminuoso> Athas: I can think of at least a handful of differnet implementations that would produce that result given [1,2,3,4]
2021-08-24 09:32:02 +0200 <Athas> dminuoso: this is its specification: pairs [] = []; pairs (x:y:l) = (x,y) : pairs l
2021-08-24 09:32:04 +0200 <dminuoso> What would the function produce given [1,2,3], or [1...100]?
2021-08-24 09:32:22 +0200 <dminuoso> I see
2021-08-24 09:32:23 +0200 <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.
2021-08-24 09:32:35 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2021-08-24 09:33:21 +0200 <arahael> Rembane_: Im' actually wondering how to make it multithreaded, as I have several cores.
2021-08-24 09:33:28 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-08-24 09:33:38 +0200 <dminuoso> Athas: does it have to be tuples, or can it be lists too?
2021-08-24 09:33:53 +0200 <Rembane_> arahael: That will certainly make your troubleshooting more interesting. :)
2021-08-24 09:34:00 +0200 <arahael> Rembane_: Then, my next thing will be to more simplistically configure my client apps not to open so many connections. :)
2021-08-24 09:34:11 +0200 <Athas> dminuoso: Is there space for that kind of wiggle room in type type?
2021-08-24 09:34:29 +0200 <dminuoso> Athas: I can conjure up some `Int -> [a] -> [[a]]` fairly easily?
2021-08-24 09:34:37 +0200 <dminuoso> I know you know this too
2021-08-24 09:34:43 +0200 <dminuoso> So Im thinking we have our wires crossed
2021-08-24 09:34:46 +0200 <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. :)
2021-08-24 09:34:52 +0200 <Athas> But the type must be '[a] -> [(a,a)]'.
2021-08-24 09:35:08 +0200 <dminuoso> So that's a no on "can it be lists too".
2021-08-24 09:35:11 +0200 <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.
2021-08-24 09:35:35 +0200 <arahael> Rembane_: Thanks, will look that up...
2021-08-24 09:35:38 +0200 <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?
2021-08-24 09:36:32 +0200 <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`.
2021-08-24 09:36:50 +0200cfricke(~cfricke@user/cfricke)
2021-08-24 09:36:51 +0200 <arahael> Rembane_: Ah, so I have to set ghc-options in the cabal file.
2021-08-24 09:38:01 +0200 <dminuoso> Athas: Im not seeing any non-convoluted option to construct `pairs` other than just writing it out like you did.
2021-08-24 09:38:36 +0200 <Rembane_> arahael: Exactly.
2021-08-24 09:39:03 +0200 <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?
2021-08-24 09:39:14 +0200 <timCF> dminuoso: thanks for simple explanations)
2021-08-24 09:39:37 +0200son0p(~ff@181.136.122.143) (Ping timeout: 252 seconds)
2021-08-24 09:40:39 +0200azeem(~azeem@176.201.15.223) (Read error: Connection reset by peer)
2021-08-24 09:40:50 +0200 <Rembane_> arahael: It should, if they have something to do. Are they idle?
2021-08-24 09:41:38 +0200cfricke(~cfricke@user/cfricke) (Client Quit)
2021-08-24 09:41:38 +0200 <arahael> Rembane_: My load average is only 1.58
2021-08-24 09:42:11 +0200 <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)
2021-08-24 09:42:52 +0200 <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.
2021-08-24 09:43:17 +0200azeem(~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
2021-08-24 09:44:07 +0200 <Rembane_> arahael: Run the program with the -N4 command line argument and see if it gets better.
2021-08-24 09:44:54 +0200 <arahael> Rembane_: As in, `cabal run -N4 familyserver...`?
2021-08-24 09:45:14 +0200 <Rembane_> arahael: I think so, or perhaps use -- -N4 at the end of the command
2021-08-24 09:45:21 +0200 <Rembane_> arahael: More on multicore here: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/using-concurrent.html
2021-08-24 09:45:28 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 09:46:53 +0200 <arahael> Ah, interesting, so I probably should use something like `+RTS -N4 -RTS`
2021-08-24 09:47:25 +0200 <tomsmeding> Drew[m]: 'cp cabal.project.ghc901 cabal.project; cabal build'
2021-08-24 09:47:35 +0200 <Rembane_> arahael: YEs!
2021-08-24 09:47:35 +0200 <tomsmeding> (after 'git pull; cabal update')
2021-08-24 09:47:57 +0200 <tomsmeding> Drew[m]: let me guess: you missed the cabal.project.ghc901 :p (I missed it for a while too)
2021-08-24 09:48:43 +0200 <tomsmeding> arahael: cabal run familyserver
2021-08-24 09:48:47 +0200 <tomsmeding> arahael: cabal run familyserver -- +RTS -N4
2021-08-24 09:48:48 +0200 <tomsmeding> sorry
2021-08-24 09:49:02 +0200 <tomsmeding> oh you got that already :p
2021-08-24 09:50:15 +0200cfricke(~cfricke@user/cfricke)
2021-08-24 09:50:18 +0200 <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.
2021-08-24 09:50:39 +0200 <Rembane_> Ha! Win! :D
2021-08-24 09:50:59 +0200 <arahael> And it's substantially faster now.
2021-08-24 09:51:50 +0200 <arahael> Taking forever to handle a new connection when there's a massive backlog, though.
2021-08-24 09:52:06 +0200lavaman(~lavaman@98.38.249.169)
2021-08-24 09:52:09 +0200 <Rembane_> Does the program talk to anything else? Like a database.
2021-08-24 09:52:13 +0200 <arahael> (So I think each of the 4 threads is still themselves inherently sequential)
2021-08-24 09:52:16 +0200 <arahael> Nope. All memory.
2021-08-24 09:52:29 +0200 <Rembane_> They probably are. Think of each connection as its own thread.
2021-08-24 09:52:49 +0200 <arahael> Yeah, they don't seem to be that concurrent.
2021-08-24 09:52:51 +0200timCF(~timCF@m91-129-108-244.cust.tele2.ee) (Quit: leaving)
2021-08-24 09:52:59 +0200__monty__(~toonn@user/toonn)
2021-08-24 09:55:21 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be)
2021-08-24 09:56:41 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2021-08-24 09:58:51 +0200 <merijn> arahael: oh, wanna bet I know the problem?
2021-08-24 09:59:05 +0200 <merijn> arahael: Run with "+RTS -sstderr"
2021-08-24 09:59:18 +0200 <merijn> And then pastebin the GC log at the end :p
2021-08-24 09:59:48 +0200 <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.
2021-08-24 10:00:13 +0200 <arahael> merijn: I didn't get a GC log!
2021-08-24 10:00:37 +0200 <merijn> arahael: Does your program terminate or do you SIGINT it?
2021-08-24 10:00:53 +0200 <arahael> merijn: I think it's SIGINT, ie, I kill it by using ^c.
2021-08-24 10:01:02 +0200 <arahael> It otherwise never terminates.
2021-08-24 10:01:06 +0200 <merijn> yeah, it doesn't report a log then :p
2021-08-24 10:01:07 +0200 <arahael> (Unless it runs out of file handles)
2021-08-24 10:01:26 +0200 <merijn> I forgot how to make it print a GC log early, though
2021-08-24 10:01:39 +0200reumeth(~reumeth@user/reumeth)
2021-08-24 10:01:40 +0200 <arahael> Will do that another day, then. :) It's bound to be interesting.
2021-08-24 10:03:22 +0200 <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"
2021-08-24 10:03:48 +0200 <merijn> You can try using "+RTS -qg" and see if it's faster that way
2021-08-24 10:03:58 +0200 <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
2021-08-24 10:03:59 +0200 <arahael> merijn: Ah, no, I doubt it, I'm subjectively seeing much more work being done.
2021-08-24 10:04:16 +0200 <arahael> merijn: Ie, my client app seems faster, and the logs from the server are definitely visibily significantly faster.
2021-08-24 10:04:32 +0200 <merijn> arahael: Sure, but maybe they could be *even* faster :p
2021-08-24 10:05:20 +0200 <arahael> Heh. :)
2021-08-24 10:05:28 +0200 <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.
2021-08-24 10:06:14 +0200hendursa1(~weechat@user/hendursaga)
2021-08-24 10:08:22 +0200hendursaga(~weechat@user/hendursaga) (Ping timeout: 244 seconds)
2021-08-24 10:11:10 +0200 <tomsmeding> Drew[m]: I also don't, hence I just copied it over :p
2021-08-24 10:15:24 +0200acidjnk_new(~acidjnk@p200300d0c72b9556a59b812708dd2de4.dip0.t-ipconnect.de)
2021-08-24 10:17:11 +0200 <tomsmeding> jchia[m]: apparently this exists in Test.QuickCheck.Random https://github.com/nick8325/quickcheck/blob/master/src/Test/QuickCheck/Random.hs#L71
2021-08-24 10:17:38 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
2021-08-24 10:17:39 +0200allbery_b(~geekosaur@xmonad/geekosaur)
2021-08-24 10:17:42 +0200allbery_bgeekosaur
2021-08-24 10:17:54 +0200qbt(~edun@user/edun)
2021-08-24 10:17:56 +0200 <tomsmeding> don't know why there's no documentation generated (I found it by scouting down https://github.com/UnkindPartition/tasty/blob/efe0ad287032b17bfd78c646db62e833518eeb19/quickcheck/… )
2021-08-24 10:19:36 +0200 <Drew[m]> tomsmeding: turns out there is a --project-file flag
2021-08-24 10:20:02 +0200 <jchia[m]> The haddock is broken. Maybe that's why I couldn't find the relevant docs.
2021-08-24 10:20:17 +0200 <tomsmeding> jchia[m]: yeah, no idea why
2021-08-24 10:20:43 +0200 <jchia[m]> I often come across packages having partially or totally broken haddock.
2021-08-24 10:20:45 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-08-24 10:24:47 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Remote host closed the connection)
2021-08-24 10:26:25 +0200lavaman(~lavaman@98.38.249.169)
2021-08-24 10:30:40 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-08-24 10:31:10 +0200talismanick(~user@2601:644:8500:8350::e26b) (Ping timeout: 240 seconds)
2021-08-24 10:31:43 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-24 10:34:35 +0200jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-08-24 10:46:52 +0200econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-08-24 10:48:48 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-24 10:53:46 +0200polyphem(~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3)
2021-08-24 10:56:19 +0200jtomas(~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
2021-08-24 10:57:27 +0200jtomas(~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
2021-08-24 11:00:36 +0200jtomas(~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
2021-08-24 11:02:07 +0200azeem(~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 250 seconds)
2021-08-24 11:03:04 +0200jtomas(~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
2021-08-24 11:03:27 +0200jtomas(~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
2021-08-24 11:03:48 +0200azeem(~azeem@176.201.15.223)
2021-08-24 11:04:20 +0200elf_fortrez(~elf_fortr@adsl-72-50-7-11.prtc.net)
2021-08-24 11:05:18 +0200azeem(~azeem@176.201.15.223) (Read error: Connection reset by peer)
2021-08-24 11:05:36 +0200azeem(~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
2021-08-24 11:06:21 +0200jtomas(~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
2021-08-24 11:06:48 +0200elf_fortrez(~elf_fortr@adsl-72-50-7-11.prtc.net) (Client Quit)
2021-08-24 11:09:02 +0200elf_fortrez(~elf_fortr@adsl-72-50-6-136.prtc.net)
2021-08-24 11:24:05 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-24 11:25:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f)
2021-08-24 11:26:00 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
2021-08-24 11:29:51 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:71e9:72b:1860:cb0f) (Ping timeout: 250 seconds)
2021-08-24 11:30:07 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2021-08-24 11:31:35 +0200azeem(~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-08-24 11:35:49 +0200ubert1(~Thunderbi@91.141.36.16.wireless.dyn.drei.com)
2021-08-24 11:37:13 +0200ubert(~Thunderbi@91.141.36.16.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
2021-08-24 11:37:13 +0200ubert1ubert
2021-08-24 11:37:33 +0200icebreaker(~icebreake@user/icebreaker)
2021-08-24 11:40:55 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-08-24 11:40:57 +0200icebreaker(~icebreake@user/icebreaker) (Client Quit)
2021-08-24 11:41:14 +0200icebreaker(~icebreake@user/icebreaker)
2021-08-24 11:41:27 +0200Morrow_(~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 240 seconds)
2021-08-24 11:41:43 +0200shailangsa(~shailangs@host86-185-102-120.range86-185.btcentralplus.com) (Ping timeout: 252 seconds)
2021-08-24 11:42:16 +0200Moyst(~moyst@user/moyst) (Ping timeout: 252 seconds)
2021-08-24 11:43:43 +0200azeem(~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it)
2021-08-24 11:44:03 +0200Moyst(~moyst@user/moyst)
2021-08-24 11:44:44 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
2021-08-24 11:47:43 +0200mniip(mniip@libera/staff/mniip) (Quit: This page is intentionally left blank.)
2021-08-24 11:47:46 +0200mniip_(mniip@libera/staff/mniip)
2021-08-24 11:57:41 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-24 12:02:24 +0200jippiedoe(~david@2a02-a44c-e14e-1-d8c8-4f7-e34-193e.fixed6.kpn.net)
2021-08-24 12:04:00 +0200lortabac(~lortabac@62.98.34.238) (Quit: WeeChat 2.8)
2021-08-24 12:04:49 +0200elf_fortrez(~elf_fortr@adsl-72-50-6-136.prtc.net) (Ping timeout: 246 seconds)
2021-08-24 12:08:07 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-24 12:12:42 +0200drsocks(~aaashutos@113.199.149.122)
2021-08-24 12:12:57 +0200drsocks(~aaashutos@113.199.149.122) (Client Quit)
2021-08-24 12:14:02 +0200shailangsa_(~shailangs@host86-185-102-120.range86-185.btcentralplus.com)
2021-08-24 12:15:20 +0200mcglk(~mcglk@131.191.49.120) (Read error: Connection reset by peer)
2021-08-24 12:16:14 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-08-24 12:16:20 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
2021-08-24 12:16:38 +0200lavaman(~lavaman@98.38.249.169)
2021-08-24 12:16:45 +0200lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2021-08-24 12:17:00 +0200mcglk(~mcglk@131.191.49.120)
2021-08-24 12:18:15 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-08-24 12:18:34 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
2021-08-24 12:22:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-24 12:24:07 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 12:25:12 +0200ubert(~Thunderbi@91.141.36.16.wireless.dyn.drei.com) (Remote host closed the connection)
2021-08-24 12:26:22 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
2021-08-24 12:28:47 +0200hannessteffenhag(~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2021-08-24 12:29:07 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-24 12:29:52 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 12:30:34 +0200dsrt^(~dsrt@12.16.129.111) (Remote host closed the connection)
2021-08-24 12:30:57 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Ping timeout: 250 seconds)
2021-08-24 12:33:22 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-08-24 12:34:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-24 12:35:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 12:35:39 +0200dschrempf(~dominik@92-249-199-97.pool.digikabel.hu)
2021-08-24 12:37:27 +0200keutoi(~keutoi@157.47.104.135) (Ping timeout: 250 seconds)
2021-08-24 12:39:19 +0200keutoi(~keutoi@106.208.52.196)
2021-08-24 12:40:55 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-24 12:41:32 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 12:43:58 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-24 12:47:25 +0200aman(~aman@user/aman) (Ping timeout: 250 seconds)
2021-08-24 12:47:30 +0200lavaman(~lavaman@98.38.249.169)
2021-08-24 12:48:28 +0200aman(~aman@user/aman)
2021-08-24 12:48:43 +0200keutoi(~keutoi@106.208.52.196) (Ping timeout: 250 seconds)
2021-08-24 12:48:46 +0200dschrempf(~dominik@92-249-199-97.pool.digikabel.hu) (Quit: WeeChat 3.2)
2021-08-24 12:48:57 +0200Morrow_(~Morrow@31.154.96.164)
2021-08-24 12:50:08 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Quit: ERC (IRC client for Emacs 28.0.50))
2021-08-24 12:50:39 +0200keutoi(~keutoi@157.48.189.217)
2021-08-24 12:51:45 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-24 12:51:47 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-08-24 12:52:38 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 12:55:13 +0200hannessteffenhag(~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de)
2021-08-24 12:55:58 +0200 <siers> I found hlint complaining about a redundant bang pattern, which was necessary :)
2021-08-24 12:56:14 +0200chisui(~chisui@200116b868760900ef247521c8a78041.dip.versatel-1u1.de)
2021-08-24 12:57:49 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-24 12:58:20 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 12:59:16 +0200mouseghost(~draco@user/mouseghost)
2021-08-24 12:59:23 +0200 <mouseghost> i wish i understood this language arhhh
2021-08-24 12:59:49 +0200hannessteffenhag(~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2021-08-24 13:00:05 +0200 <Drew[m]> mouseghost: having a particular problem?
2021-08-24 13:00:23 +0200 <mouseghost> looking at basic parser implementation
2021-08-24 13:01:03 +0200alx741(~alx741@181.196.68.94)
2021-08-24 13:01:24 +0200 <mouseghost> but i guess this is mostly an issue of the notation here, hmm
2021-08-24 13:02:02 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-08-24 13:06:18 +0200 <tomsmeding> siers: report a bug :)
2021-08-24 13:06:40 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2021-08-24 13:06:40 +0200 <siers> tomsmeding, I guess I should, but I don't have a good testcase
2021-08-24 13:06:44 +0200polyphem(~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) (Remote host closed the connection)
2021-08-24 13:06:55 +0200polyphem(~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3)
2021-08-24 13:07:26 +0200 <tomsmeding> ah right
2021-08-24 13:07:36 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2021-08-24 13:07:41 +0200 <siers> I mean I have a self-contained simple to run one, but it's not small at all
2021-08-24 13:08:13 +0200 <tomsmeding> I doubt that hlint does sophisticated full-program analysis, so you might be able to significantly reduce it without influencing hlint's behaviour
2021-08-24 13:08:39 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-24 13:09:21 +0200AlexNoo_(~AlexNoo@178.34.150.125)
2021-08-24 13:10:17 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 13:11:22 +0200AlexZenon(~alzenon@94.233.241.255) (Ping timeout: 252 seconds)
2021-08-24 13:11:22 +0200Alex_test(~al_test@94.233.241.255) (Ping timeout: 252 seconds)
2021-08-24 13:12:28 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
2021-08-24 13:12:54 +0200AlexNoo(~AlexNoo@94.233.241.255) (Ping timeout: 258 seconds)
2021-08-24 13:17:04 +0200Alex_test(~al_test@178.34.150.125)
2021-08-24 13:17:19 +0200AlexZenon(~alzenon@178.34.150.125)
2021-08-24 13:19:04 +0200Morrow_(~Morrow@31.154.96.164) (Ping timeout: 252 seconds)
2021-08-24 13:19:14 +0200 <siers> what do you mean?
2021-08-24 13:21:15 +0200 <tomsmeding> siers: you might be able to significantly reduce your code where hlint makes a mistake without influencing hlint's behaviour
2021-08-24 13:21:43 +0200 <siers> meaning it's worthwhile most of the time or?
2021-08-24 13:21:47 +0200 <siers> the false flag
2021-08-24 13:21:50 +0200 <tomsmeding> because I don't think it looks very far from the point where the lint is triggered
2021-08-24 13:22:10 +0200 <tomsmeding> no you should be able to fairly easily reduce your code to a small reproducing example :p
2021-08-24 13:22:12 +0200 <tomsmeding> I think
2021-08-24 13:22:26 +0200felixphew(~felix@cssa/committee/felix)
2021-08-24 13:23:04 +0200lortabac(~lortabac@62.98.34.238)
2021-08-24 13:23:13 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se)
2021-08-24 13:23:41 +0200 <felixphew> hi! I'm trying to use ghcup on FreeBSD 13.0, and having some difficulties
2021-08-24 13:23:50 +0200 <felixphew> I hit this issue and fixed it with a symlink: https://gitlab.haskell.org/ghc/ghc/-/issues/20095
2021-08-24 13:24:05 +0200 <felixphew> but now I'm getting a missing libgmp.so.10
2021-08-24 13:24:36 +0200 <felixphew> does ghcup require GMP from ports? if so, do you know if this is documented anywhere?
2021-08-24 13:24:41 +0200acidjnk_new3(~acidjnk@p200300d0c72b9534e4a445cd6b407eb5.dip0.t-ipconnect.de)
2021-08-24 13:24:55 +0200 <felixphew> FreeBSD hasn't come with libgmp for a good 2 decades afaict
2021-08-24 13:25:48 +0200 <maerwald> felixphew: install the 12.2 compat libs
2021-08-24 13:26:50 +0200 <maerwald> https://www.freshports.org/misc/compat12x/
2021-08-24 13:27:22 +0200 <felixphew> that doesn't come with libgmp.so.10, though...?
2021-08-24 13:27:36 +0200 <felixphew> https://cgit.freebsd.org/ports/tree/misc/compat12x/pkg-plist.amd64
2021-08-24 13:27:43 +0200acidjnk_new(~acidjnk@p200300d0c72b9556a59b812708dd2de4.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-08-24 13:28:54 +0200 <maerwald> it's built on 12.2, so you need whatever is on 12.2
2021-08-24 13:29:14 +0200 <felixphew> yes, and I'm pretty sure libgmp.so.10 isn't in 12.2
2021-08-24 13:29:55 +0200 <felixphew> I can grab a tarball and check, though
2021-08-24 13:30:06 +0200 <maerwald> the binary was built here: https://gitlab.haskell.org/haskell/ghcup-hs/-/jobs/759970
2021-08-24 13:30:09 +0200 <maerwald> clearly on 12.2
2021-08-24 13:30:24 +0200 <felixphew> I'll have a look at that now
2021-08-24 13:32:59 +0200hannessteffenhag(~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de)
2021-08-24 13:34:14 +0200 <felixphew> I strongly suspect that whatever this is running on has math/gmp installed
2021-08-24 13:34:16 +0200 <felixphew> I can
2021-08-24 13:34:31 +0200 <felixphew> 't check, of course, because it's not a Docker image (being not Linux)
2021-08-24 13:35:34 +0200 <maerwald> yeah, imagine freebsd had working docker support
2021-08-24 13:35:55 +0200machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-08-24 13:36:02 +0200 <felixphew> well, it does as a host (using jails with Linux emulation)
2021-08-24 13:36:05 +0200 <felixphew> just not as a guest
2021-08-24 13:36:26 +0200 <felixphew> and... yep, judging by this comment: https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/.gitlab/before_script/freebsd/install_de…
2021-08-24 13:37:06 +0200 <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
2021-08-24 13:37:14 +0200 <maerwald> what's the package name
2021-08-24 13:37:19 +0200 <felixphew> gmp
2021-08-24 13:37:27 +0200hannessteffenhag(~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de) (Ping timeout: 240 seconds)
2021-08-24 13:37:35 +0200 <maerwald> https://gitlab.haskell.org/haskell/ghcup-hs/-/blob/master/ghcup-0.0.6.yaml#L137
2021-08-24 13:37:43 +0200 <maerwald> it's there
2021-08-24 13:37:57 +0200 <maerwald> and presented during installation
2021-08-24 13:38:18 +0200 <felixphew> no it's not, because ghcup _itself_ needs it
2021-08-24 13:38:24 +0200 <maerwald> ah right
2021-08-24 13:38:32 +0200 <maerwald> damn bootstrapping
2021-08-24 13:38:46 +0200 <maerwald> can't win
2021-08-24 13:40:59 +0200 <maerwald> well, let me know when FreeBSD fixes static linking :p
2021-08-24 13:41:24 +0200hannessteffenhag(~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de)
2021-08-24 13:41:49 +0200vs^(~vs@12.16.129.111)
2021-08-24 13:45:50 +0200 <merijn> maerwald: What's broken about it?
2021-08-24 13:46:02 +0200 <maerwald> merijn: all of it?
2021-08-24 13:46:25 +0200 <maerwald> I don't remember the details, but I spent probably an entire weekend on that idea
2021-08-24 13:49:48 +0200yaroot(~yaroot@6.3.30.125.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat)
2021-08-24 13:50:37 +0200yaroot(~yaroot@6.3.30.125.dy.iij4u.or.jp)
2021-08-24 13:50:41 +0200acidjnk_new3(~acidjnk@p200300d0c72b9534e4a445cd6b407eb5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-08-24 13:51:47 +0200geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds)
2021-08-24 13:52:46 +0200geekosaur(~geekosaur@xmonad/geekosaur)
2021-08-24 13:52:58 +0200_ak_(~akspecs@136.24.181.20)
2021-08-24 13:54:46 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-08-24 13:55:29 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-24 13:55:59 +0200burnside_(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-24 13:55:59 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer)
2021-08-24 13:56:32 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-24 13:56:32 +0200burnside_(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer)
2021-08-24 13:58:36 +0200Sinbad(~Sinbad@user/sinbad)
2021-08-24 13:58:55 +0200xff0x(~xff0x@2001:1a81:5333:b100:e90f:35ab:1ea2:78fd) (Ping timeout: 250 seconds)
2021-08-24 13:59:51 +0200xff0x(~xff0x@2001:1a81:5333:b100:677b:385:c244:5fff)
2021-08-24 14:01:32 +0200chisui(~chisui@200116b868760900ef247521c8a78041.dip.versatel-1u1.de) (Quit: Client closed)
2021-08-24 14:03:02 +0200icebreaker(~icebreake@user/icebreaker) (Quit: leaving)
2021-08-24 14:03:06 +0200waleee(~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
2021-08-24 14:03:20 +0200icebreaker(~icebreake@user/icebreaker)
2021-08-24 14:03:37 +0200chisui(~chisui@200116b868760900d980a481ca884939.dip.versatel-1u1.de)
2021-08-24 14:04:40 +0200icebreaker(~icebreake@user/icebreaker) (Client Quit)
2021-08-24 14:04:57 +0200icebreaker(~icebreake@user/icebreaker)
2021-08-24 14:08:30 +0200thornAvery(~Thorn@2401:c080:1800:4346:5400:3ff:fe2c:c8f8) ()
2021-08-24 14:08:53 +0200trcc(~trcc@users-5343.st.net.au.dk)
2021-08-24 14:09:27 +0200polyphem(~polyphem@2a02:810d:640:776c:bd0c:a594:ef4e:c3f3) (Ping timeout: 240 seconds)
2021-08-24 14:11:39 +0200thornAvery(~Thorn@2401:c080:1800:4346:5400:3ff:fe2c:c8f8)
2021-08-24 14:11:39 +0200thornAveryThorn
2021-08-24 14:12:20 +0200ThornthornAvery
2021-08-24 14:13:19 +0200 <kuribas> How do you enable tracing in production? For example if I want to trace the queries generated?
2021-08-24 14:13:27 +0200 <maerwald> https://paste.tomsmeding.com/DS3Bgy4l that looks wrong
2021-08-24 14:13:49 +0200 <kuribas> create a query generator that runs in a logging monad transformer?
2021-08-24 14:13:51 +0200 <thornAvery> why do people hate static linking?
2021-08-24 14:14:02 +0200 <dminuoso> thornAvery: Who says people hate static linking?
2021-08-24 14:14:19 +0200epolanski(uid312403@id-312403.brockwell.irccloud.com)
2021-08-24 14:14:21 +0200 <thornAvery> I just hear a lot of people going on about it
2021-08-24 14:14:23 +0200 <dminuoso> There's just a lot of myths that people appear to readily accept as truth..
2021-08-24 14:14:29 +0200 <kuribas> thornAvery: the only problem is linking libc...
2021-08-24 14:14:48 +0200 <kuribas> thornAvery: because it is not compatible between systems.
2021-08-24 14:14:57 +0200 <thornAvery> Oh fair call
2021-08-24 14:15:08 +0200 <maerwald> musl?
2021-08-24 14:15:20 +0200 <maerwald> linking crypto libs is more problematic than that
2021-08-24 14:15:21 +0200 <kuribas> yeah, musl solves it, but introduces other problems.
2021-08-24 14:15:28 +0200 <dminuoso> thornAvery: In principle there's nothing wrong with static linking, and it generally makes shipping isolated packages easier.
2021-08-24 14:15:29 +0200 <kuribas> with networking
2021-08-24 14:15:31 +0200shriekingnoise(~shrieking@186.137.144.80)
2021-08-24 14:15:32 +0200 <maerwald> nothing is without problems
2021-08-24 14:15:58 +0200 <tomsmeding> maerwald: two different versions of the prettyprint library?
2021-08-24 14:16:05 +0200 <maerwald> tomsmeding: no
2021-08-24 14:16:23 +0200 <maerwald> it's type level hackery
2021-08-24 14:16:30 +0200 <maerwald> https://hackage.haskell.org/package/haskus-utils-variant-3.0/docs/Haskus-Utils-Variant-Excepts.htm…
2021-08-24 14:16:46 +0200 <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
2021-08-24 14:17:00 +0200 <dminuoso> And any memory arguments have been largely moot a long time ago
2021-08-24 14:17:25 +0200 <maerwald> yeah, if you ship static binaries, don't link against ssl
2021-08-24 14:18:29 +0200 <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.
2021-08-24 14:18:37 +0200 <tdammers> the Free Lunch Theory strikes again
2021-08-24 14:18:52 +0200 <dminuoso> Heh yeah
2021-08-24 14:19:29 +0200gehmehgeh(~user@user/gehmehgeh)
2021-08-24 14:20:30 +0200 <dminuoso> maerwald: This is an interesting proposition.
2021-08-24 14:21:04 +0200 <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.
2021-08-24 14:21:17 +0200 <maerwald> well, there are implementations that are made to be statically linked, such as polarssl
2021-08-24 14:21:41 +0200 <maerwald> but you as a static binary distributor will generally do a worse job than the distro
2021-08-24 14:21:54 +0200 <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
2021-08-24 14:21:59 +0200 <dminuoso> Then you can update libraries yourself whenever you feel like it
2021-08-24 14:22:15 +0200 <dminuoso> Perhaps users have become too accustomed to binary packages..
2021-08-24 14:22:21 +0200 <Jack> How can dynamically linking be insecure? This is a serious question
2021-08-24 14:22:28 +0200 <tdammers> problem is of course that it's not entirely clear which libraries might introduce severe security issues
2021-08-24 14:22:31 +0200 <dminuoso> Jack: not insecure, but they can introduce brittleness
2021-08-24 14:22:42 +0200 <maerwald> tdammers: yeah, like png
2021-08-24 14:22:50 +0200 <maerwald> not everything needs to be crypto
2021-08-24 14:22:55 +0200 <dminuoso> because the linked library is not under your control, it might not exist, might exist in wrong flavor, wrong compilation flags, wrong versions
2021-08-24 14:23:04 +0200 <dminuoso> and all existing mechanisms to at least control this are error prone
2021-08-24 14:23:50 +0200 <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
2021-08-24 14:24:07 +0200 <dminuoso> or they add patches left and right to make things work
2021-08-24 14:24:12 +0200 <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
2021-08-24 14:24:17 +0200 <dminuoso> right
2021-08-24 14:24:27 +0200 <dminuoso> I think this is the key part.
2021-08-24 14:24:39 +0200 <maerwald> sonames aren't fool proof etc
2021-08-24 14:24:48 +0200 <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.
2021-08-24 14:24:59 +0200 <dminuoso> maerwald: indeed.
2021-08-24 14:25:45 +0200 <dminuoso> For package inside your own organization, this becomes an interesting topic now.
2021-08-24 14:25:57 +0200 <maerwald> the problem with ssl static linking is also that there's an amount of compile time configuration about certificate store etc afair
2021-08-24 14:26:08 +0200 <dminuoso> Because then it essentialy becomes a question of whether your system administrators are capabable of managing your softwares dynamic dependencies or not.
2021-08-24 14:26:20 +0200 <dminuoso> If not, you're better of just distributing static artifacts.
2021-08-24 14:26:38 +0200 <dminuoso> maerwald: oh really?
2021-08-24 14:26:52 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-08-24 14:26:59 +0200 <maerwald> I mean there are a number of directories an SSL implementations is *supposed* to search
2021-08-24 14:27:09 +0200 <maerwald> but some of these are set at compile time afair
2021-08-24 14:27:14 +0200 <maerwald> it's pretty confusing
2021-08-24 14:27:16 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-08-24 14:27:31 +0200 <merijn> This just in, CA based certificates are a maddening clusterfuck :p
2021-08-24 14:27:40 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-08-24 14:27:44 +0200 <maerwald> just using the system dynamic lib will do the right thing
2021-08-24 14:27:55 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
2021-08-24 14:27:55 +0200maroloccio(~marolocci@37.100.40.252)
2021-08-24 14:27:57 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 250 seconds)
2021-08-24 14:28:22 +0200favonia(~favonia@user/favonia)
2021-08-24 14:29:13 +0200 <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
2021-08-24 14:31:36 +0200 <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"
2021-08-24 14:31:57 +0200 <tdammers> but logic says you can't have both at the same time
2021-08-24 14:32:17 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Ping timeout: 250 seconds)
2021-08-24 14:32:18 +0200bontaq(~user@ool-18e47f8d.dyn.optonline.net)
2021-08-24 14:32:30 +0200 <maerwald> security is expensive
2021-08-24 14:32:41 +0200 <Taneb> Often, not security is even more expensive
2021-08-24 14:32:42 +0200 <merijn> It's almost like half of us programmers don't deserve to call themselves engineers :p
2021-08-24 14:32:47 +0200pbrisbin(~patrick@174-081-116-011.res.spectrum.com)
2021-08-24 14:34:18 +0200 <maerwald> what's an engineer anyway... someone following best practices?
2021-08-24 14:34:39 +0200 <maerwald> like running hlint over their codebase?
2021-08-24 14:35:03 +0200fef(~thedawn@user/thedawn)
2021-08-24 14:35:22 +0200 <maerwald> 'you could write this pointfree'
2021-08-24 14:35:28 +0200 <tdammers> merijn: actually the majority of programmers does not hold an engineering degree, so technically only a small minority deserves the title
2021-08-24 14:35:30 +0200 <merijn> maerwald: No, someone who *plans* for actual long term
2021-08-24 14:35:42 +0200 <maerwald> merijn: don't talk crazy
2021-08-24 14:35:57 +0200maerwaldbuys more crypto
2021-08-24 14:36:00 +0200 <merijn> You plan a bridge to last actual decades. Which means planning how the fuck you will be able to fix/maintain things latr
2021-08-24 14:36:04 +0200markpythonicbtc(~textual@2601:647:5a00:35:f45e:90a7:31f1:d8ef) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-08-24 14:36:28 +0200 <merijn> If you wanna pretend your a software *engineer*, start planning how that shit will work *long* term, instead of this one sprint
2021-08-24 14:36:34 +0200 <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
2021-08-24 14:36:46 +0200 <merijn> That includes, updating libraries, handling libraries disappearing, whatever
2021-08-24 14:37:20 +0200 <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
2021-08-24 14:37:32 +0200 <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?
2021-08-24 14:37:37 +0200 <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
2021-08-24 14:37:50 +0200 <merijn> tdammers: tbh, I can respect that
2021-08-24 14:38:08 +0200 <maerwald> well, they don't just update the compiler, I hope :p
2021-08-24 14:38:33 +0200 <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.
2021-08-24 14:38:35 +0200 <merijn> maerwald: Missile guidance people don't change software versions in their pipeline
2021-08-24 14:38:36 +0200 <maralorn> maralorn: The fact, that integer-gmp 1.1 is not even on hackage does not help.
2021-08-24 14:38:52 +0200 <merijn> tdammers: I agree that software isn't very similar to engineering
2021-08-24 14:39:07 +0200 <tomsmeding> maralorn: how does it depend on it then :p
2021-08-24 14:39:15 +0200 <merijn> tdammers: I'm just saying the attitude of most programmers is shite and they could learn a lot from engineers in many things
2021-08-24 14:39:19 +0200 <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
2021-08-24 14:39:29 +0200 <Logio_> software isn't like engineering only because not enough people have been killed by bad software (yet)
2021-08-24 14:39:32 +0200 <tdammers> merijn: agree on this much.
2021-08-24 14:39:52 +0200 <maralorn> tomsmeding: I suspect integer-gmp 1.1 is the one bundled with ghc 9.0?
2021-08-24 14:39:59 +0200 <tdammers> Logio_: no, it's fundamentally different because information systems have different dynamics than physical machines and structures
2021-08-24 14:40:09 +0200acidjnk_new3(~acidjnk@p200300d0c72b9534e4a445cd6b407eb5.dip0.t-ipconnect.de)
2021-08-24 14:40:30 +0200 <Taneb> maralorn: I think the right solution here will be drop the dependency on integer-gmp on that version of GHC.
2021-08-24 14:40:36 +0200sjb0(~stephen@2001:8004:5170:3b13:8c1d:1f1c:70aa:a42e) (Quit: Leaving.)
2021-08-24 14:40:42 +0200maroloccio(~marolocci@37.100.40.252) (Quit: WeeChat 3.0)
2021-08-24 14:40:51 +0200 <dminuoso> Taneb: Id say "not security" is like gambling, but the jackbot has a negative sign attached to it.
2021-08-24 14:41:07 +0200 <Logio_> tdammers: not in any fundamental sense, IMO. Software is about controlling something in the real world at the end of the day
2021-08-24 14:41:11 +0200 <Taneb> dminuoso: reverse gambling, and yet, the house still always wins
2021-08-24 14:41:24 +0200 <Logio_> the implementation details are not what defines engineering
2021-08-24 14:41:27 +0200 <tdammers> Logio_: the difference is in the economics of the production process
2021-08-24 14:41:33 +0200maroloccio(~marolocci@37.100.40.252)
2021-08-24 14:42:11 +0200 <maralorn> Taneb: Sorry, I don‘t understand. Do you mean building ghc without gmp?
2021-08-24 14:42:14 +0200 <tomsmeding> maralorn: is blaze-textual a dependency of your project? Are you building using cabal or stack?
2021-08-24 14:42:35 +0200 <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.
2021-08-24 14:42:43 +0200 <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
2021-08-24 14:42:54 +0200 <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.
2021-08-24 14:43:01 +0200 <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
2021-08-24 14:43:05 +0200 <merijn> dminuoso: Agreed
2021-08-24 14:43:20 +0200 <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
2021-08-24 14:43:44 +0200 <maralorn> tomsmeding: blaze-textual is a dependency of ghcide. I am building with nix which has the famous "not-doing-it" dependency resolution algorithm.
2021-08-24 14:43:51 +0200 <Taneb> maralorn: the direct dependency shouldn't be necessary, I mean. There may still be an indirect dependency
2021-08-24 14:44:02 +0200 <maralorn> Taneb: Ah, thanks.
2021-08-24 14:44:26 +0200 <Logio_> tdammers: engineering cheap things is similar whether it's hardware or software, see chinese manufacturing
2021-08-24 14:44:30 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-08-24 14:44:37 +0200 <Taneb> maralorn: I reserve the right to be horribly wrong about this ;)
2021-08-24 14:45:06 +0200 <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
2021-08-24 14:45:09 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Read error: Connection reset by peer)
2021-08-24 14:45:21 +0200 <tomsmeding> maralorn: https://github.com/haskell/haskell-language-server/blob/master/cabal-ghc901.project#L33
2021-08-24 14:45:28 +0200 <tomsmeding> perhaps this is your problem
2021-08-24 14:45:33 +0200shailangsa_(~shailangs@host86-185-102-120.range86-185.btcentralplus.com) ()
2021-08-24 14:46:00 +0200 <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
2021-08-24 14:46:12 +0200 <tomsmeding> maralorn: that seems to be exactly your problem
2021-08-24 14:46:18 +0200maroloccio(~marolocci@37.100.40.252) (Client Quit)
2021-08-24 14:46:22 +0200 <Logio_> tdammers: that's still just a quantitative difference, not a qualitative one
2021-08-24 14:46:57 +0200 <maerwald> it's as if "agile" isn't an actual engineering practice :p
2021-08-24 14:47:12 +0200 <maralorn> tomsmeding: Thanks! I’ll try passing integer-simple.
2021-08-24 14:47:19 +0200 <maerwald> you don't build a sky-scraper agile
2021-08-24 14:47:26 +0200 <tdammers> Logio_: it becomes quasi-qualitative when you consider that "production" is practically always a commodity in programming, and practically never in industrial production
2021-08-24 14:47:30 +0200 <tomsmeding> maralorn: or using that fork of blaze-textual
2021-08-24 14:47:58 +0200maroloccio(~marolocci@37.100.40.252)
2021-08-24 14:48:10 +0200 <maralorn> tomsmeding: Since I am trying to upstream this into nixpkgs I‘d prefer to not do that to much.
2021-08-24 14:49:10 +0200 <Taneb> maralorn: nixpkgs does sometimes do that
2021-08-24 14:49:56 +0200 <maralorn> I will go there if there is no other way.
2021-08-24 14:50:12 +0200 <Taneb> e.g. https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/haskell-modules/configuration-ghc-8.… (there's a file for ghc 9.0 as well)
2021-08-24 14:51:39 +0200 <maralorn> Yeah, I am familiar with those files.
2021-08-24 14:51:51 +0200 <maralorn> Working on the 9.0 one right now.
2021-08-24 14:52:11 +0200 <tomsmeding> all too familiar? :p
2021-08-24 14:53:04 +0200 <Taneb> OK, I'll leave you to it
2021-08-24 14:55:15 +0200ac(~aloiscoch@2001:470:69fc:105::65) (Quit: You have been idle for 30+ days)
2021-08-24 14:55:16 +0200hsiktas[m](~hsiktasma@2001:470:69fc:105::30d4) (Quit: You have been idle for 30+ days)
2021-08-24 14:55:34 +0200yin[m](~zwromatri@2001:470:69fc:105::1d4) (Quit: You have been idle for 30+ days)
2021-08-24 14:57:26 +0200AlexNoo_AlexNoo
2021-08-24 14:57:47 +0200jakalx(~jakalx@base.jakalx.net)
2021-08-24 15:00:53 +0200vs^(~vs@12.16.129.111) (Ping timeout: 250 seconds)
2021-08-24 15:05:31 +0200markpythonicbtc(~textual@50.228.44.6)
2021-08-24 15:06:16 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2021-08-24 15:09:34 +0200trcc_(~trcc@users-5343.st.net.au.dk)
2021-08-24 15:10:21 +0200 <maerwald> ok, now I'm confused... my code type checks if I move a function to a different module...
2021-08-24 15:12:07 +0200trcc(~trcc@users-5343.st.net.au.dk) (Ping timeout: 240 seconds)
2021-08-24 15:13:12 +0200 <maerwald> do module boundaries affect some type level hackery?
2021-08-24 15:14:35 +0200hendursa1(~weechat@user/hendursaga) (Quit: hendursa1)
2021-08-24 15:14:59 +0200hendursaga(~weechat@user/hendursaga)
2021-08-24 15:16:24 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-24 15:16:51 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-24 15:18:17 +0200lavaman(~lavaman@98.38.249.169)
2021-08-24 15:18:49 +0200shailangsa(~shailangs@host86-185-102-120.range86-185.btcentralplus.com)
2021-08-24 15:19:44 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-24 15:19:51 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-24 15:20:12 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-08-24 15:20:43 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-24 15:20:45 +0200felixphew(~felix@cssa/committee/felix) ()
2021-08-24 15:21:08 +0200trcc_(~trcc@users-5343.st.net.au.dk) (Ping timeout: 250 seconds)
2021-08-24 15:21:29 +0200vs^(~vs@12.16.129.111)
2021-08-24 15:22:33 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2021-08-24 15:24:21 +0200mcglk(~mcglk@131.191.49.120) (*.net *.split)
2021-08-24 15:24:21 +0200awth13(~awth13@user/awth13) (*.net *.split)
2021-08-24 15:24:21 +0200Techcable(~Techcable@168.235.93.147) (*.net *.split)
2021-08-24 15:24:21 +0200Dykam(Dykam@dykam.nl) (*.net *.split)
2021-08-24 15:24:21 +0200polux(~polux@51.15.169.172) (*.net *.split)
2021-08-24 15:24:21 +0200Eoco(~ian@x-160-94-179-157.acm.umn.edu) (*.net *.split)
2021-08-24 15:24:21 +0200drewolson1(~drewolson@user/drewolson) (*.net *.split)
2021-08-24 15:24:21 +0200wrunt(~ajc@vmx14030.hosting24.com.au) (*.net *.split)
2021-08-24 15:24:21 +0200glider_(~glider@user/glider) (*.net *.split)
2021-08-24 15:24:21 +0200orzo_(joe@lasker.childrenofmay.org) (*.net *.split)
2021-08-24 15:24:21 +0200Vq(~vq@90-227-195-41-no77.tbcn.telia.com) (*.net *.split)
2021-08-24 15:24:21 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (*.net *.split)
2021-08-24 15:24:21 +0200dave_uy(~dave_uy@108.61.193.26) (*.net *.split)
2021-08-24 15:24:21 +0200Teacup(~teacup@user/teacup) (*.net *.split)
2021-08-24 15:24:21 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (*.net *.split)
2021-08-24 15:24:21 +0200glguy(x@libera/staff/glguy) (*.net *.split)
2021-08-24 15:24:21 +0200Unode(~Unode@194.94.44.220) (*.net *.split)
2021-08-24 15:24:21 +0200pierrot(~pi@user/pierrot) (*.net *.split)
2021-08-24 15:24:21 +0200ellie(~ellie@user/ellie) (*.net *.split)
2021-08-24 15:24:21 +0200tristanC(~tristanC@user/tristanc) (*.net *.split)
2021-08-24 15:24:21 +0200relrod(~relrod@redhat/ansible.staff.relrod) (*.net *.split)
2021-08-24 15:24:21 +0200aweinstock(~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com) (*.net *.split)
2021-08-24 15:24:21 +0200ishutin(~ishutin@92-249-150-163.static.digikabel.hu) (*.net *.split)
2021-08-24 15:24:21 +0200micro(~micro@user/micro) (*.net *.split)
2021-08-24 15:24:21 +0200arahael(~arahael@203.221.97.63) (*.net *.split)
2021-08-24 15:24:21 +0200monochrom(trebla@216.138.220.146) (*.net *.split)
2021-08-24 15:24:21 +0200lambdap(~lambdap@static.167.190.119.168.clients.your-server.de) (*.net *.split)
2021-08-24 15:24:21 +0200paddymahoney(~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (*.net *.split)
2021-08-24 15:24:21 +0200Ananta-shesha(~pjetcetal@2.95.210.196) (*.net *.split)
2021-08-24 15:24:21 +0200L29Ah(~L29Ah@user/l29ah) (*.net *.split)
2021-08-24 15:24:21 +0200CannabisIndica(~herb@user/mesaboogie) (*.net *.split)
2021-08-24 15:24:21 +0200adium(adium@user/adium) (*.net *.split)
2021-08-24 15:24:21 +0200gauss(~gauss@139.180.175.160) (*.net *.split)
2021-08-24 15:24:21 +0200hamishmack(sid389057@stonehaven.irccloud.com) (*.net *.split)
2021-08-24 15:24:21 +0200jonrh(sid5185@charlton.irccloud.com) (*.net *.split)
2021-08-24 15:24:21 +0200kaizen(sid501599@brockwell.irccloud.com) (*.net *.split)
2021-08-24 15:24:21 +0200hsiktas(sid224847@tooting.irccloud.com) (*.net *.split)
2021-08-24 15:24:21 +0200elvishjerricco(sid237756@brockwell.irccloud.com) (*.net *.split)
2021-08-24 15:24:21 +0200conjunctive(sid433686@brockwell.irccloud.com) (*.net *.split)
2021-08-24 15:24:21 +0200whez(sid470288@tooting.irccloud.com) (*.net *.split)
2021-08-24 15:24:21 +0200cbarrett(sid192934@brockwell.irccloud.com) (*.net *.split)
2021-08-24 15:24:21 +0200edwardk(sid47016@haskell/developer/edwardk) (*.net *.split)
2021-08-24 15:24:21 +0200cross(~cross@spitfire.i.gajendra.net) (*.net *.split)
2021-08-24 15:24:21 +0200shredder(~user@user/shredder) (*.net *.split)
2021-08-24 15:24:21 +0200sm2n(~sm2n@user/sm2n) (*.net *.split)
2021-08-24 15:24:21 +0200fjmorazan(~quassel@user/fjmorazan) (*.net *.split)
2021-08-24 15:24:21 +0200energizer(~energizer@user/energizer) (*.net *.split)
2021-08-24 15:24:21 +0200gabiruh(~gabiruh@vps19177.publiccloud.com.br) (*.net *.split)
2021-08-24 15:24:21 +0200hays(~rootveget@fsf/member/hays) (*.net *.split)
2021-08-24 15:24:21 +0200Clint(~Clint@user/clint) (*.net *.split)
2021-08-24 15:24:21 +0200finsternis(~X@23.226.237.192) (*.net *.split)
2021-08-24 15:24:21 +0200wanko(~wanko@51.15.4.226) (*.net *.split)
2021-08-24 15:24:21 +0200cods(~fred@82-65-232-44.subs.proxad.net) (*.net *.split)
2021-08-24 15:24:21 +0200remexre(~nathan@user/remexre) (*.net *.split)
2021-08-24 15:24:21 +0200Patternmaster(~georg@li1192-118.members.linode.com) (*.net *.split)
2021-08-24 15:24:21 +0200vk3wtf(~doc@220-245-2-190.tpgi.com.au) (*.net *.split)
2021-08-24 15:24:21 +0200typedfern__(~Typedfern@28.red-83-57-142.dynamicip.rima-tde.net) (*.net *.split)
2021-08-24 15:24:21 +0200jackhill(~jackhill@kalessin.dragonsnail.net) (*.net *.split)
2021-08-24 15:24:21 +0200EvanR(~evan@mail.evanr.info) (*.net *.split)
2021-08-24 15:24:21 +0200ridcully_(~ridcully@p508ac428.dip0.t-ipconnect.de) (*.net *.split)
2021-08-24 15:24:21 +0200spoonm(spoonm@inaba.spoonm.org) (*.net *.split)
2021-08-24 15:24:21 +0200natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (*.net *.split)
2021-08-24 15:24:21 +0200drewr(~drew@user/drewr) (*.net *.split)
2021-08-24 15:24:47 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
2021-08-24 15:27:59 +0200juhp(~juhp@128.106.188.220) (Quit: juhp)
2021-08-24 15:28:13 +0200juhp(~juhp@128.106.188.220)
2021-08-24 15:28:24 +0200 <Logio_> some malarky with non-qualified imports?
2021-08-24 15:28:38 +0200mcglk(~mcglk@131.191.49.120)
2021-08-24 15:28:38 +0200awth13(~awth13@user/awth13)
2021-08-24 15:28:38 +0200Techcable(~Techcable@168.235.93.147)
2021-08-24 15:28:38 +0200Dykam(Dykam@dykam.nl)
2021-08-24 15:28:38 +0200polux(~polux@51.15.169.172)
2021-08-24 15:28:38 +0200Eoco(~ian@x-160-94-179-157.acm.umn.edu)
2021-08-24 15:28:38 +0200drewolson1(~drewolson@user/drewolson)
2021-08-24 15:28:38 +0200wrunt(~ajc@vmx14030.hosting24.com.au)
2021-08-24 15:28:38 +0200glider_(~glider@user/glider)
2021-08-24 15:28:38 +0200orzo_(joe@lasker.childrenofmay.org)
2021-08-24 15:28:38 +0200Vq(~vq@90-227-195-41-no77.tbcn.telia.com)
2021-08-24 15:28:38 +0200dave_uy(~dave_uy@108.61.193.26)
2021-08-24 15:28:38 +0200Teacup(~teacup@user/teacup)
2021-08-24 15:28:38 +0200werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-08-24 15:28:38 +0200glguy(x@libera/staff/glguy)
2021-08-24 15:28:38 +0200Unode(~Unode@194.94.44.220)
2021-08-24 15:28:38 +0200pierrot(~pi@user/pierrot)
2021-08-24 15:28:38 +0200ellie(~ellie@user/ellie)
2021-08-24 15:28:38 +0200tristanC(~tristanC@user/tristanc)
2021-08-24 15:28:38 +0200relrod(~relrod@redhat/ansible.staff.relrod)
2021-08-24 15:28:38 +0200aweinstock(~aweinstoc@cpe-67-248-65-250.nycap.res.rr.com)
2021-08-24 15:28:38 +0200ishutin(~ishutin@92-249-150-163.static.digikabel.hu)
2021-08-24 15:28:38 +0200micro(~micro@user/micro)
2021-08-24 15:28:38 +0200arahael(~arahael@203.221.97.63)
2021-08-24 15:28:38 +0200monochrom(trebla@216.138.220.146)
2021-08-24 15:28:38 +0200lambdap(~lambdap@static.167.190.119.168.clients.your-server.de)
2021-08-24 15:28:38 +0200paddymahoney(~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
2021-08-24 15:28:38 +0200Ananta-shesha(~pjetcetal@2.95.210.196)
2021-08-24 15:28:38 +0200L29Ah(~L29Ah@user/l29ah)
2021-08-24 15:28:38 +0200CannabisIndica(~herb@user/mesaboogie)
2021-08-24 15:28:38 +0200adium(adium@user/adium)
2021-08-24 15:28:38 +0200gauss(~gauss@139.180.175.160)
2021-08-24 15:28:38 +0200hamishmack(sid389057@stonehaven.irccloud.com)
2021-08-24 15:28:38 +0200jonrh(sid5185@charlton.irccloud.com)
2021-08-24 15:28:38 +0200kaizen(sid501599@brockwell.irccloud.com)
2021-08-24 15:28:38 +0200hsiktas(sid224847@tooting.irccloud.com)
2021-08-24 15:28:38 +0200elvishjerricco(sid237756@brockwell.irccloud.com)
2021-08-24 15:28:38 +0200conjunctive(sid433686@brockwell.irccloud.com)
2021-08-24 15:28:38 +0200whez(sid470288@tooting.irccloud.com)
2021-08-24 15:28:38 +0200cbarrett(sid192934@brockwell.irccloud.com)
2021-08-24 15:28:38 +0200edwardk(sid47016@haskell/developer/edwardk)
2021-08-24 15:28:38 +0200cross(~cross@spitfire.i.gajendra.net)
2021-08-24 15:28:38 +0200shredder(~user@user/shredder)
2021-08-24 15:28:38 +0200sm2n(~sm2n@user/sm2n)
2021-08-24 15:28:38 +0200fjmorazan(~quassel@user/fjmorazan)
2021-08-24 15:28:38 +0200energizer(~energizer@user/energizer)
2021-08-24 15:28:38 +0200gabiruh(~gabiruh@vps19177.publiccloud.com.br)
2021-08-24 15:28:38 +0200hays(~rootveget@fsf/member/hays)
2021-08-24 15:28:38 +0200Clint(~Clint@user/clint)
2021-08-24 15:28:38 +0200finsternis(~X@23.226.237.192)
2021-08-24 15:28:38 +0200wanko(~wanko@51.15.4.226)
2021-08-24 15:28:38 +0200cods(~fred@82-65-232-44.subs.proxad.net)
2021-08-24 15:28:38 +0200remexre(~nathan@user/remexre)
2021-08-24 15:28:38 +0200Patternmaster(~georg@li1192-118.members.linode.com)
2021-08-24 15:28:38 +0200vk3wtf(~doc@220-245-2-190.tpgi.com.au)
2021-08-24 15:28:38 +0200typedfern__(~Typedfern@28.red-83-57-142.dynamicip.rima-tde.net)
2021-08-24 15:28:38 +0200jackhill(~jackhill@kalessin.dragonsnail.net)
2021-08-24 15:28:38 +0200EvanR(~evan@mail.evanr.info)
2021-08-24 15:28:38 +0200ridcully_(~ridcully@p508ac428.dip0.t-ipconnect.de)
2021-08-24 15:28:38 +0200spoonm(spoonm@inaba.spoonm.org)
2021-08-24 15:28:38 +0200natechan(~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-08-24 15:28:38 +0200drewr(~drew@user/drewr)
2021-08-24 15:28:42 +0200finsternis(~X@23.226.237.192) (Max SendQ exceeded)
2021-08-24 15:28:59 +0200finsternis(~X@23.226.237.192)
2021-08-24 15:32:14 +0200neo(~neo3@cpe-292712.ip.primehome.com)
2021-08-24 15:32:39 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-08-24 15:32:53 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de)
2021-08-24 15:34:24 +0200 <maerwald> yeah, must be import foo
2021-08-24 15:41:10 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-08-24 15:44:25 +0200 <merijn> maerwald: Is there TH involved?
2021-08-24 15:44:27 +0200keutoi(~keutoi@157.48.189.217) (Ping timeout: 240 seconds)
2021-08-24 15:44:37 +0200 <maerwald> ya
2021-08-24 15:44:41 +0200keutoi(~keutoi@157.48.189.217)
2021-08-24 15:45:02 +0200 <maerwald> I fiddled around until it worked, now I'm pretending this never happened
2021-08-24 15:45:06 +0200 <merijn> TH splices introduce grouping
2021-08-24 15:45:17 +0200 <merijn> Code can't see definitions *below* a TH splice
2021-08-24 15:45:53 +0200 <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
2021-08-24 15:46:16 +0200 <merijn> bar can't see quux and quux can see everything
2021-08-24 15:46:39 +0200[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-08-24 15:47:01 +0200 <merijn> This is so that it's unambiguous what is/isn't in scope for the splices (i.e. only things above it)
2021-08-24 15:51:35 +0200acidjnk_new3(~acidjnk@p200300d0c72b9534e4a445cd6b407eb5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-08-24 15:52:33 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-08-24 15:53:00 +0200markpythonicbtc(~textual@50.228.44.6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-08-24 15:56:21 +0200fendor(~fendor@77.119.197.208.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
2021-08-24 15:56:49 +0200burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 248 seconds)
2021-08-24 16:02:58 +0200Sgeo(~Sgeo@user/sgeo)
2021-08-24 16:11:11 +0200chisui(~chisui@200116b868760900d980a481ca884939.dip.versatel-1u1.de) (Quit: Client closed)
2021-08-24 16:12:46 +0200 <kuribas> has any work been done on enforcing permissions using types? I saw something recently using liquid haskell I remember...
2021-08-24 16:13:18 +0200 <kuribas> For example, carrying a typelevel proof that someone can access a resource...
2021-08-24 16:14:06 +0200 <kuribas> As long as you don't use (undefined :: HasPermission UserFoo ResourceBar)...
2021-08-24 16:16:20 +0200fendor(~fendor@91.141.62.188.wireless.dyn.drei.com)
2021-08-24 16:16:32 +0200 <maerwald> https://hackage.haskell.org/package/mac
2021-08-24 16:16:44 +0200Guest3531(~chris@81.96.113.213) (Remote host closed the connection)
2021-08-24 16:16:54 +0200 <maerwald> there are 3+ implementations of data flow control in haskell
2021-08-24 16:17:05 +0200 <maerwald> the first one used arrows afair
2021-08-24 16:17:05 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-08-24 16:17:16 +0200chris(~chris@81.96.113.213)
2021-08-24 16:17:19 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de)
2021-08-24 16:17:21 +0200chrisGuest2329
2021-08-24 16:17:28 +0200 <maerwald> there are also papers, I'm too lazy to find them
2021-08-24 16:18:25 +0200 <kuribas> maerwald: that looks very interesting, but maybe not quite what I look for.
2021-08-24 16:18:54 +0200 <kuribas> maerwald: It's not really about untrusted code, more like ensuring our trusted code works correctly.
2021-08-24 16:19:21 +0200 <kuribas> more like an aid to the developers than as a security guard.
2021-08-24 16:21:05 +0200slack1256(~slack1256@191.125.33.180)
2021-08-24 16:21:40 +0200Guest2329(~chris@81.96.113.213) (Ping timeout: 240 seconds)
2021-08-24 16:22:30 +0200slowButPresent(~slowButPr@user/slowbutpresent)
2021-08-24 16:25:04 +0200 <kuribas> Maybe using a free variable, like in the St Monad as proof of permission...
2021-08-24 16:26:40 +0200 <kuribas> So you have a low level library which stores permission in the database.
2021-08-24 16:27:06 +0200 <kuribas> And the logic to process those is kept in a small part of the code.
2021-08-24 16:27:31 +0200 <kuribas> This code also propagates a phantom variable "proof" of permission.
2021-08-24 16:28:02 +0200 <maerwald> https://blog.b123400.net/type-level-permission-checking/
2021-08-24 16:29:13 +0200markpythonicbtc(~textual@2601:647:5a00:35:999f:46ac:3d0f:19d0)
2021-08-24 16:29:29 +0200arjun(~Srain@user/arjun)
2021-08-24 16:29:30 +0200hnOsmium0001(uid453710@id-453710.stonehaven.irccloud.com)
2021-08-24 16:29:51 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
2021-08-24 16:30:03 +0200carter(sid14827@brockwell.irccloud.com) ()
2021-08-24 16:30:40 +0200carter(sid14827@id-14827.helmsley.irccloud.com)
2021-08-24 16:30:57 +0200 <kuribas> something like that.
2021-08-24 16:31:07 +0200Franciman(~francesco@openglass.it) (Quit: WeeChat 2.3)
2021-08-24 16:31:29 +0200 <kuribas> I think the free phantom variable is necessary because confidential information shouldn't *escape* from the user context.
2021-08-24 16:31:41 +0200 <kuribas> So a monad which cannot be escaped.
2021-08-24 16:32:13 +0200 <jippiedoe> Maybe you want to look for 'information flow control' libraries?
2021-08-24 16:32:57 +0200 <maerwald> I already linked one :p
2021-08-24 16:33:24 +0200zebrag(~chris@user/zebrag)
2021-08-24 16:34:03 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Ping timeout: 250 seconds)
2021-08-24 16:34:26 +0200 <kuribas> jippiedoe: indeed...
2021-08-24 16:35:38 +0200 <maerwald> java has better stuff there
2021-08-24 16:35:48 +0200 <maerwald> https://www.cs.cornell.edu/jif/
2021-08-24 16:36:14 +0200meinside_(uid24933@id-24933.brockwell.irccloud.com) ()
2021-08-24 16:36:29 +0200meinside_(uid24933@id-24933.helmsley.irccloud.com)
2021-08-24 16:37:17 +0200 <maerwald> but don't think anyone really uses that
2021-08-24 16:37:21 +0200 <maerwald> in any language
2021-08-24 16:38:35 +0200 <kuribas> they should, it's so easy to get a security breach...
2021-08-24 16:38:51 +0200 <maerwald> no one reads langsec anymore
2021-08-24 16:39:45 +0200feepo(sid28508@id-28508.brockwell.irccloud.com) ()
2021-08-24 16:39:59 +0200feepo(sid28508@id-28508.helmsley.irccloud.com)
2021-08-24 16:45:35 +0200lbseale(~lbseale@user/ep1ctetus)
2021-08-24 16:46:40 +0200kimjetwav(~user@2607:fea8:235f:9730:b47e:9266:a80c:4549) (Ping timeout: 240 seconds)
2021-08-24 16:47:04 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-08-24 16:47:15 +0200lbseale_(~lbseale@user/ep1ctetus)
2021-08-24 16:47:19 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de)
2021-08-24 16:47:29 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-24 16:48:29 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 16:50:27 +0200lbseale(~lbseale@user/ep1ctetus) (Ping timeout: 240 seconds)
2021-08-24 16:53:34 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-24 16:54:41 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 16:57:31 +0200chris(~chris@81.96.113.213)
2021-08-24 16:57:35 +0200chrisGuest1613
2021-08-24 16:59:55 +0200lightandlight(sid135476@id-135476.brockwell.irccloud.com) ()
2021-08-24 17:00:09 +0200lightandlight(sid135476@id-135476.helmsley.irccloud.com)
2021-08-24 17:00:49 +0200d0ku(~d0ku@178.43.56.75.ipv4.supernova.orange.pl) (Ping timeout: 248 seconds)
2021-08-24 17:02:49 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-24 17:02:49 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-08-24 17:02:49 +0200wroathe(~wroathe@user/wroathe)
2021-08-24 17:04:01 +0200hannessteffenhag(~hannesste@ip4d14ffc8.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2021-08-24 17:04:47 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-08-24 17:04:50 +0200meejah_meejah
2021-08-24 17:04:59 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de)
2021-08-24 17:05:25 +0200 <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
2021-08-24 17:05:38 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-08-24 17:05:52 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de)
2021-08-24 17:07:51 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-08-24 17:08:05 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de)
2021-08-24 17:12:47 +0200lbseale__(~lbseale@user/ep1ctetus)
2021-08-24 17:14:32 +0200bjs(sid190364@user/bjs) ()
2021-08-24 17:14:50 +0200bjs(sid190364@user/bjs)
2021-08-24 17:16:25 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it)
2021-08-24 17:16:25 +0200cbarrett(sid192934@brockwell.irccloud.com) ()
2021-08-24 17:16:27 +0200lbseale_(~lbseale@user/ep1ctetus) (Ping timeout: 240 seconds)
2021-08-24 17:16:39 +0200dpratt_(sid193493@id-193493.brockwell.irccloud.com) ()
2021-08-24 17:16:41 +0200cbarrett(sid192934@id-192934.helmsley.irccloud.com)
2021-08-24 17:16:58 +0200dpratt_(sid193493@id-193493.helmsley.irccloud.com)
2021-08-24 17:21:27 +0200keutoi(~keutoi@157.48.189.217) (Ping timeout: 240 seconds)
2021-08-24 17:21:55 +0200skykanin(~skykanin@115.81-166-221.customer.lyse.net)
2021-08-24 17:23:27 +0200keutoi(~keutoi@157.48.189.217)
2021-08-24 17:23:38 +0200dajoer(~david@user/gvx) (Quit: leaving)
2021-08-24 17:24:42 +0200skykanin(~skykanin@115.81-166-221.customer.lyse.net) (Client Quit)
2021-08-24 17:25:25 +0200slack1256(~slack1256@191.125.33.180) (Remote host closed the connection)
2021-08-24 17:25:27 +0200hyiltiz(~quassel@31.220.5.250) (Ping timeout: 240 seconds)
2021-08-24 17:25:31 +0200skykanin(~skykanin@115.81-166-221.customer.lyse.net)
2021-08-24 17:25:47 +0200azeem(~azeem@dynamic-adsl-94-34-33-6.clienti.tiscali.it) (Ping timeout: 240 seconds)
2021-08-24 17:25:54 +0200hyiltiz(~quassel@31.220.5.250)
2021-08-24 17:26:48 +0200mouseghost(~draco@user/mouseghost) (Quit: mew wew)
2021-08-24 17:26:59 +0200hendursaga(~weechat@user/hendursaga) (Remote host closed the connection)
2021-08-24 17:27:23 +0200hendursaga(~weechat@user/hendursaga)
2021-08-24 17:29:40 +0200chisui(~chisui@200116b868760900d980a481ca884939.dip.versatel-1u1.de)
2021-08-24 17:30:19 +0200cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.2)
2021-08-24 17:30:20 +0200slack1256(~slack1256@191.125.33.180)
2021-08-24 17:30:28 +0200 <chisui> Hey, is there any documentation of the dark art of writing compiler plugins?
2021-08-24 17:30:40 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2)
2021-08-24 17:31:21 +0200vs^(~vs@12.16.129.111) (Remote host closed the connection)
2021-08-24 17:32:25 +0200edmundnoble(sid229620@id-229620.brockwell.irccloud.com) ()
2021-08-24 17:32:40 +0200edmundnoble(sid229620@id-229620.helmsley.irccloud.com)
2021-08-24 17:33:53 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds)
2021-08-24 17:34:00 +0200 <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
2021-08-24 17:34:52 +0200shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-08-24 17:35:52 +0200 <chisui> thanks
2021-08-24 17:36:53 +0200arjun(~Srain@user/arjun) (Ping timeout: 250 seconds)
2021-08-24 17:37:09 +0200 <kuribas> tdammers: is it that expensive though?
2021-08-24 17:37:41 +0200 <kuribas> tdammers: would it be harder than using any monad library?
2021-08-24 17:38:23 +0200flukiluke(~flukiluke@2603:c023:c000:6c7e:8945:ad24:9113:a962) (Remote host closed the connection)
2021-08-24 17:39:10 +0200buggymcbugfix(~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de)
2021-08-24 17:39:20 +0200flukiluke(~flukiluke@2603:c023:c000:6c7e:8945:ad24:9113:a962)
2021-08-24 17:41:13 +0200Boomerang(~Boomerang@xd520f68c.cust.hiper.dk) (Ping timeout: 250 seconds)
2021-08-24 17:43:19 +0200juhp(~juhp@128.106.188.220) (Quit: juhp)
2021-08-24 17:43:33 +0200juhp(~juhp@128.106.188.220)
2021-08-24 17:45:47 +0200farn(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505) (Ping timeout: 240 seconds)
2021-08-24 17:46:11 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
2021-08-24 17:46:40 +0200oxytocat(~alloca@user/suppi) (Ping timeout: 240 seconds)
2021-08-24 17:47:05 +0200farn(~farn@2a03:4000:7:3cd:d4ab:85ff:feeb:f505)
2021-08-24 17:47:52 +0200oxytocat(~alloca@user/suppi)
2021-08-24 17:50:06 +0200dsrt^(~dsrt@12.16.129.111)
2021-08-24 17:50:32 +0200buggymcbugfix(~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de) (Quit: Connection closed)
2021-08-24 17:51:49 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 244 seconds)
2021-08-24 17:52:59 +0200buggymcbugfix(~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de)
2021-08-24 17:53:00 +0200lortabac(~lortabac@62.98.34.238) (Quit: WeeChat 2.8)
2021-08-24 17:53:53 +0200ChaiTRex(~ChaiTRex@user/chaitrex)
2021-08-24 17:54:20 +0200econo(uid147250@user/econo)
2021-08-24 17:56:27 +0200jippiedoe(~david@2a02-a44c-e14e-1-d8c8-4f7-e34-193e.fixed6.kpn.net) (Ping timeout: 240 seconds)
2021-08-24 17:58:33 +0200buggymcbugfix(~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-08-24 18:00:10 +0200jonathanx(~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
2021-08-24 18:01:02 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 18:02:26 +0200zaquest(~notzaques@5.128.210.178) (Remote host closed the connection)
2021-08-24 18:03:25 +0200kaychaks__(sid236345@id-236345.brockwell.irccloud.com) ()
2021-08-24 18:03:45 +0200kaychaks__(sid236345@id-236345.helmsley.irccloud.com)
2021-08-24 18:04:52 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-08-24 18:05:02 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
2021-08-24 18:05:06 +0200elvishjerricco(sid237756@brockwell.irccloud.com) ()
2021-08-24 18:05:21 +0200elvishjerricco(sid237756@id-237756.helmsley.irccloud.com)
2021-08-24 18:06:22 +0200parseval(sid239098@id-239098.brockwell.irccloud.com) ()
2021-08-24 18:06:36 +0200parseval(sid239098@id-239098.helmsley.irccloud.com)
2021-08-24 18:06:55 +0200lbseale__(~lbseale@user/ep1ctetus) (Remote host closed the connection)
2021-08-24 18:08:01 +0200zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-08-24 18:08:05 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-08-24 18:11:57 +0200 <kuribas> hmm, but for a web service it probably doesn't matter, because each request will run in one user context...
2021-08-24 18:12:37 +0200 <kuribas> So you need to just enforce that all resources are going through the permission checker...
2021-08-24 18:12:53 +0200alicebudda(~alicebudd@cold.passenger.volia.net)
2021-08-24 18:13:44 +0200azeem(~azeem@176.201.15.223)
2021-08-24 18:13:47 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Ping timeout: 240 seconds)
2021-08-24 18:16:18 +0200kuribas(~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-08-24 18:16:21 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
2021-08-24 18:24:01 +0200alicebudda(~alicebudd@cold.passenger.volia.net) (Quit: Client closed)
2021-08-24 18:24:37 +0200_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-08-24 18:26:55 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com)
2021-08-24 18:29:56 +0200son0p(~ff@181.136.122.143)
2021-08-24 18:30:11 +0200zaquest(~notzaques@5.128.210.178)
2021-08-24 18:31:28 +0200azeem(~azeem@176.201.15.223) (Ping timeout: 252 seconds)
2021-08-24 18:32:43 +0200azeem(~azeem@176.201.15.223)
2021-08-24 18:40:23 +0200zzz(~yin@user/yin) ()
2021-08-24 18:40:41 +0200zzz(~yin@user/yin)
2021-08-24 18:42:51 +0200SqaureB2G2_
2021-08-24 18:43:12 +0200B2G2_Sqaure
2021-08-24 18:43:16 +0200zebrag(~chris@user/zebrag)
2021-08-24 18:43:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 18:47:30 +0200 <gaze___> is there a nice utility for string templating in haskell but inline as a template haskell extension?
2021-08-24 18:47:39 +0200 <gaze___> something closer to python’s string formatting
2021-08-24 18:47:53 +0200 <gaze___> or alternatively — is there a nice utility for generating c++ code?
2021-08-24 18:48:31 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-24 18:51:43 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-08-24 18:52:45 +0200 <gaze___> ah test.shakespeare.text
2021-08-24 18:52:51 +0200 <gaze___> *text.shakespeare.text
2021-08-24 18:53:28 +0200shailangsa(~shailangs@host86-185-102-120.range86-185.btcentralplus.com) (Ping timeout: 252 seconds)
2021-08-24 18:53:58 +0200oxide(~lambda@user/oxide)
2021-08-24 18:54:39 +0200arjun(~Srain@110.235.239.43)
2021-08-24 18:54:42 +0200arjun(~Srain@110.235.239.43) (Remote host closed the connection)
2021-08-24 18:55:56 +0200oxide(~lambda@user/oxide) (Client Quit)
2021-08-24 19:00:01 +0200pavonia(~user@user/siracusa)
2021-08-24 19:00:17 +0200azeem(~azeem@176.201.15.223) (Ping timeout: 248 seconds)
2021-08-24 19:00:37 +0200Sinbad(~Sinbad@user/sinbad) (Ping timeout: 252 seconds)
2021-08-24 19:03:12 +0200azeem(~azeem@176.201.15.223)
2021-08-24 19:05:06 +0200buggymcbugfix(~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de)
2021-08-24 19:05:53 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Remote host closed the connection)
2021-08-24 19:08:07 +0200drd(~drd@93-39-151-19.ip76.fastwebnet.it) (Ping timeout: 240 seconds)
2021-08-24 19:12:27 +0200keutoi(~keutoi@157.48.189.217) (Ping timeout: 240 seconds)
2021-08-24 19:13:27 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
2021-08-24 19:13:51 +0200Achylles(~Achylles_@2804:431:d724:c077:94a6:8465:b517:1da8)
2021-08-24 19:14:24 +0200keutoi(~keutoi@223.238.95.231)
2021-08-24 19:14:42 +0200pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-08-24 19:16:16 +0200azeem(~azeem@176.201.15.223) (Read error: Connection reset by peer)
2021-08-24 19:16:28 +0200azeem(~azeem@dynamic-adsl-94-34-21-20.clienti.tiscali.it)
2021-08-24 19:16:35 +0200cuz(~user@38.140.58.234)
2021-08-24 19:17:51 +0200jespada(~jespada@90.254.245.194) (Ping timeout: 250 seconds)
2021-08-24 19:18:51 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-08-24 19:19:54 +0200keutoi(~keutoi@223.238.95.231) (Quit: leaving)
2021-08-24 19:19:57 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
2021-08-24 19:20:01 +0200lavaman(~lavaman@98.38.249.169)
2021-08-24 19:20:10 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
2021-08-24 19:20:21 +0200jespada(~jespada@90.254.245.194)
2021-08-24 19:21:18 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-08-24 19:21:48 +0200fef(~thedawn@user/thedawn)
2021-08-24 19:21:49 +0200 <buggymcbugfix> how would i create a dependency graph of a haskell definition (not module!) wrt to its free variables?
2021-08-24 19:22:31 +0200 <buggymcbugfix> automatically..
2021-08-24 19:22:34 +0200Achylles(~Achylles_@2804:431:d724:c077:94a6:8465:b517:1da8) (Remote host closed the connection)
2021-08-24 19:23:25 +0200 <c_wraith> I don't think there's anything easily adapted to that purpose.
2021-08-24 19:24:16 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-08-24 19:25:22 +0200 <c_wraith> The various IDE support tools probably are the closest tools to that, but they only work with source.
2021-08-24 19:25:37 +0200 <buggymcbugfix> yep, i've got the sources
2021-08-24 19:25:44 +0200 <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
2021-08-24 19:25:56 +0200 <buggymcbugfix> which IDE support tools do you have in mind?
2021-08-24 19:26:33 +0200 <c_wraith> anything that supports "jump to definition" has all the pieces you need, but they aren't arranged the way you want
2021-08-24 19:26:33 +0200azeem(~azeem@dynamic-adsl-94-34-21-20.clienti.tiscali.it) (Read error: Connection reset by peer)
2021-08-24 19:27:11 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-08-24 19:27:54 +0200gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-08-24 19:28:41 +0200 <buggymcbugfix> if i want to use ghc itself for this, i'm assuming all the information i need is at the renaming stage
2021-08-24 19:28:48 +0200tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-08-24 19:29:27 +0200azeem(~azeem@dynamic-adsl-94-34-21-20.clienti.tiscali.it)
2021-08-24 19:29:33 +0200reumeth(~reumeth@user/reumeth) (Ping timeout: 250 seconds)
2021-08-24 19:31:09 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-08-24 19:34:38 +0200 <buggymcbugfix> aha, this seems interesting: https://hackage.haskell.org/package/ghc-8.10.2/docs/src/GHC.Hs.Binds.html#HsBindLR
2021-08-24 19:35:21 +0200wjl(~wjl@024-241-014-164.res.spectrum.com)
2021-08-24 19:35:36 +0200wjl(~wjl@024-241-014-164.res.spectrum.com) ()
2021-08-24 19:36:03 +0200 <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 #-}
2021-08-24 19:36:40 +0200 <cdsmith> That fails with a syntax error, but hopefully gets the idea across
2021-08-24 19:37:16 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-08-24 19:37:29 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de)
2021-08-24 19:37:47 +0200 <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!
2021-08-24 19:38:07 +0200azeem(~azeem@dynamic-adsl-94-34-21-20.clienti.tiscali.it) (Ping timeout: 240 seconds)
2021-08-24 19:38:46 +0200Guest42(~Guest42@adsl-72-50-7-6.prtc.net)
2021-08-24 19:39:25 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Remote host closed the connection)
2021-08-24 19:40:12 +0200azeem(~azeem@176.201.15.223)
2021-08-24 19:45:40 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
2021-08-24 19:45:43 +0200zer0bitz(~zer0bitz@dsl-hkibng31-58c384-213.dhcp.inet.fi) (Ping timeout: 252 seconds)
2021-08-24 19:46:13 +0200stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2021-08-24 19:46:28 +0200PinealGlandOptic(~PinealGla@195.60.174.145)
2021-08-24 19:46:36 +0200stiell(~stiell@gateway/tor-sasl/stiell)
2021-08-24 19:48:06 +0200 <carter> cdsmith: I think you can just syntactically inject show
2021-08-24 19:48:15 +0200 <carter> And … it’ll mostly work?
2021-08-24 19:48:28 +0200 <cdsmith> @carter I'm not sure what that means.
2021-08-24 19:48:29 +0200 <lambdabot> A rocky road is easier to travel than a stone wall.
2021-08-24 19:48:42 +0200 <carter> Do it without the type constraints ?
2021-08-24 19:49:24 +0200 <cdsmith> Like this? https://code.world/haskell#Pxi2jzEgRtHTbbZHuPbIfew Doesn't work
2021-08-24 19:49:48 +0200 <carter> Hrmm
2021-08-24 19:50:17 +0200 <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
2021-08-24 19:51:26 +0200 <carter> cdsmith: the issue may also be that foralls in rules also are used for quantifying over syntax?
2021-08-24 19:51:41 +0200 <carter> fgaz: you have any ideas here ?
2021-08-24 19:52:13 +0200 <carter> This is actually a kinda cool problem you’ve hit
2021-08-24 19:52:55 +0200 <carter> cdsmith: I pulled my back this AM, but I totally will dig into this :)
2021-08-24 19:52:59 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
2021-08-24 19:53:16 +0200 <cdsmith> Yikes! Hope your back gets better quickly
2021-08-24 19:54:13 +0200 <cdsmith> You definitely need two foralls if you want type-level explicit quantifiers. That's clear from the GHC user guide.
2021-08-24 19:54:30 +0200 <cdsmith> like: forall a. forall (x :: a). ...
2021-08-24 19:54:54 +0200 <cdsmith> But none of the user guide examples have a context for the RULE
2021-08-24 19:58:35 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2021-08-24 19:59:21 +0200enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
2021-08-24 20:00:05 +0200zer0bitz(~zer0bitz@dsl-hkibng31-58c384-213.dhcp.inet.fi)
2021-08-24 20:00:53 +0200 <cdsmith> Builds, but doesn't work: https://code.world/haskell#Pd4WZhPErm5DuwdYa4YzL8g
2021-08-24 20:01:55 +0200gensyst(gensyst@user/gensyst)
2021-08-24 20:03:32 +0200mud(~mud@user/kadoban) (Remote host closed the connection)
2021-08-24 20:03:35 +0200 <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"?
2021-08-24 20:04:23 +0200smarton(~smarton@gnu/webmaster/smarton)
2021-08-24 20:04:36 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
2021-08-24 20:04:50 +0200 <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.
2021-08-24 20:05:40 +0200 <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
2021-08-24 20:06:03 +0200 <gensyst> How does "it" know where to separate?
2021-08-24 20:06:04 +0200Guest42(~Guest42@adsl-72-50-7-6.prtc.net) (Ping timeout: 246 seconds)
2021-08-24 20:06:53 +0200 <gensyst> conduit just gets me bytestring chunks i presume
2021-08-24 20:07:12 +0200 <gensyst> (when reading a file)
2021-08-24 20:07:58 +0200ubert(~Thunderbi@178.165.204.112.wireless.dyn.drei.com)
2021-08-24 20:08:59 +0200smarton(~smarton@gnu/webmaster/smarton) (Read error: Connection reset by peer)
2021-08-24 20:09:29 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Remote host closed the connection)
2021-08-24 20:09:45 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-08-24 20:10:17 +0200smarton(~smarton@gnu/webmaster/smarton)
2021-08-24 20:12:41 +0200gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2021-08-24 20:12:53 +0200 <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
2021-08-24 20:13:12 +0200 <cdsmith> There may be combinators to make that sort of thing easier. I honestly am not knowledgable about conduit off-hand
2021-08-24 20:13:23 +0200 <cdsmith> Looking at docs now to see if there's something I see there
2021-08-24 20:15:23 +0200fef(~thedawn@user/thedawn) (Remote host closed the connection)
2021-08-24 20:15:58 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
2021-08-24 20:17:07 +0200buggymcbugfix(~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-08-24 20:17:10 +0200 <carter> cdsmith: yeah I don’t think that other rule will ever run except in code in ghci
2021-08-24 20:17:23 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
2021-08-24 20:18:11 +0200gentauro(~gentauro@user/gentauro)
2021-08-24 20:18:34 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-08-24 20:19:35 +0200 <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
2021-08-24 20:19:35 +0200smarton(~smarton@gnu/webmaster/smarton) (Read error: Connection reset by peer)
2021-08-24 20:20:14 +0200smarton(~smarton@gnu/webmaster/smarton)
2021-08-24 20:20:34 +0200wrengr_away(~wrengr@56.4.82.34.bc.googleusercontent.com) (Quit: leaving)
2021-08-24 20:20:45 +0200 <gensyst> cdsmith, ok so it all boils down to some sort of magic separators?
2021-08-24 20:20:50 +0200 <gensyst> (if byte length of each is not fixed)
2021-08-24 20:21:40 +0200 <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.
2021-08-24 20:23:14 +0200jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-08-24 20:23:31 +0200cohn(~noone@user/cohn) (Quit: leaving)
2021-08-24 20:23:44 +0200 <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
2021-08-24 20:25:16 +0200mud(~mud@user/kadoban)
2021-08-24 20:25:26 +0200 <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
2021-08-24 20:25:55 +0200 <gensyst> thanks!
2021-08-24 20:26:54 +0200maroloccio(~marolocci@37.100.40.252) (Quit: WeeChat 3.0)
2021-08-24 20:27:10 +0200smarton(~smarton@gnu/webmaster/smarton) (Leaving)
2021-08-24 20:29:28 +0200wrengr(~wrengr@56.72.82.34.bc.googleusercontent.com)
2021-08-24 20:30:03 +0200 <cdsmith> carter: Yeah, I think that required x to be polymorphic, which isn't what I want
2021-08-24 20:30:43 +0200 <cdsmith> So I'm back with https://code.world/haskell#PPy7SH19I_3Pu4KUz7s3K_g and no idea how to do the suggested fix
2021-08-24 20:31:33 +0200delYsid(~user@84-115-55-45.cable.dynamic.surfer.at)
2021-08-24 20:33:34 +0200gensyst(gensyst@user/gensyst) (Quit: Leaving)
2021-08-24 20:34:34 +0200PinealGlandOptic(~PinealGla@195.60.174.145) ()
2021-08-24 20:37:31 +0200 <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
2021-08-24 20:38:36 +0200 <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
2021-08-24 20:38:47 +0200 <carter> cdsmith: wait! There’s a tool you can use
2021-08-24 20:38:53 +0200 <carter> That might do what you want
2021-08-24 20:39:45 +0200 <carter> https://github.com/well-typed/recover-rtti … would this work for you or does it need to run in ghcjs?
2021-08-24 20:40:23 +0200 <carter> In which case, we could just ffi bind an evil js print fucntion as a -> String and just use that ?
2021-08-24 20:41:02 +0200 <carter> Would
2021-08-24 20:41:05 +0200 <carter> That work?
2021-08-24 20:41:37 +0200 <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-c… which points to https://hackage.haskell.org/package/ifcxt, which is bitrotted but looks easy to understand and reproduce in HMock
2021-08-24 20:42:08 +0200 <cdsmith> So I think that solves it (as well as explaining why RULES aren't viable, just as you did)
2021-08-24 20:43:03 +0200 <carter> Ohhh the bit about not being in a type class?
2021-08-24 20:43:16 +0200 <carter> I don’t think that’s even the issue, though it’s related
2021-08-24 20:44:12 +0200 <carter> Hrmmm. Yeah this gets into needing something like multimethods for runtime attempts to work
2021-08-24 20:44:50 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 20:45:10 +0200Vajb(~Vajb@hag-jnsbng11-58c3ab-85.dhcp.inet.fi)
2021-08-24 20:46:43 +0200lavaman(~lavaman@98.38.249.169)
2021-08-24 20:46:58 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
2021-08-24 20:47:08 +0200_crazygirl(~hola@213.94.16.140)
2021-08-24 20:48:03 +0200oxide(~lambda@user/oxide)
2021-08-24 20:48:25 +0200_crazygirl(~hola@213.94.16.140) (Killed (ozone (No Spam)))
2021-08-24 20:52:44 +0200remedan(~remedan@balak.me) (Quit: Bye!)
2021-08-24 20:54:30 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-08-24 20:57:28 +0200Sinbad(~Sinbad@user/sinbad)
2021-08-24 20:57:40 +0200jakalx(~jakalx@base.jakalx.net)
2021-08-24 21:01:29 +0200remedan(~remedan@balak.me)
2021-08-24 21:04:16 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
2021-08-24 21:05:19 +0200mei(~mei@user/mei) (Ping timeout: 250 seconds)
2021-08-24 21:05:46 +0200Lycurgus(~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
2021-08-24 21:07:10 +0200jumper149(~jumper149@80.240.31.34)
2021-08-24 21:07:50 +0200buggymcbugfix(~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de)
2021-08-24 21:08:06 +0200raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-08-24 21:11:31 +0200cuz(~user@38.140.58.234) (Ping timeout: 252 seconds)
2021-08-24 21:12:27 +0200buggymcbugfix(~buggymcbu@p4fcaa0a6.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-08-24 21:14:44 +0200mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-08-24 21:17:58 +0200d0ku(~d0ku@178.43.56.75.ipv4.supernova.orange.pl)
2021-08-24 21:18:47 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-08-24 21:22:26 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Remote host closed the connection)
2021-08-24 21:23:25 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-08-24 21:23:25 +0200wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-08-24 21:23:25 +0200wroathe(~wroathe@user/wroathe)
2021-08-24 21:24:02 +0200mniip_mniip
2021-08-24 21:26:27 +0200cuz(~user@38.140.58.234)
2021-08-24 21:29:16 +0200Erutuon(~Erutuon@user/erutuon)
2021-08-24 21:29:41 +0200maroloccio(~marolocci@37.100.40.252)
2021-08-24 21:30:53 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
2021-08-24 21:30:53 +0200lavaman(~lavaman@98.38.249.169) (Read error: Connection reset by peer)
2021-08-24 21:31:04 +0200lavaman(~lavaman@98.38.249.169)
2021-08-24 21:31:19 +0200neo(~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 252 seconds)
2021-08-24 21:32:30 +0200Pickchea(~private@user/pickchea)
2021-08-24 21:33:42 +0200hseg(~gesh@IGLD-84-228-238-79.inter.net.il)
2021-08-24 21:34:23 +0200 <zzz> Data.Graph from containers or fgl?
2021-08-24 21:34:54 +0200 <Rembane_> zzz: You could also use Data.Map.
2021-08-24 21:35:12 +0200 <zzz> Rembane_: how so?
2021-08-24 21:35:41 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net)
2021-08-24 21:38:11 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-08-24 21:39:14 +0200qbt(~edun@user/edun) (Remote host closed the connection)
2021-08-24 21:39:51 +0200 <monochrom> Also [] and [[]]
2021-08-24 21:41:26 +0200 <Rembane_> zzz: A graph has many representations, a mapping between nodes is one of them. OTOH fgl is fun!
2021-08-24 21:43:00 +0200 <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.
2021-08-24 21:48:13 +0200alx741(~alx741@181.196.68.94) (Ping timeout: 250 seconds)
2021-08-24 21:49:28 +0200lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-08-24 21:51:47 +0200jtomas(~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Ping timeout: 240 seconds)
2021-08-24 21:53:23 +0200 <zzz> this seems fun: https://hackage.haskell.org/package/algebraic-graphs
2021-08-24 21:57:09 +0200maroloccio(~marolocci@37.100.40.252) (Quit: WeeChat 3.0)
2021-08-24 21:58:56 +0200azeem(~azeem@176.201.15.223) (Ping timeout: 250 seconds)
2021-08-24 21:59:45 +0200azeem(~azeem@176.201.15.223)
2021-08-24 22:00:30 +0200slack1256(~slack1256@191.125.33.180) (Remote host closed the connection)
2021-08-24 22:01:13 +0200alx741(~alx741@186.178.108.43)
2021-08-24 22:03:43 +0200jtomas(~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
2021-08-24 22:05:26 +0200juhp(~juhp@128.106.188.220) (Ping timeout: 250 seconds)
2021-08-24 22:05:34 +0200_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-08-24 22:05:53 +0200oxide(~lambda@user/oxide) (Quit: oxide)
2021-08-24 22:07:29 +0200Guest1613(~chris@81.96.113.213) (Ping timeout: 248 seconds)
2021-08-24 22:08:09 +0200juhp(~juhp@128.106.188.220)
2021-08-24 22:08:38 +0200mrmonday(~robert@what.i.hope.is.not.a.tabernaevagant.es) (Quit: .)
2021-08-24 22:08:49 +0200mrmonday(robert@2a01:7e00::f03c:91ff:fe24:1bd)
2021-08-24 22:13:20 +0200talismanick(~user@2601:644:8500:8350::cc04)
2021-08-24 22:17:47 +0200azeem(~azeem@176.201.15.223) (Ping timeout: 240 seconds)
2021-08-24 22:18:27 +0200azeem(~azeem@176.201.15.223)
2021-08-24 22:19:51 +0200drd(~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 250 seconds)
2021-08-24 22:21:43 +0200meriadoc(~meriadoc@097-086-004-112.res.spectrum.com)
2021-08-24 22:22:23 +0200meriadoc(~meriadoc@097-086-004-112.res.spectrum.com) (WeeChat 2.3)
2021-08-24 22:22:55 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
2021-08-24 22:25:08 +0200dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.2)
2021-08-24 22:27:13 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Ping timeout: 250 seconds)
2021-08-24 22:29:02 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-24 22:31:20 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
2021-08-24 22:33:10 +0200Sinbad(~Sinbad@user/sinbad) (Quit: WeeChat 3.2)
2021-08-24 22:33:28 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-08-24 22:36:19 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
2021-08-24 22:44:33 +0200azeem(~azeem@176.201.15.223) (Ping timeout: 250 seconds)
2021-08-24 22:48:31 +0200aman(~aman@user/aman) (Quit: aman)
2021-08-24 22:49:23 +0200azeem(~azeem@176.201.15.223)
2021-08-24 22:51:48 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com) (Ping timeout: 250 seconds)
2021-08-24 22:52:10 +0200mcfilib(sid302703@user/mcfilib) ()
2021-08-24 22:52:25 +0200mcfilib(sid302703@user/mcfilib)
2021-08-24 22:54:31 +0200amahl(~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 250 seconds)
2021-08-24 22:58:05 +0200scav(sid309693@id-309693.brockwell.irccloud.com) ()
2021-08-24 22:58:20 +0200scav(sid309693@id-309693.helmsley.irccloud.com)
2021-08-24 22:58:36 +0200MQ-17J(~MQ-17J@2607:fb90:888c:3321:7349:4005:9638:7e44)
2021-08-24 23:00:33 +0200acidjnk_new3(~acidjnk@p200300d0c72b9534e4a445cd6b407eb5.dip0.t-ipconnect.de)
2021-08-24 23:01:15 +0200MQ-17J(~MQ-17J@2607:fb90:888c:3321:7349:4005:9638:7e44) (Read error: Connection reset by peer)
2021-08-24 23:01:21 +0200epolanski(uid312403@id-312403.brockwell.irccloud.com) ()
2021-08-24 23:01:36 +0200epolanski(uid312403@id-312403.helmsley.irccloud.com)
2021-08-24 23:02:44 +0200MQ-17J(~MQ-17J@d14-69-206-129.try.wideopenwest.com)
2021-08-24 23:03:26 +0200gregberns__(sid315709@id-315709.brockwell.irccloud.com) ()
2021-08-24 23:03:40 +0200gregberns__(sid315709@id-315709.helmsley.irccloud.com)
2021-08-24 23:04:27 +0200d0ku(~d0ku@178.43.56.75.ipv4.supernova.orange.pl) (Ping timeout: 240 seconds)
2021-08-24 23:05:11 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2021-08-24 23:05:16 +0200remedan(~remedan@balak.me) (Quit: Bye!)
2021-08-24 23:05:57 +0200ec_(~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
2021-08-24 23:08:49 +0200eggplantade(~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d) (Remote host closed the connection)
2021-08-24 23:09:49 +0200remedan(~remedan@balak.me)
2021-08-24 23:10:21 +0200ec_(~ec@gateway/tor-sasl/ec)
2021-08-24 23:10:45 +0200remedan(~remedan@balak.me) (Client Quit)
2021-08-24 23:10:58 +0200Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-08-24 23:13:02 +0200remedan(~remedan@balak.me)
2021-08-24 23:15:13 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-24 23:15:19 +0200ubert(~Thunderbi@178.165.204.112.wireless.dyn.drei.com) (Ping timeout: 250 seconds)
2021-08-24 23:18:57 +0200Natch(~natch@c-e070e255.014-297-73746f25.bbcust.telenor.se) (Ping timeout: 248 seconds)
2021-08-24 23:23:27 +0200 <nshepperd> i need to send in a patch to that package
2021-08-24 23:23:45 +0200 <nshepperd> The documented complexity for 'vertexCount :: AdjacencyIntMap -> Int' is wrong
2021-08-24 23:23:47 +0200azeem(~azeem@176.201.15.223) (Ping timeout: 240 seconds)
2021-08-24 23:24:16 +0200azeem(~azeem@176.201.15.223)
2021-08-24 23:24:49 +0200 <nshepperd> because IntMap.size is o(n)
2021-08-24 23:30:40 +0200jespada(~jespada@90.254.245.194) (Ping timeout: 252 seconds)
2021-08-24 23:30:55 +0200azeem(~azeem@176.201.15.223) (Ping timeout: 250 seconds)
2021-08-24 23:31:07 +0200remedan(~remedan@balak.me) (Quit: Bye!)
2021-08-24 23:32:07 +0200azeem(~azeem@176.201.15.223)
2021-08-24 23:32:28 +0200parisienne(sid383587@id-383587.brockwell.irccloud.com) ()
2021-08-24 23:32:42 +0200parisienne(sid383587@id-383587.helmsley.irccloud.com)
2021-08-24 23:33:20 +0200NiKaN(sid385034@id-385034.brockwell.irccloud.com) ()
2021-08-24 23:33:40 +0200jespada(~jespada@90.254.245.194)
2021-08-24 23:34:05 +0200NiKaN(sid385034@id-385034.helmsley.irccloud.com)
2021-08-24 23:34:14 +0200oldsk00l(~znc@ec2-3-120-38-228.eu-central-1.compute.amazonaws.com)
2021-08-24 23:34:59 +0200gaze___(sid387101@id-387101.brockwell.irccloud.com) ()
2021-08-24 23:35:13 +0200gaze___(sid387101@id-387101.helmsley.irccloud.com)
2021-08-24 23:37:13 +0200remedan(~remedan@balak.me)
2021-08-24 23:40:45 +0200mouseghost(~draco@user/mouseghost)
2021-08-24 23:42:07 +0200Pickchea(~private@user/pickchea) (Quit: Leaving)
2021-08-24 23:43:00 +0200remedan(~remedan@balak.me) (Quit: Bye!)
2021-08-24 23:45:04 +0200remedan(~remedan@balak.me)
2021-08-24 23:47:42 +0200doyougnu(~user@c-73-25-202-122.hsd1.or.comcast.net) (Remote host closed the connection)
2021-08-24 23:49:22 +0200merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-24 23:51:11 +0200markpythonicbtc(~textual@2601:647:5a00:35:999f:46ac:3d0f:19d0) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-08-24 23:51:45 +0200markpythonicbtc(~textual@2601:647:5a00:35:999f:46ac:3d0f:19d0)
2021-08-24 23:53:45 +0200jumper149(~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
2021-08-24 23:54:59 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
2021-08-24 23:55:12 +0200haykam(~haykam@static.100.2.21.65.clients.your-server.de)
2021-08-24 23:57:36 +0200jgeerds(~jgeerds@55d4b311.access.ecotel.net)
2021-08-24 23:58:50 +0200jtomas(~jtomas@233.red-83-34-2.dynamicip.rima-tde.net) (Remote host closed the connection)
2021-08-24 23:59:14 +0200jtomas(~jtomas@233.red-83-34-2.dynamicip.rima-tde.net)
2021-08-24 23:59:29 +0200cuz(~user@38.140.58.234) (Ping timeout: 248 seconds)