Home freenode/#haskell: Logs Calendar

Logs on 2020-12-08 (freenode/#haskell)

00:01:52 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
00:01:53 <monochrom> yes
00:02:25 <monochrom> I wonder if you just haven't thought along the line of http://www.vex.net/~trebla/haskell/prerequisite.xhtml#substitution
00:02:28 <Kronic> Okay perfect, thank you. I just wanted to be sure. I recently returned to Haskell, and sometimes I trip over myself a little when reading documentation
00:04:14 × Aquazi quits (uid312403@gateway/web/irccloud.com/x-gkvwezxwtrpnkicw) (Quit: Connection closed for inactivity)
00:06:00 Unicorn_Princess joins (~Unicorn_P@89-212-115-169.static.t-2.net)
00:07:09 × mbomba quits (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Ping timeout: 260 seconds)
00:07:54 × notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection)
00:08:12 mbomba joins (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca)
00:08:16 × isovector1 quits (~isovector@172.103.216.166.cable.tpia.cipherkey.com) (Quit: Leaving)
00:08:50 notzmv joins (~user@unaffiliated/zmv)
00:11:18 <Unicorn_Princess> suppose I'm using Data.MultiSet, and I'm not happy how its findMin function doesn't return a Maybe (so it can crash on an empty Set). so I write my own safe version, minSafe. in what module should I put this function, for organization? I can't put it into Data.MultiSet... can I?
00:12:48 ninja joins (~ninja@82.84.72.37)
00:13:16 bgamari_ joins (~bgamari@2001:470:e438::1)
00:14:20 × bgamari quits (~bgamari@72.65.101.236) (Ping timeout: 265 seconds)
00:14:23 mbirman joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
00:14:54 <Axman6> Is there a package that provides lenses of a haskell AST, like haskell-src-exts or GHC's?
00:15:10 <Axman6> also, anyone know the status of trees that grow in GHC/TH/HSE?
00:16:10 <koz_> Unicorn_Princess: You can put it in Data.MultiSet.Safe?
00:16:16 × dnlkrgr quits (~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 240 seconds)
00:16:17 <koz_> Since it's like, a local module?
00:17:27 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
00:17:30 <Unicorn_Princess> i guess that's the standard. like how the extra package puts stuff into Data.List.Extra...
00:17:33 × ninja quits (~ninja@82.84.72.37) (Quit: Leaving)
00:18:19 <Kronic> monochrom, thanks for the link, it was a little bit on the longwinded side but it more than explained my question. Cheers
00:19:26 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:21:07 jedws joins (~jedws@121.209.181.215)
00:24:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
00:25:15 × jmchael quits (~jmchael@87.112.60.168) (Ping timeout: 272 seconds)
00:26:31 × hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 272 seconds)
00:27:56 × Kronic quits (~Kronic___@84.203.103.100) (Ping timeout: 240 seconds)
00:31:56 × dhil quits (~dhil@195.213.192.34) (Ping timeout: 240 seconds)
00:32:30 Feuermagier joins (~Feuermagi@213.178.26.41)
00:33:36 × Entertainment quits (~entertain@104.246.132.210) (Ping timeout: 240 seconds)
00:34:14 × drincruz_ quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 272 seconds)
00:34:35 sm2n_ joins (~sm2n@bras-base-hmtnon1497w-grc-44-69-156-5-58.dsl.bell.ca)
00:36:45 × sm2n quits (~sm2n@bras-base-hmtnon1497w-grc-44-69-156-5-58.dsl.bell.ca) (Ping timeout: 260 seconds)
00:40:06 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
00:40:23 × rdivacky quits (~rdivacky@212.96.173.4) (Ping timeout: 260 seconds)
00:42:47 × Codaraxis__ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Remote host closed the connection)
00:43:12 Codaraxis__ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
00:43:14 rdivacky joins (~rdivacky@212.96.173.4)
00:43:31 dftxbs3e joins (~dftxbs3e@unaffiliated/dftxbs3e)
00:49:01 × heatsink quits (~heatsink@2600:1700:bef1:5e10:cc3:649d:beb7:1989) (Remote host closed the connection)
00:49:28 falafel joins (~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
00:49:31 heatsink joins (~heatsink@2600:1700:bef1:5e10:cc3:649d:beb7:1989)
00:50:43 falafel_ joins (~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
00:51:07 chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
00:51:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:51:29 × StoneToad quits (~StoneToad@199-167-119-135.ppp.storm.ca) (Ping timeout: 260 seconds)
00:52:30 StoneToad joins (~StoneToad@199-167-119-135.ppp.storm.ca)
00:53:07 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
00:54:00 × falafel quits (~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
00:54:23 × heatsink quits (~heatsink@2600:1700:bef1:5e10:cc3:649d:beb7:1989) (Ping timeout: 260 seconds)
00:54:41 conal joins (~conal@64.71.133.70)
00:55:02 × conal quits (~conal@64.71.133.70) (Client Quit)
01:01:18 × carlomagno quits (~cararell@148.87.23.5) (Remote host closed the connection)
01:01:57 ezzieyguywuf joins (~Unknown@unaffiliated/ezzieyguywuf)
01:02:44 × Xnuk quits (~xnuk@vultr.xnu.kr) (Ping timeout: 246 seconds)
01:03:03 Xnuk joins (~xnuk@45.76.202.58)
01:06:16 × columbarius quits (~columbari@mue-88-130-54-104.dsl.tropolys.de) (Ping timeout: 240 seconds)
01:06:30 × FreeBirdLjj quits (~freebirdl@101.228.42.108) (Remote host closed the connection)
01:07:49 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
01:08:40 columbarius joins (~columbari@i5E86B3C5.versanet.de)
01:09:34 × mbirman quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 260 seconds)
01:09:38 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
01:11:25 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
01:13:45 × dan64- quits (~dan64@dannyadam.com) (Quit: ZNC - http://znc.in)
01:14:16 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 240 seconds)
01:15:38 rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
01:16:20 sparsity joins (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
01:18:17 × Codaraxis__ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 260 seconds)
01:19:04 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
01:19:48 Codaraxis__ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
01:20:43 Amras parts (~Amras@unaffiliated/amras) ("Leaving")
01:24:37 xcmw joins (~textual@cpe-69-133-55-43.cinci.res.rr.com)
01:24:57 dan64 joins (~dan64@dannyadam.com)
01:25:14 drincruz_ joins (~adriancru@ool-44c748be.dyn.optonline.net)
01:25:33 × Feuermagier quits (~Feuermagi@213.178.26.41) (Remote host closed the connection)
01:25:44 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
01:25:51 Feuermagier joins (~Feuermagi@213.178.26.41)
01:26:03 × teardown quits (~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
01:27:16 × wildlander quits (~wildlande@unaffiliated/wildlander) (Quit: Konversation terminated!)
01:28:19 teardown joins (~user@gateway/tor-sasl/mrush)
01:28:35 × Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Read error: Connection reset by peer)
01:30:18 conal joins (~conal@64.71.133.70)
01:32:01 Lord_of_Life joins (~Lord@46.217.218.10)
01:33:07 × conal quits (~conal@64.71.133.70) (Client Quit)
01:33:19 dyeplexer joins (~lol@unaffiliated/terpin)
01:34:55 <pavonia> So functional programming finally made it, eh? ;) https://techcommunity.microsoft.com/t5/excel-blog/announcing-lambda-turn-excel-formulas-into-custom-functions/ba-p/1925546
01:35:18 leungbk joins (~user@cpe-104-33-52-83.socal.res.rr.com)
01:35:46 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
01:36:25 × m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 240 seconds)
01:36:33 × Feuermagier quits (~Feuermagi@213.178.26.41) (Remote host closed the connection)
01:36:50 Feuermagier joins (~Feuermagi@213.178.26.41)
01:39:09 × borne quits (~fritjof@200116b864e55d009ba1d43461655289.dip.versatel-1u1.de) (Ping timeout: 246 seconds)
01:39:25 guest128 joins (~user@49.5.6.87)
01:41:16 × rdivacky quits (~rdivacky@212.96.173.4) (Ping timeout: 240 seconds)
01:43:07 falafel_ is now known as falafel
01:43:53 × mbomba quits (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0)
01:44:24 mbomba joins (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca)
01:44:44 rdivacky joins (~rdivacky@212.96.173.4)
01:45:20 × Lord_of_Life quits (~Lord@46.217.218.10) (Ping timeout: 256 seconds)
01:45:45 <blissful> friendship with haskell ended, microsoFT EXCEL is my new best friend!!!
01:46:05 Lord_of_Life joins (~Lord@46.217.216.160)
01:46:52 borne joins (~fritjof@200116b864e55d009ba1d43461655289.dip.versatel-1u1.de)
01:50:01 heatsink joins (~heatsink@2600:1700:bef1:5e10:cc3:649d:beb7:1989)
01:51:05 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
01:51:44 × heatsink quits (~heatsink@2600:1700:bef1:5e10:cc3:649d:beb7:1989) (Remote host closed the connection)
01:51:49 × drincruz_ quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 264 seconds)
01:51:53 heatsink joins (~heatsink@2600:1700:bef1:5e10:cc3:649d:beb7:1989)
01:56:24 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:56:29 × xcmw quits (~textual@cpe-69-133-55-43.cinci.res.rr.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:59:31 × b3zi quits (~b3z@vmd41962.contaboserver.net) (Quit: cya)
01:59:39 b3z joins (~b3z@vmd41962.contaboserver.net)
02:00:53 × infinity0 quits (~infinity0@freenet/developer/infinity0) (Ping timeout: 272 seconds)
02:01:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
02:01:58 infinity0 joins (~infinity0@freenet/developer/infinity0)
02:06:19 × MOSCOS quits (~MOSCOS@122.54.107.175) (Read error: Connection reset by peer)
02:06:25 × brisbin quits (~patrick@pool-173-49-158-4.phlapa.fios.verizon.net) (Ping timeout: 240 seconds)
02:06:44 MOSCOS joins (~MOSCOS@122.54.107.175)
02:06:52 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
02:07:30 aarvar joins (~foewfoiew@50.35.43.33)
02:07:46 × aarvar quits (~foewfoiew@50.35.43.33) (Client Quit)
02:08:40 × Inoperable quits (~PLAYER_1@fancydata.science) (Quit: All your buffer are belong to us!)
02:10:45 × sajith quits (~sajith@fsf/member/nonzen) (Ping timeout: 240 seconds)
02:11:42 sajith joins (~sajith@fsf/member/nonzen)
02:14:14 × rprije quits (~rprije@14-201-170-17.tpgi.com.au) (Remote host closed the connection)
02:14:23 Inoperable joins (~PLAYER_1@fancydata.science)
02:14:37 rprije joins (~rprije@14-201-170-17.tpgi.com.au)
02:14:50 × ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Quit: ...zzzZZZ)
02:17:08 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds)
02:18:13 xcmw joins (~textual@cpe-69-133-55-43.cinci.res.rr.com)
02:19:01 × sparsity quits (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed)
02:19:32 × xff0x_ quits (~fox@2001:1a81:5262:300:2af7:941a:a8bf:efea) (Ping timeout: 260 seconds)
02:19:49 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:a9cd:54a5:5132:6498:c2e9)
02:21:24 xff0x_ joins (~fox@2001:1a81:5297:ce00:5f6b:12d2:455b:ed40)
02:22:36 × jespada quits (~jespada@90.254.245.49) (Ping timeout: 240 seconds)
02:23:06 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
02:23:16 glguy is now known as seasonal-staff
02:24:57 × ericsagn1 quits (~ericsagne@2405:6580:0:5100:4353:f1b0:3343:508) (Ping timeout: 272 seconds)
02:25:33 jespada joins (~jespada@90.254.245.49)
02:26:56 × rekahsoft quits (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 240 seconds)
02:27:57 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:28:32 <dsal> This seems pretty weird: `import Data.Monoid (<$>)`
02:28:45 × twk- quits (~thewormki@unaffiliated/twk-) (Ping timeout: 240 seconds)
02:29:28 × TheScoop_ quits (~TheScoop@unaffiliated/tryte) (Ping timeout: 260 seconds)
02:29:36 × marek quits (~mmahut@209.250.249.245) (Ping timeout: 256 seconds)
02:30:20 wei2912 joins (~wei2912@unaffiliated/wei2912)
02:31:44 × Codaraxis__ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Remote host closed the connection)
02:32:08 Codaraxis__ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
02:32:18 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
02:32:37 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
02:33:46 TheScoop joins (~TheScoop@unaffiliated/tryte)
02:35:00 × mbomba quits (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0)
02:35:17 × falafel quits (~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
02:36:51 twk- joins (~thewormki@unaffiliated/twk-)
02:37:24 ericsagn1 joins (~ericsagne@2405:6580:0:5100:d04d:c9b4:e354:8485)
02:38:01 drincruz_ joins (~adriancru@ool-44c748be.dyn.optonline.net)
02:39:06 × leungbk quits (~user@cpe-104-33-52-83.socal.res.rr.com) (Remote host closed the connection)
02:39:52 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
02:39:55 <cheater> (ot) does anyone know how to search for stuff with ripgrep, but exclude very long lines? or search for a string, but exclude results that contain a specific other string?
02:41:09 sgibber2018 joins (~arch-gibb@208.85.237.137)
02:41:11 marek joins (~mmahut@209.250.249.245)
02:41:25 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
02:41:26 <Axman6> riptreg foo | grep - v bar?
02:42:00 drbean joins (~drbean@TC210-63-209-186.static.apol.com.tw)
02:42:23 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
02:43:42 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
02:44:05 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 240 seconds)
02:44:18 × sgibber2018 quits (~arch-gibb@208.85.237.137) (Client Quit)
02:44:37 sgibber2018 joins (~arch-gibb@208.85.237.137)
02:45:29 × sgibber2018 quits (~arch-gibb@208.85.237.137) (Client Quit)
02:45:55 sgibber2018 joins (~arch-gibb@208.85.237.137)
02:51:37 × xff0x_ quits (~fox@2001:1a81:5297:ce00:5f6b:12d2:455b:ed40) (Ping timeout: 260 seconds)
02:52:02 xff0x_ joins (~fox@port-92-195-97-206.dynamic.as20676.net)
02:55:16 × drbean quits (~drbean@TC210-63-209-186.static.apol.com.tw) (Ping timeout: 240 seconds)
02:57:25 mbirman joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
02:59:49 teardown_ joins (~user@gateway/tor-sasl/mrush)
02:59:54 Lycurgus joins (~niemand@cpe-45-46-137-210.buffalo.res.rr.com)
03:02:32 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
03:02:43 × teardown quits (~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
03:03:27 × philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Quit: leaving)
03:04:08 drbean joins (~drbean@TC210-63-209-156.static.apol.com.tw)
03:07:07 SanchayanMaity joins (~Sanchayan@122.167.92.138)
03:09:16 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:10:19 × sgibber2018 quits (~arch-gibb@208.85.237.137) (Quit: WeeChat 2.9)
03:14:25 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
03:15:25 × Codaraxis__ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 240 seconds)
03:15:52 philopsos joins (~caecilius@gateway/tor-sasl/caecilius)
03:17:33 Codaraxis__ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
03:17:52 christo joins (~chris@81.96.113.213)
03:18:43 falafel joins (~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
03:19:32 rcdilorenzo joins (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
03:21:48 <incertia> @monochrom: ok so i did a cheaty solution by just using TH to examine the instances of a typeclass and then autogenning a HashMap: https://gist.github.com/incertia/9100eec4262fde6373d4c5a13fa1ac04
03:21:48 <lambdabot> Unknown command, try @list
03:22:08 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
03:22:22 shatriff joins (~vitaliish@176.52.219.10)
03:22:54 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
03:23:10 × rcdilorenzo quits (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Client Quit)
03:23:12 shatriff joins (~vitaliish@176.52.219.10)
03:23:27 rcdilorenzo joins (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
03:23:34 <incertia> the only downside is that i have to import the module every time i solve a new problem
03:23:41 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
03:23:57 shatriff joins (~vitaliish@176.52.219.10)
03:24:22 × SanchayanMaity quits (~Sanchayan@122.167.92.138) (Quit: SanchayanMaity)
03:24:27 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
03:24:39 SanchayanMaity joins (~Sanchayan@122.167.92.138)
03:24:40 shatriff joins (~vitaliish@176.52.219.10)
03:25:13 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
03:25:26 Saukk joins (~Saukk@2001:998:ec:944:a00f:6382:4f0:3e7e)
03:26:01 × SanchayanMaity quits (~Sanchayan@122.167.92.138) (Client Quit)
03:27:42 × rcdilorenzo quits (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Client Quit)
03:27:56 rcdilorenzo joins (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com)
03:28:53 SanchayanMaity joins (~Sanchayan@122.167.92.138)
03:29:20 × SanchayanMaity quits (~Sanchayan@122.167.92.138) (Client Quit)
03:30:48 xirhtogal joins (~lagothrix@unaffiliated/lagothrix)
03:30:48 lagothrix is now known as Guest28923
03:30:48 xirhtogal is now known as lagothrix
03:30:49 × theDon quits (~td@muedsl-82-207-238-155.citykom.de) (Ping timeout: 264 seconds)
03:31:10 conal joins (~conal@64.71.133.70)
03:31:27 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:32:17 theDon joins (~td@94.134.91.58)
03:32:45 SanchayanMaity joins (~Sanchayan@122.167.92.138)
03:33:36 × Guest28923 quits (~lagothrix@unaffiliated/lagothrix) (Ping timeout: 240 seconds)
03:34:19 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
03:35:26 × xelxebar_ quits (~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection)
03:35:54 xelxebar joins (~xelxebar@gateway/tor-sasl/xelxebar)
03:36:04 × falafel quits (~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
03:36:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
03:36:29 × rcdilorenzo quits (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo)
03:38:47 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 265 seconds)
03:39:30 × Lycurgus quits (~niemand@cpe-45-46-137-210.buffalo.res.rr.com) (Quit: Exeunt)
03:40:25 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 240 seconds)
03:40:37 argento joins (~argent0@168.227.97.29)
03:41:29 <incertia> i don't suppose you can use TH to import additional modules
03:44:53 olligobber joins (~olligobbe@unaffiliated/olligobber)
03:56:03 mbirman is now known as monadmatt
03:56:15 falafel joins (~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
03:56:49 elliott__ joins (~elliott@pool-108-45-178-3.washdc.fios.verizon.net)
03:58:50 monadmatt parts (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) ("rcirc on GNU Emacs 27.1")
04:00:10 × xcmw quits (~textual@cpe-69-133-55-43.cinci.res.rr.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
04:00:31 <jle`> i learned TH for that purpose actually initially :)
04:03:17 falafel_ joins (~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
04:03:58 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:04:25 × texasmynsted quits (~texasmyns@212.102.45.106) (Remote host closed the connection)
04:05:36 × falafel quits (~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
04:09:49 <ezzieyguywuf> of the solutions offered on the SO thread, this last one seems to make the most sense to me. But I'm wondering why it's the least upvoted. any thoughts? https://stackoverflow.com/a/51740646
04:12:07 <jle`> it has a lot of moving parts, maybe
04:12:49 <ezzieyguywuf> I'm not saying I don't like the accepted answer, but it too seems a bit roundabout and convoluted
04:13:25 <ezzieyguywuf> especially considering that in other languages this would be trivial with something like "do while"
04:14:08 <ezzieyguywuf> does the functional programming style not lend itself to these sorts of problems? or rather, should the problem perhaps be reframed into somethnig that is better suited to the functional approach?
04:14:24 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
04:14:33 × nowhereman quits (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Remote host closed the connection)
04:15:09 nowhereman joins (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155)
04:15:25 <jle`> i think the problem as stated is fine in a functional context
04:15:40 <jle`> the accepted answer is pretty functional, it's "look at the cumulative sums, and find the first or last one that matches"
04:15:53 <jle`> which is essentially what a for while loop does
04:16:21 <jle`> computes cumulative sums and breaks as soon as it reaches a condition
04:16:42 <jle`> in this case, scanl' (+) is the cumulative summer, and takeWhile/dropWhile is the condition checker
04:16:45 <ezzieyguywuf> i guess in either approach, an infinite loop is an inherent possibility
04:17:05 <jle`> sure, it's inherent. and sort of obvious in the list approach
04:17:07 × softwarm quits (4408f588@ip68-8-245-136.sd.sd.cox.net) (Remote host closed the connection)
04:17:12 <jle`> maybe the for loop approach obscures that a little more
04:17:34 <ezzieyguywuf> i think the for-loop approach is probably easier to understand and reason about though
04:17:50 <ezzieyguywuf> but maybe that's just my imperitive background kicking in
04:18:12 <ezzieyguywuf> should they have used scanl' rather than scanl?
04:18:20 <ezzieyguywuf> something akin to foldl' vs foldl?
04:18:36 <ezzieyguywuf> oh wait, they used scanl1, whatever that is..
04:18:47 <jle`> hm, idk, the "search the cumulative sums until you find what you are looking for" seems pretty intuitive to me
04:19:09 <jle`> maybe more or as intuitive than "allocate this state and mutate this variable and check it every time and stop mutating"
04:19:23 <jle`> but yeah, it's sort of a matter of experience and background maybe
04:19:33 xcmw joins (~textual@cpe-69-133-55-43.cinci.res.rr.com)
04:20:13 <jle`> the first one is just "your answer is in the list, just do a simple search with a predicate" and the second is "manipulate the memory of your computer to conjure an answer"
04:20:28 <jle`> admittedly using head and dropWhile isn't the cleanest way to express it i think
04:20:31 <jle`> maybe i'd use 'find'
04:21:36 <jle`> % find (>= 1000) (scanl' (+) 0 [1..])
04:21:36 <yahb> jle`: Just 1035
04:21:51 <jle`> "in the cumulative sums starting from 1, find the first value greater than 1000
04:21:59 <ezzieyguywuf> I think perhaps the part that is most jarring to me is that in the accepted answer, the way I reason or parse it is more or less as you've described it "FIRST make a list, THEN check each value in the list, THEN take the first one", and though I eventually also add "(oh by the way, due to laziness this isn't wasteful)" my initial thought is "but why process the whole list if you don't have to!"
04:22:15 <jle`> or maybe in a more declarative sense, "your answer is the first item in the cumulative sums that is greater than 1000"
04:22:19 <ezzieyguywuf> and in the imperitive approach it is made obvious that the list is only process as far as it needs to be.
04:22:19 × Unicorn_Princess quits (~Unicorn_P@89-212-115-169.static.t-2.net) (Read error: Connection reset by peer)
04:22:41 <jle`> i think maybe you are thinking of the list as a container of values
04:22:43 Unicorn_Princess joins (~Unicorn_P@89-212-115-169.static.t-2.net)
04:22:52 <ezzieyguywuf> jle`: that is how I am thinking of the list
04:23:00 <jle`> instead of like as an iterator or streamer/control flow
04:23:17 <jle`> scanl' (+) [1..] isn't a container of values
04:23:26 <ezzieyguywuf> yea, I guess I could stand to improve my mental image of "lists" in haskell
04:23:28 <jle`> it's a stream of cumulative sums from 1
04:24:00 <ezzieyguywuf> I remember something from Learn You a Haskell about permutations or something (related to the monad instance for lists I believe) that started to bring me down that path, but then I went on to something else
04:24:18 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
04:25:37 <ezzieyguywuf> jle`: I like your description, specifically the word "stream"
04:25:38 <jle`> yeah, when i see scanl' (+) [1..], i don't see an infinite container, i see a stream i can search or iterate through, mathematically, in a way
04:25:51 mbomba joins (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca)
04:25:52 <jle`> lists in haskell are most closely releated to for loops in other languages
04:25:53 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
04:26:19 conal joins (~conal@64.71.133.70)
04:26:20 <jle`> it's actually usually almost directly translatable
04:26:41 <koz_> We even have
04:26:44 <koz_> :t forM
04:26:45 × Unicorn_Princess quits (~Unicorn_P@89-212-115-169.static.t-2.net) (Ping timeout: 240 seconds)
04:26:46 <lambdabot> (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b)
04:26:51 <jle`> aka, `for` :)
04:26:51 <koz_> Look at that, a loop!
04:27:00 <koz_> :t for
04:27:01 × conal quits (~conal@64.71.133.70) (Client Quit)
04:27:02 <lambdabot> (Traversable t, Applicative f) => t a -> (a -> f b) -> f (t b)
04:27:06 <koz_> Look at that, also a loop!
04:27:09 <jle`> % for [1..10] \i -> print i
04:27:09 <yahb> jle`: ; <interactive>:97:13: error:; Unexpected lambda expression in function application:; \ i -> print i; You could write it with parentheses; Or perhaps you meant to enable BlockArguments?
04:27:13 Unicorn_Princess joins (~Unicorn_P@89-212-115-169.static.t-2.net)
04:27:18 <jle`> % :set -XBlockArguments
04:27:18 <yahb> jle`:
04:27:20 <jle`> % for [1..10] \i -> print i
04:27:20 <yahb> jle`: 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; [(),(),(),(),(),(),(),(),(),()]
04:27:29 <jle`> whoops, should have dropped the results. but yeah
04:27:30 <koz_> jle`: for_ maybe?
04:27:36 <jle`> mhm
04:27:42 conal joins (~conal@64.71.133.70)
04:27:44 <koz_> % for_ [1..10] print
04:27:44 <yahb> koz_: 1; 2; 3; 4; 5; 6; 7; 8; 9; 10
04:27:48 × conal quits (~conal@64.71.133.70) (Client Quit)
04:28:09 <koz_> (although I typically spell that 'traverse_ print [1..10]')
04:28:38 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
04:29:22 conal joins (~conal@64.71.133.70)
04:29:51 <ezzieyguywuf> can someone show me a simple example using that `for`?
04:29:55 × Unicorn_Princess quits (~Unicorn_P@89-212-115-169.static.t-2.net) (Client Quit)
04:30:17 <jle`> % for_ [1..10] (\i -> print i)
04:30:17 <yahb> jle`: 1; 2; 3; 4; 5; 6; 7; 8; 9; 10
04:30:20 <koz_> ezzieyguywuf: We just did.
04:30:25 <jle`> oh, do you mean for and not for_
04:30:48 <koz_> 'for' usually means you care about the result.
04:31:02 <koz_> (not just the effects)
04:31:40 <ezzieyguywuf> lol whoops, my eyes glazed over when I saw the %
04:31:49 <ezzieyguywuf> and the errors
04:32:38 <Squarism> Scala library had a pretty neat feature where you could strip all text before and including "|" in multiline strings. Is there something similar in Data.Text or Data.ByteString?
04:32:50 <Squarism> (per line that is)
04:33:04 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 256 seconds)
04:33:12 <koz_> Squarism: No, not that I know of. You can do whitespace stripping, but not |-removal, at least not without writing it yourself.
04:33:12 <jle`> no :'( but some heredoc quasiquoters have that i think
04:34:01 <Squarism> ah, ok
04:34:21 <dolio> > "like \ \this?"
04:34:23 <lambdabot> "like this?"
04:34:48 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
04:35:51 conal_ joins (~conal@64.71.133.70)
04:36:50 <ezzieyguywuf> hrm, in ghci, `val = for [1..(10 :: Int)] (+ (1 :: Int))` gives me an error
04:37:03 <ezzieyguywuf> val = for [1..(10 :: Int)] (+ (1 :: Int))
04:37:05 <ezzieyguywuf> I don't understand though
04:37:06 <Squarism> dolio, oh that might work then
04:37:23 <koz_> > for [1 .. (10 :: Int)] (+ (1 :: Int))
04:37:26 <lambdabot> error:
04:37:26 <lambdabot> • Couldn't match type ‘Int’ with ‘f b’
04:37:26 <lambdabot> Expected type: Int -> f b
04:37:38 <koz_> That's because + 1 has the wrong type.
04:37:41 <koz_> :t for
04:37:42 <lambdabot> (Traversable t, Applicative f) => t a -> (a -> f b) -> f (t b)
04:37:45 texasmynsted joins (~texasmyns@212.102.45.106)
04:37:49 <jle`> ezzieyguywuf: check the types, yeah, you probably want 'map' and not 'for'
04:37:52 <koz_> See how the function has to be of type (a -> f b)?
04:37:59 <ezzieyguywuf> so how come without the type annotations I get no error?
04:38:01 <koz_> The whole point of 'for' is that you have some effect.
04:38:09 <seasonal-staff> Lua has an interesting alternative to Haskell's \ \ string gaps. the \z escape eats whitespace up to the first non-whitespace
04:38:14 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
04:38:14 <koz_> If you don't need any effects, just use map.
04:38:15 <ezzieyguywuf> hm, I see
04:38:18 <koz_> (or fmap really)
04:38:26 × texasmynsted quits (~texasmyns@212.102.45.106) (Remote host closed the connection)
04:39:50 <ezzieyguywuf> I have a `[Parsec e s a]` and I want to run this function until one returns a Right, so it sounds like `for` is the tool for the job yea? https://hackage.haskell.org/package/megaparsec-9.0.1/docs/Text-Megaparsec.html#v:runParser
04:40:06 <ezzieyguywuf> but also, the way the arguments are arranged that's going to be tough...
04:40:21 <koz_> ezzieyguywuf: [Parsec e s a] isn't a 'function'.
04:40:32 <koz_> Like, I assume you wanna try each in order until one of them works?
04:40:45 × conal_ quits (~conal@64.71.133.70) (Client Quit)
04:40:55 <ezzieyguywuf> koz_: yea, [Parsec e s a] is akin to the [1..10] above, the functio I want to use is runParser
04:41:12 <koz_> Yeah, that... wouldn't do what you think it does.
04:41:17 <koz_> Imagine you have five parsers.
04:41:23 <koz_> The first one eats half your input then fails.
04:41:24 <koz_> What do then?
04:41:26 <ezzieyguywuf> but I guess I'll have to write my own intermediate `runParser' :: String -> s -> Parsec e s a`
04:41:34 <ezzieyguywuf> koz_: doh!
04:41:35 <Squarism> dolio, hmm somehow that didnt work well. Does OverloadedStrings interfere with it?
04:41:56 <ezzieyguywuf> ahh you know what, megaparsec has a thing for this
04:41:58 <ezzieyguywuf> `choice`
04:42:12 <koz_> Yeah, 'choice' works, but you have to be careful about the input-eating thing.
04:42:16 <dolio> I doubt it.
04:42:26 <dolio> Can you paste what you entered?
04:42:39 <koz_> Namely, you wanna make sure your parsers are backtracking unless you actually _want_ the 'eat half your input' behaviour.
04:42:43 <ezzieyguywuf> koz_: I think choice takes care of that, but I'll check.
04:42:56 <jle`> choice for megaparsec isn't backtracking
04:42:57 <koz_> ezzieyguywuf: 'choice' in Megaparsec doesn't automagically backtrack AFAIK.
04:42:59 <ezzieyguywuf> this is also why I was asking about "where does `choice` come from" the other day...
04:43:13 <iqubic> I usually do "choice $ map try [parsers]" to force backtracking.
04:43:16 <ezzieyguywuf> oh snap. maybe I'll have to tack a `try` or w/e in front of each parser then
04:43:24 <ezzieyguywuf> yea, what iqubic said
04:43:29 <seasonal-staff> ideally you're refactored your grammar so that you don't need so many try though
04:43:33 <koz_> Yeah, that works, but it's a _very_ brute force approach.
04:43:44 <iqubic> I suppose it is.
04:43:51 <koz_> It's better to consider how much backtracking you really need - it's often less than you think.
04:43:51 <seasonal-staff> with parser combinators you're the parser compiler!
04:43:52 <dsal> is choice just asum?
04:43:58 <seasonal-staff> yeah
04:43:58 <koz_> dsal: Yeah, I think so?
04:44:01 <ezzieyguywuf> seasonal-staff: bleh, it's not like that, the parser is configurable at runtime via a configuration file so....
04:44:35 <seasonal-staff> If you're exposing the parser combinators to your users, then your users are the parser compilers
04:44:52 <koz_> seasonal-staff: In Soviet Russia, you compile parsers, I guess.
04:45:24 <ezzieyguywuf> seasonal-staff: indeed
04:47:37 essem joins (essem@gateway/vpn/privateinternetaccess/essem)
04:47:43 × teardown_ quits (~user@gateway/tor-sasl/mrush) (Ping timeout: 240 seconds)
04:52:39 zaquest joins (~notzaques@5.128.210.178)
04:53:07 × zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection)
04:55:06 <nshepperd2> i'm writing a type level parser combinator library
04:55:47 <nshepperd2> it's an adventure
04:55:54 <iqubic> That sounds both super useful, and super hard.
04:56:12 Tario joins (~Tario@201.192.165.173)
04:56:23 <Axman6> the lack of yupe level uncons for symvols most make that a lot of fun
04:56:27 × chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
04:56:51 chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
04:56:54 × chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit)
04:57:47 <jle`> nshepperd2: oh, i wrote one at one point
04:58:17 <jle`> nshepperd2: https://github.com/mstksg/typelits-printf/blob/master/src/GHC/TypeLits/Printf/Internal/Parser.hs
04:59:10 × SanchayanMaity quits (~Sanchayan@122.167.92.138) (Remote host closed the connection)
04:59:20 <iqubic> Is there really no better way to get isAlpha to work?
04:59:58 × elliott__ quits (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
05:00:13 <nshepperd2> oh, nice
05:01:14 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:a9cd:54a5:5132:6498:c2e9) (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:02:26 SanchayanMaity joins (~Sanchayan@122.167.92.138)
05:04:23 livvy joins (~livvy@gateway/tor-sasl/livvy)
05:06:53 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:07:22 M1CK4L13N5 joins (~u0_a626@36.74.54.29)
05:07:29 <M1CK4L13N5> helo
05:07:39 × livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
05:07:54 <M1CK4L13N5> anybody room ?
05:08:05 <Axman6> most of us are human :)
05:08:29 <M1CK4L13N5> helo man
05:08:46 <Axman6> Hello
05:09:14 <M1CK4L13N5> where do you come from ?
05:09:20 <Axman6> The internet
05:09:26 <Axman6> Do you have a question aboutHaskell?
05:09:29 <M1CK4L13N5> same as me h3h3
05:09:30 <Axman6> about Haskell*
05:09:37 × nowhereman quits (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Ping timeout: 272 seconds)
05:10:03 <M1CK4L13N5> what is this room ?
05:10:14 <suzu_> this is for discussion about the Haskell programming language
05:10:19 <Axman6> it's about the Haskell programming language. use /topic to find out more
05:10:37 <M1CK4L13N5> ouh okay thanks
05:11:36 <Axman6> jle`: is there a Symbol -> [SChar] in there?
05:11:45 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
05:12:04 <Axman6> Csongor Kiss did some crazy stuff to do that, I'm sure you've seen it
05:12:05 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 240 seconds)
05:12:10 × M1CK4L13N5 quits (~u0_a626@36.74.54.29) (Quit: leaving)
05:13:07 × Codaraxis__ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Remote host closed the connection)
05:13:33 Codaraxis__ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
05:14:39 Stanley00 joins (~stanley00@unaffiliated/stanley00)
05:15:19 <jle`> Axman6: yeah, i'm using their library :)
05:16:54 <Axman6> So I wrote a thing, and I don't know what tyo do with it (possibly making it publicly available is a bad idea... but no one would trust the security of any system to randonm code found on GitHub right???) https://github.com/axman6/Curve25519
05:17:25 livvy joins (~livvy@gateway/tor-sasl/livvy)
05:17:56 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
05:18:28 × drincruz_ quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 256 seconds)
05:18:47 <iqubic> Do I have to import anything in order to get generic lenses to work for me?
05:18:58 × MOSCOS quits (~MOSCOS@122.54.107.175) (Remote host closed the connection)
05:19:23 MOSCOS joins (~MOSCOS@122.54.107.175)
05:20:25 <Axman6> are you getting errors?
05:21:16 × SanchayanMaity quits (~Sanchayan@122.167.92.138) (Remote host closed the connection)
05:21:44 SanchayanMaity joins (~Sanchayan@122.167.92.138)
05:22:02 <iqubic> I figured it out.
05:22:53 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
05:23:17 × borne quits (~fritjof@200116b864e55d009ba1d43461655289.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
05:23:22 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:a9cd:54a5:5132:6498:c2e9)
05:26:22 × xcmw quits (~textual@cpe-69-133-55-43.cinci.res.rr.com) (Quit: Textual IRC Client: www.textualapp.com)
05:27:21 × urek__ quits (~urek@2804:7f1:e10a:7d51:8503:5833:8cd1:db9c) (Ping timeout: 272 seconds)
05:27:24 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 260 seconds)
05:31:06 × falafel_ quits (~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
05:31:37 × SanchayanMaity quits (~Sanchayan@122.167.92.138) (Quit: SanchayanMaity)
05:32:28 SanchayanMaity joins (~Sanchayan@122.167.92.138)
05:33:40 × Saukk quits (~Saukk@2001:998:ec:944:a00f:6382:4f0:3e7e) (Remote host closed the connection)
05:35:16 borne joins (~fritjof@200116b864e55d009ba1d43461655289.dip.versatel-1u1.de)
05:38:54 × dysfigured quits (~dysfigure@li490-89.members.linode.com) (Quit: I hate quit messages.)
05:39:00 kevin4venus joins (~root@47.240.29.162)
05:39:15 dysfigured joins (~dysfigure@li490-89.members.linode.com)
05:39:20 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:41:55 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
05:43:11 × borne quits (~fritjof@200116b864e55d009ba1d43461655289.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
05:44:04 yianni joins (~yianni@d24-57-15-190.home.cgocable.net)
05:45:50 × yianni quits (~yianni@d24-57-15-190.home.cgocable.net) (Client Quit)
05:46:22 <koz_> Look at Axman6, all about dem curves.
05:46:51 kevin4ve1us joins (~root@47.240.27.221)
05:49:49 × kevin4venus quits (~root@47.240.29.162) (Ping timeout: 246 seconds)
05:52:45 <suzu_> o boi
05:53:39 × evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Quit: ZNC 1.8.2 - https://znc.in)
05:53:54 grandpa_nick joins (2d48ca23@45.72.202.35)
05:54:03 × livvy quits (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
05:54:34 evanjs joins (~evanjs@075-129-098-007.res.spectrum.com)
05:55:06 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
05:58:52 abhixec joins (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net)
05:59:21 livvy joins (~livvy@gateway/tor-sasl/livvy)
06:00:16 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
06:05:05 × benjamingr__ quits (uid23465@gateway/web/irccloud.com/x-vecwnwhdvzjuawlu) (Quit: Connection closed for inactivity)
06:05:35 × kevin4ve1us quits (~root@47.240.27.221) (Remote host closed the connection)
06:09:22 Feuermagier_ joins (~Feuermagi@213.178.26.41)
06:10:29 × Feuermagier quits (~Feuermagi@213.178.26.41) (Read error: Connection reset by peer)
06:13:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
06:16:03 × jaekwon quits (~jaekwon@185.163.110.125) (Remote host closed the connection)
06:16:04 × grandpa_nick quits (2d48ca23@45.72.202.35) (Remote host closed the connection)
06:17:06 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
06:19:24 sord937 joins (~sord937@gateway/tor-sasl/sord937)
06:19:49 heiog joins (6fef9eb9@KD111239158185.au-net.ne.jp)
06:20:27 × mounty quits (~mounty@2001:8000:2f59:0:a021:3f31:5fd8:b032) (Ping timeout: 260 seconds)
06:21:52 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 256 seconds)
06:24:28 × heiog quits (6fef9eb9@KD111239158185.au-net.ne.jp) (Remote host closed the connection)
06:25:23 × livvy quits (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
06:26:03 × philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds)
06:26:04 × iteratee quits (~kyle@162.211.154.4) (Read error: Connection reset by peer)
06:31:11 iteratee joins (~kyle@162.211.154.4)
06:31:54 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:32:55 × iteratee quits (~kyle@162.211.154.4) (Read error: Connection reset by peer)
06:35:32 × olligobber quits (~olligobbe@unaffiliated/olligobber) (Ping timeout: 256 seconds)
06:36:13 iteratee joins (~kyle@162.211.154.4)
06:36:56 × Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 240 seconds)
06:37:42 acidjnk_new joins (~acidjnk@p200300d0c719ff80cd4aafbd6cd15b09.dip0.t-ipconnect.de)
06:39:24 Cthalupa joins (~cthulhu@47.186.47.75)
06:42:02 × ericsagn1 quits (~ericsagne@2405:6580:0:5100:d04d:c9b4:e354:8485) (Ping timeout: 260 seconds)
06:43:09 Ariakenom joins (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se)
06:43:30 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:44:45 × abhixec quits (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
06:46:31 sgibber2018 joins (~arch-gibb@208.85.237.137)
06:47:12 × sgibber2018 quits (~arch-gibb@208.85.237.137) (Client Quit)
06:48:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
06:48:16 × iteratee quits (~kyle@162.211.154.4) (Read error: Connection reset by peer)
06:48:31 iteratee joins (~kyle@162.211.154.4)
06:50:03 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds)
06:50:55 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
06:54:09 ericsagn1 joins (~ericsagne@2405:6580:0:5100:eb3c:90c9:36da:57e0)
06:56:40 × phasespace quits (~sar@89-162-33-21.fiber.signal.no) (Ping timeout: 246 seconds)
06:57:05 ryanneph joins (8ff43251@143.244.50.81)
06:58:02 × ddellacosta quits (dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 272 seconds)
07:00:18 tss1 joins (~tss@185.204.1.185)
07:01:04 bitmagie joins (~Thunderbi@200116b8066de90079858d2098b7d8aa.dip.versatel-1u1.de)
07:04:05 × essem quits (essem@gateway/vpn/privateinternetaccess/essem) (Ping timeout: 240 seconds)
07:09:08 × dwt quits (~dwt@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 256 seconds)
07:10:27 × zebrag quits (~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
07:10:32 livvy joins (~livvy@gateway/tor-sasl/livvy)
07:10:46 zebrag joins (~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr)
07:11:20 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
07:11:22 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
07:15:54 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 260 seconds)
07:17:11 phasespace joins (~sar@80-89-47-117.inet.signal.no)
07:18:23 × livvy quits (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds)
07:20:41 dwt joins (~dwt@c-98-200-58-177.hsd1.tx.comcast.net)
07:24:08 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:24:43 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
07:25:45 shatriff joins (~vitaliish@176.52.219.10)
07:30:05 × Ariakenom quits (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) (Quit: Leaving)
07:36:13 danvet_ joins (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453)
07:37:46 shf joins (~sheaf@2a01:cb19:80cc:7e00:ec62:9801:2e60:ec94)
07:38:32 <incertia> does the order in which i runState and runExcept matter
07:38:39 <incertia> in terms of result
07:39:05 × Codaraxis__ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Remote host closed the connection)
07:39:30 Codaraxis__ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
07:39:39 <incertia> i know they end up returning different things but does anything funky happen with the state
07:42:47 Tops2 joins (~Tobias@dyndsl-095-033-020-246.ewe-ip-backbone.de)
07:43:24 × danvet_ quits (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) (Quit: Leaving)
07:43:53 × iteratee quits (~kyle@162.211.154.4) (Read error: Connection reset by peer)
07:44:11 iteratee joins (~kyle@162.211.154.4)
07:45:18 jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
07:45:46 boxscape joins (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
07:47:04 × Codaraxis__ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 246 seconds)
07:48:01 dhouthoo joins (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
07:48:54 Codaraxis__ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
07:49:02 <incertia> i *think* StateT s (ExceptT e m) a rolls back errors and that's a side effect of how bind and lift interact?
07:50:35 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
07:50:37 justan0theruser joins (~justanoth@unaffiliated/justanotheruser)
07:50:44 × polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 240 seconds)
07:52:00 <opqdonut> @unmtl StateT s (ExceptT e m) a
07:52:00 <lambdabot> s -> ExceptT e m (a, s)
07:52:02 <Ferdirand> i think it's clearer if you expand the types of the transformers
07:52:10 <Ferdirand> ah, voila
07:52:15 <opqdonut> from the unmtl'd type you can clearly see that if there's an error there's no new state
07:54:53 <opqdonut> hmm oh unmtl doesn't support ExceptT...
07:54:53 <opqdonut> well it's basically `s -> Either e (m (a,s))`
07:54:53 × iteratee quits (~kyle@162.211.154.4) (Read error: Connection reset by peer)
07:54:53 <incertia> @unmtl StateT s (ErrorT e m) a
07:54:53 <lambdabot> s -> m (Either e (a, s))
07:54:53 <opqdonut> right, that's better, and I got the place of the m wrong
07:54:53 × loller_ quits (uid358106@gateway/web/irccloud.com/x-wqkamkonpztckcgq) (Quit: Connection closed for inactivity)
07:54:53 sQVe joins (~sQVe@unaffiliated/sqve)
07:54:53 iteratee joins (~kyle@162.211.154.4)
07:54:53 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
07:54:54 <opqdonut> @unmtl ErrorT e (StateT s m) a
07:54:54 <lambdabot> s -> m (Either e a, s)
07:54:54 <incertia> makes sense
07:54:54 <opqdonut> that's the monad you want if errors shouldn't roll back state
07:54:54 <koz_> So yeah, it does matter a great deal.
07:55:12 × Codaraxis__ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Remote host closed the connection)
07:55:15 × meck quits (~meck@li1809-18.members.linode.com) (Remote host closed the connection)
07:55:38 Codaraxis__ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
07:56:44 × dwt quits (~dwt@c-98-200-58-177.hsd1.tx.comcast.net) (Ping timeout: 256 seconds)
07:58:24 × iteratee quits (~kyle@162.211.154.4) (Read error: Connection reset by peer)
07:58:41 iteratee joins (~kyle@162.211.154.4)
07:59:06 Varis joins (~Tadas@unaffiliated/varis)
08:00:32 danvet_ joins (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453)
08:00:52 × danvet_ quits (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) (Remote host closed the connection)
08:01:44 × jedws quits (~jedws@121.209.181.215) (Quit: My MacBook has gone to sleep. ZZZzzz…)
08:02:15 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 256 seconds)
08:02:18 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
08:02:34 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
08:03:41 meck joins (~meck@li1809-18.members.linode.com)
08:03:58 Tops21 joins (~Tobias@dyndsl-095-033-020-246.ewe-ip-backbone.de)
08:04:40 emmanuel` joins (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42)
08:05:38 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
08:05:56 × bitmapper quits (uid464869@gateway/web/irccloud.com/x-rzuvzgsqtyjylpyp) (Quit: Connection closed for inactivity)
08:06:37 × Feuermagier_ quits (~Feuermagi@213.178.26.41) (Quit: Leaving)
08:06:37 × iteratee quits (~kyle@162.211.154.4) (Read error: Connection reset by peer)
08:06:54 iteratee joins (~kyle@162.211.154.4)
08:07:16 × Tops2 quits (~Tobias@dyndsl-095-033-020-246.ewe-ip-backbone.de) (Ping timeout: 240 seconds)
08:07:20 chele joins (~chele@ip5b416ea2.dynamic.kabel-deutschland.de)
08:07:39 × emmanuel_erc quits (~user@2604:2000:1382:ce03:8098:7b4a:87e8:5ce7) (Ping timeout: 246 seconds)
08:09:53 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 260 seconds)
08:13:33 × iteratee quits (~kyle@162.211.154.4) (Read error: Connection reset by peer)
08:14:13 iteratee joins (~kyle@162.211.154.4)
08:15:18 dwt joins (~dwt@c-98-200-58-177.hsd1.tx.comcast.net)
08:15:32 jedws joins (~jedws@121.209.181.215)
08:16:02 danvet_ joins (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453)
08:17:35 × danvet_ quits (~danvet@2a02:168:57f4:0:5f80:650d:c6e6:3453) (Client Quit)
08:17:45 catchme_ joins (uid355354@gateway/web/irccloud.com/x-ifzvgcjuyamurihg)
08:19:38 LKoen joins (~LKoen@228.162.9.109.rev.sfr.net)
08:21:05 m0rphism joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
08:22:28 jianbo joins (~jianbo@2601:246:4000:b22:6c54:df8a:9bd9:dba6)
08:23:14 <boxscape> hm It seems strange to me that an ifThenElse function wasn't added to Prelude when RebindableSyntax was introduced
08:25:56 catchme_ is now known as catchme
08:27:48 × ryanneph quits (8ff43251@143.244.50.81) (Remote host closed the connection)
08:29:23 <dminuoso> Is something like boolean blindness addressable in Haskell at all, or is most of that just a hint at "Agda is better for guaranteesing correctness"?
08:29:43 christo joins (~chris@81.96.113.213)
08:29:49 <dminuoso> Because it seems to be constructive proofs for everything, say equality between two things, seems rather difficult on the value level.
08:30:03 thc202 joins (~thc202@unaffiliated/thc202)
08:31:54 × shenyi quits (uid216035@gateway/web/irccloud.com/x-ojvoeipqhxhkiuhf) (Quit: Connection closed for inactivity)
08:31:58 <int-e> well, use a different one
08:34:50 × jianbo quits (~jianbo@2601:246:4000:b22:6c54:df8a:9bd9:dba6) (Ping timeout: 264 seconds)
08:35:24 <dminuoso> Such as?
08:36:46 × Axman6 quits (~Axman6@pdpc/supporter/student/Axman6) (Remote host closed the connection)
08:37:03 Axman6 joins (~Axman6@pdpc/supporter/student/Axman6)
08:38:10 <int-e> sorry, that was meant for another channel
08:38:46 cfricke joins (~cfricke@unaffiliated/cfricke)
08:38:56 <idnar> dminuoso: you can replace the boolean with a sum type
08:39:38 × heatsink quits (~heatsink@2600:1700:bef1:5e10:cc3:649d:beb7:1989) (Remote host closed the connection)
08:40:00 <idnar> (that witnesses whatever the condition is)
08:40:08 heatsink joins (~heatsink@2600:1700:bef1:5e10:cc3:649d:beb7:1989)
08:43:45 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
08:45:02 × heatsink quits (~heatsink@2600:1700:bef1:5e10:cc3:649d:beb7:1989) (Ping timeout: 264 seconds)
08:46:39 × howdoi quits (uid224@gateway/web/irccloud.com/x-deizflgbbgyoqway) (Quit: Connection closed for inactivity)
08:48:04 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
08:48:35 <dminuoso> idnar: But doesn't that bring you back to the original problem that you don't even know what the sum type witnesses because you dont know how it was constructed?
08:48:44 <dminuoso> I mean that is precisely the problem behind Bool in the first place.
08:49:35 <cheater> hi. building llvm-hs 9.0.1 fails on windows because you can't have LLVM-9.dll on windows (too many exports for the windows dll format) and during building llvm-hs 9.0.1, it calls llvm-config with --link-shared which tries to link things against LLVM-9.dll which does not exist. how can i prevent llvm-hs from doing --link-shared?
08:49:52 <dminuoso> Let's take the case of equality between two nodes in a tree. How could you encode their equality constructively in a sum type?
08:50:13 <dminuoso> It almost seems as if you need a different meta language to even talk about it (like how the value level supplies proof for type level programming)
08:50:54 wonko7 joins (~wonko7@2a01:e35:2ffb:7040:14a1:46f4:68f7:2133)
08:51:13 <idnar> dminuoso: maybe `data Pair a = Same a | Different a a` ?
08:51:25 <[exa]> cheater: this is not constructive but the easiest solution seems to omit windows from the pipeline, if you can
08:51:34 <cheater> it is not
08:51:43 dnlkrgr joins (~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de)
08:51:52 <dminuoso> idnar: For representational equality that works I guess.
08:52:08 <dminuoso> Though, here again, `Different a a` is not proof they are different.
08:52:20 <[exa]> cheater: otherwise try to build everything with -static and grep the llvm-hs code for any place where the --link-shared originates
08:52:47 <dminuoso> But to be fair, I asked for proof of equality not proof of inequality.
08:53:35 <cheater> hmm yeah
08:54:15 <idnar> dminuoso: yeah, I guess a "100%" solution is tricky
08:54:23 <[exa]> cheater: you might want to undo this default https://github.com/llvm-hs/llvm-hs/pull/39
08:54:57 <cheater> linkFlag = case lookupFlagAssignment (mkFlagName "shared-llvm") flags of Nothing -> "--link-shared" Just shared -> if shared then "--link-shared" else "--link-static"
08:55:10 <cheater> how would i set this flag? that's from Setup.hs
08:55:32 <[exa]> cheater: please consider pastebin for larger pieces of code :]
08:55:50 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
08:56:04 shatriff joins (~vitaliish@176.52.219.10)
08:56:04 × drbean quits (~drbean@TC210-63-209-156.static.apol.com.tw) (Ping timeout: 256 seconds)
08:56:09 <[exa]> anyway you should be able to set the -f flags with cabal
08:56:35 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
08:57:12 shatriff joins (~vitaliish@176.52.219.10)
08:57:54 <boxscape> dminuoso it might be annoying with the current state of dependent types in Haskell but it's certainly *possible* to have `data Dec a = Yes a | No (a -> Void)` and then use `Dec (a :~: b)` in your types
08:58:22 <cheater> yes, not sure how. cabal configure -fshared-llvm=False doesn't work, cabal errors out with "invalid flag assignment: shared-llvm=False"
08:59:16 × boxscape quits (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Connection closed)
08:59:27 boxscape joins (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
08:59:47 × wei2912 quits (~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
09:00:00 <[exa]> can the flags be negated this way?
09:00:10 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
09:00:27 <cheater> i think the correct syntax is cabal <command> --constraint='llvm-hs -shared-llvm'
09:00:36 <cheater> where - means disabling as opposed to +
09:00:37 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
09:01:29 <[exa]> o here https://cabal.readthedocs.io/en/3.4/cabal-project.html#cfg-field-flags
09:01:42 <dminuoso> boxscape: Sure, but again that's on the wrong level. Nothing prevents me from building `Yes (Refl 1 2)`
09:01:50 × emmanuel` quits (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42) (Ping timeout: 264 seconds)
09:01:51 <boxscape> dminuoso yes, the typechecker does
09:01:56 <boxscape> or do you mean
09:02:02 <boxscape> well no
09:02:06 <boxscape> the typechecker does
09:02:10 × Kaivo quits (~Kaivo@104-200-86-99.mc.derytele.com) (Ping timeout: 260 seconds)
09:02:25 <dminuoso> % data Dec a = Yes a | No (a -> Void)
09:02:25 <yahb> dminuoso:
09:02:28 <[exa]> cheater: so perhaps -f-shared-llvm (or -fno-shared-llvm)
09:02:39 <dminuoso> % :t Yes (Refl 'a' 'b')
09:02:39 <yahb> dminuoso: ; <interactive>:1:6: error:; * Couldn't match expected type `Char -> Char -> a' with actual type `a0 :~: a0'; * The function `Refl' is applied to two arguments,; but its type `a0 :~: a0' has none; In the first argument of `Yes', namely `(Refl 'a' 'b')'; In the expression: Yes (Refl 'a' 'b')
09:02:46 <dminuoso> Oh wait
09:02:48 <boxscape> dminuoso it has to be (Refl :: 1 :~: 2)
09:03:10 <cheater> [exa]: oh, i'll try that
09:03:13 <dminuoso> boxscape: Ah yeah my brain was on a pause for a second.
09:03:27 <dminuoso> boxscape: So to have a constructive proof, I need to lift the values to the type level.
09:03:33 <cheater> thanks!
09:03:34 <boxscape> right
09:03:55 <[exa]> cheater: so in llvm-hs, you'd do `cabal install -f-shared-llvm`, in a reverse dependency you'd use the --constraint= syntax
09:04:06 Kaivo joins (~Kaivo@104-200-86-99.mc.derytele.com)
09:04:15 <[exa]> so your first version was right it seems, cool
09:05:06 <cheater> ok, well, llvm-hs's Setup.hs fails with fromJust: Nothing
09:05:21 <cheater> i have no idea why, the code doesn't look like it should be getting a Nothing??
09:05:34 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 260 seconds)
09:05:34 <cheater> let getLibs = liftM (map (fromJust . stripPrefix "-l") . words) . llvmConfig
09:06:32 <[exa]> can you get the value of llvmConfig?
09:07:40 toorevitimirp joins (~tooreviti@117.182.181.85)
09:07:40 × toorevitimirp quits (~tooreviti@117.182.181.85) (Remote host closed the connection)
09:07:43 <cheater> i think that's not it
09:07:51 <cheater> i think they're looking for libs in the form of -lfoo -lbar
09:08:03 jamm_ joins (~jamm@unaffiliated/jamm)
09:08:04 toorevitimirp joins (~tooreviti@117.182.181.85)
09:08:05 <cheater> and then they encounter -f-shared-llvm
09:08:32 <cheater> so the code is just plain wrong, because it expects every flag to start with -l
09:08:40 <cheater> let me try to see what's inside llvmConfig though, you're right
09:09:41 × bitmagie quits (~Thunderbi@200116b8066de90079858d2098b7d8aa.dip.versatel-1u1.de) (Quit: bitmagie)
09:10:22 <cheater> wait, what was the way to make cabal load a package from my own dir on my disk, rather than from hackage? i forgot
09:10:23 × Codaraxis__ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Remote host closed the connection)
09:10:24 × Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
09:10:32 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
09:10:49 Codaraxis__ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
09:10:54 <cheater> ah, found it
09:10:58 × Lord_of_Life quits (~Lord@46.217.216.160) (Changing host)
09:10:58 Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362)
09:11:16 <dminuoso> Is there a way to detect whether or not a pragma is disabled in TH?
09:12:24 <dminuoso> A language pragma, I mean
09:13:17 <Taneb> dminuoso: there's "isExtEnabled :: Extension -> Q Bool"
09:13:38 × Codaraxis__ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Remote host closed the connection)
09:14:12 <cheater> looks like it's just packages: ../llvm-hs-9.0.1 inside cabal.project.local, right?
09:15:04 <[exa]> cheater: I'm usually just moving the package to a subdirectory (not sure if that's needed) and add just cabal install the subpath
09:15:11 <[exa]> cabal.project helps too
09:15:14 <dminuoso> Taneb: That's perfect, cheers! I kept searching for "pragma" and "language" to no avail, that helped.
09:15:27 <cheater> [exa]: hmm, that wasn't how i usually did that. i'm kinda lost.
09:15:51 <[exa]> cheater: not even sure if these 2 do the same thing or one is deprecated, hopefully some cabal guru will show up... :D )
09:16:45 <[exa]> cheater: in one project's cabal.project I have: `packages: \n ./somepackage/*.cabal`
09:16:53 <cheater> right
09:17:11 <[exa]> also ./*.cabal in your case, for consistency
09:17:48 Codaraxis__ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net)
09:17:57 Maxdaman1us is now known as Maxdamantus
09:20:20 <Taneb> dminuoso: I guess "pragma" would be incorrect because you can set them as GHC flags or cabal options too
09:21:16 <cheater> yeah i think that's correct exa
09:21:16 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
09:21:30 × argento quits (~argent0@168.227.97.29) (Quit: leaving)
09:21:54 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
09:23:07 <boxscape> "LANGUAGE pragma" is the name of the {-# LANGUAGE a, b, c #-} construct that allows you to enable extensions a, b, c
09:25:15 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-lfqkgsukxlcssdou) (Quit: Connection closed for inactivity)
09:27:54 <cheater> anyone on linux here? what sort of output do you get from llvm-config --libs --link-shared ?
09:28:18 <cheater> [exa] you're on linux, right? :)
09:29:18 <[exa]> yeah
09:29:35 <[exa]> anyway I get: -lLLVM-9
09:30:08 <cheater> that's all?
09:30:13 <[exa]> yeah. from --link--static there's a list of like ~150 libraries
09:30:31 <cheater> what do the first few look like?
09:31:17 <[exa]> https://pastebin.com/B7Ji2rUs
09:31:37 <cheater> thanks
09:33:10 kuribas joins (~user@ptr-25vy0i99gxf0ju0nzkm.18120a2.ip6.access.telenet.be)
09:35:18 hans_ joins (~hans@94-214-46-13.cable.dynamic.v4.ziggo.nl)
09:37:39 <boxscape> hmm which would you prefer, `catMaybes . fmap join` or catMaybes . catMaybes`
09:38:53 <Taneb> boxscape: slight preference for the first one
09:39:00 <boxscape> okay
09:39:15 fendor joins (~fendor@178.115.129.186.wireless.dyn.drei.com)
09:39:23 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
09:40:28 <merijn> Courtesy of Facebook just reminding me of stumbling on this quote years ago:
09:40:31 <merijn> @quote farpotshket
09:40:31 <lambdabot> andr00 says: Today's software engineering word is "farpotshket." This is a Yiddish word meaning, "broken, because someone tried to fix it."
09:40:38 heatsink joins (~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641)
09:44:52 emmanuel` joins (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42)
09:45:37 × heatsink quits (~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641) (Ping timeout: 258 seconds)
09:48:13 × mbomba quits (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0)
09:49:52 × emmanuel` quits (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42) (Ping timeout: 260 seconds)
09:49:55 <tdammers> yiddish has a knack for having words for concepts that don't exist in other languages
09:50:24 <boxscape> hm I can't find the etymology on farpotshket
09:51:54 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
09:52:56 × Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 240 seconds)
09:53:46 <boxscape> ah patchken is from Russian
09:54:12 Cthalupa joins (~cthulhu@47.186.47.75)
09:54:13 <merijn> tdammers: I didn't realise how much lasting legacy Yiddish and Bargoens had in Amsterdam until I went to university and ran into a bunch of people unfamiliar with words I considered "basic Dutch" :p
09:54:32 × berberman_ quits (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
09:55:27 bitmagie joins (~Thunderbi@200116b8066de90079858d2098b7d8aa.dip.versatel-1u1.de)
09:56:42 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
09:57:23 berberman joins (~berberman@unaffiliated/berberman)
09:58:11 __monty__ joins (~toonn@unaffiliated/toonn)
10:01:17 <lortabac> I'm getting a weird error: No instance for (Functor ((,,) Int Text))
10:01:31 <lortabac> does anybody know what might be happening?
10:01:43 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
10:01:52 <opqdonut> you're trying to fmap over a triple?
10:01:56 <lortabac> yes
10:02:03 <opqdonut> well there is no such functor instance :)
10:02:16 <opqdonut> only for tuples
10:02:25 <opqdonut> I mean 2-tuples, pairs
10:02:41 <opqdonut> > fmap succ ("foo",2)
10:02:43 <lambdabot> ("foo",3)
10:02:44 <boxscape> you could do Functor ((,) (Int, Text)) maybe
10:02:53 <opqdonut> > fmap succ (4,"foo",2)
10:02:55 <lambdabot> (4,"foo",3)
10:02:59 <boxscape> hmm
10:03:00 <lortabac> I see it in Haddock
10:03:01 <opqdonut> oh wow that instance is on lambdabot
10:03:02 <tdammers> merijn: de mazzel he
10:03:38 <boxscape> yeah the instance does appear to be in Prelude
10:03:39 <Taneb> lortabac: which version of GHC are you using?
10:03:39 <opqdonut> the triple instance is only "Since: 4.14.0.0
10:03:44 <opqdonut> so very new
10:04:01 <opqdonut> 8.10
10:04:05 <opqdonut> GHC 8.10 that is
10:04:33 <lortabac> oh ok that explains the mystery
10:04:38 <boxscape> I wonder how they decided to stop at (,,,)
10:04:39 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
10:05:47 × aidecoe quits (~aidecoe@unaffiliated/aidecoe) (Remote host closed the connection)
10:06:41 <maerwald> flipped a coin
10:06:58 <opqdonut> or a d6?
10:07:10 <maerwald> d20
10:07:10 <lambdabot> maerwald: 3
10:07:17 <maerwald> wat
10:07:21 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
10:07:23 <boxscape> 4d20
10:07:23 <lambdabot> boxscape: 60
10:07:23 <opqdonut> ha
10:07:53 <boxscape> strange to have a command that's not prefixed by > or @ or :
10:08:02 <Uniaika> fmap succ ("foo", "bar", "barf", 2)
10:08:08 <Uniaika> > fmap succ ("foo", "bar", "barf", 2)
10:08:10 <lambdabot> ("foo","bar","barf",3)
10:08:43 <Uniaika> < boxscape> I wonder how they decided to stop at (,,,) // Nobody went to the maintainers to ask for a larger instance :)
10:08:52 <boxscape> I suppose so
10:09:46 <maerwald> should run some TH code that infers the maximum instance based on the number of build jobs
10:09:50 john20 joins (522e3b7a@82.46.59.122)
10:10:26 <boxscape> or based on the number of mailing list requests that are asking for it
10:11:16 ubert joins (~Thunderbi@p200300ecdf1e5312e6b318fffe838f33.dip0.t-ipconnect.de)
10:12:34 borne joins (~fritjof@200116b86420b200bcbe2553f445a41b.dip.versatel-1u1.de)
10:12:50 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
10:13:03 <merijn> tdammers: mazzel is pretty universal, is was thinking more like achenebbisj
10:13:42 × guest128 quits (~user@49.5.6.87) (Quit: ERC (IRC client for Emacs 27.1))
10:15:17 emmanuel` joins (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42)
10:15:30 <ski> @dice 4d20-2
10:15:30 <lambdabot> ski: 36 - 2 => 34
10:16:58 <boxscape> 200000000000000000000d2000000000000000000000000
10:16:58 <lambdabot> boxscape: 200000000011101321490973505089978167756587008
10:17:00 <boxscape> not bad
10:17:20 <boxscape> would have taken me quite a while to throw those myslef
10:17:26 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 258 seconds)
10:18:50 × catchme quits (uid355354@gateway/web/irccloud.com/x-ifzvgcjuyamurihg) (Quit: Connection closed for inactivity)
10:19:13 × bitmagie quits (~Thunderbi@200116b8066de90079858d2098b7d8aa.dip.versatel-1u1.de) (Quit: bitmagie)
10:23:37 × lxsameer quits (~lxsameer@unaffiliated/lxsameer) (Ping timeout: 264 seconds)
10:25:16 × p3n quits (~p3n@217.198.124.246) (Quit: ZNC 1.8.2 - https://znc.in)
10:26:59 <__monty__> merijn: I think we spell that achenebbig.
10:28:33 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 258 seconds)
10:31:57 p3n joins (~p3n@217.198.124.246)
10:35:01 Franciman joins (~francesco@host-212-171-46-126.retail.telecomitalia.it)
10:36:52 <merijn> __monty__: I had to google how to spell it, I only use it in speech :p
10:37:08 lxsameer joins (lxsameer@gateway/vpn/protonvpn/lxsameer)
10:40:30 × rprije quits (~rprije@14-201-170-17.tpgi.com.au) (Ping timeout: 256 seconds)
10:41:18 <__monty__> Just never heard it with an s.
10:43:44 × p3n quits (~p3n@217.198.124.246) (Quit: ZNC 1.8.2 - https://znc.in)
10:44:01 × fendor quits (~fendor@178.115.129.186.wireless.dyn.drei.com) (Remote host closed the connection)
10:44:09 p3n joins (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1)
10:45:05 fendor joins (~fendor@178.115.129.186.wireless.dyn.drei.com)
10:51:13 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
10:53:26 × ericsagn1 quits (~ericsagne@2405:6580:0:5100:eb3c:90c9:36da:57e0) (Ping timeout: 264 seconds)
10:54:00 <tdammers> how does one google phonetically?
10:54:52 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
10:55:32 <boxscape> "Ok google, how do I spell ..."
10:55:49 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 260 seconds)
10:59:30 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
11:01:31 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
11:01:52 × Franciman quits (~francesco@host-212-171-46-126.retail.telecomitalia.it) (Ping timeout: 272 seconds)
11:03:15 <tdammers> hmm...
11:05:06 ericsagn1 joins (~ericsagne@2405:6580:0:5100:230f:7e22:ba44:597f)
11:05:52 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
11:08:32 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
11:15:56 loller_ joins (uid358106@gateway/web/irccloud.com/x-kppxruluvpavuchz)
11:16:33 nff_ joins (~nff_@82.84.72.37)
11:17:18 stzsch joins (~stzsch@187.44.81.18)
11:19:32 × emmanuel` quits (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42) (Ping timeout: 258 seconds)
11:20:31 ClaudiusMaximus joins (~claude@223.153.198.146.dyn.plus.net)
11:20:37 × ClaudiusMaximus quits (~claude@223.153.198.146.dyn.plus.net) (Changing host)
11:20:37 ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus)
11:20:57 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
11:22:03 × john20 quits (522e3b7a@82.46.59.122) (Remote host closed the connection)
11:22:44 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
11:23:00 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
11:28:33 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
11:29:23 MidAutumnHotaru3 joins (~MidAutumn@154.91.197.93)
11:31:02 urek__ joins (~urek@2804:7f1:e10a:7d51:8503:5833:8cd1:db9c)
11:31:16 × MidAutumnHotaru quits (~MidAutumn@154.91.197.93) (Ping timeout: 240 seconds)
11:31:16 MidAutumnHotaru3 is now known as MidAutumnHotaru
11:32:29 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
11:32:30 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
11:32:41 aletheia2 joins (5dcb8e3f@p5dcb8e3f.dip0.t-ipconnect.de)
11:33:08 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
11:33:29 sord937 joins (~sord937@gateway/tor-sasl/sord937)
11:33:39 <aletheia2> I've got a quck question, is it possible in haskell to pass a record as function parameter both in the destructured version Foo{x= y} etc.. and with a variable name at the same time?
11:34:30 <tomsmeding> aletheia2: what do you mean exactly when you say "with a variable name"?
11:34:54 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
11:35:20 <aletheia2> the full record, just like bar record = ...
11:36:23 <tomsmeding> do you perhaps mean an "as-binding": myfunction r@Foo{x=y} = {- something with r and y -}
11:36:40 <aletheia2> yes that's exactly what i was looking for, thanks
11:36:44 the-smug-one joins (~user@83-92-112-87-cable.dk.customer.tdc.net)
11:36:52 <tomsmeding> that notation also works for other things, like tup@(x,y)
11:39:02 × justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 264 seconds)
11:42:05 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
11:42:13 heatsink joins (~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641)
11:45:34 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
11:47:08 × heatsink quits (~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641) (Ping timeout: 260 seconds)
11:47:17 f-a joins (~f-a@151.44.27.153)
11:50:01 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 264 seconds)
11:55:42 × cads quits (~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 256 seconds)
11:58:06 <dminuoso> aletheia2: Note, if you have lens you you get to write it as : ` let x = ...; y = x & someField %~ (+1); in ... f x ..`
11:58:09 <dminuoso> (Or optics)
11:58:51 Wuzzy joins (~Wuzzy@p549c9bc8.dip0.t-ipconnect.de)
11:58:58 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
11:59:58 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
12:00:58 × shf quits (~sheaf@2a01:cb19:80cc:7e00:ec62:9801:2e60:ec94) (Read error: Connection reset by peer)
12:01:09 jamm_ joins (~jamm@unaffiliated/jamm)
12:03:12 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
12:03:14 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
12:03:37 × columbarius quits (~columbari@i5E86B3C5.versanet.de) (Ping timeout: 246 seconds)
12:05:12 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
12:05:59 columbarius joins (~columbari@94.134.93.69)
12:06:01 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
12:08:56 dhil joins (~dhil@195.213.192.34)
12:10:24 ADG1089 joins (uid455466@gateway/web/irccloud.com/x-nqoknmurevpbzhjb)
12:11:38 × Stanley00 quits (~stanley00@unaffiliated/stanley00) ()
12:11:45 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
12:12:03 × aletheia2 quits (5dcb8e3f@p5dcb8e3f.dip0.t-ipconnect.de) (Remote host closed the connection)
12:12:13 × tabemann quits (~tabemann@2600:1700:7990:24e0:4046:8a62:9416:f625) (Ping timeout: 260 seconds)
12:12:21 tabemann_ joins (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net)
12:13:24 × hans_ quits (~hans@94-214-46-13.cable.dynamic.v4.ziggo.nl) (Ping timeout: 260 seconds)
12:13:25 <wz1000> are there any libraries that implement efficient maps keyed over small enums (<= Word8) ?
12:13:46 <merijn> wz1000: Vector? :p
12:14:25 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
12:14:43 <merijn> Or, perhaps Array if you wanna use Ix on your key type
12:15:33 <wz1000> But then growing it would be inefficient
12:15:59 <wz1000> I want to keep a lot of these maps, and want to keep growing/shrinking them
12:16:16 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Quit: cosimone)
12:16:27 <wz1000> Or are you suggesting I use Vector (Maybe a)?
12:17:01 <wz1000> where the size is the size of the enum - but that still seems wasteful because many/most of these maps will barely be populated
12:17:04 <__monty__> Does it need to be faster than IntMap?
12:18:39 <wz1000> I'm using IntMap now, but it seems wasteful since I'm wasting 7 bytes per int
12:18:55 <fendor> Interesting, limiting the ghci HEAP leads to tasty not terminating on an endless looping test
12:20:06 <wz1000> what I'm looking for is essentially Word8Map
12:20:38 f-a parts (~f-a@151.44.27.153) ()
12:21:21 <fendor> increasing the heap to 3GB or something like that works, though.
12:23:13 hans_ joins (~hans@94-214-46-13.cable.dynamic.v4.ziggo.nl)
12:23:21 <merijn> wz1000: Use backpack to generalise IntMap to any bounded Int! :D
12:23:34 <__monty__> wz1000: Does it really matter if your indices are boxed?
12:24:27 <merijn> wz1000: If your maps are sparse, just use "Vector (Key, Value)" and binary search any key you need
12:24:47 <merijn> wz1000: And if they're sparse the copy upon insert isn't an issue either
12:25:53 <wz1000> __monty__: IntMap doesn't have boxed indices though? (Or at least it shouldn't)
12:26:12 <__monty__> Your word8 indices would be boxed though?
12:26:14 <merijn> wz1000: eh...I think so
12:26:20 <merijn> Also
12:26:29 <merijn> Word8 is the exact same size as Int
12:27:02 <__monty__> No taking advantage of any leftover space in the pointer, merijn?
12:27:06 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
12:27:18 <wz1000> But you can combine the prefix and the mask into a Word16 though
12:27:22 <wz1000> https://hackage.haskell.org/package/containers-0.6.2.1/docs/src/Data.IntMap.Internal.html#IntMap
12:27:28 <merijn> https://hackage.haskell.org/package/base-4.14.0.0/docs/src/GHC.Word.html#Word8
12:28:03 <merijn> Word8 is just Word# which is the same size as Int#
12:28:50 <merijn> wz1000: Ok, so realistically, how many keys are you expecting to have? Millions? Billions? Trillions?
12:29:06 <merijn> Because for anything less than trillions this seems utterly irrelevant
12:30:04 <merijn> Ok, maybe for billions to on desktop-y machines
12:31:19 <wz1000> I mean, I'm trying to benchmark Haskell implementations of common lossless compression algorithms and compare them to "reference" C implementations, so I need all the help I can get
12:31:46 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
12:31:53 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
12:32:04 <tomsmeding> what kind of map do the C implementations use in this case?
12:32:27 <merijn> wz1000: Well, the unboxed tuple vector seems the best in terms of pure speed for lookup
12:32:42 christo joins (~chris@81.96.113.213)
12:33:37 <merijn> Custom storable vector also does well if memory usage is a concern, since you can pack as tightly as you need
12:33:38 nowhereman joins (~pierre@91-175-29-131.subs.proxad.net)
12:35:20 sjha joins (2a6f01d7@42.111.1.215)
12:35:43 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
12:36:06 Entertainment joins (~entertain@104.246.132.210)
12:36:10 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 246 seconds)
12:36:14 × p8m quits (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 272 seconds)
12:37:24 <sjha> hey
12:37:26 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
12:38:30 sord937 joins (~sord937@gateway/tor-sasl/sord937)
12:39:11 solonarv joins (~solonarv@astrasbourg-552-1-28-212.w90-13.abo.wanadoo.fr)
12:40:15 <tomsmeding> sjha: hi :)
12:41:51 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
12:41:52 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
12:42:28 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
12:43:12 drbean joins (~drbean@TC210-63-209-142.static.apol.com.tw)
12:45:41 × koz_ quits (~koz@121.99.240.58) (Ping timeout: 260 seconds)
12:46:03 <sjha> tomsmeding hi :) this is the first time I've joined Haskell irc or freenode for that matter . I hope to learn a lot from you all.
12:47:01 <tomsmeding> I hope you do! message frequency varies; note there are some logs at https://ircbrowse.tomsmeding.com/browse/haskell
12:47:33 p8m joins (p8m@gateway/vpn/protonvpn/p8m)
12:48:10 <boxscape> oh huh had no idea I'm in the top 10 frequently messaging users this month
12:48:17 <boxscape> s/10/10 most/
12:48:20 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 256 seconds)
12:48:28 <boxscape> tomsmeding do you have a search function for the logs in there?
12:48:36 <tomsmeding> lol no I believe not
12:48:48 <boxscape> hm okay
12:48:58 × Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 256 seconds)
12:49:02 <tomsmeding> I guess creating a page for that shouldn't be too hard
12:49:07 <tomsmeding> also open source so hack away ;)
12:49:16 <boxscape> I'll take a look
12:49:31 <tomsmeding> (most/all of the code is not written by me though)
12:49:44 <boxscape> right okay
12:49:46 Cthalupa joins (~cthulhu@47.186.47.75)
12:51:13 koz joins (~koz@121.99.240.58)
12:51:45 sjha is now known as shekhar
12:55:45 <siraben> Wjat
12:55:57 <siraben> What's the recommended way to throw errors in the continuation monad?
12:56:09 <siraben> Cont over Except doesn't work, but there's Except over Cont
12:56:16 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 256 seconds)
12:57:08 × skiold_ quits (~skiold@gateway/tor-sasl/skiold) (Remote host closed the connection)
12:57:30 skiold_ joins (~skiold@gateway/tor-sasl/skiold)
12:58:25 <merijn> The *recommended* way to throw errors in Cont is too buy some heavy booze and spent an evening drunk and crying trying to figure it out :D
12:58:42 <siraben> heh
12:58:53 <siraben> well, i'm currently using MonadFail inside Cont, hehe
12:59:08 <siraben> Specifically MaybeT, but can't get ny messages out of it
12:59:10 <siraben> any
13:00:00 iqubic` joins (~user@2601:602:9500:4870:9dce:a684:2556:7d9f)
13:00:23 chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
13:00:25 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
13:00:28 × chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit)
13:00:35 <ski> shekhar : feel free to ask questions
13:01:04 <maerwald> ContT is where haskell is indistinguishable from Java.
13:02:00 × jedws quits (~jedws@121.209.181.215) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:02:04 tomsmeding gets out popcorn
13:02:09 <ski> @unmtl ContT o (MaybeT m) a
13:02:09 <lambdabot> (a -> m (Maybe o)) -> m (Maybe o)
13:02:11 <ski> @unmtl MaybeT (ContT o m) a
13:02:11 <lambdabot> (Maybe a -> m o) -> m o
13:02:18 <siraben> I'm really close to converting the scheme interpreter to monad transformers; https://github.com/siraben/r5rs-denot/blob/e1e46ecd63ed4b5d8b287a00da6e1184bbc2534b/src/SchemeEval.hs#L20
13:02:30 <siraben> @unmtl ReaderT u (ContT k (MaybeT (State s))) a
13:02:31 <lambdabot> u -> (a -> s -> (Maybe k, s)) -> s -> (Maybe k, s)
13:02:47 <siraben> But I need `Either err k` instead of `Maybe k`
13:03:11 <ski> @unmtl ReaderT u (ContT k (ErrorT err (State s))) a
13:03:11 <lambdabot> u -> (a -> s -> (Either err k, s)) -> s -> (Either err k, s)
13:03:16 <siraben> Also, any way to reduce the boilerplatey functions `reflect` and `reify`?
13:03:42 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
13:04:14 × iqubic quits (~user@2601:602:9500:4870:81cb:3fd4:dbe9:8921) (Ping timeout: 264 seconds)
13:04:26 <siraben> ski: No instance for (MonadError err (ContT k (ErrorT err (State s))))
13:04:45 <siraben> then there's a message about using standalone deriving
13:04:48 <ski> `unmtl' doesn't know `ExceptT', use that instead of `ErrorT'
13:05:03 <siraben> Yeah it doesn't work with ExceptT either
13:05:15 fendor_ joins (~fendor@77.119.128.243.wireless.dyn.drei.com)
13:05:28 <siraben> • No instance for (MonadError err (ContT k (ExceptT err (State s))))
13:05:30 <maerwald> Just use IO, TVars and exceptions
13:05:43 <maerwald> all this stuff doesn't buy you anything real
13:05:44 <siraben> Hm, but I lose the translation from the denotational semantics
13:06:07 <maerwald> You don't have that with transformers anyway
13:06:29 × p8m quits (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 260 seconds)
13:06:33 <siraben> Right, but is it not possible to do a custom MonadFail instance for a custom newtype to get this to work?
13:07:18 <siraben> Also I have `reflect act = Scheme (ReaderT (\u -> ContT (\k -> MaybeT (state (act u (runState . (runMaybeT . k)))))))` and `reify f r k s = f & unScheme & (`runReaderT` r) & (`runContT` (MaybeT . state . k)) & runMaybeT & (`runState` s)` to go back and forth between the repr without transformers and the repr with
13:07:27 <siraben> such that `reify . reflect = reflect . reify = id`
13:07:36 <tomsmeding> beautiful
13:07:56 × LKoen quits (~LKoen@228.162.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
13:07:58 <siraben> tried looking around to see if it was possible to use Data.Coercible so I don't have to write this boilerplate, didn't find an answer
13:08:00 × sQVe quits (~sQVe@unaffiliated/sqve) (Quit: Bye!)
13:08:14 × fendor quits (~fendor@178.115.129.186.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
13:09:23 Tario joins (~Tario@201.192.165.173)
13:09:38 <maerwald> tomsmeding: I think java jobs pay better and cause less headach than this :D
13:09:39 <ski> siraben : where did you get `A = Maybe [E] * S' from ?
13:09:51 <siraben> ski: https://schemers.org/Documents/Standards/R5RS/r5rs.pdf
13:09:53 michalz joins (~user@185.246.204.56)
13:09:59 <siraben> pdf page 41
13:10:12 <siraben> it's not specified so I guessed
13:10:18 ski 's looking at <https://schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-10.html#%_sec_7.2>, right now
13:10:19 <tomsmeding> maerwald: but they're also java jobs
13:10:44 <siraben> oof heh that page has blurry images
13:10:48 Sheilong joins (uid293653@gateway/web/irccloud.com/x-xfocnvqeblymqavl)
13:10:57 <maerwald> tomsmeding: well, you feel productive by writing boilerplate like getters and setters. It's a language feature, so to speak
13:11:00 <siraben> ski: the master branch of that repo contains the direct translation, I'm monadifying it
13:11:23 <tomsmeding> and the feeling of accomplishment and joy after solving a problem can be worth 1. less pay and 2. being able to solve the problem in the first place
13:11:41 <tomsmeding> "feeling productive" as a language feature is the most java thing I've heard in a while
13:12:04 <maerwald> note tat "feeling productive" /= "being productive"
13:12:08 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
13:12:17 <maerwald> feelings matter most
13:12:25 <siraben> twoarg ζ [ε1, ε2] κ = ζ ε1 ε2 κ
13:12:27 <siraben> oops wrong window
13:12:33 <tomsmeding> such greek
13:12:40 <ski> (it's abusing `Show', i see ..)
13:13:01 p8m joins (p8m@gateway/vpn/protonvpn/p8m)
13:13:11 <siraben> ski: yeah i started the repo when I was more noob, heh. I'll use a proper pretty printer later
13:13:51 ephemera_ joins (~E@122.34.1.187)
13:14:00 <siraben> argh if only i could find a nice concise reference implementation of a hygienic macro expander
13:14:17 fendor_ is now known as fendor
13:14:49 <maerwald> tomsmeding: it's also only important your boss feels that you are productive, not that you actually are. And if your PRs are huge and frequent, you it conveys that feeling. Java is a win-win for everyone
13:15:14 × wwwww quits (~wwwww@unaffiliated/wwwww) (Ping timeout: 260 seconds)
13:15:22 <ski> siraben : my hunch is that interpreting as `State' (and `MaybeT') inside `ContT' is a mistake, that you really want `StateT' outside `ContT'
13:15:24 emmanuel` joins (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42)
13:15:43 <siraben> ski: doesn't that lead to a notion of "transactional state" wherein the state reverts?
13:16:01 <ski> reverts, when ?
13:16:10 <maerwald> tomsmeding: in haskell, ppl don't want to feel productive, but smart. So they do all sorts of stuff for that :p
13:16:18 geekosaur joins (82659a09@host154-009.vpn.uakron.edu)
13:16:24 <tomsmeding> maerwald: true enough :p
13:16:34 <siraben> ski: when callCC is invoked for instane
13:16:34 <siraben> instance
13:16:52 <ski> i don't think so
13:17:01 <ski> i think you should not analyze `A' here
13:17:02 <siraben> ski: see https://github.com/siraben/r5rs-denot/blob/fc1703473dc7af1b13c970edc553b62f6aa70656/src/SchemeEval.hs#L24-L30 for my reasoning
13:17:09 wwwww joins (~wwwww@unaffiliated/wwwww)
13:17:14 <ski> yes, i'm looking at that right now
13:18:30 <siraben> I guess any monad transformer stack works as long as I can reflect and reify back and forth
13:18:33 huskyhaskell joins (~david@h-191-51.A785.priv.bahnhof.se)
13:18:33 <siraben> at least helps development
13:18:43 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
13:19:07 <ski> @unmtl ReaderT U (StateT S (ContT A IO)) [E]
13:19:07 <lambdabot> U -> S -> ([E] -> S -> IO A) -> IO A
13:19:45 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
13:19:52 × gxt_ quits (~gxt@gateway/tor-sasl/gxt) (Remote host closed the connection)
13:20:25 mananamenos joins (~mananamen@84.122.202.215.dyn.user.ono.com)
13:20:27 × emmanuel` quits (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42) (Ping timeout: 260 seconds)
13:20:36 gxt_ joins (~gxt@gateway/tor-sasl/gxt)
13:20:36 <siraben> gasp io
13:20:42 <siraben> makes sense
13:20:45 texasmynsted joins (~texasmyns@212.102.45.115)
13:20:54 × huskyhaskell quits (~david@h-191-51.A785.priv.bahnhof.se) (Client Quit)
13:20:56 <siraben> Then throw errors in IO?
13:21:05 <ski> (assuming you want stuff like `read',`display',&c.)
13:21:11 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
13:21:27 <siraben> Yeah definitely I needed IO somewhere but didn't know whether to put it up top or at the bottom
13:21:39 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
13:22:14 <boxscape> hm is it normal that stack is stuck a long time at "Downloading index" when first run?
13:22:40 <siraben> ski: why state over exception?
13:22:48 <maerwald> boxscape: a bit
13:23:03 <siraben> looks different than from the spec's semantics
13:23:06 <boxscape> I think it's been 30 minutes or so which seems a bit long
13:23:18 × qwfplyuh quits (2e050550@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) (Remote host closed the connection)
13:23:29 <maerwald> boxscape: is it downloading just the index or git repos?
13:23:36 drincruz_ joins (~adriancru@ool-44c748be.dyn.optonline.net)
13:23:43 <merijn> maerwald: tbh, in hindsight I'm usually the most productive when I feel unproductive
13:24:05 <maerwald> I think it's anger
13:24:10 <siraben> :t foo m u k s = m & unM & (`runReaderT` u) & (`runStateT` s) & (`runContT` k)
13:24:11 <boxscape> um, I'm running "stack build" inside a git repo, but the last message I got is "Downloading index"
13:24:11 <lambdabot> error: parse error on input ‘=’
13:24:25 <siraben> :t (\m u k s -> m & unM & (`runReaderT` u) & (`runStateT` s) & (`runContT` k))
13:24:26 <lambdabot> error:
13:24:26 <lambdabot> • Variable not in scope:
13:24:26 <lambdabot> unM :: a -> ReaderT r (StateT s (ContT r1 m)) a1
13:24:29 <ski> @type let foo m u k s = m & unM & (`runReaderT` u) & (`runStateT` s) & (`runContT` k) in foo
13:24:30 <lambdabot> error:
13:24:30 <lambdabot> • Variable not in scope:
13:24:30 <lambdabot> unM :: a2 -> ReaderT r2 (StateT s1 (ContT r3 m1)) a3
13:24:48 <merijn> maerwald: Spend 3 days dicking around with a complex problem for spawning processes and only get anything resembling working on day 5, but in the next 3 years I've been able to use it without issue 10 different times not having to worry about getting it all right again :p
13:24:55 <siraben> @type let foo m u k s = m & (`runReaderT` u) & (`runStateT` s) & (`runContT` k) in foo
13:24:57 <lambdabot> forall k r1 s (r2 :: k) (m :: k -> *) a. ReaderT r1 (StateT s (ContT r2 m)) a -> r1 -> ((a, s) -> m r2) -> s -> m r2
13:25:00 <siraben> there we go
13:25:01 mbomba joins (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca)
13:25:07 <merijn> maerwald: But it's hard to account for those future 3 years when not producing anything for a week :p
13:25:15 <siraben> well m ~ IO here
13:25:21 × texasmynsted quits (~texasmyns@212.102.45.115) (Ping timeout: 260 seconds)
13:25:36 × hans_ quits (~hans@94-214-46-13.cable.dynamic.v4.ziggo.nl) (Ping timeout: 240 seconds)
13:25:41 danvet_ joins (~danvet@212-51-149-96.fiber7.init7.net)
13:26:06 <maerwald> merijn: reminds me of a colleague who fixed our entire platform over the weekend, because he was bored or excited or both about debugging memory issues.
13:26:09 × borne quits (~fritjof@200116b86420b200bcbe2553f445a41b.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
13:27:06 <maerwald> without a jira ticket, without design phase, without sprint estimation :p
13:27:33 × lassulus quits (~lassulus@NixOS/user/lassulus) (Quit: WeeChat 2.9)
13:27:49 <tomsmeding> how did he introduce that on monday
13:27:58 <tomsmeding> "people I fixed your shit, please go to work as usual"
13:28:03 lassulus joins (~lassulus@NixOS/user/lassulus)
13:28:12 <merijn> tomsmeding: That's how I would introduce it :p
13:28:30 <maerwald> he made bold claims and we initially thought he's just a bit overreacting, but he wasn't
13:29:32 <maerwald> (we also spent lots of money on a prior consultant who tried to fix that problem with complicated solutions)
13:29:41 <maerwald> so much for productivity
13:30:02 brisbin joins (~patrick@pool-173-49-158-4.phlapa.fios.verizon.net)
13:30:33 <maerwald> but that's what they do: the don't fix problems, they sell solutions :p
13:31:55 LKoen joins (~LKoen@228.162.9.109.rev.sfr.net)
13:31:56 <nshepperd2> the true purpose of jira tickets, design phases and sprints is to not use them and thereby become productive
13:31:59 × danvet_ quits (~danvet@212-51-149-96.fiber7.init7.net) (Quit: Leaving)
13:32:01 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
13:32:55 <maerwald> there's the other extreme, when ppl create huge PRs that overhaul the entire codebase with lots of opinionated decisions, rendering the team unproductive for weeks, due to bikeshedding etc
13:33:02 <nshepperd2> like doing ninja training with weights on or something
13:33:54 <maerwald> when devops rewrites your entire CI in nix over Christmas, without telling anyone, for example
13:34:05 <maerwald> (yes, that happened)
13:34:42 gproto23 joins (~gproto23@unaffiliated/gproto23)
13:34:51 <maerwald> since then I have anxiety during Christmas
13:36:16 × L29Ah quits (~L29Ah@unaffiliated/l29ah) (Ping timeout: 240 seconds)
13:37:52 <siraben> nixify all the things
13:38:02 <merijn> Please don't >.>
13:38:11 <siraben> hehe
13:39:08 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:a9cd:54a5:5132:6498:c2e9) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:39:26 × adamse quits (sid72084@gateway/web/irccloud.com/x-mwbgblgcseyitcgt) (Read error: Connection reset by peer)
13:39:43 adamse joins (sid72084@gateway/web/irccloud.com/x-ntgmpqkvdscewbqi)
13:40:04 ski . o O ( "-2000 Lines of Code" by Andy Hertzfeld at <https://www.folklore.org/StoryView.py?story=Negative_2000_Lines_Of_Code.txt> )
13:40:32 × gproto23 quits (~gproto23@unaffiliated/gproto23) (Quit: Leaving)
13:40:36 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
13:40:58 AlterEgo- joins (~ladew@124-198-158-163.dynamic.caiway.nl)
13:41:53 × tss1 quits (~tss@185.204.1.185) (Remote host closed the connection)
13:42:27 <ski> siraben : i think the `wrong' stuff isn't exactly exceptions, anyway (it's not caught)
13:43:02 × jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
13:43:32 heatsink joins (~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641)
13:44:43 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
13:45:46 × shekhar quits (2a6f01d7@42.111.1.215) (Remote host closed the connection)
13:46:18 texasmynsted joins (~texasmyns@212.102.45.115)
13:46:19 <int-e> Yay, Dijkstra. '[...] we should always refer to "the number of lines of code spent".'
13:47:25 × drbean quits (~drbean@TC210-63-209-142.static.apol.com.tw) (Ping timeout: 240 seconds)
13:47:25 × gentauro quits (~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer)
13:48:01 gentauro joins (~gentauro@unaffiliated/gentauro)
13:48:38 × heatsink quits (~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641) (Ping timeout: 264 seconds)
13:49:04 <int-e> That one is false as well, though. LoC is just a terrible metric for measuring progress.
13:49:24 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
13:50:54 × texasmynsted quits (~texasmyns@212.102.45.115) (Ping timeout: 256 seconds)
13:54:21 <maerwald> What does LOC even mean. Does it include the dependencies? :)
13:54:34 <maerwald> Because then the metric is suddenly very different.
13:54:37 × shatriff quits (~vitaliish@176.52.219.10) (Remote host closed the connection)
13:54:52 shatriff joins (~vitaliish@176.52.219.10)
13:55:22 chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
13:56:03 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:a9cd:54a5:5132:6498:c2e9)
13:58:39 <zincy__> I am beginning to think that when someone says code is hard to read it means *they* find it hard to read.
13:58:56 <merijn> zincy__: Well, duh
13:59:02 <zincy__> :D
13:59:15 hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net)
13:59:34 <zincy__> But their opinion comes from their favourite language X even when talking about Y
13:59:39 <merijn> zincy__: "Haskell is hard to read" - every single programmer who never actually learned Haskell's syntax
14:00:15 <merijn> zincy__: When people say "X is hard to read" in a language they don't use what they *mean* is "This is different, therefore I hate it"
14:00:22 <zincy__> haha
14:00:26 <zincy__> ^ this
14:00:42 <merijn> Although, to be fair, I see some pretty atrocious styles in Haskell libraries
14:01:13 <zincy__> Haskell doesn't prevent you from writing bad code it just smacks you on the hand
14:01:38 <merijn> My personal style is increasingly moving towards "type signatures on *every* binding, judiciously name things in where blocks, grouping via empty lines == good"
14:01:51 <zincy__> Nice
14:02:00 <merijn> Particularly a lot of haskell in the wild seems weirdly scared of empty lines
14:02:27 geekounet joins (~geekounet@185.204.1.185)
14:02:45 <zincy__> Like paragraphs in an essay
14:02:55 <zincy__> Or rests in music
14:03:20 <merijn> zincy__: I used to not write type signatures in my where blocks like most people, but then I had to work on code like this: https://github.com/yesodweb/persistent/blob/master/persistent-sqlite/Database/Persist/Sqlite.hs#L501-L517
14:03:30 <merijn> And you're like "wtf is any of this?!"
14:03:38 <zincy__> Yeah Beam did that for me
14:04:17 <dminuoso> merijn: I'd say it's... well. Run it it and run sqlite in trace mode?
14:04:20 <dminuoso> :p
14:04:40 <siraben> merijn: oh god
14:04:41 <merijn> zincy__: beam makes me go "wtf is any of this?!" even with the types
14:04:56 <zincy__> merijn: I have no idea how that works. It is crazy.
14:05:06 <zincy__> postgres-simple for the win
14:05:08 <siraben> what's beam?
14:05:15 <siraben> the erlang platform?
14:05:17 <dminuoso> beam is when you dont want readable sql
14:05:37 <int-e> merijn: not using empty lines to separate entities is a waste of the visual cortex
14:05:39 <dminuoso> It's trading readability and maintainability for type safety..
14:05:50 <ephemient> you need {-# LANGUAGE ScopedTypeVariables #-} in order to put signatures inside some where blocks
14:05:56 <ephemient> (but it's a good extension to have anyway)
14:05:57 <merijn> int-e: Word
14:06:02 <zincy__> All the naive queries seem to be really slow
14:06:20 <dminuoso> ephemient: You only need ScopedTypeVariables to access type variables introduced in an outer binding, but not for type signatures in a nested binding.
14:06:21 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
14:06:23 <merijn> My personal style is more like this: https://github.com/merijn/Belewitte/blob/master/benchmark-analysis/src/StepAggregate.hs#L82-L121
14:06:33 <dminuoso> (And even then you *also* must introduce the type variable via an explicit forall)
14:06:45 <merijn> Heavy where nesting == good, type annotations on all of them == better
14:07:01 <dminuoso> Indeed.
14:07:17 <dminuoso> If it has a name, it has to have a type annotation.
14:07:20 <dminuoso> That's my rule
14:07:41 <dminuoso> Well okay, it doesnt work for function argument binders.. mmm. I need to rephrase that rule
14:07:59 <merijn> dminuoso: There's still the occasional exception, but they're becoming rarer and rare
14:08:00 <zincy__> I wish my Clojure colleagues adopted that motto "If it has a name, it has to have a type annotation."
14:08:10 <merijn> dminuoso: Those have a type annotation in the function signature :p
14:08:17 <dminuoso> merijn: not necessarily
14:08:21 × nff_ quits (~nff_@82.84.72.37) (Quit: Leaving)
14:08:22 <siraben> merijn: what's quite readable
14:08:31 <dminuoso> merijn: if you call something that takes a lambda, it might not be
14:08:42 <merijn> dminuoso: Ah, true
14:08:56 <merijn> "but we have type inference..." sod that
14:09:18 <merijn> 5 months from now I'll have to redo the inference in my head to understand it, just write it out
14:09:21 <dminuoso> Indeed, it took 3 years for me to realize that type inference really isn't that valuable..
14:09:36 <dminuoso> I mean, its useful to be able to ask GHC what it thinks a binding has...
14:09:42 <int-e> adding type signatures results in better type errors
14:09:45 × ephemera_ quits (~E@122.34.1.187) (Ping timeout: 240 seconds)
14:09:56 <merijn> siraben: I've been really happy with my ability to dive into code I haven't touched in more than a year and easily see what's going on and alter it
14:09:59 ski . o O ( type error slicing )
14:10:01 <dminuoso> int-e: type error slices would go a long way helping with that tho
14:10:02 <int-e> that said, I still don't always add type signatures inside `where` binders
14:10:06 <dminuoso> ski: Oh you were first!
14:10:15 <zincy__> Slicing?
14:10:18 <int-e> what are type error slices, hmm, will google
14:10:26 nff joins (~nff_@82.84.72.37)
14:10:28 Tops22 joins (~Tobias@dyndsl-095-033-020-246.ewe-ip-backbone.de)
14:10:48 <int-e> 'A Slicing-Based Approach for Locating Type Errors'?
14:10:55 <ski> <https://www.macs.hw.ac.uk/ultra/skalpel/index.html>
14:11:13 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 260 seconds)
14:11:43 <int-e> Which is a 1997 paper, fun.
14:11:45 <siraben> whoa is there one for haskell and a mode in emacs for that?
14:11:51 <siraben> well LSP underlines the errors
14:11:55 <siraben> haskell-lsp
14:12:02 × urek__ quits (~urek@2804:7f1:e10a:7d51:8503:5833:8cd1:db9c) (Read error: Connection reset by peer)
14:12:23 × nff quits (~nff_@82.84.72.37) (Client Quit)
14:12:29 urek__ joins (~urek@2804:7f1:e10a:7d51:8503:5833:8cd1:db9c)
14:12:39 <dminuoso> siraben: Not that I know of.
14:12:48 <dminuoso> Type error slicing would need support in GHC
14:13:25 × Tops21 quits (~Tobias@dyndsl-095-033-020-246.ewe-ip-backbone.de) (Ping timeout: 240 seconds)
14:14:14 <dminuoso> It would have to identify all locations that contribute to the error, GHC as a very naive and simplistic heuristic of showing 'related bindings' instead that more often than not are unrelated to your problem.
14:14:25 <int-e> "[...] has been implemented for a signicant subset of Pascal."
14:15:25 <int-e> So maybe not that relevant to Hindley-Milner type inference :)
14:16:48 <siraben> hm, -fdefer-type-errors, wonder if that will help me with AoC, hehe
14:17:12 <merijn> siraben: You probably want its superior brother -fdefer-typed-holes and judicious use of typed holes
14:17:14 <xerox_> can you defer them to after the 25th
14:17:36 × drincruz_ quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 240 seconds)
14:18:02 <siraben> merijn: how's that compare to -Wno-partial-type-signatures ?
14:18:07 <siraben> oops I mean PartialTypeSignatures
14:18:14 <merijn> siraben: Not at all?
14:18:39 <merijn> > map _ ['a'..'z'] :: [Bool]
14:18:44 <lambdabot> error:
14:18:44 <lambdabot> • Found hole: _ :: Char -> Bool
14:18:44 <lambdabot> • In the first argument of ‘map’, namely ‘_’
14:19:28 <merijn> Typed holes tell you the type of value that needs to fill the hole. -fdefer-typed-holes turns that error into a warning (which throws a runtime exception when you evaluate it)
14:19:40 <siraben> ah, i see
14:20:38 <merijn> So with "-fdefer-typed-holes" "map _ ['a'..'z'] :: [Bool]" is the same as "map undefined ['a'..'z'] :: [Bool]" except infinitely better because you get a more useful exception when it crashes and when you remove -fdefer-typed-holes they become errors, so you can't forget and leave one like you can with undefined :p
14:20:54 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
14:21:17 × chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:21:22 <int-e> dminuoso: I'm not convinced that slicing is the answer... the type signatures would still dramatically narrow down the field of locations to check for errors.
14:21:42 <siraben> Sounds useful especially when exploring a problem
14:22:13 <boxscape> Is there a convenient way to do something like `[1..5] & ix 3 <%~ succ` where the contents of the collection do not form a Monoid and instead it returns `Just` the new value if it's inbounds and Nothing if it's out of bounds?
14:22:15 u0_a298 joins (~user@47.206.148.226)
14:22:29 <int-e> dminuoso: Without type signatures, slicing just moves the problem from "the type error is in reported in totally corrct code" to "I have 100s of locations to check, one of which is incorrect"
14:22:33 <siraben> currently I just comment out blocks of code with M-S-c before reloading, heh
14:23:00 <merijn> siraben: This is very useful for stubbing functions you know you need but can't/don't wanna implement yet
14:23:06 <int-e> dminuoso: And the solution remains the same: add type signatures to narrow things down to the real error.
14:23:15 <merijn> siraben: "mkFoo :: String -> Foo; mkFoo = _"
14:23:28 <merijn> Write the rest of your code using mkFoo, figure out how to implement it later
14:23:44 <int-e> dminuoso: That said, slicing looks like a more honest approach to this problem :)
14:24:55 <dminuoso> int-e: Sure, consider type signatures as "narrowing the pond" and type error slices as "showing you the pond"
14:25:06 DavidEichmann joins (~david@62.110.198.146.dyn.plus.net)
14:25:20 <int-e> Right.
14:25:28 × jespada quits (~jespada@90.254.245.49) (Ping timeout: 256 seconds)
14:25:31 drincruz_ joins (~adriancru@ool-44c748be.dyn.optonline.net)
14:26:14 <merijn> siraben: The best thing with -fdefer-typed-holes is that you can start using/testing your code before you finish implementing all stubs :)
14:26:36 siraben adds it to template.hs
14:26:44 jespada joins (~jespada@90.254.245.49)
14:27:05 <merijn> It saddens me so few people know about/use -fdefer-typed-holes
14:27:19 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
14:27:36 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
14:28:14 carlomagno joins (~cararell@148.87.23.11)
14:28:51 × ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Quit: Lost terminal)
14:29:36 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
14:29:55 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Client Quit)
14:30:02 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:a9cd:54a5:5132:6498:c2e9) (Ping timeout: 264 seconds)
14:31:04 <boxscape> I suppose the part where it's indexed is really secondary to my question, it would apply to any Prism
14:31:22 conal_ joins (~conal@209.58.139.237)
14:31:41 jiribenes joins (~jiribenes@rosa.jiribenes.com)
14:32:47 Martinsos joins (~user@cpe-188-129-36-113.dynamic.amis.hr)
14:33:59 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
14:34:31 × hexfive quits (~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.)
14:34:58 chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
14:35:16 Lycurgus joins (~niemand@cpe-45-46-137-210.buffalo.res.rr.com)
14:35:29 son0p joins (~son0p@181.136.122.143)
14:35:36 × grdvnl quits (~gdrvnl@cpe-76-94-36-134.socal.res.rr.com) (Ping timeout: 240 seconds)
14:36:16 × darjeeling_ quits (~darjeelin@122.245.123.202) (Ping timeout: 240 seconds)
14:37:25 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
14:38:43 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
14:39:07 grdvnl joins (~gdrvnl@cpe-76-94-36-134.socal.res.rr.com)
14:40:18 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
14:40:22 × the-smug-one quits (~user@83-92-112-87-cable.dk.customer.tdc.net) (Ping timeout: 272 seconds)
14:40:32 × dyeplexer quits (~lol@unaffiliated/terpin) (Ping timeout: 256 seconds)
14:43:59 × geekosaur quits (82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
14:44:34 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
14:45:04 heatsink joins (~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641)
14:45:30 christo joins (~chris@81.96.113.213)
14:46:39 jonatanb_ joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
14:49:05 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
14:49:16 × koz quits (~koz@121.99.240.58) (Ping timeout: 240 seconds)
14:49:26 u0_a298 joins (~user@47.206.148.226)
14:49:36 × heatsink quits (~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641) (Ping timeout: 258 seconds)
14:49:54 texasmynsted joins (~texasmyns@212.102.45.115)
14:49:59 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 258 seconds)
14:50:49 koz joins (~koz@121.99.240.58)
14:52:07 darjeeling_ joins (~darjeelin@122.245.123.202)
14:52:20 × texasmynsted quits (~texasmyns@212.102.45.115) (Client Quit)
14:56:49 × u0_a298 quits (~user@47.206.148.226) (Remote host closed the connection)
14:56:53 × nowhereman quits (~pierre@91-175-29-131.subs.proxad.net) (Ping timeout: 258 seconds)
14:57:03 u0_a298 joins (~user@47.206.148.226)
14:57:52 × chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:58:44 chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
15:01:00 × u0_a298 quits (~user@47.206.148.226) (Remote host closed the connection)
15:01:02 st8less joins (~st8less@2603:a060:11fd:0:cc1a:708c:1c26:7d45)
15:01:15 u0_a298 joins (~user@47.206.148.226)
15:01:59 × phasespace quits (~sar@80-89-47-117.inet.signal.no) (Ping timeout: 260 seconds)
15:02:15 × jonatanb_ quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 258 seconds)
15:03:06 Tario joins (~Tario@201.192.165.173)
15:03:27 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
15:05:35 × alx741 quits (~alx741@181.196.69.205) (Quit: alx741)
15:07:12 alx741 joins (~alx741@181.196.69.205)
15:10:41 × u0_a298 quits (~user@47.206.148.226) (Read error: Connection reset by peer)
15:11:06 u0_a298 joins (~user@47.206.148.226)
15:12:48 <idnar> boxscape: `[1..5] & at 3 <%~ fmap succ` I think
15:13:16 <idnar> oh no
15:13:32 <idnar> meh
15:14:34 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:a9cd:54a5:5132:6498:c2e9)
15:15:27 × nek0 quits (~nek0@mail.nek0.eu) (Quit: The Lounge - https://thelounge.chat)
15:15:47 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:16:16 emmanuel` joins (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42)
15:16:42 phasespace joins (~sar@89-162-33-21.fiber.signal.no)
15:16:51 nek0 joins (~nek0@mail.nek0.eu)
15:17:25 × sakirious quits (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: The Lounge - https://thelounge.chat)
15:18:37 × Lycurgus quits (~niemand@cpe-45-46-137-210.buffalo.res.rr.com) (Quit: Exeunt)
15:18:39 texasmynsted joins (~texasmyns@212.102.45.115)
15:18:43 sakirious joins (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
15:19:12 shenyi joins (uid216035@gateway/web/irccloud.com/x-qbidixgzwkexrbur)
15:19:59 × MOSCOS quits (~MOSCOS@122.54.107.175) (Remote host closed the connection)
15:20:12 × SanchayanMaity quits (~Sanchayan@122.167.92.138) (Quit: SanchayanMaity)
15:20:21 MOSCOS joins (~MOSCOS@122.54.107.175)
15:20:52 × nek0 quits (~nek0@mail.nek0.eu) (Remote host closed the connection)
15:21:02 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
15:21:25 × emmanuel` quits (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42) (Ping timeout: 258 seconds)
15:24:43 × iteratee quits (~kyle@162.211.154.4) (Ping timeout: 260 seconds)
15:26:23 × nfd quits (~nfd9001@c-67-183-38-33.hsd1.wa.comcast.net) (Ping timeout: 265 seconds)
15:27:28 × LKoen quits (~LKoen@228.162.9.109.rev.sfr.net) (Remote host closed the connection)
15:29:45 × ADG1089 quits (uid455466@gateway/web/irccloud.com/x-nqoknmurevpbzhjb) (Quit: Connection closed for inactivity)
15:30:50 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
15:30:54 u0_a298` joins (~user@2607:fb90:6a84:968d:8c8b:9549:39f4:78e7)
15:32:13 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 246 seconds)
15:34:38 × u0_a298` quits (~user@2607:fb90:6a84:968d:8c8b:9549:39f4:78e7) (Read error: Connection reset by peer)
15:34:45 u0_a298` joins (~user@2607:fb90:6a84:968d:8c8b:9549:39f4:78e7)
15:34:50 × u0_a298 quits (~user@47.206.148.226) (Ping timeout: 272 seconds)
15:34:56 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
15:35:15 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
15:37:28 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Remote host closed the connection)
15:39:22 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
15:39:49 × u0_a298` quits (~user@2607:fb90:6a84:968d:8c8b:9549:39f4:78e7) (Ping timeout: 258 seconds)
15:44:35 emmanuel` joins (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42)
15:45:16 urodna joins (~urodna@unaffiliated/urodna)
15:45:42 ClaudiusMaximus joins (~claude@223.153.198.146.dyn.plus.net)
15:45:42 × ClaudiusMaximus quits (~claude@223.153.198.146.dyn.plus.net) (Changing host)
15:45:42 ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus)
15:45:43 heatsink joins (~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641)
15:45:49 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
15:47:02 falafel_ joins (~falafel@pool-108-31-243-192.washdc.fios.verizon.net)
15:49:23 × pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!)
15:50:26 × heatsink quits (~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641) (Ping timeout: 264 seconds)
15:52:00 iteratee joins (~kyle@162.211.154.4)
15:54:21 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
15:56:10 LKoen joins (~LKoen@228.162.9.109.rev.sfr.net)
15:59:05 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 240 seconds)
15:59:05 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
15:59:29 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
16:00:31 × falafel_ quits (~falafel@pool-108-31-243-192.washdc.fios.verizon.net) (Ping timeout: 258 seconds)
16:07:41 × emmanuel` quits (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42) (Remote host closed the connection)
16:07:54 emmanuel` joins (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42)
16:07:58 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
16:08:09 × emmanuel` quits (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42) (Remote host closed the connection)
16:08:17 emmanuel` joins (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42)
16:09:43 emmanuel` parts (~user@2604:2000:1382:ce03:90f3:cccd:7e41:dd42) ()
16:12:02 × cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 2.9)
16:13:23 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
16:14:21 kritzefitz joins (~kritzefit@212.86.56.80)
16:15:40 <mananamenos> hi, why doesn't `$` parse in this example? `prop_removeNotEmpty xs x = xs /= empty ==> remove (add x xs) == add x $ remove xs
16:15:40 <mananamenos> `
16:16:05 <mananamenos> i must put parens on (remove xs)
16:16:24 <merijn> $ is not "magic parens removal"
16:16:32 <merijn> :t ($)
16:16:33 <lambdabot> (a -> b) -> a -> b
16:16:53 <merijn> mananamenos: *everything* on the left of $ is treated as function and applied to the thing on the right
16:17:14 <merijn> While you're intending to only apply "add x"
16:17:38 <ephemient> ==> is infixr 0, $ is infixr 0
16:17:58 <merijn> That still leaves "remove (add x xs) == add x"
16:18:25 <ephemient> therefore it parses like `prop_removeNotEmpty xs x = ((xs /= empty) ==> remove (add x xs) == add x) $ remove xs`
16:18:29 <merijn> That's a boolean, not a function (well, it's a type error, but if it wasn't, it'd be a type error
16:18:46 <dolio> That would be infixl.
16:19:06 nek0 joins (~nek0@mail.nek0.eu)
16:19:08 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
16:19:14 bitmapper joins (uid464869@gateway/web/irccloud.com/x-wlqbdmxowqgsahkp)
16:19:20 <ephemient> oh you're right, I got left and right backwards
16:19:25 <dolio> :)
16:19:25 hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
16:19:33 × mbomba quits (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0)
16:19:43 <mananamenos> thank you
16:20:47 polyphem joins (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
16:21:23 × hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
16:24:52 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:a9cd:54a5:5132:6498:c2e9) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:25:07 × lyxia quits (~lyxia@poisson.chat) (Quit: WeeChat 2.9)
16:25:49 × clynamen_ quits (~clynamen@37.183.22.31) (Read error: Connection reset by peer)
16:26:35 clynamen joins (~clynamen@37.183.22.31)
16:27:42 × acidjnk_new quits (~acidjnk@p200300d0c719ff80cd4aafbd6cd15b09.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
16:29:32 aidecoe joins (~aidecoe@unaffiliated/aidecoe)
16:29:43 × polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Quit: WeeChat 2.9)
16:30:32 vicfred joins (~vicfred@unaffiliated/vicfred)
16:33:39 urek joins (~urek@179.182.119.135)
16:35:31 × urek__ quits (~urek@2804:7f1:e10a:7d51:8503:5833:8cd1:db9c) (Ping timeout: 272 seconds)
16:36:00 hidedagger joins (~nate@unaffiliated/hidedagger)
16:37:20 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:37:26 × hidedagger quits (~nate@unaffiliated/hidedagger) (Client Quit)
16:37:58 hidedagger joins (~nate@unaffiliated/hidedagger)
16:38:23 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
16:39:10 × DavidEichmann quits (~david@62.110.198.146.dyn.plus.net) (Remote host closed the connection)
16:40:25 × son0p quits (~son0p@181.136.122.143) (Ping timeout: 240 seconds)
16:43:47 × xff0x_ quits (~fox@port-92-195-97-206.dynamic.as20676.net) (Quit: xff0x_)
16:43:56 xff0x joins (~fox@2001:1a81:5297:ce00:2295:5eb3:713f:d20)
16:44:35 shatriff_ joins (~vitaliish@176.52.219.10)
16:45:49 × shatriff quits (~vitaliish@176.52.219.10) (Ping timeout: 260 seconds)
16:48:24 juuandyy joins (~juuandyy@90.166.144.65)
16:53:18 <texasmynsted> WAT?! https://github.com/quchen/articles/blob/master/2018-11-22_zipWith_const.md
16:53:28 <texasmynsted> That is great! :-)
16:53:54 <Squarism> Im trying to understand the utility of "traverse" together with "Const"
16:54:46 <Squarism> Some wrote it becomes powerful in this form : (getConst . traverse Const :: (Monoid a, Traversable f) => f a -> a)
16:54:52 <Squarism> But I still dont get it
16:55:19 <c_wraith> have you used lens at all?
16:55:42 <Squarism> I have, but mostly wo understanding what happens underneath.
16:55:51 <Squarism> I get the concept of Traversable /
16:56:03 <dolio> You know foldable, right?
16:56:05 <c_wraith> it turns out Const is a significant part of how lens works
16:56:27 <dolio> Because that is Foldable, basically.
16:56:31 <Squarism> Foldable .. and how they can achieve the end result in broad terms. But not much more.
16:57:22 <jle`> try it out with some sample traversables you might know
16:57:25 <Squarism> I feel I need to se an example of how Const + traverse does something useful. Looking at the code of lens library feels to much at once.
16:57:38 <c_wraith> so the thing with a lens, and let's pick a concrete-ish type here, is that you have something that doesn't look like it's especially helpful all the time. Like... (a -> f b) -> (a, c) -> f (b, c)
16:57:40 <jle`> > traverse Const ["hello","world","goodbye"]
16:57:41 jonatanb joins (jonatanb@gateway/vpn/protonvpn/jonatanb)
16:57:42 <lambdabot> Const "helloworldgoodbye"
16:57:59 <jle`> it lets you collect the items of a Traversable into a monoid
16:58:00 <dolio> It does what Foldable does for every Traversable.
16:58:44 <c_wraith> But if you want to use a lens as a getter, that final type doesn't look very useful. f (b, c) doesn't look much like a
16:59:56 <c_wraith> but that type f is very flexible. You specialize the type of the lens to (a -> Const a b) -> (a, c) -> Const a (b, c)
17:00:18 <Squarism> I would prefer not talk about the other types of Lens but for example see how I could extract "2" out of (Just 2,"asdf")
17:00:34 <c_wraith> that's exactly what I'm doing
17:01:25 <c_wraith> except for the Maybe part. that gets into Traversals, so I'm removing it
17:01:45 × jonatanb quits (jonatanb@gateway/vpn/protonvpn/jonatanb) (Ping timeout: 240 seconds)
17:02:03 <Squarism> (sorry for that unappreciative answer, just meaning long signatures and things that are natural to you havent clicked yet for me =D)
17:03:08 <jle`> Squarism: 'traverse' only touches the "asdf" part, so you could use it to extract the "asdf"
17:03:14 <jle`> > traverse Const (Just 2, "asdf")
17:03:15 machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca)
17:03:16 <lambdabot> Const "asdf"
17:04:34 DavidEichmann joins (~david@62.110.198.146.dyn.plus.net)
17:05:05 <c_wraith> The thing about Const is that it's a trivial functor that you use when you want to *reduce* what's going on in a function that's polymorphic in the functor type
17:05:28 <c_wraith> there's no way to show it doing something useful that doesn't start as something complex and then reduce the complexity
17:05:28 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-rmxdeovfftxpgutx)
17:05:43 <Squarism> jle`, I was hoping there was a trick to extract the "2" out of it. Like quick and dirty "Getter" ?
17:05:59 <jle`> there is a trick, but you can't get it with 'traverse'
17:06:09 <jle`> since 'traverse' is only given the "asdf"
17:06:11 <c_wraith> and it's not going to be simple, either
17:06:30 <jle`> you can use bitraverse maybe
17:06:38 <c_wraith> because you're starting in two places at once, instead of just one
17:06:51 <jle`> > bitraverse Const pure (Just [2], "asdf")
17:06:54 <lambdabot> error:
17:06:54 <lambdabot> • Variable not in scope:
17:06:54 <lambdabot> bitraverse
17:07:05 <c_wraith> start with a far simpler task: extract the 2 from (2, ())
17:07:31 <Squarism> ok
17:07:51 koz is now known as koz_
17:08:45 × juuandyy quits (~juuandyy@90.166.144.65) (Ping timeout: 258 seconds)
17:09:16 <c_wraith> now, let's give you a lens for that, but let's make it super-specialized: _1 :: Functor f => (Int -> f Int) -> (Int, ()) -> f (Int, ())
17:09:43 <Squarism> Ok
17:10:56 geekosaur joins (82659a09@host154-009.vpn.uakron.edu)
17:10:57 <c_wraith> If you know you're going to be using _1 in your solution, you see that the final thing it gives you is an f (Int, ()). But you want to be writing some sort of getter that just returns Int. So there's a lot of junk there that's not necessary
17:11:59 <c_wraith> The trick is that in _1, f is polymorphic. So you get to choose the Functor instance you want. And it turns out Const is a good functor for throwing out a lot of junk
17:12:49 jianbo joins (~jianbo@2601:246:4000:b22:2155:768d:869a:2ce3)
17:13:04 × Tops22 quits (~Tobias@dyndsl-095-033-020-246.ewe-ip-backbone.de) (Read error: Connection reset by peer)
17:13:04 <c_wraith> So _1 (Const) :: (Int, ()) -> Const Int (Int, ())
17:13:28 <c_wraith> But that result type is just a newtype wrapper away from Int
17:14:45 <c_wraith> and for reference, Const :: a -> Const a b
17:14:54 heatsink joins (~heatsink@2600:1700:bef1:5e10:deb:313c:b080:2641)
17:15:56 <c_wraith> you can sort of think of Const as letting you smuggle out a value, ignoring the bigger context.
17:16:08 × notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection)
17:16:17 cosimone joins (~cosimone@93-47-228-249.ip115.fastwebnet.it)
17:16:33 <c_wraith> sure, yeah, there's a bigger value in the type, but it's phantom. It's not actually kept around
17:16:48 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
17:17:19 notzmv joins (~user@unaffiliated/zmv)
17:17:32 tomsmeding realises Const is essentially just a beautiful functional hack
17:17:56 jmchael joins (~jmchael@87.112.60.168)
17:18:34 <c_wraith> And here's the big stumbling point: Const is "useless", in exactly the same way const is "useless"
17:19:01 <c_wraith> Neither one is something you're going to just decide to use in your code
17:19:13 × notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection)
17:19:27 <c_wraith> They come up when you're working with higher-order things and you need to fit a simpler idea into a more complex one
17:19:43 <c_wraith> They're adapters, essentially.
17:19:56 <Squarism> c_wraith, so how would the actual application of this example look. "extract the 2 from (2, ())"
17:20:14 <c_wraith> getConst (_1 Const)
17:20:20 <c_wraith> err
17:20:26 <c_wraith> getConst (_1 Const (2, ()))
17:20:39 juuandyy joins (~juuandyy@90.166.144.65)
17:20:59 × iqubic` quits (~user@2601:602:9500:4870:9dce:a684:2556:7d9f) (Quit: ERC (IRC client for Emacs 28.0.50))
17:21:15 iqubic joins (~user@2601:602:9500:4870:9dce:a684:2556:7d9f)
17:21:54 gxt__ joins (~gxt@gateway/tor-sasl/gxt)
17:22:05 × niko quits (~niko@freenode/staff/ubuntu.member.niko) (Ping timeout: 600 seconds)
17:22:17 philopsos joins (~caecilius@gateway/tor-sasl/caecilius)
17:22:40 <c_wraith> In fact...
17:22:41 <c_wraith> > getConst (_1 Const (2, ()))
17:22:44 <lambdabot> 2
17:23:02 × hidedagger quits (~nate@unaffiliated/hidedagger) (Quit: WeeChat 2.9)
17:23:03 <c_wraith> the value _1 that lambdabot has is more polymorphic, but it can be instantiated at exactly those types
17:23:25 hidedagger joins (~nate@unaffiliated/hidedagger)
17:23:52 <jle`> > _1 Const (2, ()) -- hm..
17:23:54 <lambdabot> Const 2
17:24:03 × gxt_ quits (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds)
17:24:43 <c_wraith> :t M.alterF
17:24:45 <lambdabot> (Functor f, Ord k) => (Maybe a -> f (Maybe a)) -> k -> M.Map k a -> f (M.Map k a)
17:24:56 notzmv joins (~user@unaffiliated/zmv)
17:25:15 <c_wraith> that's basically a lens that existed before the lens library
17:26:17 <c_wraith> > getConst (M.alterF Const 4 (M.fromList [(3, "hello"), (4, "world)]))
17:26:19 <lambdabot> <hint>:1:69: error:
17:26:20 <lambdabot> <hint>:1:69: error:
17:26:20 <lambdabot> lexical error in string/character literal at end of input
17:27:11 <c_wraith> apparently lexical rules are hard for me these days
17:27:13 × jonathanx quits (~jonathan@dyn-8-sc.cdg.chalmers.se) (Remote host closed the connection)
17:27:15 <c_wraith> > getConst (M.alterF Const 4 (M.fromList [(3, "hello"), (4, "world")]))
17:27:18 <lambdabot> Just "world"
17:27:27 <c_wraith> > getConst (M.alterF Const 5 (M.fromList [(3, "hello"), (4, "world")]))
17:27:30 <lambdabot> Nothing
17:28:28 <tomsmeding> so M.lookup = getConst . M.alterF Const
17:28:48 <c_wraith> I think that's got a type error, but mostly correct
17:29:39 <tomsmeding> ah right
17:29:41 <c_wraith> M.lookup k = getConst . M.alterF Const k
17:29:49 <tomsmeding> :t (getConst .) . M.alterF Const
17:29:51 <lambdabot> Ord k => k -> M.Map k a -> Maybe a
17:30:05 <c_wraith> :t M.lookup
17:30:07 <lambdabot> Ord k => k -> M.Map k a -> Maybe a
17:30:11 <c_wraith> there you go!
17:30:45 <c_wraith> :t M.alterF
17:30:47 <lambdabot> (Functor f, Ord k) => (Maybe a -> f (Maybe a)) -> k -> M.Map k a -> f (M.Map k a)
17:30:58 <c_wraith> once more - that returns an f (M.Map k a)
17:31:25 tomsmeding thanks c_wraith for the nice intro into Const, TIL
17:31:30 <c_wraith> Const is an adapter that lets you get a Maybe a out instead, by sneaking it into the f
17:32:19 × notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection)
17:32:25 <c_wraith> I really do find it impressive that alterF predates the lens library
17:32:36 <c_wraith> Someone stumbled onto something far more general than they realized
17:33:26 notzmv joins (~user@unaffiliated/zmv)
17:34:26 <Squarism> c
17:34:44 × boxscape quits (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Ping timeout (120 seconds))
17:35:20 × notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection)
17:35:46 <tomsmeding> alterF for Data.Map looks to be after lens, though: https://github.com/haskell/containers/commit/7d03d76b7647dc731da2e75dcdd45f6c2e667682
17:35:54 <Squarism> c_wraith, ok. That was an interesting example. Trying to extend it to get the 2 out of (True,(2,()).
17:36:20 <Squarism> ...and thanks!
17:36:20 notzmv joins (~user@unaffiliated/zmv)
17:36:30 <c_wraith> huh, did I get that relative timing wrong? that's unfortunate
17:37:13 <tomsmeding> well I don't know if that's the first occurrence of such an alterF, but it seems to be the origin of Data.Map.Strict.alterF
17:37:44 × notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection)
17:37:44 × chkno quits (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
17:38:15 chkno joins (~chkno@75-7-2-127.lightspeed.sntcca.sbcglobal.net)
17:39:45 × unlink2 quits (~unlink2@p5dc0acf8.dip0.t-ipconnect.de) (Remote host closed the connection)
17:40:30 <c_wraith> Squarism: it turns out that's going to not be much more enlightening. the use of Const will be identical. the only difference will be replacing _1 with a function that digs deeper.
17:40:37 × ericsagn1 quits (~ericsagne@2405:6580:0:5100:230f:7e22:ba44:597f) (Ping timeout: 260 seconds)
17:41:39 unlink2 joins (~unlink2@p200300ebcf259600971664e9499d7db7.dip0.t-ipconnect.de)
17:42:35 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
17:44:55 <ezzieyguywuf> if I have an `Either e a` and a `(a -> b)`, how can I make an `Either e b`?
17:45:03 <dminuoso> % :t fmap
17:45:03 <yahb> dminuoso: Functor f => (a -> b) -> f a -> f b
17:45:11 <Squarism> c_wraith, alright. That was great. Now I have a small expression that I can dig into. Thanks a bunch.
17:45:13 <ezzieyguywuf> duh!!
17:45:24 <ezzieyguywuf> forgot that fmap for Either will return Left as-is
17:45:28 <ezzieyguywuf> dminuoso: thank you.
17:45:42 <solonarv> ezzieyguywuf: or Data.Bifunctor.second
17:45:47 <c_wraith> Squarism: you're welcome. keep playing with it and you'll get a good feel for it.
17:46:06 <Squarism> c_wraith, this is it right ? ((_2 . _1) Const (True,(2 :: Int, ())))
17:46:08 <solonarv> (you might want to use 'second' because of its symmetry with 'first', which works on the Left side)
17:46:25 <c_wraith> yes it is
17:47:07 <c_wraith> well, you might want to throw a getConst in, but that's just the tribal unwrapping
17:47:19 <c_wraith> *trivial
17:47:28 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 258 seconds)
17:47:41 × lassulus quits (~lassulus@NixOS/user/lassulus) (Remote host closed the connection)
17:48:12 lassulus joins (~lassulus@NixOS/user/lassulus)
17:48:15 × lassulus quits (~lassulus@NixOS/user/lassulus) (Client Quit)
17:48:37 × carlomagno quits (~cararell@148.87.23.11) (Ping timeout: 258 seconds)
17:48:54 lassulus joins (~lassulus@NixOS/user/lassulus)
17:49:10 <ezzieyguywuf> solonarv: thanks.
17:50:33 carlomagno joins (~cararell@148.87.23.11)
17:51:31 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
17:52:55 ericsagn1 joins (~ericsagne@2405:6580:0:5100:1635:4394:f86d:e4ee)
17:53:16 Ariakenom joins (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se)
17:56:42 <cheater> this cabal source code has "i'm feeling lucky" as a comment ...
17:59:23 × philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection)
17:59:35 philopsos joins (~caecilius@gateway/tor-sasl/caecilius)
18:00:30 <[exa]> cheater: judging from the fact you're still reading cabal source code, I guess you weren't that lucky with the llvm?
18:01:15 <cheater> yeah, that's the state i'm in
18:01:30 <cheater> apparently it has no idea how to handle static llvm library lists under windows
18:01:34 <cheater> so i'll have to figure it out
18:01:38 <cheater> i'm eating lunch now though
18:02:12 × kuribas quits (~user@ptr-25vy0i99gxf0ju0nzkm.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
18:02:14 <cheater> but essentially ifBuildsWith fails in Configure.hs with "Missing (or bad) C libraries"
18:02:41 <[exa]> perhaps you're hitting some of the famous commandline length limits?
18:04:05 <merijn> "missing (or bad) C libraries" sounds like pkg-config-depends failing
18:06:03 × cosimone quits (~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
18:06:46 × chele quits (~chele@ip5b416ea2.dynamic.kabel-deutschland.de) (Remote host closed the connection)
18:09:33 encod3 joins (~encod3@45-154-157-94.ftth.glasoperator.nl)
18:10:36 × hidedagger quits (~nate@unaffiliated/hidedagger) (Ping timeout: 240 seconds)
18:10:37 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: Textual IRC Client: www.textualapp.com)
18:13:11 <jle`> is there a "tagged nil" list type anywhere commonly?
18:13:21 <jle`> data TaggedNil w a = Nil w | Cons a (TaggedNil w a)
18:13:40 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds)
18:13:53 <geekosaur> not commonly
18:14:32 <jle`> I thiiink it should be equivalent to Conduit () a m w
18:15:06 <solonarv> for finite lists it's equivalent to (w, [a]), right?
18:15:07 <jle`> forall m
18:15:36 <jle`> solonarv: oh yeah, true. but i'd want to be taking advantage of laziness here and using it with recursion-schemes
18:15:48 <jle`> i guessi could do (w, [a]) and do a custom recursin-scheme instance set
18:16:04 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Read error: Connection reset by peer)
18:17:26 crblmr joins (~carbolyme@matrix.dropacid.net)
18:17:51 <solonarv> it's certainly equivalent to Conduit () a Identity w
18:20:18 <[exa]> :t \a b c -> (,) <$> a <*> b >>= uncurry c -- is there some name/shortcut for this? except for double binding with `do`.
18:20:20 <lambdabot> Monad m => m a -> m b1 -> (a -> b1 -> m b2) -> m b2
18:21:42 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
18:22:17 <solonarv> [exa]: I don't think so; you could also write it as join (c <$> a <*> b)
18:23:20 <[exa]> yeah that is nicer
18:23:49 <jle`> i'd probably use do notation
18:24:12 <jle`> over tuple munging
18:25:15 <sm[m]> g'day all
18:25:46 × conal_ quits (~conal@209.58.139.237) (Quit: Computer has gone to sleep.)
18:25:53 <sm[m]> stack repl --help says: --package PACKAGE(S) Additional package(s) that must be installed, suggesting you can put multiple package names with a single --package. Would anyone know the right syntax ?
18:26:28 L29Ah joins (~L29Ah@unaffiliated/l29ah)
18:26:28 <koz_> sm[m]: Tried comma separating?
18:27:08 <ski> [exa] : `infixl 4 <*>>; (<*>>) :: Monad m => m (a -> m b) -> (m a -> m b); mamb <*>> ma = join (mamb <*> ma)', then use `f <$> ma <*> mb <*> mc <*>> md'
18:27:56 conal joins (~conal@209.58.139.237)
18:28:40 <[exa]> wow cool
18:29:08 <[exa]> is the <*>> name used somewhere?
18:29:19 <ski> i've mentioned it before, in here ..
18:29:27 <[exa]> :]
18:29:34 <[exa]> ok, thanks everyone. :]
18:31:21 tungki_ joins (uid469991@gateway/web/irccloud.com/x-sspsztrxwlgmlqik)
18:31:34 <ski> @type let mmab <<*> ma = join mmab <*> ma in (<<*>)
18:31:36 <lambdabot> Monad f => f (f (a -> b)) -> f a -> f b
18:33:08 × ubert quits (~Thunderbi@p200300ecdf1e5312e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
18:33:58 <sm[m]> koz_: yup
18:34:01 <sm[m]> and space
18:34:02 ubert joins (~Thunderbi@p200300ecdf1e5386e6b318fffe838f33.dip0.t-ipconnect.de)
18:34:49 <koz_> sm[m]: Yeah, that's obscure-AF.
18:34:54 <koz_> Three cheers for stack docs rofl.
18:35:12 × tungki_ quits (uid469991@gateway/web/irccloud.com/x-sspsztrxwlgmlqik) (Client Quit)
18:35:20 <sm[m]> huh, https://docs.haskellstack.org/en/stable/GUIDE/#using-multiple-packages is there but says both comma and space work
18:36:03 <[exa]> ski: kindof finding out that just prefixing the whole construction with 'join $' will be likely the most digestible way
18:36:10 <sm[m]> seems like a bug/regression then, I'll report
18:36:21 tungki joins (uid469991@gateway/web/irccloud.com/x-xbivqosqcbdjuayc)
18:36:32 <sm[m]> oh, but that doc was for the script command
18:36:33 <geekosaur> shell quoting required for spaces?
18:36:44 <geekosaur> (but not for commas, so.)
18:37:49 <geekosaur> I also note the "this is probably out of date" at the very start of the GUIDE
18:37:52 <ski> [exa] : fair enough :)
18:38:23 × ubert quits (~Thunderbi@p200300ecdf1e5386e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
18:40:30 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) ()
18:40:35 sgibber2018 joins (~arch-gibb@208.85.237.137)
18:42:35 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
18:43:03 Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas)
18:43:47 × matryoshka` quits (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
18:44:03 matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
18:44:11 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
18:44:12 × juuandyy quits (~juuandyy@90.166.144.65) (Ping timeout: 258 seconds)
18:45:43 <sm[m]> https://github.com/commercialhaskell/stack/issues/5455
18:46:06 notzmv joins (~user@unaffiliated/zmv)
18:46:09 <sm[m]> too obscure to get fixed without a PR, but for the record..
18:47:12 <notzmv> fw
18:47:21 × toorevitimirp quits (~tooreviti@117.182.181.85) (Remote host closed the connection)
18:52:03 × ChaiTRex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Ping timeout: 240 seconds)
18:52:16 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Quit: Leaving)
18:52:33 ChaiTRex joins (~ChaiTRex@gateway/tor-sasl/chaitrex)
18:52:53 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
18:53:01 <kritzefitz> Can anyone recommend an up-to-date FRP library? I was just coming back to a project using reactive-banana and quite shocked to find out, that it doesn't seem to be actively maintained anymore.
18:53:16 cosimone joins (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd)
18:53:36 <koz_> kritzefitz: Rhine is pretty good.
18:53:44 <koz_> (it also solves a fairly important problem)
18:55:29 × conal quits (~conal@209.58.139.237) (Quit: Computer has gone to sleep.)
18:56:52 <kritzefitz> koz, Thanks! I'm gonna take a look at that.
18:57:40 juuandyy joins (~juuandyy@90.166.144.65)
18:59:05 × dhouthoo quits (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9)
18:59:12 × encod3 quits (~encod3@45-154-157-94.ftth.glasoperator.nl) (Remote host closed the connection)
18:59:21 × sgibber2018 quits (~arch-gibb@208.85.237.137) (Quit: WeeChat 2.9)
19:00:23 encod3 joins (~encod3@45-154-157-94.ftth.glasoperator.nl)
19:00:25 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 260 seconds)
19:01:53 Aquazi joins (uid312403@gateway/web/irccloud.com/x-qqpsupzzdwjcsdle)
19:02:55 sgibber2018 joins (~arch-gibb@208.85.237.137)
19:03:21 berberman_ joins (~berberman@unaffiliated/berberman)
19:04:06 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
19:04:08 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 258 seconds)
19:04:49 <ezzieyguywuf> how can I turn an Integer into an Int?
19:04:56 <ezzieyguywuf> Or vice-versa if that is "safer"?
19:05:14 × encod3 quits (~encod3@45-154-157-94.ftth.glasoperator.nl) (Ping timeout: 260 seconds)
19:05:19 <geekosaur> :t fromIntegral
19:05:21 <lambdabot> (Integral a, Num b) => a -> b
19:05:45 <geekosaur> vice versa would be safer since it can't overflow; same conversion function
19:05:55 <ezzieyguywuf> geekosaur: perfect thank you.
19:06:05 × sagax quits (~sagax_nb@213.138.71.146) (Ping timeout: 240 seconds)
19:15:19 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
19:16:06 × cosimone quits (~cosimone@2001:b07:ae5:db26:d849:743b:370b:b3cd) (Remote host closed the connection)
19:16:13 conal joins (~conal@209.58.139.237)
19:16:26 cosimone joins (~cosimone@93-47-228-249.ip115.fastwebnet.it)
19:21:06 × DTZUZU quits (~DTZUZU@205.ip-149-56-132.net) (Read error: Connection reset by peer)
19:21:56 abhixec joins (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net)
19:22:25 boxscape joins (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
19:25:23 notzmv` joins (~user@201-43-52-72.dsl.telesp.net.br)
19:25:24 howdoi joins (uid224@gateway/web/irccloud.com/x-kqlbqomhdamrwvuv)
19:25:55 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
19:26:01 × dhil quits (~dhil@195.213.192.34) (Ping timeout: 264 seconds)
19:26:43 × notzmv quits (~user@unaffiliated/zmv) (Ping timeout: 246 seconds)
19:26:48 × roconnor quits (~roconnor@host-45-58-200-239.dyn.295.ca) (Quit: Konversation terminated!)
19:27:09 × geekosaur quits (82659a09@host154-009.vpn.uakron.edu) (Ping timeout: 245 seconds)
19:27:58 christo joins (~chris@81.96.113.213)
19:28:25 × juuandyy quits (~juuandyy@90.166.144.65) (Ping timeout: 260 seconds)
19:28:32 DTZUZU joins (~DTZUZU@205.ip-149-56-132.net)
19:29:10 tom__ joins (~tom@2a00:23c8:970a:3501:b89a:3974:7a09:75a2)
19:32:21 hidedagger joins (~nate@unaffiliated/hidedagger)
19:32:56 × zincy__ quits (~tom@2a00:23c8:970a:3501:d1af:3726:ffca:e493) (Ping timeout: 246 seconds)
19:34:57 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
19:35:06 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
19:35:11 ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net)
19:35:33 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
19:38:31 dhil joins (~dhil@78.156.97.38)
19:40:44 × conal quits (~conal@209.58.139.237) (Quit: Computer has gone to sleep.)
19:42:59 leungbk joins (~user@2603-8000-f144-2028-5f51-12f7-6de3-c4e6.res6.spectrum.com)
19:46:34 geekosaur joins (82659a09@host154-009.vpn.uakron.edu)
19:48:03 conal joins (~conal@209.58.139.237)
19:49:21 × conal quits (~conal@209.58.139.237) (Client Quit)
19:50:19 conal joins (~conal@209.58.139.237)
19:50:28 × conal quits (~conal@209.58.139.237) (Client Quit)
19:50:44 ubert joins (~Thunderbi@p200300ecdf1e5386e6b318fffe838f33.dip0.t-ipconnect.de)
19:51:40 × Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 258 seconds)
19:51:49 conal joins (~conal@209.58.139.237)
19:52:03 × conal quits (~conal@209.58.139.237) (Client Quit)
19:53:08 Cthalupa joins (~cthulhu@47.186.47.75)
19:53:14 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
19:53:23 <dminuoso> ezzieyguywuf: What does "safety" even mean for you?
19:53:47 borne joins (~fritjof@200116b86420b200bcbe2553f445a41b.dip.versatel-1u1.de)
19:54:42 × dhil quits (~dhil@78.156.97.38) (Ping timeout: 256 seconds)
19:55:11 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
19:55:44 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
19:57:02 acidjnk_new joins (~acidjnk@p200300d0c719ff8621cd498ce205b85b.dip0.t-ipconnect.de)
19:58:21 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
19:59:12 <koz_> dminuoso: I'm guessing the concern is overflow?
19:59:31 <koz_> There's like, cast-int or something like that for this?
19:59:39 <geekosaur> that was my guess as well
19:59:59 christo joins (~chris@81.96.113.213)
20:00:23 conal joins (~conal@64.71.133.70)
20:00:23 × conal quits (~conal@64.71.133.70) (Client Quit)
20:00:25 × benschza quits (~quassel@2604:1380:2000:cf00::1) (Ping timeout: 240 seconds)
20:00:31 <dminuoso> Well, cast-int wouldnt allow you to go from Integer to Int
20:00:47 <dminuoso> Or does it?
20:00:54 benschza joins (~quassel@2604:1380:2000:cf00::1)
20:01:05 encod3 joins (~encod3@45-154-157-94.ftth.glasoperator.nl)
20:01:06 <dminuoso> Ohh, it has dynamically checked variants, I did not know this
20:01:12 × crblmr quits (~carbolyme@matrix.dropacid.net) (Remote host closed the connection)
20:01:13 <dminuoso> I only ever used it for the static conversions
20:01:38 <koz_> The dynamically checked thing is actually in Data.Bits now I think.
20:01:41 <ezzieyguywuf> dminuoso: "safety" = "avoiding things like overflow"
20:02:01 <ezzieyguywuf> I'm not savvy enough to recognize these potential pitfalls
20:02:07 <ezzieyguywuf> (yet)
20:02:12 <dminuoso> Then int-cast is the only solution I know if..
20:02:33 <dminuoso> The lack of comprehensive conversion functions in Haskell is a major annoyance of mine
20:02:48 <ezzieyguywuf> so the (fromInteger :: (Integer -> Int)) is no good?
20:03:12 <dminuoso> It's like we train you to encode all kinds of properties into the type system, to ensure you don't have surprise errors - just to to hand you nothing but conversion functions that likely dont do what you want.
20:03:46 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
20:03:52 × boxscape quits (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Connection closed)
20:03:56 <dminuoso> % fromIntegral (122180591620717411303424 :: Integer) :: Int
20:03:56 <yahb> dminuoso: 7805620539050950656
20:03:58 <dminuoso> You tell me
20:04:30 crblmr joins (~carbolyme@matrix.dropacid.net)
20:04:56 <dminuoso> % fromIntegral (1180591620717411303424 :: Integer) :: Int
20:04:57 <yahb> dminuoso: 0
20:04:59 juuandyy joins (~juuandyy@90.166.144.65)
20:05:48 × encod3 quits (~encod3@45-154-157-94.ftth.glasoperator.nl) (Ping timeout: 256 seconds)
20:06:28 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
20:07:29 dhil joins (~dhil@195.213.192.34)
20:07:39 <ezzieyguywuf> yikes
20:08:09 × notzmv` quits (~user@201-43-52-72.dsl.telesp.net.br) (Ping timeout: 258 seconds)
20:08:29 <ezzieyguywuf> I'm not that worried about it. If my user wants to parse that many characters out of a "Description" column in a csv file downloaded from their bank...they have other problems
20:08:42 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Ping timeout: 256 seconds)
20:10:29 <dminuoso> Oh look at that
20:10:32 <dminuoso> https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Bits.html#v:toIntegralSized
20:10:38 <dminuoso> koz_ ^- you might also be interested
20:10:42 <koz_> dminuoso: I was aware. :P
20:10:47 <koz_> (I even mentioned this earlier)
20:11:08 <koz_> I had to deal with this when I was rewriting Real Job For Real Money's database wrapper layer.
20:11:21 <dminuoso> Oh sorry, I missed it then
20:11:38 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
20:11:40 <dminuoso> The documentation is a bit fuzzy on toIntegralSized
20:12:03 encod3 joins (~encod3@45-154-157-94.ftth.glasoperator.nl)
20:12:32 <dminuoso> The code example looks odd too, unless Im misreading something
20:12:49 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
20:13:23 <dminuoso> `| toInteger x == y = ...` this is the same as `| toInteger x == toInteger x = ...`
20:13:57 <dminuoso> Im guessing the snippet is wrong and it should read `y = fromIntegral x`
20:14:21 ADG1089 joins (uid455466@gateway/web/irccloud.com/x-snrmhjgbftnsehrc)
20:15:14 <geekosaur> this came up a few weeks ago, it's wrong
20:15:47 <geekosaur> someone then tried to submit a PR and ran into a gitlab outage of some kind (503 error I think)
20:16:54 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
20:19:06 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
20:19:16 × encod3 quits (~encod3@45-154-157-94.ftth.glasoperator.nl) (Ping timeout: 240 seconds)
20:21:24 encod3 joins (~encod3@45-154-157-94.ftth.glasoperator.nl)
20:22:33 × StoneToad quits (~StoneToad@199-167-119-135.ppp.storm.ca) (Ping timeout: 260 seconds)
20:24:05 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
20:24:09 × juuandyy quits (~juuandyy@90.166.144.65) (Quit: Konversation terminated!)
20:24:36 knupfer joins (~Thunderbi@200116b82cfdb2004ca865631e4ce9c2.dip.versatel-1u1.de)
20:26:55 nfd joins (~nfd9001@c-67-183-38-33.hsd1.wa.comcast.net)
20:28:49 StoneToad joins (~StoneToad@199-167-119-150.ppp.storm.ca)
20:29:04 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
20:29:36 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
20:29:58 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
20:31:50 <iqubic> Is there an infix version of views from Lens?
20:32:05 <iqubic> Like an operator version.
20:32:07 notzmv joins (~user@unaffiliated/zmv)
20:32:12 <merijn> `views` ? :P
20:32:39 <Uniaika> iqubic: `views`
20:32:44 <Uniaika> ;)
20:33:29 <iqubic> I just mean "view is to (^.) as views is to ...?"
20:34:14 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
20:34:29 × crblmr quits (~carbolyme@matrix.dropacid.net) (Remote host closed the connection)
20:34:46 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
20:35:49 <dolio> There probably isn't one, because views has 3 arguments.
20:36:10 crblmr joins (~carbolyme@matrix.dropacid.net)
20:36:12 <iqubic> Right.
20:36:47 × xff0x quits (~fox@2001:1a81:5297:ce00:2295:5eb3:713f:d20) (Ping timeout: 260 seconds)
20:37:37 xff0x joins (~fox@2001:1a81:5297:ce00:6b5f:a8b6:2b81:7cdd)
20:39:32 <maerwald> is (^.^) taken?
20:40:05 × tungki quits (uid469991@gateway/web/irccloud.com/x-xbivqosqcbdjuayc) (Quit: Connection closed for inactivity)
20:40:51 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
20:40:56 <dminuoso> https://hackage.haskell.org/package/cubicbezier-0.6.0.6/docs/Geom2D.html#v:-94-.-94-
20:41:15 <dminuoso> Wow how has that library 11k downloads :o
20:41:21 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
20:41:43 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
20:42:55 <iqubic> How is that number computed?
20:43:42 <merijn> mostly bots :p
20:44:42 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
20:44:42 <maerwald> iqubic: (+1) I think
20:45:05 <iqubic> What is (+1)? How does that help me?
20:45:16 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
20:46:18 <merijn> Incremented one at a time :p
20:47:46 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
20:48:49 × LKoen quits (~LKoen@228.162.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
20:54:53 × aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net)
20:55:01 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
20:55:03 aplainze1akind joins (~johndoe@captainludd.powered.by.lunarbnc.net)
20:55:27 aplainze1akind is now known as aplainzetakind
20:57:29 × mananamenos quits (~mananamen@84.122.202.215.dyn.user.ono.com) (Read error: Connection reset by peer)
20:57:41 Varis joins (~Tadas@unaffiliated/varis)
20:57:42 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
20:58:15 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
20:59:33 × xff0x quits (~fox@2001:1a81:5297:ce00:6b5f:a8b6:2b81:7cdd) (Remote host closed the connection)
20:59:50 xff0x joins (~fox@2001:1a81:5297:ce00:950a:3e50:5ed2:fa3d)
21:01:04 <koz_> Can someone help me understand what this says vis-a-vis the stack StateT s Logic? http://hackage.haskell.org/package/logict-0.7.0.3/docs/src/Control.Monad.Logic.Class.html#line-121
21:01:30 <koz_> I don't get what the note above the ReaderT e m (which the docs say applies to StateT as well) actually means.
21:01:35 × crblmr quits (~carbolyme@matrix.dropacid.net) (Remote host closed the connection)
21:02:41 × urek quits (~urek@179.182.119.135) (Ping timeout: 260 seconds)
21:02:42 × alx741 quits (~alx741@181.196.69.205) (Ping timeout: 256 seconds)
21:03:30 × ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Quit: ->)
21:04:57 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
21:05:42 × knupfer quits (~Thunderbi@200116b82cfdb2004ca865631e4ce9c2.dip.versatel-1u1.de) (Quit: knupfer)
21:06:02 knupfer joins (~Thunderbi@200116b82cfdb20099e23f0da52ebb09.dip.versatel-1u1.de)
21:08:48 × Aquazi quits (uid312403@gateway/web/irccloud.com/x-qqpsupzzdwjcsdle) (Quit: Connection closed for inactivity)
21:09:42 cads joins (~cads@ip-64-72-99-232.lasvegas.net)
21:09:52 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
21:10:48 × zebrag quits (~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!)
21:11:07 zebrag joins (~inkbottle@aaubervilliers-654-1-115-108.w86-198.abo.wanadoo.fr)
21:11:15 × encod3 quits (~encod3@45-154-157-94.ftth.glasoperator.nl) (Remote host closed the connection)
21:12:01 encod3 joins (~encod3@45-154-157-94.ftth.glasoperator.nl)
21:12:10 × AlterEgo- quits (~ladew@124-198-158-163.dynamic.caiway.nl) (Quit: Leaving)
21:12:22 son0p joins (~son0p@181.136.122.143)
21:12:54 Deide joins (~Deide@217.155.19.23)
21:14:25 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
21:14:28 × Wuzzy quits (~Wuzzy@p549c9bc8.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
21:15:21 × encod3 quits (~encod3@45-154-157-94.ftth.glasoperator.nl) (Remote host closed the connection)
21:15:34 encod3 joins (~encod3@45-154-157-94.ftth.glasoperator.nl)
21:17:34 carlomagno1 joins (~cararell@148.87.23.11)
21:18:55 <merijn> koz_: That all alternatives get the same input state, I think?
21:19:04 × carlomagno quits (~cararell@148.87.23.11) (Ping timeout: 258 seconds)
21:19:15 <koz_> merijn: So basically, you can't actually change out the state mid-computation?
21:19:27 <koz_> AKA the state you provide for 'runStateT' will be the one everywhere?
21:19:32 <merijn> not sure
21:22:04 × notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection)
21:22:37 benjamingr__ joins (uid23465@gateway/web/irccloud.com/x-pjfkrpyzckdbsmgh)
21:22:58 notzmv joins (~user@unaffiliated/zmv)
21:23:42 × knupfer quits (~Thunderbi@200116b82cfdb20099e23f0da52ebb09.dip.versatel-1u1.de) (Quit: knupfer)
21:23:44 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
21:24:05 knupfer joins (~Thunderbi@200116b82cfdb2002579ab80824d82fa.dip.versatel-1u1.de)
21:25:12 × acidjnk_new quits (~acidjnk@p200300d0c719ff8621cd498ce205b85b.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
21:28:46 michalz` joins (~user@185.246.204.61)
21:30:31 × cads quits (~cads@ip-64-72-99-232.lasvegas.net) (Read error: Connection reset by peer)
21:30:35 cads2 joins (~cads@ip-64-72-99-232.lasvegas.net)
21:30:46 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
21:31:20 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
21:31:24 × michalz quits (~user@185.246.204.56) (Remote host closed the connection)
21:31:44 teardown joins (~user@gateway/tor-sasl/mrush)
21:34:26 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 256 seconds)
21:35:07 × knupfer quits (~Thunderbi@200116b82cfdb2002579ab80824d82fa.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
21:37:59 urek joins (~urek@179.182.119.135)
21:41:32 × Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 272 seconds)
21:41:50 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
21:42:10 sweater joins (~sweater@206.81.18.26)
21:42:13 × jonn quits (~sweater@206.81.18.26) (Ping timeout: 260 seconds)
21:42:21 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
21:43:28 × cads2 quits (~cads@ip-64-72-99-232.lasvegas.net) (Read error: Connection reset by peer)
21:43:38 cads2 joins (~cads@ip-64-72-99-232.lasvegas.net)
21:45:28 alx741 joins (~alx741@181.196.69.205)
21:45:45 × geekosaur quits (82659a09@host154-009.vpn.uakron.edu) (Remote host closed the connection)
21:46:08 crblmr joins (~carbolyme@matrix.dropacid.net)
21:47:43 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
21:48:23 × borne quits (~fritjof@200116b86420b200bcbe2553f445a41b.dip.versatel-1u1.de) (Ping timeout: 272 seconds)
21:49:01 × encod3 quits (~encod3@45-154-157-94.ftth.glasoperator.nl) ()
21:49:31 × fendor quits (~fendor@77.119.128.243.wireless.dyn.drei.com) (Remote host closed the connection)
21:51:07 fendor joins (~fendor@77.119.128.243.wireless.dyn.drei.com)
21:51:08 seasonal-staff is now known as glguy
21:51:10 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
21:53:30 justsomeguy joins (~justsomeg@216.186.218.241)
21:53:30 × justsomeguy quits (~justsomeg@216.186.218.241) (Changing host)
21:53:30 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
21:53:45 × fiQ2 quits (~fiQ@mirkk.ninja) (Remote host closed the connection)
21:53:55 fiQ2 joins (~fiQ@mirkk.ninja)
21:54:04 × Chousuke quits (oranenj@coffee.modeemi.fi) (Ping timeout: 246 seconds)
21:55:04 Chousuke joins (oranenj@coffee.modeemi.fi)
21:56:08 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
21:56:43 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
21:57:06 × carlomagno1 quits (~cararell@148.87.23.11) (Quit: Leaving.)
22:01:37 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
22:02:54 coot_ joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
22:03:14 olligobber joins (~olligobbe@unaffiliated/olligobber)
22:03:34 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
22:03:34 coot_ is now known as coot
22:05:17 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
22:05:27 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
22:06:07 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
22:06:55 × notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection)
22:07:13 phaul joins (~phaul@ruby/staff/phaul)
22:07:23 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
22:07:52 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
22:07:54 rprije joins (~rprije@14-201-170-17.tpgi.com.au)
22:08:52 mounty joins (~mounty@2001:8000:2f59:0:955e:b3d4:6deb:61b5)
22:13:25 × columbarius quits (~columbari@94.134.93.69) (Ping timeout: 264 seconds)
22:15:22 columbarius joins (~columbari@94.134.93.105)
22:18:24 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
22:19:38 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Read error: Connection reset by peer)
22:20:15 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
22:20:28 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
22:22:02 glguy is now known as seasonal-staff
22:22:46 × fendor quits (~fendor@77.119.128.243.wireless.dyn.drei.com) (Remote host closed the connection)
22:23:53 × ADG1089 quits (uid455466@gateway/web/irccloud.com/x-snrmhjgbftnsehrc) (Quit: Connection closed for inactivity)
22:25:00 × ericsagn1 quits (~ericsagne@2405:6580:0:5100:1635:4394:f86d:e4ee) (Ping timeout: 258 seconds)
22:26:53 × xelxebar quits (~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection)
22:27:12 xelxebar joins (~xelxebar@gateway/tor-sasl/xelxebar)
22:28:43 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: Textual IRC Client: www.textualapp.com)
22:29:39 × ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:30:11 × Ariakenom quits (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) (Quit: Leaving)
22:30:18 × Martinsos quits (~user@cpe-188-129-36-113.dynamic.amis.hr) (Remote host closed the connection)
22:34:32 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
22:34:51 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
22:35:09 carlomagno joins (~cararell@148.87.23.4)
22:35:44 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
22:36:44 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
22:37:04 × carlomagno quits (~cararell@148.87.23.4) (Client Quit)
22:37:34 ericsagn1 joins (~ericsagne@2405:6580:0:5100:842e:bf6c:baf1:11c6)
22:37:59 × leungbk quits (~user@2603-8000-f144-2028-5f51-12f7-6de3-c4e6.res6.spectrum.com) (Quit: ERC (IRC client for Emacs 28.0.50))
22:39:43 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
22:41:41 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
22:42:05 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 260 seconds)
22:42:10 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:44:37 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
22:45:10 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
22:45:56 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
22:48:58 phaul joins (~phaul@ruby/staff/phaul)
22:50:17 × dhil quits (~dhil@195.213.192.34) (Quit: Leaving)
22:52:09 <iqubic> Why does this library exist? It's just so pointless: https://hackage.haskell.org/package/plumbers-0.0.4/docs/Control-Plumbers.html
22:52:33 conal joins (~conal@64.71.133.70)
22:54:47 × michalz` quits (~user@185.246.204.61) (Remote host closed the connection)
22:55:04 × b3z quits (~b3z@vmd41962.contaboserver.net) (Ping timeout: 260 seconds)
22:55:04 × pierrot quits (~pi@unaffiliated/pierrot) (Ping timeout: 260 seconds)
22:55:06 <texasmynsted> ha
22:55:12 b3z joins (~b3z@vmd41962.contaboserver.net)
22:55:50 pierrot joins (~pi@unaffiliated/pierrot)
22:55:59 <merijn> iqubic: Clearly you haven't yet browsed Hackage's ACME category
22:56:10 <iqubic> I should do that.
22:56:22 × [exa] quits (exa@unaffiliated/exa/x-5381537) (Ping timeout: 265 seconds)
22:56:37 × quaestor quits (~quaestor@griffith.christophrauch.de) (Ping timeout: 264 seconds)
22:56:46 <merijn> https://hackage.haskell.org/packages/tag/acme
22:57:14 borne joins (~fritjof@200116b86420b200bcbe2553f445a41b.dip.versatel-1u1.de)
22:57:52 <hpc> everyone has their favorite
22:58:04 <hpc> mine is schoenfinkel
22:58:18 <merijn> acme-dont and acme-LookOfDisapproval are nice too :p
22:58:42 × L29Ah quits (~L29Ah@unaffiliated/l29ah) (Ping timeout: 256 seconds)
22:58:45 quaestor joins (~quaestor@griffith.christophrauch.de)
22:59:15 × son0p quits (~son0p@181.136.122.143) (Quit: leaving)
22:59:37 <hpc> acme-dont is also a perl module
23:00:33 <iqubic> This is great: https://hackage.haskell.org/package/ACME-0.0.0.1/docs/Acme-Pirates.html
23:01:25 × phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 258 seconds)
23:01:49 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
23:01:52 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
23:02:14 <iqubic> What's the point of this? https://hackage.haskell.org/package/acme-all-monad-0.1.0.0/docs/Control-Monad-All-Trans.html#t:AllT
23:02:48 [exa] joins (exa@srv3.blesmrt.net)
23:02:49 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
23:03:00 <merijn> Nothing :p
23:03:16 <merijn> Next you'll ask what the point of acme-dont is :p
23:03:35 phaul joins (~phaul@ruby/staff/phaul)
23:03:43 × olligobber quits (~olligobbe@unaffiliated/olligobber) (Ping timeout: 258 seconds)
23:04:03 olligobber joins (~olligobbe@unaffiliated/olligobber)
23:04:35 <hpc> it's all for fun
23:04:56 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
23:05:10 × elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Client Quit)
23:06:12 ransom joins (c4264035@gateway/vpn/protonvpn/c4264035)
23:07:54 conal joins (~conal@64.71.133.70)
23:09:02 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
23:09:03 <iqubic> This is just too funny
23:09:34 L29Ah joins (~L29Ah@unaffiliated/l29ah)
23:09:59 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
23:11:34 <texasmynsted> LOL https://hackage.haskell.org/package/acme-stringly-typed-1.0.0.0/docs/Acme-StringlyTyped.html
23:11:48 <merijn> acme-php
23:13:04 jedws joins (~jedws@121.209.181.215)
23:13:58 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
23:14:25 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds)
23:14:30 × olligobber quits (~olligobbe@unaffiliated/olligobber) (Remote host closed the connection)
23:15:46 <texasmynsted> https://hackage.haskell.org/package/acme-timemachine
23:15:57 <texasmynsted> oooh the acme tag is really fun
23:16:37 <dsal> tardis is the real time machine
23:16:40 <merijn> texasmynsted: You should check out the (non-joke) Tardis monad :p
23:17:26 <ezzieyguywuf> lol, megaparsec makes my eyes spin 😵
23:17:49 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection)
23:18:16 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
23:18:42 <texasmynsted> Hahh
23:19:20 <hpc> acme-microwave is a good one too - when i show it to people they are surprised that microwaves even work that way
23:19:41 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
23:20:57 <texasmynsted> Wow that tag makes me so happy.
23:21:02 <dsal> ezzieyguywuf: megaparsec is great.
23:21:05 <texasmynsted> ಠ_ಠ
23:21:10 <merijn> dsal: The docs are not >.>
23:21:24 <dsal> Hmm... Yeah, getting the initial mental model can be a challenge.
23:21:32 <dsal> I guess the other problem is figuring out where all the parts are.
23:21:33 <merijn> dsal: No, not that
23:21:37 <merijn> Just finding anything
23:22:08 <koz_> What does the Applicative instance of Writer do with the ... writ? ... on <*>?
23:22:10 <merijn> Like, I've used 5 different parser combinator packages before, megaparsec docs are *severely* lacking in logical structure for finding anything
23:22:46 <dsal> I was lost going from attoparsec to megaparsec for sure. It does more of the things I want once I find them. :)
23:24:08 <koz_> Ah, <>.
23:24:10 <koz_> As I thought.
23:24:46 <iqubic> With the use of ACME-Don't we get this: "safePerformIO = Just . don't"
23:25:58 × ubert quits (~Thunderbi@p200300ecdf1e5386e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
23:26:52 hexfive joins (~hexfive@50-47-142-195.evrt.wa.frontiernet.net)
23:27:25 sparsity joins (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145)
23:27:43 <ezzieyguywuf> dsal: it is great
23:28:07 <ezzieyguywuf> the documentation gets the job done
23:28:15 <ezzieyguywuf> just every time I need to do somethin new I'm like blehhhhhhh
23:28:23 <merijn> :p
23:29:09 <ezzieyguywuf> but then after a while I'm like "Dang, is there really any other way to do this?"
23:30:33 × st8less quits (~st8less@2603:a060:11fd:0:cc1a:708c:1c26:7d45) (Ping timeout: 258 seconds)
23:32:34 st8less joins (~st8less@inet-167-224-197-181.isp.ozarksgo.net)
23:34:56 pavonia joins (~user@unaffiliated/siracusa)
23:35:35 × pjb quits (~t@2a01cb04063ec50074a8618b6b489f5b.ipv6.abo.wanadoo.fr) (Read error: Connection reset by peer)
23:37:13 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
23:39:40 <texasmynsted> If you start thinking regular expressions you need to step away from the keyboard
23:41:07 <shapr> I think in monads sometimes
23:41:59 <Majiir> Hey, folks. I've solved a performance problem I was having, but I'm wondering if there's a more general solution for what I've done. Code is here: http://pastie.org/p/68B6xmKFGSrL2sBFeVtzva
23:42:39 <Majiir> I want to change some fields (there are more on that record) if the condition 'null (moves g)' is true. The problem I was having is that 'moves g' is very expensive.
23:42:49 notzmv` joins (~user@177.25.202.151)
23:43:12 × Yumasi quits (~guillaume@2a01:e0a:5cb:4430:e1ea:8f38:f518:4e69) (Ping timeout: 246 seconds)
23:43:12 <Majiir> I changed to pass2 so that the other fields on the record (not shown) could be evaluated without forcing 'null (moves g)'
23:43:33 <Majiir> But all the 'if mustPass then .. else ..' feels repetitious.
23:43:39 × Raito_Bezarius quits (~Raito@unaffiliated/raito-bezarius/x-8764578) (Ping timeout: 272 seconds)
23:44:15 Yumasi joins (~guillaume@2a01:e0a:5cb:4430:5178:619c:fc92:5a85)
23:44:18 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
23:45:16 notzmv` is now known as notzmv
23:45:32 × notzmv quits (~user@177.25.202.151) (Changing host)
23:45:32 notzmv joins (~user@unaffiliated/zmv)
23:45:55 Raito_Bezarius joins (~Raito@unaffiliated/raito-bezarius/x-8764578)
23:46:59 × o1lo01ol1o quits (~o1lo01ol1@bl11-140-216.dsl.telepac.pt) (Remote host closed the connection)
23:47:29 <dminuoso> Majiir: Yeah that does not look idiomatic. Can you perhaps share the entire module?
23:48:59 <dminuoso> Im in particular curious what function `moves` is (is that a field of GameState), and where/how is it reduced.
23:49:26 <Majiir> Um.. well, it's my god-module that I'm in the process of reorganizing, so maybe some specific tidbits would be more helpful than the whole thing :D
23:49:36 <dminuoso> Feel free to share it anyway.
23:49:40 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
23:49:43 <dminuoso> Ill try and keep my focus on this region if you like.
23:50:01 <dminuoso> My instinct says the solution to your if-then-else requires some larger rethinking
23:51:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
23:52:18 <Majiir> Here's some more: http://pastie.org/p/3Nm0Gwj69o6BUpAmVSlhFr
23:52:59 × kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection)
23:53:03 <Majiir> 'board' and 'nextTurn' are the real state - the rest are my sorry attempt to memoize evaluation of other functions
23:53:27 <Majiir> moves and moveableTiles' are relatively expensive to evaluate
23:54:20 o1lo01ol1o joins (~o1lo01ol1@bl11-140-216.dsl.telepac.pt)
23:54:37 <dminuoso> Question, you seem to throw away the result of `moves`
23:54:52 <dminuoso> Do you just want to know whether there's any element in the resulting list, and nothing more?
23:56:43 <Majiir> In the specific case of 'pass', yes, but the full result of 'moves' would be useful elsewhere
23:57:35 <Majiir> The intuition here is: If the next player (GameState::nextTurn) has no moves, it forces a pass, so flip back to the first player.
23:57:51 <dminuoso> There's some minor improvements to be made, but nothing that would really be revolutionary.
23:57:56 <dminuoso> Without seeing more, it's hard to say
23:58:38 <dminuoso> But roughly, I'd try to aim for this:
23:59:16 <dminuoso> case moves x of [] -> forcePass; xs -> resume
23:59:57 <dminuoso> rather than testing for null and then throwing that result away, I'd try and immediately use this knowledge and resume

All times are in UTC on 2020-12-08.