2023/02/24

2023-02-24 00:04:26 +0100alecs(~alecs@31.188.176.146) (Quit: WeeChat 3.8)
2023-02-24 00:08:19 +0100waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Quit: the updatening)
2023-02-24 00:09:15 +0100waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se)
2023-02-24 00:11:24 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-02-24 00:11:27 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
2023-02-24 00:12:10 +0100Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Quit: Ping timeout (120 seconds))
2023-02-24 00:12:28 +0100Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
2023-02-24 00:21:03 +0100Ranhir(~Ranhir@157.97.53.139) (Ping timeout: 248 seconds)
2023-02-24 00:23:59 +0100alphabeta(~kilolympu@213.144.144.24)
2023-02-24 00:24:30 +0100alphabeta(~kilolympu@213.144.144.24) (Client Quit)
2023-02-24 00:25:15 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:311d:9400:2604:4e0f)
2023-02-24 00:26:47 +0100Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Ping timeout: 268 seconds)
2023-02-24 00:27:39 +0100Ranhir(~Ranhir@157.97.53.139)
2023-02-24 00:29:02 +0100jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2023-02-24 00:29:21 +0100jinsun(~jinsun@user/jinsun)
2023-02-24 00:29:47 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:311d:9400:2604:4e0f) (Ping timeout: 248 seconds)
2023-02-24 00:31:29 +0100mechap(~mechap@user/mechap) (Ping timeout: 265 seconds)
2023-02-24 00:33:03 +0100mechap(~mechap@user/mechap)
2023-02-24 00:33:53 +0100Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
2023-02-24 00:35:00 +0100ub(~Thunderbi@p548c8a3b.dip0.t-ipconnect.de)
2023-02-24 00:35:55 +0100ubert(~Thunderbi@p200300ecdf1f1efb237106c089344746.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2023-02-24 00:35:55 +0100ububert
2023-02-24 00:36:42 +0100 <ph88> is it possible / how can this be used with generic deriving via ? https://hackage.haskell.org/package/hasbolt-extras-0.0.2.0/docs/Database-Bolt-Extras-Generic.html
2023-02-24 00:40:58 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-02-24 00:42:16 +0100falafel(~falafel@2607:fb91:143f:e47f:b5c5:f2b7:be92:9467)
2023-02-24 00:45:42 +0100jinsunGuest4113
2023-02-24 00:45:42 +0100jinsun__(~jinsun@user/jinsun)
2023-02-24 00:45:42 +0100Guest4113(~jinsun@user/jinsun) (Killed (molybdenum.libera.chat (Nickname regained by services)))
2023-02-24 00:45:42 +0100jinsun__jinsun
2023-02-24 00:46:40 +0100jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2023-02-24 00:47:07 +0100jinsun(~jinsun@user/jinsun)
2023-02-24 00:48:59 +0100Feuermagier_(~Feuermagi@user/feuermagier)
2023-02-24 00:49:54 +0100jinsun(~jinsun@user/jinsun) (Read error: Connection reset by peer)
2023-02-24 00:50:12 +0100jinsun(~jinsun@user/jinsun)
2023-02-24 00:51:14 +0100Feuermagier_(~Feuermagi@user/feuermagier) (Client Quit)
2023-02-24 00:51:22 +0100k8yun(~k8yun@user/k8yun)
2023-02-24 00:51:31 +0100Feuermagier(~Feuermagi@user/feuermagier) (Ping timeout: 246 seconds)
2023-02-24 00:51:48 +0100emmanuelux(~emmanuelu@user/emmanuelux)
2023-02-24 00:52:02 +0100 <jackdk> probably `deriving IsValue via BoltGeneric`
2023-02-24 00:52:20 +0100k8yun(~k8yun@user/k8yun) (Max SendQ exceeded)
2023-02-24 00:52:49 +0100k8yun(~k8yun@user/k8yun)
2023-02-24 00:56:00 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-02-24 00:56:16 +0100mechap(~mechap@user/mechap) (Ping timeout: 252 seconds)
2023-02-24 00:56:29 +0100k8yun(~k8yun@user/k8yun) (Max SendQ exceeded)
2023-02-24 00:57:27 +0100k8yun(~k8yun@user/k8yun)
2023-02-24 00:58:24 +0100mechap(~mechap@user/mechap)
2023-02-24 01:00:47 +0100k8yun(~k8yun@user/k8yun) (Max SendQ exceeded)
2023-02-24 01:01:54 +0100k8yun(~k8yun@user/k8yun)
2023-02-24 01:04:33 +0100demsh(~demsh@algiz.demsh.org)
2023-02-24 01:04:52 +0100harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2023-02-24 01:11:10 +0100k8yun(~k8yun@user/k8yun) (Ping timeout: 260 seconds)
2023-02-24 01:11:58 +0100emmanuelux(~emmanuelu@user/emmanuelux) (Quit: au revoir)
2023-02-24 01:13:32 +0100Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)
2023-02-24 01:13:46 +0100mauke_(~mauke@user/mauke)
2023-02-24 01:14:40 +0100dcoutts_(~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Ping timeout: 260 seconds)
2023-02-24 01:15:30 +0100mauke(~mauke@user/mauke) (Ping timeout: 268 seconds)
2023-02-24 01:15:31 +0100mauke_mauke
2023-02-24 01:15:40 +0100zeenk(~zeenk@2a02:2f04:a214:1e00::7fe) (Quit: Konversation terminated!)
2023-02-24 01:19:11 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com)
2023-02-24 01:19:11 +0100wroathe(~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
2023-02-24 01:19:11 +0100wroathe(~wroathe@user/wroathe)
2023-02-24 01:24:57 +0100cheater_(~Username@user/cheater)
2023-02-24 01:26:01 +0100 <ph88> jackdk, thx i'll give it a try
2023-02-24 01:28:05 +0100cheater(~Username@user/cheater) (Ping timeout: 260 seconds)
2023-02-24 01:28:12 +0100cheater_cheater
2023-02-24 01:43:22 +0100jinsun__(~jinsun@user/jinsun)
2023-02-24 01:43:22 +0100jinsunGuest2922
2023-02-24 01:43:22 +0100Guest2922(~jinsun@user/jinsun) (Killed (cadmium.libera.chat (Nickname regained by services)))
2023-02-24 01:43:22 +0100jinsun__jinsun
2023-02-24 01:47:55 +0100 <Inst> hey, anyone want to check out some f-ed up behavior of cabal and ghci?
2023-02-24 01:48:14 +0100 <Inst> https://media.discordapp.net/attachments/505370075402862594/1078475060282654811/image.png
2023-02-24 01:48:25 +0100 <Inst> https://media.discordapp.net/attachments/505370075402862594/1078478254823985212/image.png
2023-02-24 01:48:29 +0100morrow(~morrow@2a10:8012:9:53cf:148d:bd9f:e0ca:3908)
2023-02-24 01:48:32 +0100 <Inst> https://media.discordapp.net/attachments/505370075402862594/1078478179024515182/image.png
2023-02-24 01:48:50 +0100 <Inst> so i'm gettnig cabal isntalling stuff into global package database
2023-02-24 01:48:52 +0100 <Inst> as hidden
2023-02-24 01:48:56 +0100 <Inst> I think it's something to do with VSC
2023-02-24 01:49:31 +0100 <sclv> ghci is loading the package environment as it says
2023-02-24 01:49:36 +0100 <Inst> Win10, VSC, GHCup, 9.4.4, Cabal 3.8.1.0 (i think? or is 3.9.1.0 a thing?
2023-02-24 01:49:47 +0100 <sclv> so servant-server is apparently not in the package environment
2023-02-24 01:49:49 +0100 <Inst> I LOVE this behavior
2023-02-24 01:49:55 +0100 <Inst> but I'm told this shouldn't work
2023-02-24 01:49:59 +0100 <sclv> which is not surprising, because you didn't `install --lib` or v1-install`
2023-02-24 01:49:59 +0100 <Inst> and got chewed out for it
2023-02-24 01:50:08 +0100 <sclv> right. i told you want to do
2023-02-24 01:50:11 +0100 <sclv> i didn't chew you out
2023-02-24 01:50:17 +0100 <sclv> either use v1-install
2023-02-24 01:50:20 +0100 <sclv> or install --lib
2023-02-24 01:50:56 +0100 <Inst> no, but I like the fact that all I have to do to unhide these libs is :set -package <lib-name>
2023-02-24 01:51:11 +0100 <sclv> then v1-install
2023-02-24 01:51:15 +0100 <sclv> instead of install
2023-02-24 01:51:17 +0100 <sclv> that's literally it
2023-02-24 01:51:22 +0100 <Inst> hmmm
2023-02-24 01:51:22 +0100 <sclv> then you get the old behavior
2023-02-24 01:51:29 +0100 <Inst> i'm not complaining about this behavior
2023-02-24 01:51:51 +0100 <sclv> ok
2023-02-24 01:51:53 +0100 <Inst> the way I was told is that any time I want to mess around with Haskell / GHCI / GHC, I have to use a cabal file, cabal repl -b, etc
2023-02-24 01:52:03 +0100 <Inst> this somehow allows me to just resort to -package flags, which is more ergonomic
2023-02-24 01:52:44 +0100 <Inst> but apparently this behavior is a bug
2023-02-24 01:52:58 +0100 <sclv> not really just an unexpected interaction
2023-02-24 01:53:06 +0100 <sclv> if you like it, that's fine
2023-02-24 01:53:13 +0100 <Inst> between VSC Haskell extension, and Cabal?
2023-02-24 01:53:23 +0100 <sclv> no, between package env files and -package flags
2023-02-24 01:54:12 +0100 <sclv> basically you seem to just be observing that -package flags set in cabal can override the package set configured by the environment file
2023-02-24 01:54:48 +0100 <sclv> and that works until you end up with multiple copies of the package in the global store afaik, but can be nice for the simple cases
2023-02-24 01:55:26 +0100 <Inst> ah, so i'm still getting "this is why you should never use --lib"
2023-02-24 01:55:40 +0100 <sclv> no
2023-02-24 01:55:45 +0100 <sclv> i don't think you should never use -lib
2023-02-24 01:56:02 +0100 <Inst> the "standard" behavior without VSC causing weird behavior
2023-02-24 01:56:11 +0100 <sclv> i know for a fact cabal install --lib isn't great with env files in 3.8 because i know about bugs that were fixed that improves it in 3.10
2023-02-24 01:56:19 +0100 <sclv> idk what you mean by "VSC"
2023-02-24 01:56:22 +0100 <Inst> is that the cabal installs never even drop stuff into the global package database
2023-02-24 01:56:25 +0100 <Inst> Visual Studio Code
2023-02-24 01:56:32 +0100 <sclv> vsc should be unrealted to any of this
2023-02-24 01:56:51 +0100 <sclv> cabal install v2 will never put stuff in the global database, just the store.
2023-02-24 01:56:55 +0100 <sclv> cabal install v1 will
2023-02-24 01:57:03 +0100 <Inst> if I completely remove VSC and nuke GHCup, I guess i get cabal install v2 by base
2023-02-24 01:57:10 +0100 <Inst> now I seem to be getting some kind of cabal install v1
2023-02-24 01:57:16 +0100 <sclv> no you're posting v2 behavior
2023-02-24 01:57:17 +0100 <sclv> not v1
2023-02-24 01:57:28 +0100 <Inst> well, sorry for confusion and irritation
2023-02-24 01:58:36 +0100 <yushyin> i sometimes use install --lib but only if I explicitly use a different package env for it
2023-02-24 01:58:45 +0100acidjnk(~acidjnk@p200300d6e715c4484472a5e19ee2f2c7.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2023-02-24 01:59:24 +0100 <yushyin> and i do not see a problem with that, works fine.
2023-02-24 02:03:57 +0100azure_vermilion(~azure_ver@82-132-232-3.dab.02.net) (Ping timeout: 255 seconds)
2023-02-24 02:04:08 +0100azure_vermilion(~azure_ver@82-132-235-45.dab.02.net)
2023-02-24 02:06:54 +0100qhong_qhong
2023-02-24 02:11:23 +0100king_gs(~Thunderbi@187.201.41.239)
2023-02-24 02:12:37 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2023-02-24 02:14:35 +0100hololeap(~quassel@user/hololeap) (Quit: Bye)
2023-02-24 02:16:26 +0100k8yun(~k8yun@user/k8yun)
2023-02-24 02:16:44 +0100hololeap(~quassel@user/hololeap)
2023-02-24 02:18:44 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2023-02-24 02:24:17 +0100brettgilio(~brettgili@x-irc.gq)
2023-02-24 02:33:35 +0100morrow(~morrow@2a10:8012:9:53cf:148d:bd9f:e0ca:3908) (Remote host closed the connection)
2023-02-24 02:33:55 +0100morrow(~morrow@2a10:8012:9:53cf:148d:bd9f:e0ca:3908)
2023-02-24 02:44:59 +0100harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2023-02-24 02:53:16 +0100thongpv(~thongpv87@113.178.133.250)
2023-02-24 02:55:19 +0100thongpv87(~thongpv87@2402:9d80:3c4:d47b:1f8a:2a86:2c59:87d2)
2023-02-24 02:57:50 +0100thongpv(~thongpv87@113.178.133.250) (Ping timeout: 255 seconds)
2023-02-24 03:02:20 +0100falafel(~falafel@2607:fb91:143f:e47f:b5c5:f2b7:be92:9467) (Ping timeout: 255 seconds)
2023-02-24 03:07:59 +0100Guest5395(~talismani@campus-015-155.ucdavis.edu)
2023-02-24 03:09:25 +0100JimL(~quassel@89-162-26-217.fiber.signal.no) (Ping timeout: 246 seconds)
2023-02-24 03:12:52 +0100matthews(~matthews@gentoo/developer/matthew) (Quit: ZNC 1.8.2+deb2+b1 - https://znc.in)
2023-02-24 03:13:06 +0100matthews(~matthews@gentoo/developer/matthew)
2023-02-24 03:13:53 +0100phaazon(~phaazon@2001:41d0:a:fe76::1) (Ping timeout: 246 seconds)
2023-02-24 03:13:53 +0100king_gs(~Thunderbi@187.201.41.239) (Read error: Connection reset by peer)
2023-02-24 03:14:10 +0100phaazon(~phaazon@2001:41d0:a:fe76::1)
2023-02-24 03:17:18 +0100Square(~Square4@user/square) (Ping timeout: 255 seconds)
2023-02-24 03:17:28 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds)
2023-02-24 03:18:38 +0100gehmehgeh(~user@user/gehmehgeh) (Ping timeout: 255 seconds)
2023-02-24 03:20:45 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2023-02-24 03:21:09 +0100king_gs(~Thunderbi@187.201.41.239)
2023-02-24 03:21:55 +0100k8yun(~k8yun@user/k8yun) (Ping timeout: 268 seconds)
2023-02-24 03:22:33 +0100ryanbooker(uid4340@id-4340.hampstead.irccloud.com)
2023-02-24 03:23:09 +0100gehmehgeh(~user@user/gehmehgeh)
2023-02-24 03:23:35 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
2023-02-24 03:25:33 +0100mcglk(~mcglk@131.191.19.145) (Quit: (zzz))
2023-02-24 03:26:29 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-02-24 03:29:27 +0100mcglk(~mcglk@131.191.19.145)
2023-02-24 03:29:53 +0100cheater_(~Username@user/cheater)
2023-02-24 03:31:34 +0100varoo(~varoo@104.28.254.171)
2023-02-24 03:32:09 +0100cheater(~Username@user/cheater) (Ping timeout: 255 seconds)
2023-02-24 03:32:19 +0100cheater_cheater
2023-02-24 03:37:46 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2023-02-24 03:41:10 +0100king_gs(~Thunderbi@187.201.41.239) (Read error: Connection reset by peer)
2023-02-24 03:41:15 +0100king_gs1(~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7)
2023-02-24 03:43:32 +0100king_gs1king_gs
2023-02-24 03:46:15 +0100Feuermagier(~Feuermagi@user/feuermagier)
2023-02-24 03:54:15 +0100varoo(~varoo@104.28.254.171) (Quit: Probably got disconnect dure to unstable internet)
2023-02-24 03:55:14 +0100mcglk(~mcglk@131.191.19.145) (Quit: (zzz))
2023-02-24 03:56:22 +0100mcglk(~mcglk@131.191.19.145)
2023-02-24 03:58:57 +0100k8yun(~k8yun@user/k8yun)
2023-02-24 04:00:31 +0100king_gs(~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Ping timeout: 252 seconds)
2023-02-24 04:01:50 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
2023-02-24 04:02:50 +0100jero98772(~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection)
2023-02-24 04:04:16 +0100bilegeek(~bilegeek@2600:1008:b096:6a80:34b5:57e8:9b41:910b)
2023-02-24 04:05:20 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 246 seconds)
2023-02-24 04:05:26 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
2023-02-24 04:07:17 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2023-02-24 04:07:46 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-02-24 04:07:50 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-02-24 04:08:36 +0100Guest5395(~talismani@campus-015-155.ucdavis.edu) (Ping timeout: 255 seconds)
2023-02-24 04:11:59 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
2023-02-24 04:18:18 +0100morrow(~morrow@2a10:8012:9:53cf:148d:bd9f:e0ca:3908) (Ping timeout: 260 seconds)
2023-02-24 04:23:13 +0100thongpv87(~thongpv87@2402:9d80:3c4:d47b:1f8a:2a86:2c59:87d2) (Ping timeout: 252 seconds)
2023-02-24 04:23:16 +0100opticblast(~Thunderbi@172.58.82.191) (Quit: opticblast)
2023-02-24 04:23:24 +0100thongpv(~thongpv87@14.246.244.57)
2023-02-24 04:23:49 +0100k8yun(~k8yun@user/k8yun) (Quit: Leaving)
2023-02-24 04:24:02 +0100[_](~itchyjunk@user/itchyjunk/x-7353470)
2023-02-24 04:27:28 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 246 seconds)
2023-02-24 04:27:29 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds)
2023-02-24 04:28:43 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2023-02-24 04:31:36 +0100gastus_(~gastus@185.6.123.134)
2023-02-24 04:32:15 +0100morrow(~morrow@bzq-110-168-31-106.red.bezeqint.net)
2023-02-24 04:34:02 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-02-24 04:34:45 +0100gastus(~gastus@185.6.123.233) (Ping timeout: 260 seconds)
2023-02-24 04:38:05 +0100Sgeo(~Sgeo@user/sgeo)
2023-02-24 04:38:07 +0100Katarushisu1(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
2023-02-24 04:39:39 +0100Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Ping timeout: 255 seconds)
2023-02-24 04:39:40 +0100Katarushisu1Katarushisu
2023-02-24 04:39:52 +0100abhixec(~abhinav@c-67-169-139-16.hsd1.ca.comcast.net)
2023-02-24 04:41:28 +0100thongpv(~thongpv87@14.246.244.57) (Ping timeout: 268 seconds)
2023-02-24 04:43:35 +0100td_(~td@i53870911.versanet.de) (Ping timeout: 255 seconds)
2023-02-24 04:44:43 +0100hnOsmium0001(uid453710@user/hnOsmium0001) (Quit: Connection closed for inactivity)
2023-02-24 04:44:50 +0100razetime(~Thunderbi@117.193.1.83)
2023-02-24 04:45:27 +0100td_(~td@i5387092A.versanet.de)
2023-02-24 04:48:03 +0100morrow(~morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 260 seconds)
2023-02-24 04:50:55 +0100waleee(~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 246 seconds)
2023-02-24 04:51:30 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2023-02-24 04:51:30 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2023-02-24 04:51:30 +0100finn_elijaFinnElija
2023-02-24 04:56:20 +0100razetime(~Thunderbi@117.193.1.83) (Ping timeout: 260 seconds)
2023-02-24 04:57:18 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2023-02-24 04:58:52 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2023-02-24 04:59:16 +0100thongpv(~thongpv87@14.246.244.57)
2023-02-24 04:59:26 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
2023-02-24 05:03:58 +0100thongpv87(~thongpv87@14.246.244.57)
2023-02-24 05:04:17 +0100thongpv(~thongpv87@14.246.244.57) (Ping timeout: 268 seconds)
2023-02-24 05:07:06 +0100mima(~mmh@ppp-212-114-180-143.dynamic.mnet-online.de) (Ping timeout: 255 seconds)
2023-02-24 05:16:35 +0100[_][itchyjunk]
2023-02-24 05:25:05 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 255 seconds)
2023-02-24 05:27:21 +0100analoq(~yashi@user/dies) (Ping timeout: 255 seconds)
2023-02-24 05:27:28 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2023-02-24 05:28:12 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
2023-02-24 05:30:43 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2023-02-24 05:31:08 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-02-24 05:31:52 +0100polyphem_(~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17) (Ping timeout: 246 seconds)
2023-02-24 05:36:24 +0100thongpv87(~thongpv87@14.246.244.57) (Remote host closed the connection)
2023-02-24 05:37:30 +0100thongpv(~thongpv87@14.246.244.57)
2023-02-24 05:38:16 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:311d:9400:2604:4e0f)
2023-02-24 05:40:05 +0100razetime(~Thunderbi@117.193.1.83)
2023-02-24 05:40:05 +0100johnw(~johnw@2600:1700:cf00:db0:bd35:2807:e193:42ca) (Quit: ZNC - http://znc.in)
2023-02-24 05:40:05 +0100jwiegley(~jwiegley@2600:1700:cf00:db0:bd35:2807:e193:42ca) (Quit: ZNC - http://znc.in)
2023-02-24 05:40:49 +0100polyphem(~polyphem@2a02:810d:840:8754:4d31:9178:35f:6608) (Ping timeout: 265 seconds)
2023-02-24 05:45:48 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 255 seconds)
2023-02-24 05:46:41 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
2023-02-24 05:57:50 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2023-02-24 05:58:20 +0100jwiegley(~jwiegley@2600:1700:cf00:db0:68d8:903c:fcfa:7317)
2023-02-24 05:59:04 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Client Quit)
2023-02-24 06:02:08 +0100bilegeek(~bilegeek@2600:1008:b096:6a80:34b5:57e8:9b41:910b) (Quit: Leaving)
2023-02-24 06:03:04 +0100mbuf(~Shakthi@49.204.138.125)
2023-02-24 06:05:09 +0100cheater(~Username@user/cheater) (Remote host closed the connection)
2023-02-24 06:10:12 +0100razetime1(~Thunderbi@117.193.5.253)
2023-02-24 06:11:25 +0100razetime(~Thunderbi@117.193.1.83) (Ping timeout: 246 seconds)
2023-02-24 06:11:25 +0100razetime1razetime
2023-02-24 06:13:59 +0100analoq(~yashi@user/dies)
2023-02-24 06:29:18 +0100king_gs(~Thunderbi@187.201.41.239)
2023-02-24 06:34:55 +0100 <sm> confusion seems inevitable here
2023-02-24 06:40:38 +0100trev(~trev@user/trev)
2023-02-24 06:42:20 +0100ryanbooker(uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2023-02-24 06:44:01 +0100thongpv(~thongpv87@14.246.244.57) (Remote host closed the connection)
2023-02-24 06:45:30 +0100hnOsmium0001(uid453710@user/hnOsmium0001)
2023-02-24 06:45:46 +0100 <sclv> "confusion seems inevitable here" -- put it on my gravestone
2023-02-24 06:49:05 +0100razetime1(~Thunderbi@117.254.34.231)
2023-02-24 06:49:06 +0100king_gs(~Thunderbi@187.201.41.239) (Read error: Connection reset by peer)
2023-02-24 06:50:03 +0100razetime(~Thunderbi@117.193.5.253) (Ping timeout: 248 seconds)
2023-02-24 06:50:03 +0100razetime1razetime
2023-02-24 06:50:05 +0100king_gs(~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7)
2023-02-24 06:51:36 +0100use-value(~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection)
2023-02-24 06:51:55 +0100use-value(~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf)
2023-02-24 06:53:13 +0100falafel(~falafel@2607:fb91:143f:e47f:196a:f18e:3137:5d3)
2023-02-24 06:53:17 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
2023-02-24 06:53:29 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-02-24 06:53:47 +0100 <sm> hehe
2023-02-24 06:54:20 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2023-02-24 06:55:42 +0100king_gs(~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Quit: king_gs)
2023-02-24 07:06:54 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-02-24 07:07:15 +0100analoq(~yashi@user/dies) (Ping timeout: 255 seconds)
2023-02-24 07:08:45 +0100avpx_(~nick@ec2-54-214-223-1.us-west-2.compute.amazonaws.com) (Ping timeout: 260 seconds)
2023-02-24 07:08:51 +0100analoq(~yashi@user/dies)
2023-02-24 07:10:41 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2023-02-24 07:13:23 +0100king_gs(~Thunderbi@187.201.41.239)
2023-02-24 07:18:46 +0100sefidel(~sefidel@user/sefidel) (Remote host closed the connection)
2023-02-24 07:21:39 +0100sefidel(~sefidel@user/sefidel)
2023-02-24 07:23:05 +0100 <anatta> sclv: As the great poet King Crimson once said: confusion will be my epitaph
2023-02-24 07:26:13 +0100shriekingnoise(~shrieking@186.137.175.87) (Ping timeout: 252 seconds)
2023-02-24 07:28:01 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-02-24 07:33:21 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 255 seconds)
2023-02-24 07:33:46 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2023-02-24 07:34:16 +0100jwiegley(~jwiegley@2600:1700:cf00:db0:18e0:c0e7:a06a:ed2f)
2023-02-24 07:45:02 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-02-24 07:46:06 +0100akegalj(~akegalj@93-138-29-205.adsl.net.t-com.hr)
2023-02-24 07:57:02 +0100Vajb(~Vajb@2001:999:230:f561:4ee8:ad7f:13ff:9959) (Read error: Connection reset by peer)
2023-02-24 07:57:10 +0100Vajb(~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
2023-02-24 07:57:52 +0100king_gs(~Thunderbi@187.201.41.239) (Quit: king_gs)
2023-02-24 08:00:58 +0100Vajb(~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
2023-02-24 08:01:24 +0100mei(~mei@user/mei)
2023-02-24 08:01:35 +0100Vajb(~Vajb@2001:999:230:f561:4ee8:ad7f:13ff:9959)
2023-02-24 08:02:46 +0100michalz(~michalz@185.246.207.221)
2023-02-24 08:04:45 +0100falafel(~falafel@2607:fb91:143f:e47f:196a:f18e:3137:5d3) (Ping timeout: 255 seconds)
2023-02-24 08:05:32 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2023-02-24 08:07:05 +0100son0p(~ff@181.136.122.143) (Ping timeout: 260 seconds)
2023-02-24 08:08:16 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-02-24 08:09:27 +0100freeside(~mengwong@122.11.212.82)
2023-02-24 08:12:50 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
2023-02-24 08:17:58 +0100inversed(~inversed@bcdcac82.skybroadband.com) (Read error: No route to host)
2023-02-24 08:18:43 +0100CiaoSen(~Jura@2003:c9:5704:6000:2a3a:4dff:fe84:dbd5)
2023-02-24 08:26:04 +0100inversed(~inversed@bcdcac82.skybroadband.com)
2023-02-24 08:27:46 +0100mixphix(~cigsender@74.124.58.162) (Ping timeout: 252 seconds)
2023-02-24 08:27:53 +0100mixphix(~cigsender@74.124.58.162)
2023-02-24 08:28:01 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2023-02-24 08:29:54 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-02-24 08:34:25 +0100azure_vermilion(~azure_ver@82-132-235-45.dab.02.net) (Ping timeout: 252 seconds)
2023-02-24 08:34:35 +0100azure_vermilion(~azure_ver@82-132-235-20.dab.02.net)
2023-02-24 08:37:29 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:311d:9400:2604:4e0f) (Remote host closed the connection)
2023-02-24 08:49:31 +0100vpan(~0@212.117.1.172)
2023-02-24 08:50:50 +0100freeside(~mengwong@122.11.212.82) (Ping timeout: 260 seconds)
2023-02-24 08:52:30 +0100mauke(~mauke@user/mauke) (Quit: leaving)
2023-02-24 08:55:13 +0100tdammers(~tdammers@77.109.72.175.res.static.edpnet.net) (Ping timeout: 246 seconds)
2023-02-24 08:56:59 +0100mechap(~mechap@user/mechap) (Ping timeout: 248 seconds)
2023-02-24 09:00:30 +0100mechap(~mechap@user/mechap)
2023-02-24 09:00:59 +0100thegeekinside(~thegeekin@189.180.66.126) (Ping timeout: 255 seconds)
2023-02-24 09:01:29 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2023-02-24 09:04:46 +0100mc47(~mc47@xmonad/TheMC47)
2023-02-24 09:06:11 +0100akegalj(~akegalj@93-138-29-205.adsl.net.t-com.hr) (Ping timeout: 264 seconds)
2023-02-24 09:07:51 +0100razetime(~Thunderbi@117.254.34.231) (Ping timeout: 255 seconds)
2023-02-24 09:08:28 +0100tdammers(~tdammers@77.109.72.152.res.static.edpnet.net)
2023-02-24 09:12:15 +0100chele(~chele@user/chele)
2023-02-24 09:15:05 +0100Vajb(~Vajb@2001:999:230:f561:4ee8:ad7f:13ff:9959) (Read error: Connection reset by peer)
2023-02-24 09:15:16 +0100Vajb(~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
2023-02-24 09:17:28 +0100cfricke(~cfricke@user/cfricke)
2023-02-24 09:23:38 +0100Vajb(~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
2023-02-24 09:23:45 +0100Vajb(~Vajb@2001:999:230:f561:4ee8:ad7f:13ff:9959)
2023-02-24 09:25:07 +0100mima(~mmh@212.114.180.173)
2023-02-24 09:27:21 +0100ft(~ft@p3e9bc443.dip0.t-ipconnect.de) (Quit: leaving)
2023-02-24 09:29:25 +0100kuribas(~user@ptr-17d51epnas6cljeq5e9.18120a2.ip6.access.telenet.be)
2023-02-24 09:30:49 +0100razetime(~Thunderbi@117.254.34.231)
2023-02-24 09:31:57 +0100takuan(~takuan@178.116.218.225)
2023-02-24 09:37:59 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:311d:9400:2604:4e0f)
2023-02-24 09:42:45 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:311d:9400:2604:4e0f) (Ping timeout: 260 seconds)
2023-02-24 09:45:03 +0100dcoutts_(~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
2023-02-24 09:46:20 +0100acidjnk(~acidjnk@p200300d6e715c440d10b57a0a1d8ddd3.dip0.t-ipconnect.de)
2023-02-24 09:49:11 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 252 seconds)
2023-02-24 09:52:15 +0100Cheery_Cheery
2023-02-24 09:56:16 +0100machinedgod(~machinedg@d198-53-218-113.abhsia.telus.net)
2023-02-24 09:56:34 +0100merijn(~merijn@195.114.232.94)
2023-02-24 10:01:44 +0100comerijn(~merijn@185.143.104.11)
2023-02-24 10:01:45 +0100merijn(~merijn@195.114.232.94) (Ping timeout: 255 seconds)
2023-02-24 10:05:48 +0100mauke(~mauke@user/mauke)
2023-02-24 10:10:02 +0100dcoutts_(~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Ping timeout: 246 seconds)
2023-02-24 10:11:44 +0100califax(~califax@user/califx) (Ping timeout: 255 seconds)
2023-02-24 10:15:36 +0100califax(~califax@user/califx)
2023-02-24 10:15:38 +0100jpds1(~jpds@gateway/tor-sasl/jpds)
2023-02-24 10:15:47 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds)
2023-02-24 10:16:07 +0100gehmehgehgmg
2023-02-24 10:17:52 +0100mei(~mei@user/mei) (Quit: mei)
2023-02-24 10:18:58 +0100son0p(~ff@181.136.122.143)
2023-02-24 10:20:15 +0100razetime1(~Thunderbi@117.193.5.234)
2023-02-24 10:21:05 +0100razetime(~Thunderbi@117.254.34.231) (Ping timeout: 252 seconds)
2023-02-24 10:21:05 +0100razetime1razetime
2023-02-24 10:24:00 +0100razetime1(~Thunderbi@117.193.5.37)
2023-02-24 10:25:23 +0100kuribas(~user@ptr-17d51epnas6cljeq5e9.18120a2.ip6.access.telenet.be) (Ping timeout: 264 seconds)
2023-02-24 10:25:55 +0100razetime(~Thunderbi@117.193.5.234) (Ping timeout: 256 seconds)
2023-02-24 10:25:55 +0100razetime1razetime
2023-02-24 10:27:58 +0100mc47(~mc47@xmonad/TheMC47) (Ping timeout: 246 seconds)
2023-02-24 10:29:08 +0100razetime1(~Thunderbi@117.254.34.52)
2023-02-24 10:30:27 +0100razetime(~Thunderbi@117.193.5.37) (Ping timeout: 256 seconds)
2023-02-24 10:30:27 +0100razetime1razetime
2023-02-24 10:30:30 +0100kuribas(~user@ptr-17d51epnas6cljeq5e9.18120a2.ip6.access.telenet.be)
2023-02-24 10:34:01 +0100razetime1(~Thunderbi@117.193.0.221)
2023-02-24 10:34:59 +0100razetime(~Thunderbi@117.254.34.52) (Ping timeout: 256 seconds)
2023-02-24 10:34:59 +0100razetime1razetime
2023-02-24 10:37:35 +0100coot(~coot@213.134.171.3)
2023-02-24 10:38:23 +0100varoo(~varoo@117.203.246.41)
2023-02-24 10:38:28 +0100razetime1(~Thunderbi@117.254.35.225)
2023-02-24 10:39:31 +0100razetime(~Thunderbi@117.193.0.221) (Ping timeout: 256 seconds)
2023-02-24 10:41:29 +0100razetime(~Thunderbi@117.193.2.194)
2023-02-24 10:42:38 +0100razetime1(~Thunderbi@117.254.35.225) (Ping timeout: 246 seconds)
2023-02-24 10:50:05 +0100sympt5(~sympt@user/sympt)
2023-02-24 10:50:15 +0100zeenk(~zeenk@2a02:2f04:a214:1e00::7fe)
2023-02-24 10:51:25 +0100sympt(~sympt@user/sympt) (Ping timeout: 246 seconds)
2023-02-24 10:51:25 +0100sympt5sympt
2023-02-24 10:57:44 +0100mei(~mei@user/mei)
2023-02-24 11:00:15 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2023-02-24 11:03:35 +0100kenran(~user@user/kenran)
2023-02-24 11:05:25 +0100dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net)
2023-02-24 11:06:15 +0100vandita(~vandit@fibhost-67-47-57.fibernet.hu)
2023-02-24 11:06:59 +0100comerijn(~merijn@185.143.104.11) (Ping timeout: 255 seconds)
2023-02-24 11:07:23 +0100merijn(~merijn@195.114.232.94)
2023-02-24 11:07:38 +0100teo(~teo@user/teo)
2023-02-24 11:12:16 +0100L29Ah(~L29Ah@wikipedia/L29Ah) ()
2023-02-24 11:13:52 +0100inversed(~inversed@bcdcac82.skybroadband.com) (Ping timeout: 248 seconds)
2023-02-24 11:18:09 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2023-02-24 11:21:20 +0100ph88(~ph88@91.66.101.83) (Ping timeout: 248 seconds)
2023-02-24 11:22:08 +0100acidjnk(~acidjnk@p200300d6e715c440d10b57a0a1d8ddd3.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
2023-02-24 11:22:23 +0100gmg(~user@user/gehmehgeh) (Ping timeout: 255 seconds)
2023-02-24 11:24:44 +0100gmg(~user@user/gehmehgeh)
2023-02-24 11:24:54 +0100akegalj(~akegalj@93-138-29-205.adsl.net.t-com.hr)
2023-02-24 11:25:19 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 11:30:19 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 268 seconds)
2023-02-24 11:35:46 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2023-02-24 11:46:15 +0100mei(~mei@user/mei) (Ping timeout: 255 seconds)
2023-02-24 11:47:29 +0100MajorBiscuit(~MajorBisc@145.94.156.212)
2023-02-24 11:48:07 +0100mei(~mei@user/mei)
2023-02-24 11:49:59 +0100alecs(~alecs@31.188.156.192)
2023-02-24 11:54:31 +0100 <Inst> does anyone know anything about streamly's benchmarks?
2023-02-24 11:54:36 +0100 <Inst> This has got to be a concurrency scam, no?
2023-02-24 11:54:41 +0100 <Inst> https://streamly.composewell.com/streamly-0.8.2/Introduction.html#modular-word-counting
2023-02-24 11:54:48 +0100 <Inst> it looks like they're outperforming C single-threaded
2023-02-24 11:56:16 +0100ubert1(~Thunderbi@2a02:8109:abc0:6434:98f0:cff3:bf01:6714)
2023-02-24 11:56:32 +0100mei(~mei@user/mei) (Remote host closed the connection)
2023-02-24 11:56:35 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 264 seconds)
2023-02-24 11:57:16 +0100 <kaol> https://www.linkedin.com/jobs/view/3498430755 We're still looking for a Haskell developer. We got one but we had a second vacancy.
2023-02-24 11:57:34 +0100jmdaemon(~jmdaemon@user/jmdaemon) (Ping timeout: 246 seconds)
2023-02-24 11:58:52 +0100mei(~mei@user/mei)
2023-02-24 12:00:03 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2023-02-24 12:02:08 +0100szkl(uid110435@id-110435.uxbridge.irccloud.com)
2023-02-24 12:05:20 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 12:08:04 +0100vandita(~vandit@fibhost-67-47-57.fibernet.hu) (Ping timeout: 246 seconds)
2023-02-24 12:09:39 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 255 seconds)
2023-02-24 12:09:49 +0100vandita(~vandit@178-164-207-222.pool.digikabel.hu)
2023-02-24 12:14:36 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 255 seconds)
2023-02-24 12:15:51 +0100gurkenglas(~gurkengla@dynamic-046-114-178-046.46.114.pool.telefonica.de)
2023-02-24 12:16:17 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2023-02-24 12:18:37 +0100tcard_(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving)
2023-02-24 12:20:37 +0100tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
2023-02-24 12:22:44 +0100akegalj(~akegalj@93-138-29-205.adsl.net.t-com.hr) (Ping timeout: 268 seconds)
2023-02-24 12:23:55 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-02-24 12:25:12 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-02-24 12:29:06 +0100inversed(~inversed@bcdcac82.skybroadband.com)
2023-02-24 12:31:09 +0100 <eldritchcookie[m> i believe it, GHC performs a massive amount of optimizations so if the C is naive or simple haskell would probably outpeform it
2023-02-24 12:31:25 +0100 <eldritchcookie[m> try compiling the c program with O3
2023-02-24 12:31:43 +0100 <dminuoso_> -O3 rarely improves performance, in plenty cases it gets slower even
2023-02-24 12:32:09 +0100 <dminuoso_> For GCC anyway
2023-02-24 12:34:52 +0100acidjnk(~acidjnk@2003:d6:e715:c440:d10b:57a0:a1d8:ddd3)
2023-02-24 12:35:09 +0100 <mauke> C code: https://github.com/composewell/streamly-examples/blob/master/examples/WordCount.c#L82
2023-02-24 12:35:14 +0100 <mauke> doesn't look obviously inefficient
2023-02-24 12:35:31 +0100 <eldritchcookie[m> like it reads every line and then does the computation that is IO, if the haskell reads all the file in memory it probably is the reason
2023-02-24 12:35:49 +0100 <mauke> you could avoid the separate bookkeeping for p/len, but that's it, pretty much
2023-02-24 12:36:13 +0100 <eldritchcookie[m> check for larger files
2023-02-24 12:37:28 +0100 <eldritchcookie[m> and compare memory usage
2023-02-24 12:38:53 +0100 <int-e> it would be interesting to know the underlying buffer sizes.
2023-02-24 12:40:09 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-02-24 12:40:41 +0100 <eldritchcookie[m> i want to upload a small library to hackage, what are the steps and things i need to accomplish that?
2023-02-24 12:40:41 +0100gmg(~user@user/gehmehgeh) (Ping timeout: 255 seconds)
2023-02-24 12:42:25 +0100gmg(~user@user/gehmehgeh)
2023-02-24 12:43:24 +0100gensyst(gensyst@user/gensyst)
2023-02-24 12:45:11 +0100acidjnk(~acidjnk@2003:d6:e715:c440:d10b:57a0:a1d8:ddd3) (Ping timeout: 252 seconds)
2023-02-24 12:45:13 +0100 <gensyst> Hi, GHCJS requires Nix pain. Will the new JS backend in GHC also require Nix pain? If not, why not?
2023-02-24 12:45:13 +0100 <gensyst> https://engineering.iog.io/2023-01-24-javascript-browser-tutorial
2023-02-24 12:45:30 +0100 <dminuoso_> gensyst: it wont because its built into ghc.
2023-02-24 12:45:50 +0100 <dminuoso_> The gory details how the backend is wired in, is all handled by the shake build system
2023-02-24 12:45:55 +0100 <gensyst> dminuoso_, the Nix pain was because of pain having to do with managing multiple ghc versions etc.?
2023-02-24 12:49:12 +0100 <gensyst> Also any idea approx ETA for it will be baked into GHC release (available with ghcup)?
2023-02-24 12:49:26 +0100 <dminuoso_> It already is baked in
2023-02-24 12:49:37 +0100 <gensyst> since which version?
2023-02-24 12:49:38 +0100 <gensyst> nice
2023-02-24 12:49:47 +0100 <dminuoso_> https://www.haskell.org/ghc/blog/20230130-ghc-9.6.1-alpha2-released.html
2023-02-24 12:50:18 +0100 <dminuoso_> But do note, this is a very early preview and not considered stable or production ready yet.
2023-02-24 12:50:24 +0100 <maerwald> ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml
2023-02-24 12:50:29 +0100 <dminuoso_> (not the release, but the js backend utself)
2023-02-24 12:50:49 +0100 <gensyst> sweet
2023-02-24 12:55:37 +0100mechap_(~mechap@user/mechap)
2023-02-24 12:55:40 +0100tdammers(~tdammers@77.109.72.152.res.static.edpnet.net) (Ping timeout: 246 seconds)
2023-02-24 12:57:16 +0100mechap(~mechap@user/mechap) (Ping timeout: 268 seconds)
2023-02-24 12:57:32 +0100mechap_mechap
2023-02-24 12:58:12 +0100 <gensyst> dminuoso_, maerwald are you guys seeing GHC 9.6.1 alpha in "ghcup list"?
2023-02-24 12:58:32 +0100acidjnk(~acidjnk@p200300d6e715c440d10b57a0a1d8ddd3.dip0.t-ipconnect.de)
2023-02-24 12:58:36 +0100 <dminuoso_> 12:50:24 maerwald | ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml
2023-02-24 12:58:43 +0100 <dminuoso_> In case you missed it
2023-02-24 12:58:54 +0100 <gensyst> After doing that, the latest I find is
2023-02-24 12:58:57 +0100 <gensyst> ghc 9.6.0.20230210 prerelease,base-4.18.0.0
2023-02-24 12:59:13 +0100 <gensyst> date sort of matches, so I guess that might be it?
2023-02-24 12:59:33 +0100 <gensyst> although it's 9.6.0 instead of 9.6.1
2023-02-24 13:00:06 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-02-24 13:00:15 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-02-24 13:00:57 +0100CiaoSen(~Jura@2003:c9:5704:6000:2a3a:4dff:fe84:dbd5) (Ping timeout: 252 seconds)
2023-02-24 13:06:22 +0100kenran(~user@user/kenran) (Remote host closed the connection)
2023-02-24 13:08:49 +0100tdammers(~tdammers@77.109.72.77.res.static.edpnet.net)
2023-02-24 13:09:57 +0100 <maerwald> gensyst: yeah, it's pesky
2023-02-24 13:16:00 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2023-02-24 13:17:15 +0100 <gensyst> Why are sometimes older versions shown "recommended" by ghcup?
2023-02-24 13:17:20 +0100 <gensyst> Even if there is a newer stable
2023-02-24 13:17:28 +0100 <maerwald> gensyst: because new is broken
2023-02-24 13:17:35 +0100 <Athas> Perhaps the newest versions of GHC are sometimes incompatible with important libraries.
2023-02-24 13:17:36 +0100 <maerwald> common rule of thumb with ghc
2023-02-24 13:18:06 +0100 <maerwald> jokes aside... yes, new is often broken, because it's, well, new
2023-02-24 13:18:17 +0100 <gensyst> ok thanks
2023-02-24 13:18:24 +0100 <maerwald> I'm being funny today
2023-02-24 13:18:29 +0100 <maerwald> you can leave a tip
2023-02-24 13:19:26 +0100 <eldritchcookie[m> say is there a easy way to autogenerate haskell modules if i want just to import module A and for each value/function in A make a function with the same name that just calls the one on A with al arguments and then applies a specific function
2023-02-24 13:19:35 +0100 <eldritchcookie[m> ?
2023-02-24 13:19:36 +0100 <Athas> gensyst: you can just pick the newest version. Worst case it'll be incompatible with your favourite JSON library that abuses Template Haskell a bit too much.
2023-02-24 13:21:07 +0100 <gensyst> maerwald, paste lightning invoice, will send a few sats
2023-02-24 13:21:13 +0100 <eldritchcookie[m> basically given... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/e6867269f0bd7f9327d184caf5c0cfda1bcb…>)
2023-02-24 13:21:58 +0100 <Athas> eldritchcookie[m: the tricky part is determining how many arguments are needed. You'll need to hook into information provided by GHC itself.
2023-02-24 13:22:28 +0100 <Athas> I know that GHC produces .hie files with this information, but I have no knowledge about how to use them.
2023-02-24 13:22:53 +0100 <mauke> optimistically generate the first function and compile the module. if ghc complains, add more arguments. repeat until done
2023-02-24 13:23:27 +0100Batzy(~quassel@user/batzy) (Quit: No Ping reply in 180 seconds.)
2023-02-24 13:24:54 +0100Batzy(~quassel@user/batzy)
2023-02-24 13:28:17 +0100 <Athas> I think that is how my students write code.
2023-02-24 13:28:44 +0100merijn(~merijn@195.114.232.94) (Ping timeout: 255 seconds)
2023-02-24 13:28:55 +0100 <mauke> it's called type-directed code generation or something
2023-02-24 13:29:20 +0100tdammers(~tdammers@77.109.72.77.res.static.edpnet.net) (Ping timeout: 268 seconds)
2023-02-24 13:29:46 +0100 <eldritchcookie[m> yeah that could work, does anyone know how to query ghc for 1 all value level entities exported 2 their types?
2023-02-24 13:31:29 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2023-02-24 13:31:53 +0100 <Athas> mauke: error-directed code generation.
2023-02-24 13:32:28 +0100 <gensyst> maerwald, hmm even if I set "ghcup set ghc 9.6.0.20230210", there is no ghc-js on my path
2023-02-24 13:32:39 +0100 <maerwald> gensyst: ahaha
2023-02-24 13:32:52 +0100 <gensyst> oh hmmm
2023-02-24 13:32:55 +0100 <gensyst> https://engineering.iog.io/2023-01-24-javascript-browser-tutorial
2023-02-24 13:32:59 +0100 <maerwald> ghcjs is a cross-compiler
2023-02-24 13:33:00 +0100 <gensyst> that's an alias they set...
2023-02-24 13:33:01 +0100 <maerwald> good luck
2023-02-24 13:33:07 +0100ph88(~ph88@ip5b426553.dynamic.kabel-deutschland.de)
2023-02-24 13:34:22 +0100 <Athas> GHC 9.6 is out?
2023-02-24 13:35:25 +0100 <maerwald> Athas: is it?
2023-02-24 13:36:50 +0100 <Athas> Or does ghcup just supply prereleases?
2023-02-24 13:37:09 +0100 <maerwald> Athas: https://www.haskell.org/ghcup/guide/#pre-release-channels
2023-02-24 13:37:12 +0100 <int-e> I can't reproduce the streamly numbers. The closest I have is their WordCount.hs code being 6x slower than the C code. That's with ghc-8.10.7. Did anybody have more luck?
2023-02-24 13:37:50 +0100 <int-e> (I did use the fusion plugin; it had a small but measurable effect on performance.)
2023-02-24 13:38:47 +0100 <int-e> My files were smaller, only 50MB.
2023-02-24 13:40:03 +0100 <gensyst> thanks mates!
2023-02-24 13:40:05 +0100gensyst(gensyst@user/gensyst) (Quit: Leaving)
2023-02-24 13:41:41 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:311d:9400:2604:4e0f)
2023-02-24 13:43:01 +0100 <int-e> Inst: note that the numbers are for a somewhat manually fused version of the word-counting code, using a custom type for the state: https://github.com/composewell/streamly-examples/blob/master/examples/WordCount.hs#L30
2023-02-24 13:43:40 +0100mei(~mei@user/mei) (Remote host closed the connection)
2023-02-24 13:44:16 +0100mei(~mei@user/mei)
2023-02-24 13:44:58 +0100 <int-e> But yeah, I failed to reproduce even taking that into account. I wish they'd include versions. (ghc, streamly{,-core}, and the fusion plugin; also C compiler version and flags) and the platform.
2023-02-24 13:45:01 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-02-24 13:46:02 +0100merijn(~merijn@sp-eduroam-221-127.wireless.uva.nl)
2023-02-24 13:46:35 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:311d:9400:2604:4e0f) (Ping timeout: 260 seconds)
2023-02-24 13:47:27 +0100 <int-e> Oh, speaking of versions, I used the git heads of streamly and the examples. Maybe they regressed.
2023-02-24 13:49:03 +0100tlaxkit(~hexchat@170.253.34.149)
2023-02-24 13:51:50 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 13:56:30 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 260 seconds)
2023-02-24 13:58:14 +0100jero98772(~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff)
2023-02-24 14:01:54 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 14:06:01 +0100ph88(~ph88@ip5b426553.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
2023-02-24 14:06:17 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 246 seconds)
2023-02-24 14:08:15 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 14:11:31 +0100mei(~mei@user/mei) (Remote host closed the connection)
2023-02-24 14:12:30 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 255 seconds)
2023-02-24 14:22:45 +0100merijn(~merijn@sp-eduroam-221-127.wireless.uva.nl) (Ping timeout: 260 seconds)
2023-02-24 14:28:35 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 14:30:54 +0100mei(~mei@user/mei)
2023-02-24 14:31:06 +0100merijn(~merijn@195.114.232.94)
2023-02-24 14:31:50 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
2023-02-24 14:33:01 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 252 seconds)
2023-02-24 14:36:46 +0100mncheckm(~mncheck@193.224.205.254) (Remote host closed the connection)
2023-02-24 14:39:37 +0100Sciencentistguy9(~sciencent@hacksoc/ordinary-member)
2023-02-24 14:42:05 +0100Sciencentistguy(~sciencent@hacksoc/ordinary-member) (Ping timeout: 255 seconds)
2023-02-24 14:42:06 +0100Sciencentistguy9Sciencentistguy
2023-02-24 14:59:45 +0100MajorBiscuit(~MajorBisc@145.94.156.212) (Ping timeout: 255 seconds)
2023-02-24 15:03:48 +0100azure_vermilion(~azure_ver@82-132-235-20.dab.02.net) (Ping timeout: 255 seconds)
2023-02-24 15:04:47 +0100azure_vermilion(~azure_ver@82-132-235-76.dab.02.net)
2023-02-24 15:05:25 +0100Midjak(~Midjak@82.66.147.146)
2023-02-24 15:07:48 +0100gurkenglas(~gurkengla@dynamic-046-114-178-046.46.114.pool.telefonica.de) (Ping timeout: 252 seconds)
2023-02-24 15:09:50 +0100gurkenglas(~gurkengla@dynamic-046-114-178-046.46.114.pool.telefonica.de)
2023-02-24 15:10:44 +0100vandita(~vandit@178-164-207-222.pool.digikabel.hu) (Ping timeout: 252 seconds)
2023-02-24 15:12:27 +0100vandita(~vandit@84-236-21-41.pool.digikabel.hu)
2023-02-24 15:12:38 +0100razetime(~Thunderbi@117.193.2.194) (Remote host closed the connection)
2023-02-24 15:14:22 +0100thegeekinside(~thegeekin@189.180.66.126)
2023-02-24 15:23:39 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-02-24 15:25:23 +0100jakalx(~jakalx@base.jakalx.net) ()
2023-02-24 15:28:23 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
2023-02-24 15:28:37 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 15:30:31 +0100shriekingnoise(~shrieking@186.137.175.87)
2023-02-24 15:33:32 +0100vpan(~0@212.117.1.172) (Quit: Leaving.)
2023-02-24 15:34:23 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 264 seconds)
2023-02-24 15:35:41 +0100Kuttenbrunzer(~Kuttenbru@2a02:8108:8b80:1d48::ca75)
2023-02-24 15:42:16 +0100justsomeguy(~justsomeg@user/justsomeguy) (Ping timeout: 246 seconds)
2023-02-24 15:42:37 +0100mechap(~mechap@user/mechap) (Ping timeout: 246 seconds)
2023-02-24 15:45:59 +0100mechap(~mechap@user/mechap)
2023-02-24 15:47:14 +0100npm_i_kurbus(~npm_i_kur@user/kurbus)
2023-02-24 15:53:47 +0100jakalx(~jakalx@base.jakalx.net)
2023-02-24 15:54:16 +0100 <jean-paul[m]> On Linux, openFile: resource busy (file is locked) - my application only uses readFile and writeFile. Who is locking my files?
2023-02-24 15:55:09 +0100 <[exa]> jean-paul[m]: `strace` might be necessary to find what's actually happening
2023-02-24 15:55:52 +0100 <geekosaur> you, probably: (1) `readFile` and `writeFile` use `openFile` underneath; (2) the Report IIRC specifies some weird locking behavior that can require a gc to unlock then
2023-02-24 15:55:54 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.8)
2023-02-24 15:55:54 +0100 <geekosaur> *them
2023-02-24 15:56:55 +0100 <geekosaur> so if you `writeFile` and then `readFile` the same file shortly after you can get that error
2023-02-24 15:57:42 +0100 <jean-paul[m]> :/
2023-02-24 15:59:01 +0100 <geekosaur> @index performGC
2023-02-24 15:59:01 +0100 <lambdabot> System.Mem
2023-02-24 15:59:26 +0100 <geekosaur> see if that helps
2023-02-24 16:01:58 +0100 <jean-paul[m]> performGC doesn't seem to make a difference
2023-02-24 16:02:52 +0100 <geekosaur> 😞
2023-02-24 16:03:49 +0100 <merijn> Oh
2023-02-24 16:03:53 +0100 <merijn> I think I know :p
2023-02-24 16:04:07 +0100 <merijn> You're using the Prelude String based readFile?
2023-02-24 16:04:46 +0100 <geekosaur> oh, lazy I/O? sigh
2023-02-24 16:04:46 +0100jean-paul[m]holds his breath
2023-02-24 16:04:57 +0100 <jean-paul[m]> ya
2023-02-24 16:05:01 +0100 <merijn> That one uses getContents, so lazy IO yeah
2023-02-24 16:05:12 +0100sma(~sma@2001:ce0:2207:801:877e:de38:1dc1:930f)
2023-02-24 16:05:13 +0100 <merijn> So the file doesn't get closed until you force the entire contents
2023-02-24 16:05:21 +0100 <jean-paul[m]> So the writeFile is only half-done by the time the readFile starts
2023-02-24 16:05:22 +0100nattiestnate(~nate@202.138.250.17)
2023-02-24 16:05:32 +0100 <merijn> And anyway, String is a terrible datatype for reading text files
2023-02-24 16:05:54 +0100 <merijn> Can I interest you in some nice strict Text based IO, courtesy of Data.Text.IO.readFile? ;)
2023-02-24 16:06:14 +0100 <merijn> (well, assuming your files are small enough to read into memory entirely, of course)
2023-02-24 16:06:49 +0100Kuttenbrunzer(~Kuttenbru@2a02:8108:8b80:1d48::ca75) (Quit: Where is it)
2023-02-24 16:06:56 +0100 <jean-paul[m]> Yea sure I can switch to that. Good to learn about now. This app is a mere toy right now. The string being written and read is the literal constant "Hello, world!".
2023-02-24 16:07:21 +0100 <merijn> jean-paul[m]: In general for non-trivial amounts of textual data you want Text anyway
2023-02-24 16:07:22 +0100cstml1(~cstml@cpc151611-shef16-2-0-cust313.17-1.cable.virginm.net)
2023-02-24 16:07:48 +0100 <merijn> String = linked list of characters, Text = dense blobs of unicode
2023-02-24 16:07:52 +0100cstml1(~cstml@cpc151611-shef16-2-0-cust313.17-1.cable.virginm.net) (Quit: WeeChat 3.7.1)
2023-02-24 16:07:56 +0100teo(~teo@user/teo) (Remote host closed the connection)
2023-02-24 16:08:06 +0100 <merijn> Which in practical terms means String may take as much as 32x the space for a given piece of text
2023-02-24 16:08:07 +0100 <jean-paul[m]> yep, that much I know at least :) I didn't think very hard when typing these readFile and writeFile calls since the I/O wasn't actually the point, the point was demonstrating I had achieved write access to the filesystem on android :)
2023-02-24 16:08:45 +0100cstml(~cstml@user/cstml)
2023-02-24 16:08:50 +0100 <merijn> jean-paul[m]: You could also use deepseq to force the result of readFile and see if that fixes things (it should if lazy IO is the problem)
2023-02-24 16:09:06 +0100 <jean-paul[m]> That is a pretty impressive expansion factor, didn't realize that
2023-02-24 16:09:11 +0100 <jean-paul[m]> Indeed Text readFile/writeFile seems to have completely resolved it
2023-02-24 16:09:25 +0100mechap(~mechap@user/mechap) (Ping timeout: 252 seconds)
2023-02-24 16:09:53 +0100 <jean-paul[m]> Though! The code was Prelude readFile/writeFile for a few days before this problem came up. It only appeared when I did some minor refactoring. So I guess my 5 second test of Text readFile/writeFile isn't necessarily entirely conclusive.
2023-02-24 16:10:49 +0100 <jean-paul[m]> The app calls each of readFile and writeFile exactly one time, and it calls writeFile first. Does forcing Prelude readFile still seem like it would fix anything?
2023-02-24 16:11:24 +0100mechap(~mechap@user/mechap)
2023-02-24 16:11:33 +0100 <merijn> jean-paul[m]: Char is a machine word, and the (:) constructor has 2 boxed fields (so that's 2 machine words as pointers), then the character itself is also boxed, so that's another machine word pointer, and individual characters are also machine words, so that's 4x8 bytes (assuming 64bit, obv) vs Text which is (depending on version) utf-16 or utf-8 encoded dense blobs. So that's 1-2 per character (well,
2023-02-24 16:11:35 +0100 <geekosaur> that was what I was expecting, and in particular expecting to be resolved by `performGC` since `writeFile` should force its argument
2023-02-24 16:11:39 +0100 <merijn> for most, obviously CJK might be a bit more) and if lazy Text maybe a pointer every few KB
2023-02-24 16:12:28 +0100 <geekosaur> \that said, lazy I/O is kinda infamous for this kind of problem
2023-02-24 16:12:57 +0100 <geekosaur> it's always looking for a way to bite your *ss
2023-02-24 16:13:47 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-02-24 16:14:21 +0100 <jean-paul[m]> If I'm using it right, deepseq didn't fix it
2023-02-24 16:14:46 +0100 <jean-paul[m]> https://gist.github.com/exarkun/76ae15b90c3aec2c3a61e1412c1eaf7e
2023-02-24 16:17:24 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-02-24 16:19:03 +0100 <merijn> jean-paul[m]: Not really a solution to, but practically speaking I would probably avoid writeFile/readFile in general and instead use withFile anyway
2023-02-24 16:19:27 +0100 <merijn> the implicit GC dependence of readFile/writeFile is kinda yikes
2023-02-24 16:22:04 +0100 <jean-paul[m]> Data.Text.IO.readFile - > Beware that this function (similarly to readFile) is locale-dependent. :/
2023-02-24 16:22:20 +0100 <jean-paul[m]> I keep forgetting that
2023-02-24 16:22:21 +0100 <merijn> jean-paul[m]: I'm not sure that should be a beware
2023-02-24 16:22:53 +0100zeenk(~zeenk@2a02:2f04:a214:1e00::7fe) (Quit: Konversation terminated!)
2023-02-24 16:22:57 +0100 <merijn> jean-paul[m]: It just means "this will (attempt to) decode files using the decode specified by your locale"
2023-02-24 16:23:12 +0100Ashkan(~Ashkan@a119011.upc-a.chello.nl)
2023-02-24 16:23:16 +0100 <jean-paul[m]> in my religion locale is a nonsense signal for the encoding of a file's contents
2023-02-24 16:23:17 +0100 <merijn> i.e. utf-8 if your locale is set to utf-8 (as it probably should be)
2023-02-24 16:24:29 +0100 <merijn> jean-paul[m]: If you want to explicitly control which encoding to use because you're in a setting with files of different encodings then there is also a readFile/writeFile in bytestring which properly gives you bytes that you can then explicitly decode into Text using the encoding of your choice
2023-02-24 16:24:35 +0100 <jean-paul[m]> The only reason your locale should be set to utf-8 is that whenever you have some text encoded as bytes and you don't know any better, you should use utf-8 to decode it. So you should just do that and ignore the locale :)
2023-02-24 16:25:12 +0100 <jean-paul[m]> but yea, I can do ByteString IO if I need to
2023-02-24 16:26:16 +0100 <jean-paul[m]> unclear whether in practice I will be doing anything other than reading/write json or something similar in this app, so ... 🤷
2023-02-24 16:26:18 +0100 <Ashkan> Noob here, not sure if this is the right channel to post my question. Here it is:
2023-02-24 16:26:18 +0100 <Ashkan> I’m trying to connect to an http server and consume an streamed response. Problem is `httpSource` expects `MonadResource` in the output conduit and I’m in `IO` so I figured I would get out a `ResourceT IO` :
2023-02-24 16:26:19 +0100 <Ashkan> ```
2023-02-24 16:26:19 +0100 <Ashkan> main :: IO ()
2023-02-24 16:26:20 +0100 <Ashkan> main = do
2023-02-24 16:26:20 +0100 <Ashkan>   let c :: ConduitT () (Either String ServerEvent) (ResourceT IO) ()
2023-02-24 16:26:21 +0100 <Ashkan>       c = httpSource "http://localhost:3000/sse" $ toSrc . responseBody
2023-02-24 16:26:21 +0100 <Ashkan>   return ()
2023-02-24 16:26:22 +0100 <Ashkan>   where
2023-02-24 16:26:22 +0100 <Ashkan> ```
2023-02-24 16:26:23 +0100 <Ashkan> Now I’m stuck with a c that is a conduit of `ResourceT IO` and about the only thing I can on it is to `runResourceT` which I don’t want. What I want is to get the same type but with `IO` :
2023-02-24 16:26:23 +0100 <Ashkan> ```
2023-02-24 16:26:24 +0100 <Ashkan> ConduitT () (Either String ServerEvent) IO ()
2023-02-24 16:26:24 +0100 <Ashkan> ```
2023-02-24 16:26:25 +0100 <Ashkan> I thought this must be easy but apparently not ! best I could find was the https://hackage.haskell.org/package/conduit-1.3.4.3/docs/Data-Conduit-Lift.html which as far as I can see is not relevant to my case (I could be wrong though).
2023-02-24 16:26:25 +0100 <Ashkan> Thanks
2023-02-24 16:26:37 +0100 <merijn> Ashkan: Please don't paste more than 2 lines of code into the channel
2023-02-24 16:27:12 +0100 <Ashkan> Wow that looks very ugly:D  how do I post code here ?
2023-02-24 16:27:13 +0100 <merijn> Ashkan: You cannot do what you are asking
2023-02-24 16:27:35 +0100 <merijn> It would pretty much violate the entire point of ResourceT :)
2023-02-24 16:27:45 +0100 <merijn> Ashkan: You can use https://paste.tomsmeding.com/
2023-02-24 16:28:59 +0100 <merijn> Ashkan: The thing to do would be built the entire Conduit as "ConduitT a b (ResourceT IO) x", then use runConduit to get "ResourceT IO x" and then run that via runResourceT
2023-02-24 16:29:23 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-02-24 16:30:18 +0100 <Ashkan> I can't edit my ugly message to fix it:D
2023-02-24 16:30:58 +0100 <Ashkan> merijn Thanks for the link and the explanation. Yeah I was figuring out myself that perhaps this is not the right thing to do but I don't understand why
2023-02-24 16:32:28 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-02-24 16:32:53 +0100phma(~phma@host-67-44-208-35.hnremote.net) (Read error: Connection reset by peer)
2023-02-24 16:33:00 +0100 <merijn> Ashkan: ResourceT "scopes" the lifetime of a resource (i.e. guaranteed to be freed at the end even in case of an exception)
2023-02-24 16:33:04 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2023-02-24 16:34:03 +0100 <Ashkan> merijn the resource here being the http connection and all the book keeping involved I assume, right ?
2023-02-24 16:34:06 +0100 <merijn> Converting "ConduitT a b (ResourceT IO) x" into "ConduitT a b IO x" effectively "gets rid" of this scoping, so the lifetime is limited to one part of a ConduitT segment. But since ConduitT uses a kinda coroutine kinda that leaks the resource
2023-02-24 16:34:23 +0100 <merijn> Ashkan: Yeah
2023-02-24 16:34:33 +0100phma(phma@2001:5b0:2143:86d8:f396:a44:9b48:fdf2)
2023-02-24 16:36:53 +0100 <Ashkan> merijn Okay I'm seeing the light here, I guess. So this is one of those cases that once you got yourself into a certain monad , you are stuck with it (for good reason) and I have a resource open for while the conduit is still running so no leaving `ResourceT IO` (y)  makes sense
2023-02-24 16:37:09 +0100 <merijn> yeah
2023-02-24 16:39:26 +0100polyphem_(~rod@2a02:810d:840:8754:d765:82aa:7bfb:6c2)
2023-02-24 16:39:29 +0100 <Ashkan> Okay. So by the same logic, *everything* downstream is also bound to that resource. I mean from a higher level, essentially I have my whole application inside `ResourceT IO` *because* my whole application is nothing but downstream transformations to the conduit I get by opening a resource
2023-02-24 16:39:38 +0100 <Ashkan> Beautiful. I'm all tears:D
2023-02-24 16:40:42 +0100 <merijn> Presumably the goal is to "have 1 request, process it in streaming fashion, then cleanup when done", which logically should fall within the scope of a single ResourceT, yes
2023-02-24 16:40:56 +0100 <merijn> Whether that is "the whole application" depends on the code ;)
2023-02-24 16:41:06 +0100 <merijn> But you should probably have 1 per http request, yes
2023-02-24 16:41:15 +0100CiaoSen(~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2023-02-24 16:42:11 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net)
2023-02-24 16:42:30 +0100Ashkan(~Ashkan@a119011.upc-a.chello.nl) (Quit: Client closed)
2023-02-24 16:44:44 +0100Ashkan(~Ashkan@a119011.upc-a.chello.nl)
2023-02-24 16:45:52 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-02-24 16:47:11 +0100dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 255 seconds)
2023-02-24 16:47:51 +0100 <Ashkan> Well yeah, not the whole application but we have an understanding here. Thank you very much for your help.
2023-02-24 16:47:52 +0100 <Ashkan> On a different note, is this the right place to ask this kind of questions ? I mean general haskell questions. Couldn't find a channel specifically for conduit.
2023-02-24 16:47:52 +0100 <Ashkan> Also, is there like a better chat client I can use when I come here ? I have a feeling I'm gonna spend a lot of time here:)
2023-02-24 16:47:53 +0100 <Ashkan> Again, thank you for your advice
2023-02-24 16:48:20 +0100 <geekosaur> conduit questions are fine here
2023-02-24 16:48:55 +0100 <merijn> In general anything haskell related is fine here
2023-02-24 16:49:42 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2023-02-24 16:50:03 +0100 <Ashkan> Alright then :) just making sure I'm in the right place
2023-02-24 16:51:18 +0100gnalzo(~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
2023-02-24 16:51:35 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2023-02-24 16:52:04 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-02-24 16:55:31 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Client Quit)
2023-02-24 16:56:56 +0100Sgeo(~Sgeo@user/sgeo)
2023-02-24 16:57:01 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-02-24 16:59:09 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2023-02-24 16:59:17 +0100ddellacosta(~ddellacos@146.70.166.100) (Quit: WeeChat 3.8)
2023-02-24 17:00:07 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 17:02:07 +0100ddellacosta(~ddellacos@146.70.166.100)
2023-02-24 17:04:51 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 255 seconds)
2023-02-24 17:04:57 +0100coot(~coot@213.134.171.3) (Quit: coot)
2023-02-24 17:05:18 +0100varoo(~varoo@117.203.246.41) (Ping timeout: 255 seconds)
2023-02-24 17:08:38 +0100varoo(~varoo@117.203.246.41)
2023-02-24 17:10:17 +0100varoo(~varoo@117.203.246.41) (Remote host closed the connection)
2023-02-24 17:12:25 +0100sma(~sma@2001:ce0:2207:801:877e:de38:1dc1:930f) (Quit: Konversation terminated!)
2023-02-24 17:14:29 +0100K4su(~quassel@v2202212189510211193.supersrv.de)
2023-02-24 17:17:14 +0100ft(~ft@p3e9bc443.dip0.t-ipconnect.de)
2023-02-24 17:19:15 +0100merijn(~merijn@195.114.232.94) (Ping timeout: 255 seconds)
2023-02-24 17:20:08 +0100gmg(~user@user/gehmehgeh) (Ping timeout: 255 seconds)
2023-02-24 17:23:00 +0100gmg(~user@user/gehmehgeh)
2023-02-24 17:25:41 +0100Pickchea(~private@user/pickchea)
2023-02-24 17:29:37 +0100Ashkan(~Ashkan@a119011.upc-a.chello.nl) (Quit: Client closed)
2023-02-24 17:30:35 +0100vandita(~vandit@84-236-21-41.pool.digikabel.hu) (Ping timeout: 260 seconds)
2023-02-24 17:32:22 +0100vandita(~vandit@92-249-193-140.pool.digikabel.hu)
2023-02-24 17:35:41 +0100zer0bitz_(~zer0bitz@2001:2003:f443:d600:d5ec:7b37:9a2a:efdd) ()
2023-02-24 17:36:59 +0100Lycurgus(~juan@user/Lycurgus)
2023-02-24 17:38:35 +0100CiaoSen(~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2023-02-24 17:40:10 +0100 <gqplox[m]> hello
2023-02-24 17:40:58 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 17:45:23 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 246 seconds)
2023-02-24 17:45:37 +0100 <gurkenglas> How powerful are free theorems? One can use them to constrain "((String -> String) -> Int) -> Int" to its subtype "((forall a. a -> a) -> Int) -> Int" that requires that the ((String -> String) -> Int) only be queried with parametrically polymorphic inputs, for example. What I would like to do is constrain a type "X a" such that it is fixed by all (forall b. X b -> X b). Can I do that, perhaps only if
2023-02-24 17:45:43 +0100 <gurkenglas> X has a particular shape?
2023-02-24 17:46:18 +0100king_gs(~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7)
2023-02-24 17:47:05 +0100 <gurkenglas> (constrain the type "X a" to those inhabitants which are fixed by all (forall b. X b -> X b), that is)
2023-02-24 17:48:30 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 255 seconds)
2023-02-24 17:49:14 +0100zer0bitz(~zer0bitz@2001:2003:f443:d600:d5ec:7b37:9a2a:efdd)
2023-02-24 17:49:56 +0100ubert1(~Thunderbi@2a02:8109:abc0:6434:98f0:cff3:bf01:6714) (Quit: ubert1)
2023-02-24 17:52:34 +0100 <gurkenglas> One cool way to state the subtype "XX a" of "X a" I'm looking for: it is that subtype for which "(forall b. X b -> X b) -> XX a -> XX a" has precisely one inhabitant.
2023-02-24 17:52:58 +0100shapr(~user@144.163.19.233)
2023-02-24 17:54:16 +0100slack1256(~slack1256@186.11.53.84)
2023-02-24 17:54:33 +0100 <gqplox[m]> i am struggling to write a recursive function
2023-02-24 17:54:44 +0100Ashkan(~Ashkan@a119011.upc-a.chello.nl)
2023-02-24 17:54:54 +0100 <gurkenglas> State its purpose.
2023-02-24 17:56:54 +0100 <Ashkan> Which one is closer to idiomatic haskell https://paste.tomsmeding.com/ZUasbAAs#file-1
2023-02-24 17:56:58 +0100analoq(~yashi@user/dies) (Ping timeout: 268 seconds)
2023-02-24 17:57:28 +0100 <Ashkan> Bummer, doesn't show a preview:D
2023-02-24 17:58:13 +0100alphabeta(~kilolympu@213.144.144.24)
2023-02-24 17:58:22 +0100mbuf(~Shakthi@49.204.138.125) (Quit: Leaving)
2023-02-24 17:58:25 +0100 <gqplox[m]> i want to zip a [[a]] with an index
2023-02-24 17:58:33 +0100analoq(~yashi@user/dies)
2023-02-24 17:58:33 +0100 <gqplox[m]> and i don't want to use concat and that kind of stuff
2023-02-24 17:58:49 +0100 <gqplox[m]> http://sprunge.us/8Ozeom
2023-02-24 17:58:49 +0100kilolympus(~kilolympu@213.144.144.24) (Ping timeout: 268 seconds)
2023-02-24 17:59:03 +0100 <gqplox[m]> that is an outline of the wrong code
2023-02-24 17:59:31 +0100 <gqplox[m]> basically how do I know what n was on the last time g was called, i'm not sure how to do it
2023-02-24 17:59:52 +0100 <gqplox[m]> i could have g return a tuple of the array so far and n so far but i think there is a better way
2023-02-24 18:00:25 +0100dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net)
2023-02-24 18:01:22 +0100 <gurkenglas> gqplox[m]: why do you not want to use concat and that kind of stuff?
2023-02-24 18:01:58 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 18:02:18 +0100 <mauke> Ashkan: I don't know, but I would strongly prefer option #2
2023-02-24 18:02:54 +0100 <gqplox[m]> well the way i wrote it before i had already defined some chunk function and the used concat and zip, and put it back into the chunks
2023-02-24 18:03:02 +0100 <gqplox[m]> but i was thinking surely i can do it this way too
2023-02-24 18:03:05 +0100analoq(~yashi@user/dies) (Ping timeout: 252 seconds)
2023-02-24 18:03:33 +0100 <gqplox[m]> but idk how, so im just curious how to
2023-02-24 18:03:45 +0100 <Ashkan> gurkenglas I have to parse the elements of the steam at two points, first from a `ByteString` to a `ServerEvent` which can fail so the parser returns an `Either` but I don't want to pass the `Left` downstream. Same logic happens again when converting a `ServerEvent` to `AppEvent` since not all server events are understood by the app
2023-02-24 18:04:28 +0100alphabeta(~kilolympu@213.144.144.24) (Quit: See you later! :))
2023-02-24 18:04:52 +0100kilolympus(~kilolympu@213.144.144.24)
2023-02-24 18:05:38 +0100 <Ashkan> gurkenglas You were talking to gqplox[m], not me:D  I'm not used to IRC, sorry
2023-02-24 18:05:58 +0100Ashkan(~Ashkan@a119011.upc-a.chello.nl) (Quit: Client closed)
2023-02-24 18:06:07 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 248 seconds)
2023-02-24 18:06:12 +0100Ashkan(~Ashkan@a119011.upc-a.chello.nl)
2023-02-24 18:06:13 +0100coot(~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
2023-02-24 18:06:26 +0100 <mauke> gqplox[m]: you could hide the tuple by using State
2023-02-24 18:06:50 +0100 <Ashkan> mauke yeah its easier to understand
2023-02-24 18:07:35 +0100 <Ashkan> But the point-free style is so cool. Half the appeal of Haskell to a noob like myself:D
2023-02-24 18:08:03 +0100 <mauke> some things it makes easier to read, others it turns into an unreadable mess
2023-02-24 18:08:16 +0100 <mauke> choose wisely :-)
2023-02-24 18:08:25 +0100 <gqplox[m]> yes, i was thinking of that too mauke, but i was also wondering if there is a "trick" to do this kind of thing when using recursion
2023-02-24 18:08:58 +0100 <Ashkan> mauke actually this also works `httpSource "http://localhost:3000/sse" $ (.| concatMapC toServerEvent .| concatMapC toAppEvent) . responseBody
2023-02-24 18:08:58 +0100 <Ashkan> ` (notice on pair of parans are gone)
2023-02-24 18:09:00 +0100analoq(~yashi@user/dies)
2023-02-24 18:09:52 +0100 <ncf> gurkenglas: do you have an example of a type X where XX is interesting?
2023-02-24 18:10:00 +0100 <Ashkan> https://paste.tomsmeding.com/MDy6femX
2023-02-24 18:10:56 +0100 <ncf> (also, ((forall a. a → a) → Int) → Int is not a subtype of ((String → String) → Int) → Int. it's the other way around)
2023-02-24 18:12:52 +0100 <monochrom> Power of free theorems: (forall a. a->a) simplifies to (). (() -> Int) -> Int) simplifies to Int->Int.
2023-02-24 18:13:03 +0100 <ddellacosta> is there any way to newtype-wrap a string type such that I can enforce uniqueness constraints on it? I suppose that would require dependent types if I wanted that at runtime, or I'd need to use type-level strings or otherwise ensure my strings are defined at compile-time (so wouldn't need a newtype anyways)?
2023-02-24 18:13:17 +0100 <mauke> > let getn = do n <- get; put $! n + 1; pure n in evalState ((mapM . mapM) (\x -> (x,) <$> getn) ["abc", "two"]) 0
2023-02-24 18:13:19 +0100 <lambdabot> [[('a',0),('b',1),('c',2)],[('t',3),('w',4),('o',5)]]
2023-02-24 18:13:31 +0100 <mauke> I'm sure this could be lensed up somehow
2023-02-24 18:13:50 +0100 <int-e> :t let f :: (((forall a. a -> a) -> Int) -> Int) -> (((String -> String) -> Int) -> Int); f g = g in f
2023-02-24 18:13:51 +0100 <lambdabot> (((forall a. a -> a) -> Int) -> Int) -> ((String -> String) -> Int) -> Int
2023-02-24 18:14:09 +0100 <int-e> ncf: are you sure? the forall is in a contravariant position.
2023-02-24 18:14:11 +0100Ashkan(~Ashkan@a119011.upc-a.chello.nl) (Quit: Client closed)
2023-02-24 18:14:13 +0100 <ncf> oh, i got confused by what subtype means
2023-02-24 18:14:19 +0100analoq(~yashi@user/dies) (Ping timeout: 248 seconds)
2023-02-24 18:14:25 +0100 <ncf> the forall one is more general, so it is a subtype; my bad
2023-02-24 18:15:43 +0100npm_i_kurbus(~npm_i_kur@user/kurbus) (Quit: Client closed)
2023-02-24 18:16:52 +0100 <int-e> Wait, I'm wrong too, it's covariant.
2023-02-24 18:17:04 +0100 <ncf> it's contravariant twice, hence covariant
2023-02-24 18:17:19 +0100Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net) (Ping timeout: 248 seconds)
2023-02-24 18:17:32 +0100 <ncf> but forall *itself* is a contravariant thing, so in the end the subtyping relation is flipped
2023-02-24 18:17:48 +0100 <int-e> "more general" translates to "more contrained", right.
2023-02-24 18:18:08 +0100 <monochrom> A broader use of the power of free theorems: Rank-n types (e.g., System F) let you encode ADTs by e.g. [Int] encoded as (forall r. (Int -> r -> r) -> r -> r). Free theorems prove that the latter has no junk (no larger than the former). Generally you can do this to all ADTs.
2023-02-24 18:18:15 +0100phma(phma@2001:5b0:2143:86d8:f396:a44:9b48:fdf2) (Remote host closed the connection)
2023-02-24 18:18:43 +0100phma(~phma@2001:5b0:2143:86d8:f396:a44:9b48:fdf2)
2023-02-24 18:19:21 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-02-24 18:19:24 +0100 <ncf> if it were exists instead of forall, then the exists one would be a supertype, i.e. less constrained, but i think i would still call it "more general"?
2023-02-24 18:19:37 +0100 <ncf> maybe generality applies to substitutions but not really to types
2023-02-24 18:19:58 +0100 <gurkenglas> > ["as","dsa"] ^@.. itraversed.itraversed -- gqplox[m] :)
2023-02-24 18:20:00 +0100 <lambdabot> [(0,'a'),(1,'s'),(0,'d'),(1,'s'),(2,'a')]
2023-02-24 18:20:04 +0100 <gurkenglas> whoops
2023-02-24 18:20:05 +0100 <ncf> (a → a subsumes String → String, the subtyping direction depends on how you quantify over a)
2023-02-24 18:20:35 +0100 <kuribas> End you can encode existitial types with forall, without the need to create a datatype.
2023-02-24 18:20:40 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-02-24 18:20:41 +0100 <monochrom> Another large class of uses is the Yoneda lemma, e.g., (forall r. (Int -> r) -> [r]) simplifies to [Int]. This works for all functors in place of [].
2023-02-24 18:21:15 +0100chele(~chele@user/chele) (Remote host closed the connection)
2023-02-24 18:22:25 +0100 <monochrom> I wouldn't be surprised if people were simple minded and simply defined "more general" to just mean "I see more quantifiers".
2023-02-24 18:22:56 +0100Pickchea(~private@user/pickchea) (Quit: Leaving)
2023-02-24 18:23:07 +0100__monty__(~toonn@user/toonn)
2023-02-24 18:23:08 +0100 <monochrom> As opposed to the proper way of actually counting which side has more examples.
2023-02-24 18:25:10 +0100 <monochrom> More generally (pun heh) I wouldn't be surprised if people had all the flaws of AIs we all love to make fun of.
2023-02-24 18:26:50 +0100 <ncf> surely common language would say that forall a. a → a is more general than String → String, although the latter has more examples
2023-02-24 18:27:10 +0100 <geekosaur> absolutely we do
2023-02-24 18:27:20 +0100 <ncf> in this case the generality is in what you can apply that function to (i.e. it's a contravariant notion)
2023-02-24 18:27:21 +0100 <monochrom> Sure. Exactly what GPT does too.
2023-02-24 18:27:35 +0100 <geekosaur> they're just weirder because as you get better trained the flaws become more weirdshit
2023-02-24 18:28:08 +0100 <ncf> but i would also be comfortable saying that exists a. a is more general than String, this time because it has more inhabitants
2023-02-24 18:28:26 +0100 <ncf> in other words i don't think generality of types is a well-defined notion
2023-02-24 18:28:30 +0100f-a(~f-a@151.44.34.226)
2023-02-24 18:28:50 +0100 <monochrom> We can start fixing that.
2023-02-24 18:28:57 +0100 <monochrom> Or we can stay as bystanders.
2023-02-24 18:29:08 +0100 <ncf> what for? we have subtyping already
2023-02-24 18:29:12 +0100king_gs(~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Read error: Connection reset by peer)
2023-02-24 18:29:25 +0100 <gurkenglas> having given up on trying to fix my indexed traversal and caught up on chat since my question: (forall a.a->a) is a subtype of String->String, yes?
2023-02-24 18:29:26 +0100king_gs(~Thunderbi@187.201.41.239)
2023-02-24 18:29:28 +0100 <monochrom> A much better wording for comparing (forall a. a->a) with (String->String) is "more polymorphic".
2023-02-24 18:29:40 +0100 <ncf> gurkenglas: yes
2023-02-24 18:29:57 +0100 <gurkenglas> so if i put two (->Int)s on each side, I still have the same subtype relationship
2023-02-24 18:30:03 +0100 <ncf> yes yes i was wrong
2023-02-24 18:30:12 +0100 <monochrom> Sure, I can go with "subtype of".
2023-02-24 18:30:20 +0100 <f-a> I am reding https://www.microsoft.com/en-us/research/uploads/prod/2016/11/trees-that-grow.pdf “This paper is typeset from a literate Haskell source file using lhs2TeX [Hinze and Löh, 2015], and the code runs on GHC 8.0” ← Is there any way to recover/reconstruct/download that .lhs file? Copying stuff from a pdf is a pain
2023-02-24 18:30:49 +0100 <monochrom> But the word "more general" needs fixing too. As in, we need to get more people to adopt the definition of counting examples.
2023-02-24 18:31:25 +0100npm_i_kurbus(~npm_i_kur@user/kurbus)
2023-02-24 18:32:51 +0100 <gurkenglas> ncf: I do! The associativity and unitality properties of composition in a category happen to be equivalent to composition being fixed by all natural redefinitions.
2023-02-24 18:32:53 +0100 <monochrom> Plus in Java (<T> T f(T)) does have more examples than (String f(String)), for Java allows you instanceof.
2023-02-24 18:33:56 +0100 <ncf> gurkenglas: what's a natural redefinition?
2023-02-24 18:33:56 +0100 <gurkenglas> monochrom: given a property, how might I tell whether it can be expressed using free theorems?
2023-02-24 18:34:04 +0100 <gurkenglas> ncf: the XX thing
2023-02-24 18:34:35 +0100 <gurkenglas> (that is, "forall b. X b -> X b")
2023-02-24 18:34:45 +0100 <ncf> endonatural transformations?
2023-02-24 18:35:08 +0100 <ncf> why do you mean by composition being fixed by that?
2023-02-24 18:35:10 +0100vandita(~vandit@92-249-193-140.pool.digikabel.hu) (Ping timeout: 246 seconds)
2023-02-24 18:36:17 +0100 <gurkenglas> ncf, put more simply: every notion of composition that you could construct from the composition of a category is that same notion.
2023-02-24 18:36:42 +0100 <ncf> i don't want simpler i want more precise :D
2023-02-24 18:37:06 +0100vandita(~vandit@87-97-13-33.pool.digikabel.hu)
2023-02-24 18:39:15 +0100polyphem_(~rod@2a02:810d:840:8754:d765:82aa:7bfb:6c2) (Ping timeout: 255 seconds)
2023-02-24 18:39:56 +0100polyphem_(~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
2023-02-24 18:40:43 +0100 <gurkenglas> ncf: a category c :: Dict (Category C) is lawful iff for every f :: forall graph. Dict (Category graph) -> Dict (Category graph), f c = c
2023-02-24 18:40:50 +0100 <ncf> for X = [], the only element of [a] that is fixed by endonatural transformations is the empty list. i wonder if this generalises to XX a = forall b. X b
2023-02-24 18:41:52 +0100waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-02-24 18:42:28 +0100 <ncf> gurkenglas: what's Dict?
2023-02-24 18:43:03 +0100 <ncf> i'm guessing it's a dictionary containing the identity and composition operations
2023-02-24 18:43:22 +0100kuribas(~user@ptr-17d51epnas6cljeq5e9.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
2023-02-24 18:43:24 +0100 <gurkenglas> Yeah. Dict has kind Constraing -> * and maps every class to a type whose inhabitants are instances.
2023-02-24 18:44:12 +0100jarkadjarkad__
2023-02-24 18:44:43 +0100jarkad__jarkad
2023-02-24 18:44:50 +0100dcoutts_(~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
2023-02-24 18:44:57 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e)
2023-02-24 18:45:06 +0100 <gurkenglas> so now that you have an example, i'd like my clever application of free theorems to encode this :3
2023-02-24 18:45:28 +0100 <gurkenglas> s/my/some/
2023-02-24 18:45:39 +0100dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 255 seconds)
2023-02-24 18:45:46 +0100 <mauke> f-a: your best bet may be emailing the author(s) and asking for a copy
2023-02-24 18:46:27 +0100 <gurkenglas> f-a: make GPT clean it up
2023-02-24 18:47:05 +0100f-a(~f-a@151.44.34.226) (Read error: Connection reset by peer)
2023-02-24 18:47:12 +0100econo(uid147250@user/econo)
2023-02-24 18:47:39 +0100jarkadjarkad__
2023-02-24 18:47:44 +0100jarkad__jarkad
2023-02-24 18:47:56 +0100jarkadjarkad__
2023-02-24 18:47:58 +0100jarkad__jarkad
2023-02-24 18:48:18 +0100 <gurkenglas> ("maps every class to a type whose inhabitants are instances" <- with the class applied to enough parameters to produce a constraint, of course.)
2023-02-24 18:48:46 +0100 <ncf> so, you're trying to come up with a type whose inhabitation means that c is lawful?
2023-02-24 18:49:22 +0100 <ncf> i doubt you can do that
2023-02-24 18:49:23 +0100 <gurkenglas> ncf: not quite: i'm trying to come up with a type whose inhabitants are lawful.
2023-02-24 18:49:46 +0100 <ncf> hmm
2023-02-24 18:50:11 +0100 <gurkenglas> X a = Dict (Category a) are all instances of Category a, even unlawful ones; XX a would be the lawful instances.
2023-02-24 18:50:34 +0100 <gurkenglas> Big if possible, right?
2023-02-24 18:50:50 +0100f-a(~f-a@151.44.70.210)
2023-02-24 18:51:52 +0100 <ncf> actually, i see how your condition implies unitality but not associativity
2023-02-24 18:53:19 +0100 <gurkenglas> I'll talk you through the proof if you solve my problem :D
2023-02-24 18:54:56 +0100Lycurgus(~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
2023-02-24 18:55:21 +0100Ashkan(~Ashkan@a119011.upc-a.chello.nl)
2023-02-24 18:55:21 +0100 <gurkenglas> (though possibly the theorem only holds for a particular, equivalent definition of Category)
2023-02-24 18:56:47 +0100f-a(~f-a@151.44.70.210) (Ping timeout: 248 seconds)
2023-02-24 18:56:54 +0100shapr(~user@144.163.19.233) (Ping timeout: 255 seconds)
2023-02-24 18:57:31 +0100tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
2023-02-24 18:58:36 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e) (Remote host closed the connection)
2023-02-24 18:58:38 +0100king_gs(~Thunderbi@187.201.41.239) (Ping timeout: 268 seconds)
2023-02-24 18:58:52 +0100 <gurkenglas> yeah it does, fascinatingly evil
2023-02-24 18:59:09 +0100Ashkan(~Ashkan@a119011.upc-a.chello.nl) (Client Quit)
2023-02-24 18:59:44 +0100npm_i_kurbus60(~npm_i_kur@user/kurbus)
2023-02-24 19:00:07 +0100npm_i_kurbus60kurbus
2023-02-24 19:00:23 +0100npm_i_kurbus(~npm_i_kur@user/kurbus) (Quit: Client closed)
2023-02-24 19:01:01 +0100cheater(~Username@user/cheater)
2023-02-24 19:01:17 +0100dcoutts_(~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Ping timeout: 255 seconds)
2023-02-24 19:01:54 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e)
2023-02-24 19:02:33 +0100 <ncf> i wonder if you could encode lawfulness by saying that a category is an algebra for the free category monad
2023-02-24 19:02:34 +0100f-a(~f-a@151.44.47.79)
2023-02-24 19:02:55 +0100mechap(~mechap@user/mechap) (Quit: WeeChat 3.8)
2023-02-24 19:03:09 +0100 <ncf> maybe you can construct free categories as a GADT
2023-02-24 19:03:14 +0100 <gurkenglas> precisely, that's the equivalent definition i mean. Of course it would be cheating to reuse the "associative, unital" that "algebra over a monad" gives you here
2023-02-24 19:03:36 +0100 <gurkenglas> so do "algebra over an endofunctor" which is the same but without "associative, unital"
2023-02-24 19:03:47 +0100Katarushisu(~Katarushi@cpc147790-finc20-2-0-cust502.4-2.cable.virginm.net)
2023-02-24 19:03:54 +0100 <ncf> that's not the same associativity and unitality
2023-02-24 19:04:00 +0100 <gurkenglas> and yet.
2023-02-24 19:04:16 +0100 <ncf> the laws of the free category monad have nothing to do with the category laws obeyed by the free category itself
2023-02-24 19:04:31 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-02-24 19:04:35 +0100 <ncf> just like the "free group monad" obeys monoid-sounding laws but no inverse
2023-02-24 19:04:42 +0100 <gurkenglas> using them is cheating because you can also do the same construction for "vector space is a linear combinations algebra" or "monoid is a list algebra"
2023-02-24 19:05:12 +0100 <ncf> why is that cheating? not following
2023-02-24 19:05:43 +0100 <ncf> well it's not like haskell would let you express monad-algebra laws as opposed to functor-algebra
2023-02-24 19:05:48 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-02-24 19:06:26 +0100 <gurkenglas> we could look at it as, i'm hoping to characterize categories here as "that thing for which 'fixed by natural redefinitions' is equivalent to the algebra's 'assoc&unital'"
2023-02-24 19:09:10 +0100kurbus(~npm_i_kur@user/kurbus) (Quit: Client closed)
2023-02-24 19:09:30 +0100 <gurkenglas> if category theory, infamous for being able to talk about itself, falls out of "a category is a thing that talks about itself a lot" and "the definition of category is the definition that you can put in terms of talking about itself", refer to my previous statement about size conditional upon veracity
2023-02-24 19:10:19 +0100talismanick(~talismani@45-23-184-231.lightspeed.frokca.sbcglobal.net)
2023-02-24 19:11:55 +0100 <ncf> i guess
2023-02-24 19:12:43 +0100shapr(~user@144.163.19.233)
2023-02-24 19:14:54 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Ping timeout: 255 seconds)
2023-02-24 19:15:18 +0100npm_i_kurbus(~npm_i_kur@user/kurbus)
2023-02-24 19:15:35 +0100jwiegley(~jwiegley@2600:1700:cf00:db0:18e0:c0e7:a06a:ed2f) (Ping timeout: 260 seconds)
2023-02-24 19:16:50 +0100johnw(~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
2023-02-24 19:17:21 +0100jwiegley(~jwiegley@2600:1700:cf00:db0:105e:68f2:b311:fef4)
2023-02-24 19:20:34 +0100 <gurkenglas> right, so, how do I define FixedByRedef X, which has the universal property that "(forall b. X b -> X b) -> FixedByRedef X a -> FixedByRedef X a" is unique?
2023-02-24 19:22:23 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2023-02-24 19:23:28 +0100stackdroid18(14094@de1.hashbang.sh)
2023-02-24 19:26:13 +0100 <gurkenglas> (plus the ambient structure of FixedByRedef X a being a subtype of X a)
2023-02-24 19:26:35 +0100dcoutts_(~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
2023-02-24 19:28:34 +0100nattiestnate(~nate@202.138.250.17) (Quit: WeeChat 3.8)
2023-02-24 19:29:46 +0100 <ncf> well, the empty subtype works for one
2023-02-24 19:29:54 +0100 <ncf> i think that's not quite a universal property
2023-02-24 19:30:29 +0100 <ncf> i think my suggestion forall b. X b also works but also doesn't fit the actual universal property you want
2023-02-24 19:30:50 +0100 <gurkenglas> misunderstanding: universal here means that not only is this unique, but also any other subtype for which this is unique is also a subtype of the universal one (in a unique manner but that's free for subtypes)
2023-02-24 19:31:04 +0100 <ncf> right
2023-02-24 19:31:12 +0100 <ncf> so the largest subtype, basically
2023-02-24 19:31:16 +0100 <gurkenglas> yes
2023-02-24 19:31:32 +0100gmg(~user@user/gehmehgeh) (Ping timeout: 255 seconds)
2023-02-24 19:31:41 +0100ncf. o O ( adjoint functor theorem for posets )
2023-02-24 19:32:20 +0100mechap(~mechap@user/mechap)
2023-02-24 19:34:21 +0100gmg(~user@user/gehmehgeh)
2023-02-24 19:34:55 +0100shapr`(~user@144.163.19.233)
2023-02-24 19:35:22 +0100 <gurkenglas> hmmmmmmmmm. "LawfulDict (Category a) -> Dict (Category a)" is *also* unique.
2023-02-24 19:36:52 +0100shapr(~user@144.163.19.233) (Ping timeout: 268 seconds)
2023-02-24 19:37:05 +0100 <gurkenglas> so i think LawfulDict (Category a) is just the limit of the diagram containing all the values of "forall a. Dict (Category a) -> Dict (Category a)"?
2023-02-24 19:38:41 +0100 <gurkenglas> (different way to say the insight from my last 2 lines: we don't need to say "every redefinition of composition is this composition again", only "all redefinitions agree", since id happens to be one of them)
2023-02-24 19:38:46 +0100talismanick(~talismani@45-23-184-231.lightspeed.frokca.sbcglobal.net) (Ping timeout: 252 seconds)
2023-02-24 19:41:25 +0100 <gurkenglas> ncf: explain the connection in your last line?
2023-02-24 19:45:53 +0100dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net)
2023-02-24 19:46:56 +0100 <gurkenglas> it feels like if RankNTypes can help my encode my subtype, it will be because it can encode: "The subtype of A a such that we can turn it into precisely one B a".
2023-02-24 19:47:12 +0100 <gurkenglas> (It's fine if it can only do that under particular conditions.)
2023-02-24 19:47:26 +0100shapr`shapr
2023-02-24 19:50:16 +0100 <gurkenglas> You might say, "Why don't you just use B a directly?". The reason is that there may be B a that we can't build from any A a, so using B a forgets that we came from some A a.
2023-02-24 19:52:26 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 19:52:31 +0100 <gurkenglas> ncf: you don't have to make the connection to "adjoint functor theorem for posets" precise, i might guess at that if you can say what part of this made you think of what part of that
2023-02-24 19:52:50 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-02-24 19:56:39 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 255 seconds)
2023-02-24 19:57:03 +0100 <gurkenglas> https://qchu.wordpress.com/2010/10/22/the-adjoint-functor-theorem-for-posets/ <- "what really matters about the infimum and supremum is that they have universal properties" <- hah! i discovered that myself 33 days ago! (while refactoring the by-contradiction out of a proof)
2023-02-24 19:57:12 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
2023-02-24 19:57:41 +0100harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2023-02-24 20:04:00 +0100npm_i_kurbus(~npm_i_kur@user/kurbus) (Quit: Client closed)
2023-02-24 20:04:46 +0100 <gastus_> Does GHC allow reading types in template haskell ? like row = [ build query code ] and then infer if row.id is used that id should be included in the SELECT part of the query ?
2023-02-24 20:05:40 +0100Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
2023-02-24 20:05:52 +0100ph88(~ph88@91.66.101.83)
2023-02-24 20:07:13 +0100 <dminuoso_> gastus_: Not really
2023-02-24 20:07:47 +0100bilegeek(~bilegeek@2600:1008:b008:ac8:4aba:4b96:274e:f868)
2023-02-24 20:08:19 +0100 <dminuoso_> gastus_: There's a bunch of ways this is done in libraries
2023-02-24 20:08:30 +0100 <ncf> gurkenglas: yeah nothing precise, just that "the largest foo" can often be obtained via the AFT as "the join of all foos", see https://amelia.how/posts/the-adjoint-functor-theorem-in-everyday-life.html
2023-02-24 20:08:50 +0100 <ncf> probably doesn't help at all
2023-02-24 20:09:22 +0100 <dminuoso_> a) you just infer it from the call site, e.g `do rs <- query "SELECT id, name, FROM table"; for_ rs $ \(r :: Int, name :: Text) -> ...` - this is what the -simple libraries effectively do
2023-02-24 20:09:39 +0100 <dminuoso_> b) you can somehow have ambient knowledge of the schema in TH
2023-02-24 20:10:02 +0100 <dminuoso_> c) or you explicitly somehow provide some parser (which is what hasql does, but postgresql-simple has some rudimentary support for it to)
2023-02-24 20:12:07 +0100dcoutts_(~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Ping timeout: 246 seconds)
2023-02-24 20:12:18 +0100 <gastus_> dminuoso_: So tehre is no way yet to infer with the bidirectional typing system of GHC yet?
2023-02-24 20:13:17 +0100 <dminuoso_> gastus_: if you want that kind of behavior, you have to do it at runtime.
2023-02-24 20:13:41 +0100 <gastus_> But then I cannot typecheck at build time. Ok. Just something I dream about.
2023-02-24 20:13:52 +0100 <gastus_> Would have been too lucky if GHC was able to do that by today already.
2023-02-24 20:14:32 +0100 <dminuoso_> well you even ask for things that are impossible with TH
2023-02-24 20:14:50 +0100 <dminuoso_> or well, not impossbile I guess.
2023-02-24 20:15:15 +0100 <dminuoso_> You could go all the way in TH, load up ghc api, load Cabal, and analyze the entirety of your program
2023-02-24 20:15:35 +0100 <dminuoso_> but you would have some chicken-egg problems with the TH splices.
2023-02-24 20:15:43 +0100mcglk(~mcglk@131.191.19.145) (Ping timeout: 248 seconds)
2023-02-24 20:18:04 +0100L29Ah(~L29Ah@wikipedia/L29Ah) ()
2023-02-24 20:19:11 +0100mcglk(~mcglk@131.191.19.145)
2023-02-24 20:19:30 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2023-02-24 20:27:59 +0100f-a(~f-a@151.44.47.79) (Ping timeout: 248 seconds)
2023-02-24 20:29:06 +0100f-a(~f-a@151.34.85.212)
2023-02-24 20:33:30 +0100enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
2023-02-24 20:37:07 +0100enoq(~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Client Quit)
2023-02-24 20:43:59 +0100harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2023-02-24 20:55:12 +0100npm_i_kurbus(~npm_i_kur@user/kurbus)
2023-02-24 20:57:02 +0100k8yun(~k8yun@user/k8yun)
2023-02-24 20:57:58 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2023-02-24 21:01:44 +0100OscarZ(~oscarz@95.175.104.72)
2023-02-24 21:02:12 +0100 <jonathanx> How do I quickstart a new haskell project? At work, I have a nix-shell setup with al the quirks worked out. Now I wanted to try out making a lib in my spare time. I tried kowainik's summoner to generate a project template. It as ok, but out of date (had to set a newer stack resolver manually). I got some errors related to not having an explicit hie.yaml, which made HLS break. And now I struggle to add packages (wanted to try
2023-02-24 21:02:12 +0100 <jonathanx> out cabal, maybe a bad idea? It doesn't seem to add the packages I specify in the .cabal file)
2023-02-24 21:02:58 +0100 <jonathanx> It basically feels a bit tedious to set up a new project, ideally I'd like to have a template that is pre-configured with the right nix-shell etc, so it's pretty much plug n play
2023-02-24 21:02:59 +0100 <[exa]> jonathanx: try cabal, it is a good idea
2023-02-24 21:03:43 +0100 <geekosaur> modern HLS usually doesn't need an hie.yaml, I'm somewhat curious as to why yours does
2023-02-24 21:03:49 +0100 <geekosaur> at least with cabal
2023-02-24 21:03:55 +0100 <c_wraith> I just run cabal init and go.
2023-02-24 21:04:01 +0100 <[exa]> +1 ^
2023-02-24 21:06:37 +0100 <shapr> jonathanx: I use: nix flake init -t 'github:JonathanLorimer/templates#haskell'
2023-02-24 21:10:39 +0100 <jonathanx> thanks for you suggestions. I will explore cabal init as well as the nix flake version. If anyone else have a preferred route, hmu
2023-02-24 21:12:27 +0100L29Ah(~L29Ah@wikipedia/L29Ah)
2023-02-24 21:15:10 +0100 <ncf> gurkenglas: would your claim imply a similar statement like "lawful Monoid instances are the ones that are fixed by every forall m. Dict (Monoid m) → Dict (Monoid m)" ? because that's false
2023-02-24 21:15:40 +0100 <ncf> or are you claiming that Category is the only class that satisfies this?
2023-02-24 21:17:08 +0100 <ph88> when i have a list of Either .. is there a function that gives me a back an Either with left value the first left found or right value the result list ?
2023-02-24 21:18:07 +0100 <ncf> :t sequence @(Either a)
2023-02-24 21:18:08 +0100 <lambdabot> error:
2023-02-24 21:18:08 +0100 <lambdabot> Pattern syntax in expression context: sequence@(Either a)
2023-02-24 21:18:08 +0100 <lambdabot> Did you mean to enable TypeApplications?
2023-02-24 21:18:35 +0100 <geekosaur> lambdabot doesn't do TypeApplications; use yahb2
2023-02-24 21:18:44 +0100 <c_wraith> > sequence [Right 1, Right 2]
2023-02-24 21:18:44 +0100 <geekosaur> % :t @(Either e)
2023-02-24 21:18:44 +0100 <yahb2> <interactive>:1:1: error: parse error on input ‘@’
2023-02-24 21:18:45 +0100 <lambdabot> Right [1,2]
2023-02-24 21:18:54 +0100 <c_wraith> > sequence [Right 1, Left (), Right 2]
2023-02-24 21:18:55 +0100 <geekosaur> % :t sequence @(Either e)
2023-02-24 21:18:55 +0100 <yahb2> <interactive>:1:19: error: Not in scope: type variable ‘e’
2023-02-24 21:18:55 +0100 <lambdabot> Left ()
2023-02-24 21:19:00 +0100 <geekosaur> % :t sequence @(Either _)
2023-02-24 21:19:00 +0100 <yahb2> sequence @(Either _) :: Monad m => Either w (m a) -> m (Either w a)
2023-02-24 21:19:26 +0100tlaxkit(~hexchat@170.253.34.149) (Quit: Saliendo...)
2023-02-24 21:19:31 +0100 <ncf> funny, hoogle can't find [Either a b] -> Either a [b]
2023-02-24 21:19:38 +0100use-value(~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf) (Remote host closed the connection)
2023-02-24 21:19:45 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 21:19:53 +0100 <ncf> guess it doesn't do higher order unification
2023-02-24 21:19:58 +0100use-value(~Thunderbi@2a00:23c6:8a03:2f01:75c2:a71f:beaa:29bf)
2023-02-24 21:22:35 +0100 <ph88> thank you guys
2023-02-24 21:25:46 +0100harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2023-02-24 21:26:18 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 255 seconds)
2023-02-24 21:27:13 +0100mechap(~mechap@user/mechap) (Ping timeout: 256 seconds)
2023-02-24 21:27:59 +0100kilolympus(~kilolympu@213.144.144.24) (Quit: See you later! :))
2023-02-24 21:30:17 +0100mechap(~mechap@user/mechap)
2023-02-24 21:34:16 +0100dcoutts_(~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
2023-02-24 21:34:25 +0100azure_vermilion(~azure_ver@82-132-235-76.dab.02.net) (Ping timeout: 260 seconds)
2023-02-24 21:34:55 +0100azure_vermilion(~azure_ver@82.132.235.123)
2023-02-24 21:35:09 +0100 <ph88> what if i have a (Map k a) and i map to (Map k (Either b c)) will sequence work too ?
2023-02-24 21:36:27 +0100cstml(~cstml@user/cstml) (Ping timeout: 248 seconds)
2023-02-24 21:36:44 +0100 <ph88> hmm i guess so because it's of instance Traversable
2023-02-24 21:36:58 +0100 <mauke> > sequence (M.fromList [("a", Right 1), ("b", Right 2), ("c", Right 3)])
2023-02-24 21:37:00 +0100 <lambdabot> Right (fromList [("a",1),("b",2),("c",3)])
2023-02-24 21:37:08 +0100 <mauke> > sequence (M.fromList [("a", Right 1), ("b", Left ()), ("c", Right 3)])
2023-02-24 21:37:10 +0100 <lambdabot> Left ()
2023-02-24 21:37:12 +0100harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2023-02-24 21:38:30 +0100npm_i_kurbus(~npm_i_kur@user/kurbus) (Quit: Client closed)
2023-02-24 21:43:11 +0100czy(~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net)
2023-02-24 21:47:46 +0100trev(~trev@user/trev) (Remote host closed the connection)
2023-02-24 21:48:18 +0100 <gurkenglas> ncf: Monoid indeed doesn't satisfy this, and yes I'm claiming that this (almost) nails Category down.
2023-02-24 21:53:18 +0100 <ncf> i'm still interested in your proof then. afaict category-redefinitions are basically determined by inserting trees of id, and i don't see how this lets you poke at associativity of non-id morphisms
2023-02-24 21:53:24 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net)
2023-02-24 21:58:20 +0100merijn(~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
2023-02-24 22:00:04 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e) (Remote host closed the connection)
2023-02-24 22:00:29 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
2023-02-24 22:03:41 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 22:06:27 +0100dcoutts_(~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Remote host closed the connection)
2023-02-24 22:06:49 +0100dcoutts_(~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net)
2023-02-24 22:10:55 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 248 seconds)
2023-02-24 22:10:56 +0100eggplantade(~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
2023-02-24 22:11:05 +0100stackdroid18(14094@de1.hashbang.sh) (Quit: hasta la vista... tchau!)
2023-02-24 22:13:48 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 22:17:23 +0100pavonia(~user@user/siracusa)
2023-02-24 22:17:55 +0100sammelweis_(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-02-24 22:17:55 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Ping timeout: 260 seconds)
2023-02-24 22:19:24 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 255 seconds)
2023-02-24 22:26:03 +0100bliminse(~bliminse@user/bliminse) (Quit: leaving)
2023-02-24 22:28:31 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e)
2023-02-24 22:29:52 +0100Midjak(~Midjak@82.66.147.146) (Quit: This computer has gone to sleep)
2023-02-24 22:30:45 +0100mechap(~mechap@user/mechap) (Ping timeout: 252 seconds)
2023-02-24 22:32:49 +0100mechap(~mechap@user/mechap)
2023-02-24 22:35:17 +0100sammelweis_(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-02-24 22:37:05 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-02-24 22:41:37 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Client Quit)
2023-02-24 22:42:34 +0100o-90(~o-90@gateway/tor-sasl/o-90)
2023-02-24 22:43:00 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-02-24 22:45:43 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e) (Remote host closed the connection)
2023-02-24 22:46:24 +0100slack1256(~slack1256@186.11.53.84) (Ping timeout: 255 seconds)
2023-02-24 22:48:51 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e)
2023-02-24 22:50:50 +0100bgs(~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
2023-02-24 22:52:17 +0100k8yun(~k8yun@user/k8yun) (Quit: Leaving)
2023-02-24 22:52:42 +0100dhil(~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 255 seconds)
2023-02-24 22:53:08 +0100o-90(~o-90@gateway/tor-sasl/o-90) (Ping timeout: 255 seconds)
2023-02-24 23:01:41 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e) (Remote host closed the connection)
2023-02-24 23:04:50 +0100son0p(~ff@181.136.122.143) (Ping timeout: 252 seconds)
2023-02-24 23:04:51 +0100thegeekinside(~thegeekin@189.180.66.126) (Ping timeout: 255 seconds)
2023-02-24 23:10:25 +0100takuan(~takuan@178.116.218.225) (Remote host closed the connection)
2023-02-24 23:18:41 +0100michalz(~michalz@185.246.207.221) (Remote host closed the connection)
2023-02-24 23:20:20 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e)
2023-02-24 23:30:22 +0100 <gurkenglas> ncf: Dict (Category a) is forall s t. Path a s t -> a s t
2023-02-24 23:31:14 +0100 <gurkenglas> ncf: given a path of length 3, you can choose to apply it twice to paths of length two, and those have to agree
2023-02-24 23:32:00 +0100dcoutts_(~duncan@cpc69403-oxfd27-2-0-cust285.4-3.cable.virginm.net) (Ping timeout: 248 seconds)
2023-02-24 23:32:20 +0100 <gurkenglas> s/those/the two ways to apply it twice to paths of length two/
2023-02-24 23:35:48 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
2023-02-24 23:36:54 +0100sammelweis(~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
2023-02-24 23:37:22 +0100freeside(~mengwong@103.6.151.67)
2023-02-24 23:37:55 +0100alecs(~alecs@31.188.156.192) (Quit: WeeChat 3.8)
2023-02-24 23:41:45 +0100freeside(~mengwong@103.6.151.67) (Ping timeout: 255 seconds)
2023-02-24 23:45:24 +0100man_max(~man_max@94-43-231-47.dsl.utg.ge)
2023-02-24 23:45:26 +0100 <man_max> I need to download a paper from springer proceeding. Do you have an access to download from springer?
2023-02-24 23:46:24 +0100eggplantade(~Eggplanta@2600:1700:38c5:d800:90d2:49e4:6637:422e) (Remote host closed the connection)
2023-02-24 23:48:50 +0100waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 255 seconds)
2023-02-24 23:50:10 +0100waleee(~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
2023-02-24 23:50:42 +0100man_max(~man_max@94-43-231-47.dsl.utg.ge) (Quit: Client closed)
2023-02-24 23:56:08 +0100falafel(~falafel@2607:fb91:143f:e47f:4560:973b:da2e:e11d)
2023-02-24 23:56:09 +0100n8chan(~nate@98.45.169.16) (Ping timeout: 255 seconds)
2023-02-24 23:57:33 +0100rhart(~rhart@user/rhart)
2023-02-24 23:58:42 +0100Tuplanolla(~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)