Home liberachat/#haskell: Logs Calendar

Logs on 2023-02-24 (liberachat/#haskell)

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

All times are in UTC on 2023-02-24.