Home liberachat/#haskell: Logs Calendar

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

00:00:08 img joins (~img@user/img)
00:02:03 × pernzs quits (~pernzs@125.7.37.86) (Ping timeout: 260 seconds)
00:03:58 × img quits (~img@user/img) (Client Quit)
00:06:59 img joins (~img@user/img)
00:12:58 × acidjnk quits (~acidjnk@p54ad56b7.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
00:13:44 HandolPark[m] joins (~handol-pa@2001:470:69fc:105::3:1994)
00:13:57 HandolPark[m] parts (~handol-pa@2001:470:69fc:105::3:1994) ()
00:13:59 <dibblego> does there exist a library to diff/merge data types?
00:17:41 × beteigeuze quits (~Thunderbi@85.247.81.220) (Quit: beteigeuze)
00:18:42 ec_ is now known as ec
00:20:41 <lyxia> https://hackage.haskell.org/package/tree-diff
00:22:05 mauke_ joins (~mauke@user/mauke)
00:23:27 × mauke quits (~mauke@user/mauke) (Ping timeout: 255 seconds)
00:23:27 mauke_ is now known as mauke
00:24:31 larrythecow joins (~oldfashio@2.120.101.114)
00:25:52 <jackdk> dibblego: also https://hackage.haskell.org/package/semialign-extras does it but is potentially inefficient (because it relies on Semialign and Filterable, and knows nothing more about the types); https://hackage.haskell.org/package/patch is from the obsidianverse but doesn't have a diff operation (but see https://github.com/reflex-frp/patch/issues/52 )
00:26:58 elevenkb joins (~elevenkb@105.225.107.107)
00:27:00 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
00:27:10 <jackdk> also torsors/group actions capture the diff/patch idea; https://hackage.haskell.org/package/acts-0.3.1.0/docs/Data-Act.html seems most promising for that
00:31:41 <dibblego> thanks
00:32:32 <jackdk> dibblego: what are you trying to do?
00:33:52 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
00:38:21 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
00:39:25 × elevenkb quits (~elevenkb@105.225.107.107) (Ping timeout: 252 seconds)
00:41:28 freeside joins (~mengwong@103.252.202.170)
00:42:19 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:42:19 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:42:19 wroathe joins (~wroathe@user/wroathe)
00:43:03 × larrythecow quits (~oldfashio@2.120.101.114) (Quit: ZNC 1.8.2 - https://znc.in)
00:43:03 acidjnk joins (~acidjnk@p200300d6e715c417a5824373cc2115b7.dip0.t-ipconnect.de)
00:44:02 × dcoutts_ quits (~duncan@host86-167-90-212.range86-167.btcentralplus.com) (Ping timeout: 255 seconds)
00:45:31 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 246 seconds)
00:50:42 bramhaag joins (~bramhaag@134.195.121.39)
00:53:08 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
00:55:51 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
00:58:42 <bramhaag> Hi, I'm trying to write a parser for COBOL with megaparsec. For my purposes I don't care about the first 6 characters in every line (they are reserved for punchcard sequence numbers), so I want to skip them. I can of course do this for each of my parsers individually, but is there maybe a more elegant way?
00:59:16 <segfaultfizzbuzz> COBOL doesn't need to be shouted
00:59:49 <hpc> you can handle it in multiple passes
01:00:05 <hpc> one pass that strips the sequence numbers, another that parses the language
01:01:15 <dibblego> jackdk: persist values of a data type, preserving history and performance
01:06:20 <bramhaag> Good suggestion, thanks hpc!
01:07:38 <hpc> bramhaag: protip - the only difference between compilers, interpreters, and parsers is what they output and when they run
01:07:49 <hpc> so shamelessly draw from how they are designed when doing this sort of stuff :D
01:08:23 × ddellacosta quits (~ddellacos@146.70.165.10) (Quit: WeeChat 3.8)
01:09:36 ddellacosta joins (~ddellacos@146.70.165.10)
01:10:54 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:11:28 <segfaultfizzbuzz> how do the pros do error messages... tbh they sound like the hardest part of a language
01:13:04 <hpc> i don't know about getting up to ghc/rustc level of error messages, so i always just make sure it's phrased as where the computer got surprised, not where the mistake was
01:14:01 L29Ah joins (~L29Ah@wikipedia/L29Ah)
01:14:31 <segfaultfizzbuzz> it's like you need to accumulate all of the errors somehow and then summarize them sensibly, i don't understand what that structure looks like
01:14:55 × gurkenglas quits (~gurkengla@dynamic-046-114-177-034.46.114.pool.telefonica.de) (Ping timeout: 246 seconds)
01:17:02 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:22:37 × mncheck quits (~mncheck@193.224.205.254) (Ping timeout: 246 seconds)
01:22:41 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
01:24:03 × acidjnk quits (~acidjnk@p200300d6e715c417a5824373cc2115b7.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
01:24:22 × gpncarl quits (~gpncarl@210.12.195.6) (Ping timeout: 246 seconds)
01:24:27 gpncarl_ joins (~gpncarl@210.12.195.6)
01:27:18 freeside joins (~mengwong@103.252.202.170)
01:28:17 × johnjaye quits (~pi@173.209.64.74) (Read error: Connection reset by peer)
01:31:22 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 246 seconds)
01:32:15 × kee quits (~~kee@user/wizzwizz4) (Read error: Connection reset by peer)
01:32:44 kee joins (~~kee@user/wizzwizz4)
01:37:20 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
01:39:54 L29Ah joins (~L29Ah@wikipedia/L29Ah)
01:40:11 × jargon quits (~jargon@184.101.95.90) (Remote host closed the connection)
01:42:12 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
01:44:06 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
01:44:52 × xff0x quits (~xff0x@2405:6580:b080:900:1159:8d59:b148:53e) (Ping timeout: 252 seconds)
01:45:29 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
01:48:26 jakalx joins (~jakalx@base.jakalx.net)
01:49:36 freeside joins (~mengwong@103.252.202.170)
01:54:28 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 246 seconds)
01:55:52 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 246 seconds)
01:58:58 freeside joins (~mengwong@103.252.202.170)
02:01:37 notzmv joins (~zmv@user/notzmv)
02:03:13 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 246 seconds)
02:08:54 sidy joins (~sidy@user/sidy)
02:16:12 <lyxia> make a list of errors, and print it?
02:16:36 finnekit joins (~finnekit@fsf/member/finnekit)
02:17:16 <segfaultfizzbuzz> wait does ghc just spit out the error immediately?
02:23:38 gpncarl joins (~gpncarl@210.12.195.6)
02:25:01 × gpncarl_ quits (~gpncarl@210.12.195.6) (Ping timeout: 252 seconds)
02:28:02 × sayola quits (~sayola@ipservice-092-213-087-211.092.213.pools.vodafone-ip.de) (Read error: Connection reset by peer)
02:30:09 xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp)
02:37:59 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 255 seconds)
02:39:27 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 248 seconds)
02:41:31 werneta joins (~werneta@70.142.214.115)
02:43:11 × mei quits (~mei@user/mei) (Remote host closed the connection)
02:47:15 razetime joins (~Thunderbi@117.193.6.245)
02:49:56 falafel joins (~falafel@2607:fb91:143f:e47f:90f2:454a:343e:a7f7)
02:51:21 mei joins (~mei@user/mei)
02:53:12 × sidy quits (~sidy@user/sidy) (Ping timeout: 255 seconds)
02:57:07 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 246 seconds)
03:00:13 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.8)
03:03:18 bilegeek joins (~bilegeek@2600:1008:b0a9:5fa5:52dd:62c7:8c13:f894)
03:04:12 sidy joins (~sidy@user/sidy)
03:05:27 × sidy quits (~sidy@user/sidy) (Read error: Connection reset by peer)
03:06:09 chexum joins (~quassel@gateway/tor-sasl/chexum)
03:09:56 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
03:13:26 gehmehgeh joins (~user@user/gehmehgeh)
03:19:42 × gpncarl quits (~gpncarl@210.12.195.6) (Quit: WeeChat 3.8)
03:34:37 brettgilio joins (~brettgili@x-irc.gq)
03:35:51 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
03:38:01 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
03:39:24 gehmehgeh joins (~user@user/gehmehgeh)
03:42:55 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 248 seconds)
03:48:39 × thegeekinside quits (~thegeekin@189.180.97.223) (Ping timeout: 255 seconds)
03:49:11 × anatta quits (~AdiIRC@h-155-4-132-216.NA.cust.bahnhof.se) (Remote host closed the connection)
03:52:25 × td_ quits (~td@i53870935.versanet.de) (Ping timeout: 246 seconds)
03:54:34 td_ joins (~td@i5387092D.versanet.de)
03:57:25 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:57:25 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:57:25 finn_elija is now known as FinnElija
04:01:50 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
04:04:14 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
04:12:58 × razetime quits (~Thunderbi@117.193.6.245) (Ping timeout: 268 seconds)
04:22:24 cheater_ joins (~Username@user/cheater)
04:25:06 × cheater quits (~Username@user/cheater) (Ping timeout: 255 seconds)
04:25:09 cheater_ is now known as cheater
04:37:38 × Typedfern quits (~Typedfern@60.red-83-37-32.dynamicip.rima-tde.net) (Ping timeout: 268 seconds)
04:38:16 Typedfern joins (~Typedfern@60.red-83-37-32.dynamicip.rima-tde.net)
04:41:35 typedfern_ joins (~Typedfern@60.red-83-37-32.dynamicip.rima-tde.net)
04:44:40 × johnw quits (~johnw@2600:1700:cf00:db0:c50c:6975:4579:9276) (Quit: ZNC - http://znc.in)
04:44:40 × jwiegley quits (~jwiegley@2600:1700:cf00:db0:c50c:6975:4579:9276) (Quit: ZNC - http://znc.in)
04:47:25 × falafel quits (~falafel@2607:fb91:143f:e47f:90f2:454a:343e:a7f7) (Ping timeout: 260 seconds)
04:52:00 × ddellacosta quits (~ddellacos@146.70.165.10) (Quit: WeeChat 3.8)
04:52:08 jakalx parts (~jakalx@base.jakalx.net) ()
04:53:31 × Vajb quits (~Vajb@2001:999:404:9516:d621:6cbe:c71e:5686) (Read error: Connection reset by peer)
04:53:52 freeside joins (~mengwong@202.161.55.11)
04:54:34 Vajb joins (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi)
04:55:55 ddellacosta joins (~ddellacos@146.70.165.157)
04:57:54 × hounded quits (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Remote host closed the connection)
04:57:54 × hounded_woodstoc quits (~hounded@2603-7000-da43-eccc-0000-0000-0000-0cec.res6.spectrum.com) (Remote host closed the connection)
05:03:48 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds)
05:09:11 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
05:09:43 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Quit: segfaultfizzbuzz)
05:12:18 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
05:16:29 × Vajb quits (~Vajb@hag-jnsbng11-58c3a5-27.dhcp.inet.fi) (Read error: Connection reset by peer)
05:17:31 Vajb joins (~Vajb@2001:999:404:9516:d621:6cbe:c71e:5686)
05:20:34 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
05:21:28 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
05:22:01 × bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
05:28:40 razetime joins (~Thunderbi@117.193.6.245)
05:43:59 falafel joins (~falafel@2607:fb91:143f:e47f:622:c482:28d:da7)
05:45:56 jakalx joins (~jakalx@base.jakalx.net)
05:55:55 bilegeek_ joins (~bilegeek@65.sub-174-228-65.myvzw.com)
05:58:35 × bilegeek quits (~bilegeek@2600:1008:b0a9:5fa5:52dd:62c7:8c13:f894) (Ping timeout: 255 seconds)
06:02:55 elevenkb joins (~elevenkb@105.225.107.107)
06:03:32 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:04:06 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 255 seconds)
06:04:35 bgs joins (~bgs@212-85-160-171.dynamic.telemach.net)
06:07:11 mbuf joins (~Shakthi@49.204.119.151)
06:07:25 kenran joins (~user@user/kenran)
06:08:16 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:7d:f047:35eb:a33f) (Remote host closed the connection)
06:08:55 × elevenkb quits (~elevenkb@105.225.107.107) (Ping timeout: 246 seconds)
06:09:44 × kenran quits (~user@user/kenran) (Remote host closed the connection)
06:13:06 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 255 seconds)
06:13:14 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:7d:f047:35eb:a33f)
06:19:42 Lycurgus joins (~juan@user/Lycurgus)
06:27:12 johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
06:27:43 jwiegley joins (~jwiegley@2600:1700:cf00:db0:b8eb:e4c3:8b35:7cbb)
06:29:25 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
06:29:26 Square joins (~Square4@user/square)
06:32:22 × kee quits (~~kee@user/wizzwizz4) (Read error: Connection reset by peer)
06:32:48 k33 joins (~~kee@user/wizzwizz4)
06:38:11 pwntips joins (~user@24-113-98-114.wavecable.com)
06:40:52 × bilegeek_ quits (~bilegeek@65.sub-174-228-65.myvzw.com) (Quit: Leaving)
06:45:55 shapr joins (~user@net-5-88-239-92.cust.vodafonedsl.it)
06:47:35 trev joins (~trev@user/trev)
06:48:32 × opticblast quits (~Thunderbi@172.58.85.230) (Ping timeout: 255 seconds)
06:51:13 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
06:54:54 lortabac joins (~lortabac@2a01:e0a:541:b8f0:af0b:4d4f:7a12:c449)
06:59:50 × falafel quits (~falafel@2607:fb91:143f:e47f:622:c482:28d:da7) (Ping timeout: 260 seconds)
07:01:15 michalz joins (~michalz@185.246.204.125)
07:14:18 × czy quits (~user@host-140-27.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Ping timeout: 255 seconds)
07:15:11 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
07:16:01 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
07:17:52 × ft quits (~ft@p3e9bc443.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
07:26:00 pwntips parts (~user@24-113-98-114.wavecable.com) ()
07:26:07 mncheck joins (~mncheck@193.224.205.254)
07:35:34 pwntips joins (~user@24-113-98-114.wavecable.com)
07:39:25 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
07:40:19 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
07:42:08 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
07:42:33 king_gs joins (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7)
07:44:28 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 246 seconds)
07:45:52 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 246 seconds)
07:47:23 thongpv joins (~thongpv87@14.172.80.77)
07:54:30 × kaskal quits (~kaskal@089144220250.atnat0029.highway.webapn.at) (Remote host closed the connection)
07:59:23 kaskal joins (~kaskal@089144220250.atnat0029.highway.webapn.at)
08:01:58 × razetime quits (~Thunderbi@117.193.6.245) (Ping timeout: 246 seconds)
08:04:41 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
08:07:38 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
08:07:56 akegalj joins (~akegalj@93-139-168-105.adsl.net.t-com.hr)
08:12:55 azimut joins (~azimut@gateway/tor-sasl/azimut)
08:13:22 CiaoSen joins (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
08:13:39 × phma quits (phma@2001:5b0:210d:bd78:7d2a:52e1:c274:2d5) (Read error: Connection reset by peer)
08:14:16 phma joins (~phma@host-67-44-208-11.hnremote.net)
08:14:52 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:7d:f047:35eb:a33f) (Remote host closed the connection)
08:23:58 razetime joins (~Thunderbi@117.193.6.245)
08:26:20 × mechap quits (~mechap@user/mechap) (Quit: WeeChat 3.8)
08:26:42 × thongpv quits (~thongpv87@14.172.80.77) (Remote host closed the connection)
08:27:06 thongpv joins (~thongpv87@14.172.80.77)
08:28:28 gpncarl joins (~gpncarl@210.12.195.6)
08:29:40 zaquest joins (~notzaques@5.130.79.72)
08:37:25 turlando_ is now known as turlando
08:48:00 × YoungFrog quits (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in)
08:50:05 kuribas joins (~user@ptr-17d51eo29egdbr5f18m.18120a2.ip6.access.telenet.be)
08:52:29 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
08:55:33 × thongpv quits (~thongpv87@14.172.80.77) (Ping timeout: 255 seconds)
08:57:40 thongpv joins (~thongpv87@2402:9d80:36e:115e:bd33:9174:2078:fce6)
08:58:20 × Alex_test quits (~al_test@178.34.160.79) (Quit: ;-)
08:58:53 merijn joins (~merijn@195.114.232.94)
08:58:53 × AlexZenon quits (~alzenon@178.34.160.79) (Quit: ;-)
08:59:19 × AlexNoo quits (~AlexNoo@178.34.160.79) (Quit: Leaving)
09:00:27 YoungFrog joins (~youngfrog@2a02:a03f:ca07:f900:98c4:f5a3:bfa9:f8ce)
09:01:32 × shapr quits (~user@net-5-88-239-92.cust.vodafonedsl.it) (Read error: Connection reset by peer)
09:03:00 chele joins (~chele@user/chele)
09:07:09 hal[m] joins (~halfosswt@2001:470:69fc:105::2:e0ae)
09:07:20 instagib[m] joins (~instagibm@2001:470:69fc:105::8156)
09:15:23 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:7d:f047:35eb:a33f)
09:19:41 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:7d:f047:35eb:a33f) (Ping timeout: 252 seconds)
09:20:29 AlexZenon joins (~alzenon@178.34.160.79)
09:20:30 AlexNoo joins (~AlexNoo@178.34.160.79)
09:22:35 Alex_test joins (~al_test@178.34.160.79)
09:25:46 gurkenglas joins (~gurkengla@dynamic-046-114-177-034.46.114.pool.telefonica.de)
09:27:59 × neightchan quits (~nate@98.45.169.16) (Read error: Connection reset by peer)
09:28:01 × hgolden quits (~hgolden@cpe-172-251-233-141.socal.res.rr.com) (Read error: Connection reset by peer)
09:28:10 hgolden_ joins (~hgolden@cpe-172-251-233-141.socal.res.rr.com)
09:28:14 n8chan joins (~nate@98.45.169.16)
09:28:31 × king_gs quits (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Ping timeout: 252 seconds)
09:28:35 × johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
09:28:35 × jwiegley quits (~jwiegley@2600:1700:cf00:db0:b8eb:e4c3:8b35:7cbb) (Quit: ZNC - http://znc.in)
09:28:38 king_gs1 joins (~Thunderbi@187.201.41.239)
09:29:08 johnw joins (~johnw@2600:1700:cf00:db0:b8eb:e4c3:8b35:7cbb)
09:29:39 jwiegley joins (~jwiegley@2600:1700:cf00:db0:b8eb:e4c3:8b35:7cbb)
09:30:33 × inversed quits (~inversed@bcdcac82.skybroadband.com) (Ping timeout: 268 seconds)
09:30:55 king_gs1 is now known as king_gs
09:31:13 zeenk joins (~zeenk@2a02:2f04:a214:1e00::7fe)
09:31:17 inversed joins (~inversed@bcdcac82.skybroadband.com)
09:31:20 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
09:32:33 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
09:34:59 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
09:38:46 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
09:39:47 gehmehgeh joins (~user@user/gehmehgeh)
09:40:54 mechap joins (~mechap@user/mechap)
09:47:40 × king_gs quits (~Thunderbi@187.201.41.239) (Read error: Connection reset by peer)
09:47:43 king_gs1 joins (~Thunderbi@187.201.41.239)
09:50:01 king_gs1 is now known as king_gs
09:54:53 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
09:55:25 MajorBiscuit joins (~MajorBisc@145.94.142.245)
09:59:30 ubert joins (~Thunderbi@2a02:8109:abc0:6434:19e1:c8e:26ce:e0da)
10:01:16 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
10:02:18 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection)
10:03:16 azimut joins (~azimut@gateway/tor-sasl/azimut)
10:09:30 JimL joins (~quassel@89-162-26-217.fiber.signal.no)
10:10:42 × xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 255 seconds)
10:11:53 × king_gs quits (~Thunderbi@187.201.41.239) (Read error: Connection reset by peer)
10:13:02 king_gs joins (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7)
10:15:41 × sefidel quits (~sefidel@user/sefidel) (Remote host closed the connection)
10:15:58 sefidel joins (~sefidel@user/sefidel)
10:16:30 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:4572:3f0d:6913:5f92)
10:20:56 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:4572:3f0d:6913:5f92) (Ping timeout: 255 seconds)
10:24:40 <JensPetersen[m]> Does anyone have a 32bit patch for basement to build on ghc-9.2?
10:25:54 × Ram-Z quits (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) (Ping timeout: 255 seconds)
10:27:13 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:af0b:4d4f:7a12:c449) (Quit: WeeChat 2.8)
10:27:35 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
10:27:39 <merijn> I doubt it? :p
10:33:35 × shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 256 seconds)
10:34:33 Ram-Z joins (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df)
10:35:37 × king_gs quits (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Quit: king_gs)
10:35:53 king_gs joins (~Thunderbi@187.201.41.239)
10:39:25 <albet70> f (z f (g x)) ==?
10:39:50 <albet70> z . g but f wrapped them
10:40:42 <int-e> @pl \f z g x -> f (z f (g x))
10:40:43 <lambdabot> ap ((.) . (.) . (.)) (((.) .) . flip id)
10:41:04 <int-e> this is about as helpfule as I expected it to be
10:41:07 <int-e> -e
10:41:16 <opqdonut> albet70: did you mean f (z (f (g x))) ?
10:41:30 <opqdonut> since that's just f.z.f.g
10:42:11 <mauke> @pl \f -> f . z . f . g
10:42:11 <lambdabot> ap (.) ((z .) . (. g))
10:42:15 <int-e> what happened to the x ;-)
10:42:49 <opqdonut> if that's a common pattern for you you could do something like `withf = (f.)` and then use `withf z . withf g`
10:45:36 <albet70> fmap f (z .g)?
10:46:27 <opqdonut> that's just f.z.g
10:46:28 × CiaoSen quits (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
10:46:42 × freeside quits (~mengwong@202.161.55.11) (Ping timeout: 255 seconds)
10:48:24 __monty__ joins (~toonn@user/toonn)
10:49:19 × razetime quits (~Thunderbi@117.193.6.245) (Remote host closed the connection)
10:59:04 × gpncarl quits (~gpncarl@210.12.195.6) (Ping timeout: 246 seconds)
11:15:59 mmhat joins (~mmh@p200300f1c70e928aee086bfffe095315.dip0.t-ipconnect.de)
11:17:10 xff0x joins (~xff0x@2405:6580:b080:900:9a0c:738d:f5ce:fcbe)
11:17:36 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
11:18:05 × mbuf quits (~Shakthi@49.204.119.151) (Ping timeout: 255 seconds)
11:18:22 <tomsmeding> int-e: that ((.) . (.) . (.)) is just beautiful though
11:18:34 <tomsmeding> the entire expression is great
11:19:52 freeside joins (~mengwong@103.252.202.170)
11:20:12 × king_gs quits (~Thunderbi@187.201.41.239) (Read error: Connection reset by peer)
11:20:54 king_gs joins (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7)
11:26:41 mbuf joins (~Shakthi@49.205.81.42)
11:27:13 gpncarl joins (~gpncarl@210.12.195.6)
11:41:16 <albet70> what if there are more? f (a (f b (z f (g x))
11:43:08 × michalz quits (~michalz@185.246.204.125) (Ping timeout: 268 seconds)
11:45:16 michalz joins (~michalz@185.246.207.203)
11:46:30 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
11:53:27 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
11:54:32 <tomsmeding> albet70: did you mean this? f (a (f (b (z (f (g x))))))
11:54:39 <tomsmeding> not the same thing
11:55:37 <tomsmeding> if you do, and all of f,a,b,z,g are of type A -> A for some A, then foldr (.) id (map (f .) [a, b, z, g])
11:57:01 <tomsmeding> or: foldr ($) x (map (f .) [a, b, z, g])
12:00:30 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 255 seconds)
12:00:47 freeside joins (~mengwong@103.252.202.170)
12:02:00 <albet70> no, I mean f apply on every function when it's applied
12:02:37 <albet70> f(g x); f (z( f (g x));
12:03:05 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
12:03:29 <albet70> f (b( f( z(f (g x)))))
12:03:59 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine)
12:21:39 <tomsmeding> albet70: is that not literally what I wrote
12:25:59 × cassaundra quits (~cassaundr@user/cassaundra) (Ping timeout: 264 seconds)
12:32:55 × urdh quits (~urdh@user/urdh) (Ping timeout: 252 seconds)
12:35:08 <albet70> f (a (f (b (z (f (g x)))))) between b and z you miss one f
12:40:36 × malte quits (~malte@152.89.107.66) (Remote host closed the connection)
12:42:07 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
12:42:08 urdh joins (~urdh@user/urdh)
12:42:40 × king_gs quits (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Ping timeout: 246 seconds)
12:43:33 king_gs joins (~Thunderbi@187.201.41.239)
12:45:53 <tomsmeding> albet70: oh right
12:46:07 <tomsmeding> but you missed it too ;)
12:46:20 <tomsmeding> but the foldr expressions have the f in between as well
12:48:06 × king_gs quits (~Thunderbi@187.201.41.239) (Ping timeout: 255 seconds)
12:52:40 L29Ah joins (~L29Ah@wikipedia/L29Ah)
13:02:36 × gurkenglas quits (~gurkengla@dynamic-046-114-177-034.46.114.pool.telefonica.de) (Ping timeout: 255 seconds)
13:03:36 king_gs joins (~Thunderbi@187.201.41.239)
13:04:24 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 255 seconds)
13:06:39 × MajorBiscuit quits (~MajorBisc@145.94.142.245) (Ping timeout: 255 seconds)
13:08:58 <Inst> this is sad, could i beg for some help getting monomer to install on Windows / 9.4.4?
13:09:03 <Inst> monomer is being updated
13:10:52 <Inst> nanovg is C + python, but I still can't figure out how to get it to install via my current version of cabal
13:15:49 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
13:16:05 × Alex_test quits (~al_test@178.34.160.79) (Read error: Connection reset by peer)
13:16:05 × AlexNoo quits (~AlexNoo@178.34.160.79) (Remote host closed the connection)
13:16:07 × AlexZenon quits (~alzenon@178.34.160.79) (Quit: ;-)
13:16:56 <Inst> installing freetype2 first now
13:17:40 × mmhat quits (~mmh@p200300f1c70e928aee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 3.8)
13:17:52 <segfaultfizzbuzz> is there such a thing as "approximately" being of some type? that is, is there any fairly well accepted method for reasoning about approximately having a certain type?
13:18:09 MajorBiscuit joins (~MajorBisc@145.94.142.245)
13:19:15 × Cale quits (~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com) (Ping timeout: 255 seconds)
13:22:16 Cale joins (~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com)
13:22:24 × akegalj quits (~akegalj@93-139-168-105.adsl.net.t-com.hr) (Quit: leaving)
13:23:12 <geekosaur> depends on what you mean by approximately. "isomorphic to" is certainly a thing
13:23:12 × king_gs quits (~Thunderbi@187.201.41.239) (Read error: Connection reset by peer)
13:24:44 king_gs joins (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7)
13:24:46 <segfaultfizzbuzz> well i was reflecting on how "binary" a lot of programming is
13:25:18 <segfaultfizzbuzz> so something either is a tree or it is not, but perhaps something can "approximately" be a tree
13:25:33 <segfaultfizzbuzz> and a related concept might be that you can project something which is not a tree onto a tree
13:25:41 freeside joins (~mengwong@103.252.202.170)
13:25:41 lyle joins (~lyle@104.246.145.237)
13:27:59 <merijn> segfaultfizzbuzz: sounds like you want fuzzy logic
13:28:28 AlexZenon joins (~alzenon@178.34.160.79)
13:28:36 AlexNoo joins (~AlexNoo@178.34.160.79)
13:28:48 <geekosaur> isomorphism may cover that. if two types can represent the same values, they are isomorphic. the exact representation may differ (you may have () vs. Bool, for example, depending on what they're contained in)
13:28:49 <segfaultfizzbuzz> well that doesn't integrate with the type system, i dont think?
13:29:10 <geekosaur> fuzzy logic may be another approach, again depending on what you're looking for
13:29:24 <geekosaur> not with Haskell's, but Haskell's is not the only type system in existence
13:30:02 <segfaultfizzbuzz> put another way, is there a differentiable type system?
13:30:23 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 255 seconds)
13:31:15 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
13:31:15 <geekosaur> I am not well enough versed in type theory to answer that, sorry
13:32:14 <segfaultfizzbuzz> another question this raises is: if i am checking that X has type T, then X must have some kind of structure prior to being checked against T
13:32:36 <segfaultfizzbuzz> let's call that structure S (before X is known to be T), what is S?
13:32:42 <segfaultfizzbuzz> is S a graph?
13:33:01 CiaoSen joins (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
13:33:43 Alex_test joins (~al_test@178.34.160.79)
13:34:25 <geekosaur> depends on the type system. In Haskell, the structure determines the type; this is why we have and require constructors for most types, because constructors define the structure. (Under the hood, even numbers and characters have constructors.)
13:35:00 <geekosaur> but it's not really a graph in the case of Haskell because the outer constructor is what determines the type
13:35:07 <geekosaur> s/outer/&most/
13:35:27 × MajorBiscuit quits (~MajorBisc@145.94.142.245) (Ping timeout: 255 seconds)
13:36:05 <segfaultfizzbuzz> so it's something like all constructors constitute valid types by definition so you don't need to check anything?
13:36:08 MajorBiscuit joins (~MajorBisc@145.94.142.245)
13:36:18 <segfaultfizzbuzz> err perhaps i should say "by construction"
13:37:36 cfricke joins (~cfricke@user/cfricke)
13:38:21 <geekosaur> every data constructor is associated with a type via `data` or `newtype`, so yes, by construction every literal value has a well defined type
13:39:02 <geekosaur> this does have some teeth hidden in it, though: a literal number is special-cased by the compiler to be `fromInteger (integer_representation_of_value)`
13:39:17 <geekosaur> (and similar for strings if OverloadedStrings is enabled)
13:39:35 <geekosaur> this goes through a typeclass, so a literal number (resp. string) is actually a function
13:40:09 × kmein quits (~weechat@user/kmein) (Quit: ciao kakao)
13:41:58 kmein joins (~weechat@user/kmein)
13:42:16 <segfaultfizzbuzz> hm ok
13:42:53 <geekosaur> on the other hand, a literal Char is mapped by the compiler to the C# internal constructor applied to a primitive type (Word32#, here representing a Unicode codepoint)
13:45:08 <geekosaur> primitive types work a little differently, but are simpler because you can't be polymorphic over them (polymorphism typically requires you to be manipulating pointers to values which will be the same size, not values themselves which may differ). so their types can be determined by the constructors used on them
13:46:18 <geekosaur> (`C#` is only special because it's supplied by the compiler; it is possible but not particularly recommended for user code to work with primitive types directly, following the same rules as the compiler-supplied constructors so the compiler knows what primitive types are involved)
13:46:50 <geekosaur> @src Int
13:46:50 <lambdabot> data Int = I# Int#
13:46:55 <geekosaur> @src Integer
13:46:55 <lambdabot> data Integer = S# Int#
13:46:55 <lambdabot> | J# Int# ByteArray#
13:47:03 <geekosaur> @src Double
13:47:03 <lambdabot> data Double = D# Double#
13:47:41 <geekosaur> iirc the Integer one is out of date and there are separate constructors for positive and negative bigints these days
13:50:00 × Xeroine_ quits (~Xeroine@user/xeroine) (Read error: Connection reset by peer)
13:50:10 <albet70> tomsmeding , what if that f is >>=, so that >>= chain could be foldr ...?
13:51:14 lortabac joins (~lortabac@2a01:e0a:541:b8f0:d08:65bc:8e79:dbb5)
13:51:55 × oldfashionedcow quits (~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.8)
13:52:35 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
13:55:18 k33 is now known as kee
13:59:25 × Cale quits (~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com) (Ping timeout: 268 seconds)
14:00:49 × kmein quits (~weechat@user/kmein) (Quit: ciao kakao)
14:02:16 Cale joins (~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com)
14:02:56 kmein joins (~weechat@user/kmein)
14:03:07 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
14:03:17 × king_gs quits (~Thunderbi@2806:103e:29:1779:19a5:ca6b:2f79:45e7) (Read error: Connection reset by peer)
14:03:30 king_gs joins (~Thunderbi@187.201.41.239)
14:03:56 gensyst joins (gensyst@user/gensyst)
14:04:24 <gensyst> foo :: IO a, how can I access a at the type level (i believe i found a case where i need to access a at the type level)
14:04:44 <gensyst> i'm sure i could come up with something using unsafePerformIO myself, but any standard way to do it?
14:05:06 <Hecate> gensyst: "access" meaning…?
14:06:31 <gensyst> Hecate, GADT stuff, check this out (merijin's example from yesterday): https://dpaste.com/HDH7H3L6D I presume (correct me if wrong) both those "case" are occurring at the type level.
14:07:03 <gensyst> So now I have a (different) situation where I have foo :: IO a but want to do case a of ...
14:07:19 <gensyst> i might be wholly wrong
14:07:29 <Hecate> let me load that in the playground
14:08:00 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 248 seconds)
14:08:12 <int-e> hmm, type family ArgOf a; type instance ArgOf (f a) = a
14:08:34 freeside joins (~mengwong@103.252.202.170)
14:09:28 waleee joins (~waleee@176.10.137.138)
14:10:43 <int-e> I think the cases don't happen at the type level unless the function gets specialized to State A or State B. Though there's enough propagation of type information that the compiler will know that the inner matches are complete.
14:11:38 <int-e> And even then there *still* will be a pattern match do deconstruct the respective data constructor, AState or BState.
14:12:12 <int-e> (respectively SettingsA and SettingsB)
14:12:32 <Hecate> https://play-haskell.tomsmeding.com/saved/vIq1JbGm
14:12:37 <Hecate> if people want to toy
14:12:58 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 246 seconds)
14:13:15 <albet70> (a >>= b) >>= c == foldl1 (>>=) [a, b, c]
14:15:30 freeside joins (~mengwong@103.252.202.170)
14:15:38 <int-e> gensyst: I don't understand what you mean by "access" either, in the context of that code. It made sense to me when the type was "IO a".
14:15:56 <gensyst> one sec i'll try to come up with an example
14:16:03 <int-e> (And type families can extract the "a" from "IO a".)
14:17:38 kuribas parts (~user@ptr-17d51eo29egdbr5f18m.18120a2.ip6.access.telenet.be) (ERC (IRC client for Emacs 27.1))
14:18:13 × king_gs quits (~Thunderbi@187.201.41.239) (Ping timeout: 246 seconds)
14:19:33 × MajorBiscuit quits (~MajorBisc@145.94.142.245) (Ping timeout: 255 seconds)
14:19:48 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
14:20:14 jimmy2shoots joins (~Jimmy_Bam@user/jimmy2shoots)
14:20:23 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 268 seconds)
14:22:57 thegeekinside joins (~thegeekin@189.180.97.223)
14:24:42 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
14:28:26 oldfashionedcow joins (~Rahul_San@user/oldfashionedcow)
14:29:59 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
14:32:07 <gensyst> int-e, this is what i mean: https://play-haskell.tomsmeding.com/saved/1xZrWXFG
14:32:20 <gensyst> it compiles, but fails at undefined (the extraction)
14:32:38 <gensyst> i was hoping the case is at compile-time, but it appears you're right. it evaluates the undefined at run-time
14:34:25 <Hecate> (I don't see an `undefined` in the playground you shared. Are you sure you saved?)
14:35:30 ystael joins (~ystael@user/ystael)
14:35:50 <gensyst> Here's the saved one, sorry: https://play-haskell.tomsmeding.com/saved/ukTfC3nd
14:37:02 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 268 seconds)
14:39:32 <Hecate> heavens
14:39:36 <Hecate> ok I see better what you mean
14:40:06 <int-e> yeah, it goes back to the idea that those pattern matches are compile time checks... they really are not
14:40:19 <Hecate> gensyst: it may sound like shifting the goalposts but are you sure that's how you want to handle your configuration? Would you mind telling us a bit more about your situation?
14:40:31 razetime joins (~Thunderbi@117.193.6.245)
14:41:39 <gensyst> Hecate, the original design goal was in the original link: https://dpaste.com/HDH7H3L6D -- to keep the two separate types Settings and State in sync at compile-time and the current problem arose out of that eventually.
14:41:45 <merijn> gensyst: Ah, yeah that example is exactly the kinda thing I said was hard to do :)
14:41:46 <gensyst> I'm starting to understand how type-safety starts infecting things :)
14:41:57 <gensyst> oh damn lol
14:42:21 <int-e> gensyst: GADTs are *data*, and your particular GADT has two constructors. Pattern matching is basically the same as for the usual ADTs, except that some cases may be proven impossible statically.
14:42:30 <merijn> gensyst: You can tackle that using an existential, but unless you can restrict the existential to the edges it becomes painful
14:43:03 <tomsmeding> gensyst: am I correct in saying that you want to get what amounts to a boolean here from the type level? (i.e. whether mode is A or B)
14:43:07 <tomsmeding> and use that on the term level
14:43:34 <tomsmeding> types are erased at runtime in Haskell, so to do this you need to have some value-level witness of that boolean
14:43:40 <int-e> The usual mechanism to "branch on types" is type classes, but the switch often still happens at runtime in the form of producing a suitable dictionary for the type class when the actual type is known.
14:43:47 elbear joins (~lucian@109.101.137.234)
14:43:59 <tomsmeding> and indeed, a typeclass dictionary is a runtime _value_
14:44:09 <Hecate> (and aggressively specialising the functions that take the tc I imagine)
14:44:15 MajorBiscuit joins (~MajorBisc@145.94.142.245)
14:45:40 <gensyst> tomsmeding, so the issue here is I have no arguments dependent on mode and only a IO?
14:45:59 <tomsmeding> gensyst: no, the issue is that makeSettings does not have any inputs that witness whether mode is A or B
14:46:38 <tomsmeding> gensyst: https://play-haskell.tomsmeding.com/saved/VD03NhwL
14:46:39 <merijn> gensyst: basically, the branch of the case has to depend on the result type (instead of any function input)
14:46:51 <merijn> gensyst: but you can't branch on types
14:46:52 <tomsmeding> here I added an argument to makeSettings (the typeclass dictionary of KnownMode) that witnesses the choice
14:46:55 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
14:47:06 <gensyst> good grief lol
14:47:12 <tomsmeding> you can branch on types at compile time
14:47:14 <tomsmeding> not at runtime
14:47:28 <gensyst> what have a gotten myself into :S
14:47:36 <gensyst> i've been plunged into type-level programming
14:47:38 <tomsmeding> gensyst: possible cop-out: just pass in a Settings value filled with undefineds
14:47:41 <tomsmeding> and pattern-match on that
14:47:55 <merijn> gensyst: There is an easier solution, though
14:48:13 <merijn> gensyst: I'm assuming the problem is that "State m" is a small part of a larger datatype?
14:48:41 <tomsmeding> gensyst: https://play-haskell.tomsmeding.com/saved/F3BP50uW
14:48:45 <gensyst> gensyst, yeah
14:48:52 <tomsmeding> gensyst: mentioning yourself
14:49:25 <gensyst> tomsmeding, that's a much simpler solution
14:49:39 <tomsmeding> it's not as elegant maybe, but it does work :p
14:49:40 <gensyst> i'll do that for now
14:50:08 <tomsmeding> gensyst: slightly cleaned up version of that would be to define a second GADT, just like Settings, but without all the fields
14:50:14 <tomsmeding> and pass that in as a template
14:50:18 <[Leary]> gensyst: Or `data SMode :: Mode -> Type where { SA :: SMode A; SB :: SMode B }; makeSettings :: SMode mode -> IO (Settings mode)`
14:50:22 <merijn> gensyst: You could split it so that you have "data GenericSettings (m :: Mode) = GSettings { modeSettings :: Settings m, ...other fields here... }" and then write "makeSettings :: Settings m -> GenericSettings m"
14:50:29 <tomsmeding> i.e. [Leary]'s SMode
14:52:11 <Inst> kill me
14:52:18 <Inst> i can't get nanovg-hs to install
14:52:20 <Inst> on Windows
14:52:45 <tomsmeding> gensyst: one perspective on this is that it's _not_ type-level programming; it's normal value-level programming. The only things that the types are doing is informing GHC of some assumptions that don't follow directly from the values themselves, so that GHC can tell you something about the coherence/consistency of your code
14:53:37 <tomsmeding> even my knownMode thing really only was a boolean: Left () or Right (). No other data. The only thing that the type-level stuff did was let GHC know that pattern matching on this knownMode thing tells you something about what the result type of makeSettings should be
14:53:45 <tomsmeding> Inst: what's the error
14:53:49 freeside joins (~mengwong@103.252.202.170)
14:53:58 <Inst> thanks for being helpful, tomsmeding
14:54:52 tomsmeding rarely uses windows so is not sure if I can be helpful
14:55:23 <Inst> https://cdn.discordapp.com/attachments/505370075402862594/1075766776085876777/image.png
14:55:43 <tomsmeding> oh pkg-config
14:55:44 <Inst> probably this is an issue with freetype / std_truetype not being visible in mingw?
14:55:53 <tomsmeding> does mingw have pkg-config in the first place
14:56:16 <tomsmeding> does typing 'pkg-config' in your prompt give anything
14:56:22 <Inst> well, i have an etc, a home, a wingw64
14:56:30 <tomsmeding> pkg-config is a program
14:56:48 <Inst> please specify at least one package in the command line
14:56:57 <tomsmeding> oh that's good
14:56:57 <geekosaur> mingw doesn't have pkgconfig as installed
14:57:01 <Inst> but i'm trying to figure out what's gone wrong with pacman, because pacman in mingw can't seem to see jack
14:57:04 <geekosaur> but you can install it
14:57:23 <gensyst> merijn, that sounds like just mere trickery to get an argument into the function?
14:57:25 <Inst> pkg-config freetype, no response
14:57:27 <tomsmeding> Inst: try 'cabal install monomer -f stb_truetype'
14:57:31 <gensyst> merijn, (which i can case on)
14:58:42 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 255 seconds)
14:58:47 <Inst> same error
14:58:53 <Inst> i'd rather do freetype, it's sort of embarrassing
14:58:57 <Inst> monomer just got updated last month
14:59:03 <Inst> nanovg is failing builds, though, strange
14:59:08 <int-e> it really shouldn't be the same error though
14:59:17 <merijn> gensyst: Well, the thing that makes live difficult are "runtime dispatch on the type" (i.e. what to return based on 'A or B'), you can do it via existentials, but that's a bit painful usually i.e. "data SomeSettings = forall m . SomeSettings (Settings m)" or something like that
14:59:20 <int-e> unless the -f must go first?
14:59:29 <tomsmeding> Inst: yeah, screenshot of error with the -f?
14:59:46 <merijn> gensyst: So what you want is to never return a value depending on what the Mode is
14:59:51 <Inst> https://media.discordapp.net/attachments/968989726633779215/1075793613830762516/image.png
15:00:10 <tomsmeding> wut
15:00:22 freeside joins (~mengwong@103.252.202.170)
15:00:33 <tomsmeding> Inst: you're also missing glew
15:00:39 <tomsmeding> in the pkg-config database, at least
15:00:40 <Inst> glew?
15:00:55 <tomsmeding> it's an OpenGL support library
15:01:01 int-e would try `cabal install -f stb_truetype monomer` instead
15:01:15 <Inst> it seems to be an issue with mingw, unfortunately
15:01:15 <int-e> (but I'm not sure whether this actually makes a difference to cabal-install)
15:01:22 <Inst> i can't get pacman to install anything in the mingw console ;_;
15:01:26 <tomsmeding> Inst: what does 'pkg-config --list-all' give
15:01:43 <tomsmeding> does mingw use pacman these days? I thought it had its own GUI
15:01:59 <int-e> have you actually installed the C libraries needed here? glew and freetype2 (if that's what you want to use)?
15:02:00 <Inst> https://media.discordapp.net/attachments/968989726633779215/1075794149070082129/image.png
15:02:09 <Inst> should I be using something other than pacman in mingw?
15:02:15 <Inst> i can't actualyl install either right now
15:02:44 <Inst> this is fun
15:02:51 <Inst> apt-get not installed, mingw-get not installed
15:03:04 <tomsmeding> oh apparently it's pacman these days "if you installed MinGW through MSYS2"
15:03:05 <Inst> probably the mingw is configured as a complete slave to cabal
15:03:11 <tomsmeding> hardly
15:03:11 <int-e> That looks like a no... well, assuming mingw actually packages the .pc files with those libraries. No clue whether it does.
15:03:29 <int-e> cabal-install can't do that.
15:03:34 <Inst> pacman -S get should work, right?
15:03:46 <Inst> as in, it'd try to update the get binary in linux?
15:03:59 <tomsmeding> Inst: what's the package name for freetype2 in pacman? What does pacman -Ql <thatpackagename> give?
15:04:43 <Inst> package not found
15:04:56 <tomsmeding> then -S it first lol
15:05:09 <Inst> not found
15:05:15 <tomsmeding> pacman -Ss freetype2
15:05:24 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 268 seconds)
15:05:27 <tomsmeding> it's probably got a longer name
15:05:34 <tomsmeding> mingw/...freetype...
15:05:39 <Inst> gives no return, then gives package not found on -S
15:06:07 <tomsmeding> Inst: pacman -Ss freetype
15:06:09 <Inst> zing, thanks
15:06:10 <Inst> working
15:06:14 <Inst> https://www.google.com/search?q=mingw+freetype2&ei=fUXuY9_lMeSTwt0Px_6p6A0&ved=0ahUKEwifmOzep5r9AhXkibAFHUd_Ct0Q4dUDCBA&uact=5&oq=mingw+freetype2&gs_lcp=Cgxnd3Mtd2l6LXNlcnAQAzIGCAAQFhAeMgYIABAWEB4yBQgAEIYDMgUIABCGAzIFCAAQhgMyBQgAEIYDOgoIABBHENYEELADOgcIABCwAxBDOgQIABBDOgYIABAKEEM6CAgAEIAEELEDOgsILhCABBDHARCvAToHCAAQsQMQQzoFCAAQgAQ6BQgAEJECOgkIABAWEB4Q8QQ6CAgAEBYQHhAPSgQIQRgAUJ8DWK8TYMEUaANwAXgAgAFniAHbCZIBBDEzLjKYAQCgAQHIAQrAAQE&sclient
15:06:14 <Inst> =gws-wiz-serp
15:06:19 <int-e> huh
15:06:36 tomsmeding . o O ( google.com/search?q=mingw+freetype2 )
15:06:57 <tomsmeding> Inst: so you _didn't_ install freetype, did you?
15:07:01 <tomsmeding> you got "not found"
15:07:05 <int-e> (yeah what even is all that extra crap in that URL)
15:07:05 <tomsmeding> you lied ;)
15:07:11 <tomsmeding> int-e: tracking
15:07:27 <tomsmeding> well, not only, but also
15:07:43 <Inst> i don't know how to install freetype
15:08:02 <tomsmeding> Inst: pacman -Ss freetype
15:08:05 <tomsmeding> what does that give
15:08:06 <geekosaur> if you're on a newer ghc then you also have to worry about the clang-based mingw having a distinct set of packages from the gcc-based one
15:08:20 <tomsmeding> omg mingw is a mess
15:08:23 × elbear quits (~lucian@109.101.137.234) (Quit: leaving)
15:08:26 <Inst> it gives nothing
15:08:28 <tomsmeding> it's slowly coming back to me
15:08:29 <geekosaur> https://repo.msys2.org/mingw/clang64/
15:08:38 <Inst> and yeah, Windows development is pretty mouse operator, as interpreted by Kowainik
15:08:43 <tomsmeding> Inst: if you 'pacman -Syu' first?
15:09:07 <tomsmeding> I dealt with cygwin and mingw like 6 years ago and I still have bad memories
15:09:13 <Inst> https://kowainik.github.io/posts/2019-02-06-style-guide#naming
15:09:16 <int-e> LOL. https://int-e.eu/~bf3/tmp/gws.png
15:09:32 <tomsmeding> lol
15:09:58 <Inst> reinstalled
15:10:01 <Inst> going to try with cabal again
15:10:04 <Inst> *installed
15:10:09 <tomsmeding> Inst: what package did you install precisely
15:10:14 Sgeo joins (~Sgeo@user/sgeo)
15:11:25 × MajorBiscuit quits (~MajorBisc@145.94.142.245) (Ping timeout: 246 seconds)
15:11:43 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
15:12:12 <Inst> crap, still not working, pkgconfig shows freetype in mingw64
15:12:17 <Inst> maybe i have to try again for mingw-32
15:12:30 <tomsmeding> unlikely, but you could try
15:12:40 <tomsmeding> Inst: what does cabal complain about, still freetype?
15:12:44 <Inst> pacman -S mingw-w64-x86_64-freetype
15:12:55 <Inst> pacman -S mingw-w64-x86_64-glew
15:13:07 <Inst> not found in pkg-config db
15:13:15 <tomsmeding> Inst: _what_ is not found in pkg-config db
15:13:24 <Inst> pkg-config list-all shows it
15:13:31 <tomsmeding> Inst: are those the only hits when you 'pacman -Ss' freetype and glew?
15:13:35 <Inst> [__0] rejecting: monomer-1.5.1.0 (conflict: pkg-config package glew-any, not
15:13:35 <Inst> found in the pkg-config database)
15:13:44 <Inst> well, i googled it, and it seemed to have worked
15:13:51 <Inst> and it's currently listed on the mingw-w64 pkgdb
15:14:33 <tomsmeding> Inst: what does 'pkg-config --libs glew' give? And 'pkg-config --libs glew-any'?
15:15:40 <Inst> $ pkg-config --libs glew
15:15:40 <Inst> -lglew32
15:15:53 <Inst> $ pkg-config --libs glew-any
15:15:54 <Inst> Package glew-any was not found in the pkg-config search path.
15:15:54 <Inst> Perhaps you should add the directory containing `glew-any.pc'
15:15:54 <Inst> to the PKG_CONFIG_PATH environment variable
15:15:54 <Inst> Package 'glew-any', required by 'virtual:world', not found
15:16:00 <Inst> sorry
15:16:02 tomsmeding wonders where that glew-any is coming from
15:16:29 <int-e> the pkg-config name should be 'glew'
15:16:33 <tomsmeding> yeah
15:16:47 <tomsmeding> and the nanovg cabal file has pkgconfig-depends: glew
15:16:52 <tomsmeding> where does the -any come from
15:17:02 <int-e> the -any is from cabal, because there's no version range given for the library
15:17:09 <geekosaur> ^
15:17:17 <tomsmeding> int-e: that's bonkers
15:17:20 <tomsmeding> that's not pkg-config syntax
15:17:21 <geekosaur> normally a pkgconfig name is <name>-<version>
15:17:29 <tomsmeding> sounds like a cabal bug
15:17:33 <tomsmeding> do not modify the name
15:17:37 <Inst> report in #cabal?
15:17:46 <Inst> i just need to get it to work at this point, to play around with monomer
15:17:52 <int-e> tomsmeding: I'd assume that it's only using that name in reporting the error
15:17:54 <tomsmeding> version constraints go after a space after the package name, and "-any" is not even a version constraint
15:17:57 <tomsmeding> ah
15:18:06 <Inst> possibly display bug
15:18:16 <tomsmeding> Inst: a note, monomer is a library, don't 'cabal install' libraries
15:18:20 <int-e> it's not even a bug, though it may be confusing as a feature
15:18:21 <tomsmeding> put them as dependencies in your cabal project
15:18:46 <Inst> yeah, second respected /decent haskeller who told me that
15:18:55 <Inst> i'm just being lazy and abusing :set -package in ghci and ghc -package
15:19:07 <Inst> hey, I used to --lib ;)
15:19:16 <Inst> and repeatedly nuke my ghcup install
15:19:24 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
15:19:29 <geekosaur> dont need to do that, just the environment file
15:19:45 × waleee quits (~waleee@176.10.137.138) (Ping timeout: 252 seconds)
15:19:46 <geekosaur> which you can push into a specific directory so it only affects stuff in that directory
15:19:53 <tomsmeding> Inst: cabal install monomer -f stb_truetype -v 2>&1 | Tee-Object log.txt
15:19:57 <geekosaur> (xmonad does this when using cabal instead of stack)
15:20:30 czy joins (~user@50.30.140.22)
15:20:38 <gensyst> merijn, "gensyst: So what you want is to never return a value depending on what the Mode is", but... that's what we've been successfully doing right?
15:20:53 <gensyst> with your solution and with tomsmeding / [Leary] solutions
15:20:58 <Inst> https://paste.tomsmeding.com/i1qgKi3p
15:21:26 × zaquest quits (~notzaques@5.130.79.72) (Quit: Leaving)
15:21:30 <Inst> wait, wtf
15:21:32 <int-e> "Cannot find pkg-config program"
15:21:34 <Inst> cannot find pkg-config?
15:21:35 <int-e> fun.
15:21:48 <merijn> gensyst: No, in my initial example you're not depending on the type of Mode, you're depending on the constructor of Settings
15:22:10 <Inst> adding this to my path now
15:22:13 <Inst> C:\ghcup\msys64\mingw64\bin
15:22:35 <tomsmeding> int-e: indeed cabal seems to add that -any, that's confusing
15:22:40 <merijn> gensyst: You're basically using the Mode to let GHC figure out that you will only have matching pairs of Settings/State constructors
15:23:38 <merijn> gensyst: You're depending on the value of SettingsA, it's just that GHC can determine that SettingsA gives mode A and only AState can match the mode A
15:23:45 <Inst> stuffing in path doesn't seem to help :(
15:24:16 <merijn> gensyst: So you're using Mode to relate the Settings and State constructors to each other, but you don't actually decide anything based on Mode, you decide based on SettingsA/SettingsB and AState/BState
15:24:41 <Inst> very nice
15:24:57 <merijn> gensyst: but your example of "makeSettings :: Settings m" <- this is problematic, because there's no input value to relate 'm' too, so now you *are* depending on the type of 'm'
15:24:58 <Inst> it's begging for sdl2 now, can easily find it via google and then pacman the mingw variant into existence
15:25:01 <Inst> thanks for the help!
15:25:15 <tomsmeding> Inst: cabal finds pkg-config now?
15:25:28 <tomsmeding> Inst: pacman -Ss sdl2
15:25:51 Guest|37 joins (~Guest|37@45.138.211.81)
15:26:29 <Inst> doesn't work, needs mingw variant, found it already via google and isntalling
15:26:41 <tomsmeding> Inst: -Ss /= -S
15:26:45 <tomsmeding> Ss is search, S is install
15:27:03 <Inst> oh nice, it's working now
15:27:08 <Inst> last time i had it running, it gave me nothing
15:27:24 <Inst> rpobably a bad pacman -Syu
15:27:26 <tomsmeding> Inst: maybe because you were searching for freetype2 whereas the package was called .....freetype ?
15:27:31 <int-e> Huh this suggests reinstalling cabal-install if it was installed before pkg-config: https://github.com/haskell-gi/haskell-gi/issues/291#issuecomment-625155277
15:27:31 <tomsmeding> or that
15:27:43 <tomsmeding> int-e: they have things working
15:27:45 <int-e> Not sure whether this is applicable here, but it's an idea.
15:27:47 <int-e> Ah
15:27:55 <tomsmeding> or at least, pkg-config
15:28:09 <Inst> monomer not being obnoxious anymore! cool!
15:28:30 <int-e> tbf I was only 30 seconds late this time, this is rather good for me ;)
15:28:45 <tomsmeding> Inst: a way to get your global-package feel without the pitfalls of cabal-installing a library: cabal repl -b monomer
15:28:49 <tomsmeding> int-e: lol
15:29:18 <tomsmeding> your nicks are annoying, I need to type 3 (!) characters of your nick to get tab-completion to give the right name
15:29:39 <gensyst> merijn, ok now things are clearer, thanks
15:29:51 <sm> 5 characters here (element) :)
15:30:09 <gensyst> merijn, tomsmeding, [Leary] and everyone, you gave me a lot to think about today. have to sleep on this. thanks!
15:30:15 <Inst> thanks so much for putting up with my windows newbie bs
15:30:24 <tomsmeding> gensyst, Inst: cheers :)
15:30:35 <tomsmeding> Inst: I'm as much a windows newbie as you are though
15:30:53 <Inst> i'm reasonably competent, i tried arch-linux but arch-linux was a really bad idea
15:31:01 × Cale quits (~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com) (Ping timeout: 246 seconds)
15:31:03 <tomsmeding> I've just used pacman before because, y'know, it's arch's package manager and I use arch daily :p
15:31:09 <geekosaur> arch is okay, just avoid its haskell ecosystem
15:31:11 × gensyst quits (gensyst@user/gensyst) (Quit: Leaving)
15:31:14 <Inst> arch-linux was roughly at the range of what i could get working, but not complicated
15:31:24 <Inst> afaik there's a war between arch-linux haskell ecosystem and mainstream haskell, no?
15:31:26 <geekosaur> use ghcup to install a hackell environment
15:31:33 <tomsmeding> yeah
15:31:37 <tomsmeding> hackell
15:31:39 <geekosaur> *haskell
15:31:48 <dminuoso_> Inst: "war" is one way to put it.
15:31:53 <geekosaur> just noticed that, yes. amusing typo
15:31:55 <tomsmeding> quiet war
15:32:00 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 255 seconds)
15:32:06 <Inst> like cabal vs stack war
15:32:08 <tomsmeding> war of sighs
15:32:10 <sm> detente
15:32:11 <Inst> stack was great, just poorly implemented
15:32:37 <Inst> i did not enjoy the idea of installing a different version of GHC everytime I wanted to compile
15:32:38 <sm> Inst: nonsense
15:32:41 <dminuoso_> The super strange thing about archlinux is, that its all dynamically linked haskell packages for what is probably the poorest reason and perhaps a good reason why to stay clear of ArchLinux.
15:32:53 <sm> sorry, didn't mean to be rude
15:32:56 <Inst> it's correct in the sense of reproducible builds in a language that aggressively breaks stuff
15:33:06 <Inst> i get trolled really heavily elsewhere, so I don't mind
15:33:13 <Inst> it's just annoying
15:33:15 <dminuoso_> The core reason is that archlinux haskell packages are uploaded from the singular maintainers personal computer, and because he has incredibly poor internet speed, he judged that dynamic linking would improve this problem.
15:33:22 <dminuoso_> (you cant make this up.
15:33:29 <geekosaur> you can typically force a resolver for something which will constrain the ghc it uses among other things
15:33:48 <geekosaur> (stack)
15:33:54 <Inst> incidentally someone wants me to rewrite warp as an exercise
15:34:45 <Inst> for some reason people think Michael Snoyman defected to Rust
15:34:52 <Inst> but warp / wai could use some love, and he's maintaining it these days
15:36:03 × Guest|37 quits (~Guest|37@45.138.211.81) (Ping timeout: 255 seconds)
15:37:35 <sm> dminuoso_: really ? arch has a singular maintainer ?
15:37:49 <dminuoso_> sm: no but their haskell packages had at least at the point this decision was from
15:38:14 <sm> ah
15:41:49 <dminuoso_> https://www.reddit.com/r/linux/comments/9emwtu/comment/e5qssdz/
15:42:15 <dminuoso_> For what its worth, many of the reasons are somewhat valid - but only if you have sufficient tooling around it.
15:42:20 <dminuoso_> It works great on NixOS.
15:42:42 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
15:47:05 <Inst> sorry to ask for help again, but
15:47:06 <Inst> https://paste.tomsmeding.com/IzcNwSAj
15:48:52 × jimmy2shoots quits (~Jimmy_Bam@user/jimmy2shoots) (Ping timeout: 246 seconds)
15:50:43 freeside joins (~mengwong@103.252.202.170)
15:52:35 × CiaoSen quits (~Jura@p200300c9570460002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
15:52:42 × andrewboltachev quits (~andrey@178.141.125.176) (Quit: Leaving.)
15:53:49 MajorBiscuit joins (~MajorBisc@185.214.88.34)
15:54:05 <tomsmeding> Inst: perhaps try this: cabal install monomer -f stb_truetype --ghc-option=-lssp
15:54:55 <Inst> yup, it's SDL2 that's blowing up
15:56:13 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 246 seconds)
15:57:17 <Inst> still same problem, it's sdl2, but w/e, maybe i'll try again later
15:58:15 <tomsmeding> Inst: same error?
15:58:23 <tomsmeding> I mean, I'm not sure that ghc option is going to the right place
15:58:33 <Inst> what is lssp supposed to do?
15:58:47 <tomsmeding> I'd be surer it's being passed on correctly if you start a _project_ ( ;) ) and have a cabal.project file you can put ghc-options: -lssp in
15:58:51 <tomsmeding> Inst: https://stackoverflow.com/questions/4492799/undefined-reference-to-stack-chk-fail
15:59:42 Cale joins (~cale@2605:8d80:6a1:37cd:8990:eb4c:24b5:bae4)
16:03:41 × Cale quits (~cale@2605:8d80:6a1:37cd:8990:eb4c:24b5:bae4) (Read error: Connection reset by peer)
16:04:19 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
16:04:55 <Inst> retrying with dummy
16:08:48 <Inst> this still builds up
16:08:50 <Inst> *blows up
16:08:51 <Inst> cabal build --ghc-options=-lssp
16:09:41 × mcglk quits (~mcglk@131.191.49.120) (Ping timeout: 255 seconds)
16:12:46 Sinbad joins (~Sinbad@user/sinbad)
16:13:10 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
16:13:16 mcglk joins (~mcglk@131.191.49.120)
16:13:16 <geekosaur> won't that only apply to the current package unless cabal.project has it inside a `package *` stanza?
16:13:44 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
16:15:59 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 255 seconds)
16:19:24 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
16:19:38 <geekosaur> also I think these days there's a magic package you can depend on for C++ foo (https://downloads.haskell.org/ghc/9.4.1/docs/users_guide/9.4.1-notes.html#packaging), but not sure it does what you want here
16:19:58 Cale joins (~cale@2605:8d80:6a0:b4f6:a139:9a62:b1d5:76a4)
16:22:00 × mbuf quits (~Shakthi@49.205.81.42) (Quit: Leaving)
16:22:25 <geekosaur> come to think of it you'd have to inject it into the SDL2 build which won't help
16:22:47 <geekosaur> rather, isn't really doable without vendoring SDL2
16:26:11 × thegeekinside quits (~thegeekin@189.180.97.223) (Ping timeout: 268 seconds)
16:30:23 shriekingnoise joins (~shrieking@186.137.175.87)
16:32:58 × Cale quits (~cale@2605:8d80:6a0:b4f6:a139:9a62:b1d5:76a4) (Read error: Connection reset by peer)
16:33:21 <geekosaur> mm, actually I wonder if you can inject an extra `build-depends:` via cabal.package the way you can inject e.g. `ghc-options:`
16:33:27 × ddellacosta quits (~ddellacos@146.70.165.157) (Ping timeout: 252 seconds)
16:34:29 freeside joins (~mengwong@103.252.202.170)
16:34:50 <sclv> don't think so
16:36:40 <geekosaur> might need to consider it just for that link-with-c++ package
16:37:10 <geekosaur> except it'd be somewhere between pain and horror to maintain 😞
16:38:18 <geekosaur> need a better solution to that problem… somehow
16:38:55 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 246 seconds)
16:39:15 <geekosaur> without having to hack up cabal to support umpteen different languages (it may start with C++ but watch out for rust in the rear view mirror…)
16:40:06 <geekosaur> or go, etc.
16:40:48 andrew47 joins (~andrew@156.229-30-62.static.virginmediabusiness.co.uk)
16:41:42 <andrew47> I'm using the Capability library and I've got a `Coercible a b` and a `HasState tag a m` and I would like to use a `HasState tag b m` how can I achieve that?
16:42:16 <andrew47> I get the obvious "no instace for `hasState tag b m` from context `HasState tag a m`"
16:43:24 <dminuoso_> andrew47: these are constraints, what are some of the values involved here?
16:43:58 <dminuoso_> At any rate
16:44:03 <dminuoso_> You can use `constraints` to forcibly do this
16:44:15 <andrew47> what is `constraints`?
16:44:38 <dminuoso_> https://hackage.haskell.org/package/constraints-0.13.4/docs/Data-Constraint.html
16:45:16 <dminuoso_> Or mmm you dont even need that
16:45:27 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
16:45:36 <andrew47> Can you give me an example? I don't see how that helps
16:45:41 <geekosaur> shouldn't it work to just have both constraints?
16:45:55 <geekosaur> unless something else weird is going on
16:46:16 <dminuoso_> geekosaur: Only if `(HasState tag a, Coercible a b) => HasState tag b` existed
16:46:22 <dminuoso_> But you could conjure that one up of course.
16:46:30 <andrew47> basically I have `newtype State = State { v1 :: MyState, ...}` with a bunch of deriving via things for capabilities.
16:46:54 × zeenk quits (~zeenk@2a02:2f04:a214:1e00::7fe) (Quit: Konversation terminated!)
16:47:08 <andrew47> Somewhere else I have `newtype OtherState = OtherState MyState`
16:47:32 <andrew47> and I'm exposing the interface `HasState "st" OtherState m` but I would like to use `HasState "st" MyState m`
16:47:43 <dminuoso_> andrew47: unpack and inject with `state :: forall tag s m a. HasState tag s m => (s -> (a, s)) -> m a `
16:47:52 <dminuoso_> Thats the most convenient way I think.
16:48:26 <dminuoso_> Heck you should even be able to `coerce` it directly
16:48:32 <dminuoso_> i.e. `coerce yourOtherState`
16:48:52 <andrew47> I was usng `coerce` directly before and that worked. But I was wondering if i could make the `deriving via` machinery do it for me
16:48:53 <dminuoso_> Depending on whether or not you have representational equality
16:48:59 <dminuoso_> andrew47: oh, no.
16:49:04 <dminuoso_> andrew47: You could:
16:49:23 <dminuoso_> Discard that.
16:49:32 <andrew47> kk
16:49:35 <andrew47> thanks for the help!
16:49:51 <dminuoso_> I mean its kind of the point of our type system
16:49:54 <dminuoso_> For newtypes
16:50:10 <dminuoso_> To make this magically work, use `type` rather than `newtype`
16:50:13 <geekosaur> but it's kinda the point of coerce to get around it 🙂
16:52:03 <andrew47> yeah it's a little bit fiddly because I got some type families in the mix too so I need the `newtype`
16:52:49 <andrew47> Capability's been great so far
16:54:33 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
16:56:56 × merijn quits (~merijn@195.114.232.94) (Ping timeout: 255 seconds)
16:58:14 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:d08:65bc:8e79:dbb5) (Quit: WeeChat 2.8)
16:59:37 × werneta quits (~werneta@70.142.214.115) (Remote host closed the connection)
17:00:24 freeside joins (~mengwong@103.252.202.170)
17:00:35 thegeekinside joins (~thegeekin@189.180.66.126)
17:00:58 stackdroid18 joins (14094@de1.hashbang.sh)
17:01:54 × dtman34 quits (~dtman34@2601:447:d000:93c9:45e0:f7b0:cefa:26ff) (Ping timeout: 255 seconds)
17:03:49 <juri_> what is the operation that converts a list of lists from [[a1, a2],[b1, b2]] to [[a1, b1],[a2,b2]] ?
17:05:02 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 255 seconds)
17:05:13 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:07:06 <geekosaur> > transpose [[a1, a2],[b1, b2]]
17:07:08 <lambdabot> error:
17:07:08 <lambdabot> • Variable not in scope: a1
17:07:08 <lambdabot> • Perhaps you meant one of these:
17:07:23 <geekosaur> > transpose [[a, b],[c, d]]
17:07:24 <lambdabot> [[a,c],[b,d]]
17:07:34 × MajorBiscuit quits (~MajorBisc@185.214.88.34) (Quit: WeeChat 3.6)
17:07:35 × codaraxis___ quits (~codaraxis@user/codaraxis) (Ping timeout: 246 seconds)
17:07:38 <geekosaur> simple-reflect goes only so far…
17:07:59 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:13:06 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
17:20:14 motherfsck joins (~motherfsc@user/motherfsck)
17:21:35 × razetime quits (~Thunderbi@117.193.6.245) (Remote host closed the connection)
17:22:08 × andrew47 quits (~andrew@156.229-30-62.static.virginmediabusiness.co.uk) (Ping timeout: 260 seconds)
17:23:01 freeside joins (~mengwong@103.252.202.170)
17:23:08 nihonium joins (~nihonium@46.148.105.76)
17:23:28 tromp joins (~textual@92.110.219.57)
17:24:01 zer0bitz joins (~zer0bitz@2001:2003:f443:d600:8417:935c:cb32:ee43)
17:25:50 <juri_> thanks. :)
17:27:06 econo joins (uid147250@user/econo)
17:28:33 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 255 seconds)
17:30:03 mikoto-chan joins (~mikoto-ch@2001:999:780:2a0:3c7:b79d:d9fc:8260)
17:35:24 dtman34 joins (~dtman34@76.156.89.180)
17:37:33 <segfaultfizzbuzz> so my program state is distributed across ram, disk drive ram, L3 thru L1 cache, is that right?
17:37:43 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
17:37:45 <segfaultfizzbuzz> uh plus whatever is stored on disk
17:37:55 × tromp quits (~textual@92.110.219.57) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:38:21 <segfaultfizzbuzz> oh and i guess whatever devices it speaks to, like ram on a NIC and ram on a video card etc
17:39:52 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
17:42:40 desantra joins (~skykanin@user/skykanin)
17:43:20 × desantra quits (~skykanin@user/skykanin) (Client Quit)
17:43:35 desantra joins (~skykanin@user/skykanin)
17:44:54 ft joins (~ft@p3e9bc443.dip0.t-ipconnect.de)
17:46:38 × ubert quits (~Thunderbi@2a02:8109:abc0:6434:19e1:c8e:26ce:e0da) (Remote host closed the connection)
17:49:24 <desantra> Having issues with my cabal setup. `cabal build myopia:exe:myopia` reports "Internal error when trying to build the library from the package myopia-0.1.0.0. The package,component pair is not in the set of available targets for the project plan, which would suggest an inconsistency between readTargetSelectors and resolveTargets." All relevant files: https://bpa.st/QAX2M
17:52:06 rettahcay joins (~kaushikv@c-24-20-37-193.hsd1.or.comcast.net)
17:53:20 rettahcay parts (~kaushikv@c-24-20-37-193.hsd1.or.comcast.net) ()
17:54:50 kurbus joins (~kurbus@user/kurbus)
17:55:21 freeside joins (~mengwong@103.252.202.170)
17:59:59 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 248 seconds)
18:10:27 × kurbus quits (~kurbus@user/kurbus) (Quit: Client closed)
18:12:00 ravamrt joins (~ravamrt@112.134.193.152)
18:20:26 jmdaemon joins (~jmdaemon@user/jmdaemon)
18:20:35 <Inst> hmmm
18:20:44 <Inst> is there anyone else who uses windows here?
18:22:14 mc47 joins (~mc47@xmonad/TheMC47)
18:24:24 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
18:26:18 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
18:26:37 rlj joins (~rlj@94.234.101.197)
18:28:07 Cale joins (~cale@2605:8d80:6a2:4f70:9e38:23aa:4526:c65f)
18:29:08 <Inst> hmmm
18:29:35 <Inst> can you hijack SDL2 not building by getting it access to SDL2 via a precompiled .dll binary?
18:32:19 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 246 seconds)
18:33:01 × Cale quits (~cale@2605:8d80:6a2:4f70:9e38:23aa:4526:c65f) (Read error: Connection reset by peer)
18:33:34 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:36:22 ravamrt1 joins (~ravamrt@112.134.195.104)
18:37:40 <sm> Inst: you might find some SDL2 on windows experts in #haskell-game:matrix.org
18:38:16 × mikoto-chan quits (~mikoto-ch@2001:999:780:2a0:3c7:b79d:d9fc:8260) (Ping timeout: 246 seconds)
18:38:46 × ravamrt quits (~ravamrt@112.134.193.152) (Ping timeout: 268 seconds)
18:39:36 <Inst> thanks
18:40:26 <sm> and of course you're following any sdl2 install docs I imagine. Additional clues might be findable on /r/haskell, there have been occasional threads
18:48:04 <jade[m]> I have some issues with vector-sized
18:48:10 <jade[m]> specifically trying to use fromTuple
18:48:27 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:49:32 opticblast joins (~Thunderbi@172.58.82.191)
18:50:15 <jade[m]> nvm I think I'm just stupid
18:50:44 × trev quits (~trev@user/trev) (Remote host closed the connection)
18:51:46 Cale joins (~cale@2605:8d80:6a1:7608:a139:9a62:b1d5:76a4)
18:55:55 codaraxis joins (~codaraxis@user/codaraxis)
18:56:08 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
18:57:20 phma_ joins (~phma@2001:5b0:211c:dd68:d177:f289:9796:1bf1)
18:58:30 × phma quits (~phma@host-67-44-208-11.hnremote.net) (Read error: Connection reset by peer)
18:59:00 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 255 seconds)
19:04:03 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.8)
19:04:17 × remedan quits (~remedan@ip-94-112-0-18.bb.vodafone.cz) (Ping timeout: 265 seconds)
19:06:50 <sclv> desantra: the cabal file for the sublib has the same package name as the cabal file for the main executable. package names should be unique.
19:07:22 <sclv> alternately you can structure your project to have a single package which has both a library and executable stanza
19:10:53 remedan joins (~remedan@ip-94-112-0-18.bb.vodafone.cz)
19:11:49 cheater_ joins (~Username@user/cheater)
19:13:35 × sefidel quits (~sefidel@user/sefidel) (Remote host closed the connection)
19:13:58 × cheater quits (~Username@user/cheater) (Ping timeout: 246 seconds)
19:14:04 cheater_ is now known as cheater
19:14:56 falafel joins (~falafel@2607:fb91:143f:e47f:120b:3c15:bd64:3713)
19:15:39 sefidel joins (~sefidel@user/sefidel)
19:16:16 <desantra> sclv: ah right, changing it to `graphics` helped. However now it's complaining about not being able to resolve deps. https://bpa.st/ZLUSY/raw
19:16:48 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
19:17:10 <desantra> oh, I had to remove the explicit naming of the library component in `graphics.cabal`
19:21:57 × rlj quits (~rlj@94.234.101.197) (Quit: Client closed)
19:22:00 <desantra> exit
19:22:08 × desantra quits (~skykanin@user/skykanin) (Quit: WeeChat 3.8)
19:23:40 × sefidel quits (~sefidel@user/sefidel) (Remote host closed the connection)
19:24:04 × oldfashionedcow quits (~Rahul_San@user/oldfashionedcow) (Quit: WeeChat 3.8)
19:25:36 sefidel joins (~sefidel@user/sefidel)
19:28:21 × sefidel quits (~sefidel@user/sefidel) (Remote host closed the connection)
19:30:40 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
19:34:04 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
19:35:08 × thongpv quits (~thongpv87@2402:9d80:36e:115e:bd33:9174:2078:fce6) (Read error: Connection reset by peer)
19:36:05 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
19:38:36 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
19:39:13 sefidel joins (~sefidel@user/sefidel)
19:39:16 × lyle quits (~lyle@104.246.145.237) (Quit: WeeChat 3.8)
19:40:24 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
19:40:29 andrewboltachev joins (~andrey@178.141.125.176)
19:44:05 × mechap quits (~mechap@user/mechap) (Quit: WeeChat 3.8)
19:49:17 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
19:50:31 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
19:52:31 × sefidel quits (~sefidel@user/sefidel) (Remote host closed the connection)
19:52:33 wootehfoot joins (~wootehfoo@user/wootehfoot)
19:52:33 × Square quits (~Square4@user/square) (Ping timeout: 255 seconds)
19:53:20 <azure_vermilion> why does Data.Map.fromListWith have type (a -> a -> a) -> [(k,a)] -> Map k a and not (a -> b -> b) -> a -> [(k,b)] in the vein of foldr
19:54:09 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:c515:5d78:dd35:61fc)
19:54:32 sefidel joins (~sefidel@user/sefidel)
19:55:43 <mauke> where are you going to get a 'b' from?
19:56:14 <sclv> the 'b' factory
19:56:45 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
19:56:58 <mauke> oh, it's a partial signature
19:57:57 <mauke> azure_vermilion: how are you going to combine two 'b's into one if the combining function only takes one 'b'?
19:59:18 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer)
20:01:05 <azure_vermilion> I messed that type signature up badly
20:01:08 × ravamrt1 quits (~ravamrt@112.134.195.104) (Quit: Leaving.)
20:01:24 × zer0bitz quits (~zer0bitz@2001:2003:f443:d600:8417:935c:cb32:ee43) (Read error: Connection reset by peer)
20:01:52 <azure_vermilion> why does Data.Map.fromListWith have type (a -> a -> a) -> [(k,a)] -> Map k a and not (a -> b -> b) -> a -> [(k,a)] -> Map k b in the vein of foldr
20:02:04 <azure_vermilion> does that make more sense?
20:02:41 <mauke> no, that's back to my first question
20:02:44 <azure_vermilion> no it doesn't
20:02:46 <mauke> where are you going to get a 'b' from?
20:03:09 <azure_vermilion> why does Data.Map.fromListWith have type (a -> a -> a) -> [(k,a)] -> Map k a and not (a -> b -> b) -> b -> [(k,a)] -> Map k b in the vein of foldr
20:03:13 <azure_vermilion> i think that's it
20:07:17 <mauke> I can't think of a way to express one in terms of the other
20:08:18 freeside joins (~mengwong@103.252.202.170)
20:09:39 <cpli> mauke as long as you assume some b
20:10:08 <mauke> that's the trouble
20:11:15 <cpli> well, i also just don't get why you would want to include some third type
20:12:15 <cpli> you're generating a map from k to a
20:12:48 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 255 seconds)
20:13:34 <azure_vermilion> because if you're building up a list of values of duplicate keys like fromListWith is meant for it would be nice to use (:) as a combining function but it has type a -> [a] -> [a]
20:14:06 <azure_vermilion> so you have to put all your values in lists and then use (++)
20:17:02 kupper joins (~kupper@2a02:ab88:7609:4700:31a8:9d0c:ebbe:24d9)
20:17:22 <kupper> hi, I would like to learn to read the core language, where could I do that? I can't find it in the latest GHC User's guide
20:18:43 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
20:19:58 <kupper> nvm, someone sent me this https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/compiler/core-syn-type
20:20:27 <azure_vermilion> Duh, I just noticed Map has an actual foldr function in the Folds section with the type I gave ha ha
20:21:21 <azure_vermilion> oh no it doesn't
20:21:27 <azure_vermilion> I can't get anything right today
20:25:16 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
20:26:01 jpds joins (~jpds@gateway/tor-sasl/jpds)
20:29:03 oldfashionedcow joins (~Rahul_San@user/oldfashionedcow)
20:32:56 Feuermagier_ joins (~Feuermagi@user/feuermagier)
20:32:58 × Cale quits (~cale@2605:8d80:6a1:7608:a139:9a62:b1d5:76a4) (Read error: Connection reset by peer)
20:33:43 mizlan joins (~mizlan@2607:f010:2a7:1005:d198:988f:e4be:1762)
20:35:38 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 255 seconds)
20:35:43 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:c515:5d78:dd35:61fc) (Remote host closed the connection)
20:37:14 polyphem joins (~rod@2a02:810d:840:8754:224e:f6ff:fe5e:bc17)
20:37:39 × Feuermagier_ quits (~Feuermagi@user/feuermagier) (Ping timeout: 252 seconds)
20:40:00 × codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 248 seconds)
20:40:21 notzmv joins (~zmv@user/notzmv)
20:41:22 pavonia joins (~user@user/siracusa)
20:49:40 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
20:50:33 beteigeuze joins (~Thunderbi@a79-169-109-107.cpe.netcabo.pt)
20:51:02 Cale joins (~cale@2605:8d80:6a0:d61b:a139:9a62:b1d5:76a4)
20:54:58 biberu joins (~biberu@user/biberu)
20:56:43 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 252 seconds)
20:57:42 × bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection)
21:00:16 <monochrom> It has both foldr (which access only values) and foldrWithKey.
21:02:06 × mizlan quits (~mizlan@2607:f010:2a7:1005:d198:988f:e4be:1762) (Quit: mizlan)
21:07:22 dcoutts_ joins (~duncan@host86-167-90-212.range86-167.btcentralplus.com)
21:10:07 npmania1 joins (~Thunderbi@121.128.226.31)
21:10:24 × npmania quits (~Thunderbi@45.8.223.218) (Ping timeout: 255 seconds)
21:10:25 npmania1 is now known as npmania
21:11:00 L29Ah joins (~L29Ah@wikipedia/L29Ah)
21:12:18 malte joins (~malte@mal.tc)
21:13:51 npmania1 joins (~Thunderbi@45.8.223.248)
21:14:39 × npmania quits (~Thunderbi@121.128.226.31) (Ping timeout: 248 seconds)
21:14:40 npmania1 is now known as npmania
21:21:19 <Inst> ummm, can i have a bit of help with cabal?
21:21:37 <Inst> I got monomer installed, but unfortunately cabal seems to have installed it as a binary, instead of as a library
21:22:13 <Inst> ack, --libed it
21:22:27 <geekosaur> that's what it does. use `cabal install --lib` for an environment file you can get at with ghci, or use `cabal repl -b monomer` for a better behaved version thereof
21:27:56 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
21:29:25 × npmania quits (~Thunderbi@45.8.223.248) (Ping timeout: 246 seconds)
21:29:39 npmania joins (~Thunderbi@138.199.21.246)
21:32:30 npmania1 joins (~Thunderbi@217.138.252.249)
21:33:19 × Cale quits (~cale@2605:8d80:6a0:d61b:a139:9a62:b1d5:76a4) (Read error: Connection reset by peer)
21:33:58 × npmania quits (~Thunderbi@138.199.21.246) (Ping timeout: 246 seconds)
21:33:58 npmania1 is now known as npmania
21:34:50 × jespada quits (~jespada@cpc121308-nmal25-2-0-cust15.19-2.cable.virginm.net) (Quit: Textual IRC Client: www.textualapp.com)
21:35:04 × JimL quits (~quassel@89-162-26-217.fiber.signal.no) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
21:35:26 JimL joins (~quassel@89-162-26-217.fiber.signal.no)
21:36:14 eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net)
21:36:34 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
21:40:53 × eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 255 seconds)
21:41:21 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 255 seconds)
21:41:56 <Inst> what does cabal repl -b monomer do?
21:42:26 gmg joins (~user@user/gehmehgeh)
21:42:39 <geekosaur> starts a ghci using one or more packages from cabal's store, in this case monomer
21:42:59 <geekosaur> so you don't have to install it "globally" and potentially make a mess later
21:44:54 <geekosaur> there are very good reasons why cabal doesn't install libraries globally any more, and only fakes it with --lib. look up "cabal hell" in a search engine for examples
21:45:48 × yoneda quits (~mike@193.206.102.122) (Quit: leaving)
21:49:43 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
21:50:14 Cale joins (~cale@cpe80d04ade0a03-cm80d04ade0a01.cpe.net.cable.rogers.com)
21:51:30 codaraxis joins (~codaraxis@user/codaraxis)
21:54:57 × nihonium quits (~nihonium@46.148.105.76) (Ping timeout: 255 seconds)
21:55:50 × falafel quits (~falafel@2607:fb91:143f:e47f:120b:3c15:bd64:3713) (Ping timeout: 260 seconds)
21:55:50 segfaultfizzbuzz joins (~segfaultf@108.211.201.53)
21:57:31 jespada joins (~jespada@77.98.179.16)
21:59:20 × jinsun quits (~jinsun@user/jinsun) (Ping timeout: 260 seconds)
22:02:38 × andrewboltachev quits (~andrey@178.141.125.176) (Quit: Leaving.)
22:04:36 jinsun joins (~jinsun@user/jinsun)
22:05:41 <Inst> i've heard of it
22:13:38 × michalz quits (~michalz@185.246.207.203) (Remote host closed the connection)
22:14:19 <AWizzArd> Inside a `nix-shell -p cabal-install ghc` I try to run `cabal init foo`. I answer the questions, and then I get: fd:13: hGetContents: invalid argument (invalid byte sequence) Can this somehow be connected to my locale settings (which are de_DE.UTF8)?
22:15:10 <sclv> i suspect, yes
22:15:29 <sclv> i wonder if we can patch cabal in some way to fix this
22:17:19 <AWizzArd> sclv: when you run `locale` then what is your LC_ALL setting?
22:17:37 <sm> I think so (I have been meaning to try similar for ever). More ideally it would patched (to show a useful error message) somewhere lower (in base or the RTS)
22:18:15 <jackdk> almost certainly; https://hackage.haskell.org/package/with-utf8 is designed for this but might not be usable within cabal-install for bootstrapping reasons
22:18:45 <sm> AWizzArd: that locale would normally prevent this error, but nix sets locale in a different way
22:18:51 <sm> are you sure you're setting it the nix way
22:19:36 <AWizzArd> sm: what would be the nix way?
22:19:55 <sm> https://github.com/simonmichael/hledger/issues/1033#issuecomment-1062506027 > 2
22:21:24 <sm> $LOCALE_ARCHIVE
22:22:03 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:22:51 <AWizzArd> sm: I see
22:29:26 <AWizzArd> sm: yes, I had to export this LOCAL_ARCHIVE var. This works in the nix shell.
22:29:34 <AWizzArd> Thanks for the pointer.
22:29:54 <sm> np
22:30:06 <sm> ideally this would be in the Haskell FAQ
22:32:33 <Inst> ugh, this is bad, monomer is bugging out, guess i should switch to windows subsystem for linux
22:32:38 <Inst> but tbh it sucks when you don't know FRP
22:37:57 × beteigeuze quits (~Thunderbi@a79-169-109-107.cpe.netcabo.pt) (Quit: beteigeuze)
22:41:21 <sm> congrats on getting it installed. I wonder which FRP system you're using
22:41:43 falafel joins (~falafel@2607:fb91:143f:e47f:1ba3:5839:e59a:9486)
22:44:12 × Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Quit: Leaving.)
22:52:29 Everything joins (~Everythin@46.185.124.65)
22:55:41 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
22:58:05 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
23:01:33 × segfaultfizzbuzz quits (~segfaultf@108.211.201.53) (Ping timeout: 255 seconds)
23:04:06 × kupper quits (~kupper@2a02:ab88:7609:4700:31a8:9d0c:ebbe:24d9) (Quit: Client closed)
23:06:05 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
23:10:09 × mei quits (~mei@user/mei) (Remote host closed the connection)
23:12:30 mei joins (~mei@user/mei)
23:15:54 × jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer)
23:16:48 × ystael quits (~ystael@user/ystael) (Ping timeout: 248 seconds)
23:20:14 freeside joins (~mengwong@103.252.202.170)
23:24:57 × freeside quits (~mengwong@103.252.202.170) (Ping timeout: 255 seconds)
23:26:59 caryhartline joins (~caryhartl@cpe-76-184-187-103.tx.res.rr.com)
23:31:58 king_gs joins (~Thunderbi@2806:103e:29:1779:fe23:2879:3575:ce6a)
23:32:15 × kee quits (~~kee@user/wizzwizz4) (Read error: Connection reset by peer)
23:32:23 <azure_vermilion> you can make your own Data.Map.insertWith with the type I gave in a few lines actually
23:32:56 kee joins (~~kee@user/wizzwizz4)
23:47:05 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
23:51:34 zeenk joins (~zeenk@2a02:2f04:a214:1e00::7fe)
23:55:59 the_proffesor joins (~theproffe@2601:282:8880:20:cbd6:9442:3ec7:7047)
23:55:59 × the_proffesor quits (~theproffe@2601:282:8880:20:cbd6:9442:3ec7:7047) (Changing host)
23:55:59 the_proffesor joins (~theproffe@user/theproffesor)
23:56:00 × falafel quits (~falafel@2607:fb91:143f:e47f:1ba3:5839:e59a:9486) (Ping timeout: 260 seconds)

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