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.