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.