Logs on 2020-12-13 (freenode/#haskell)
| 00:02:58 | → | sgibber2018 joins (~arch-gibb@208.85.237.137) |
| 00:03:59 | × | mirrorbird quits (~psutcliff@2a00:801:2d6:5a31:e851:a991:dd63:f024) (Quit: Leaving) |
| 00:04:18 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 260 seconds) |
| 00:04:33 | → | bitmapper joins (uid464869@gateway/web/irccloud.com/x-ztimugujetgdzvmd) |
| 00:07:01 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds) |
| 00:09:03 | → | acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
| 00:09:56 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 00:10:26 | → | Tario joins (~Tario@200.119.184.207) |
| 00:11:00 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 00:12:45 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Quit: So long and thanks for all the fish!) |
| 00:14:01 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 00:14:02 | × | fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.7.1) |
| 00:15:29 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Max SendQ exceeded) |
| 00:16:41 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 00:17:09 | → | conal joins (~conal@64.71.133.70) |
| 00:17:47 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 00:18:04 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:2465:8c15:4fac:3d31) |
| 00:18:13 | → | drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net) |
| 00:19:34 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 00:19:47 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 00:19:47 | → | conal joins (~conal@64.71.133.70) |
| 00:22:36 | × | drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 240 seconds) |
| 00:23:09 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:26:49 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 00:28:00 | × | olligobber quits (~olligobbe@unaffiliated/olligobber) (Ping timeout: 256 seconds) |
| 00:28:24 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 00:28:39 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Quit: So long and thanks for all the fish!) |
| 00:32:14 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 258 seconds) |
| 00:33:05 | × | MOSCOS quits (~MOSCOS@122.54.107.175) (Remote host closed the connection) |
| 00:33:13 | × | wonko7 quits (~wonko7@2a01:e35:2ffb:7040:14a1:46f4:68f7:2133) (Ping timeout: 272 seconds) |
| 00:33:29 | → | MOSCOS joins (~MOSCOS@122.54.107.175) |
| 00:34:37 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 00:35:02 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 00:35:20 | → | drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net) |
| 00:36:29 | → | conal joins (~conal@64.71.133.70) |
| 00:36:29 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 00:37:29 | → | nfd joins (~nfd9001@2600:380:445c:2b0:c0:f0a1:32bc:f09) |
| 00:38:18 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Max SendQ exceeded) |
| 00:38:33 | × | Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving) |
| 00:40:09 | → | rprije joins (~rprije@14-201-170-17.tpgi.com.au) |
| 00:40:11 | → | Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
| 00:40:49 | × | shalokshalom quits (~quassel@2a02:1748:dd5e:7f60:e2dc:326:1bfd:b9fc) (Ping timeout: 272 seconds) |
| 00:40:50 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 00:42:23 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds) |
| 00:42:47 | × | nfd quits (~nfd9001@2600:380:445c:2b0:c0:f0a1:32bc:f09) (Ping timeout: 260 seconds) |
| 00:48:43 | × | Tario quits (~Tario@200.119.184.207) (Read error: Connection reset by peer) |
| 00:49:09 | → | Tario joins (~Tario@201.192.165.173) |
| 00:49:50 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Quit: So long and thanks for all the fish!) |
| 00:50:54 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 00:51:15 | → | conal joins (~conal@64.71.133.70) |
| 00:51:18 | <cnmne[m]> | having trouble seeing where a miscount is coming up when i try https://paste.tomsmeding.com/DIzLGJv8 for AoC 2015 Day 8. all my tests come up correct, and i've hand-counted a few nasty-looking ones -- all correct |
| 00:54:09 | × | _linker_ quits (~linker@2a02:a31a:a041:9a80:30fe:7017:9f55:4ae6) (Remote host closed the connection) |
| 00:56:45 | → | Vulfe_ joins (~vulfe@2600:1702:31b0:34e0:4007:51f:3ce1:375) |
| 01:00:02 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:2934:49bf:39ab:a879) (Ping timeout: 264 seconds) |
| 01:00:27 | × | sgibber2018 quits (~arch-gibb@208.85.237.137) (Quit: WeeChat 2.9) |
| 01:00:33 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Quit: So long and thanks for all the fish!) |
| 01:01:14 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 01:01:29 | × | acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 260 seconds) |
| 01:02:54 | → | conal joins (~conal@64.71.133.70) |
| 01:02:57 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 01:03:07 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 01:03:36 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 01:04:00 | thecoffemaker | is now known as thecoffem |
| 01:04:22 | → | conal joins (~conal@64.71.133.70) |
| 01:04:36 | <MarcelineVQ> | idk but looking at line 1 of the input, read turns "\xd2" into "\210" which means it's become 4 chars instead of 1 |
| 01:04:39 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 01:05:07 | × | Vulfe_ quits (~vulfe@2600:1702:31b0:34e0:4007:51f:3ce1:375) (Remote host closed the connection) |
| 01:05:26 | → | conal joins (~conal@64.71.133.70) |
| 01:05:26 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 01:05:57 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:4007:51f:3ce1:375) |
| 01:06:09 | <MarcelineVQ> | Instructions given have "\x plus two hexadecimal characters (which represents a single character with that ASCII code" which is violated if read gives 4 chars instead of 1 |
| 01:06:54 | × | fuzzypixelz quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Remote host closed the connection) |
| 01:07:18 | → | fuzzypixelz joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
| 01:09:03 | → | conal joins (~conal@64.71.133.70) |
| 01:09:46 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 01:10:34 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:4007:51f:3ce1:375) (Ping timeout: 258 seconds) |
| 01:11:06 | × | mceier quits (~mceier@89-68-132-187.dynamic.chello.pl) (Ping timeout: 265 seconds) |
| 01:11:24 | × | SomeoneSerge quits (~someone-s@5.253.207.86) (Ping timeout: 260 seconds) |
| 01:12:01 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 01:12:15 | → | mceier joins (~mceier@89-68-132-187.dynamic.chello.pl) |
| 01:12:30 | × | thecoffem quits (~thecoffem@unaffiliated/thecoffemaker) (Quit: So long and thanks for all the fish!) |
| 01:12:32 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
| 01:13:33 | → | SomeoneSerge joins (~someone-s@broadband-178-140-231-18.ip.moscow.rt.ru) |
| 01:15:27 | × | alx741 quits (~alx741@181.196.69.196) (Ping timeout: 265 seconds) |
| 01:16:16 | × | Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 240 seconds) |
| 01:17:32 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 01:18:27 | <cnmne[m]> | i think it's ok |
| 01:18:35 | <cnmne[m]> | when i check length it shows 1 |
| 01:18:45 | <pavonia> | Which input line fails? |
| 01:20:05 | <cnmne[m]> | neither; i get an answer, but apparently the wrong answer |
| 01:20:37 | → | fuzzypixelz_ joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
| 01:20:42 | × | quarters quits (~quarters@unaffiliated/quarters) (Ping timeout: 256 seconds) |
| 01:20:54 | <pavonia> | Ah, e.g. this one gives wrong results "hc\"lg\x6bcpupsewzklai\"l" |
| 01:21:22 | <pavonia> | Because the Haskell parser keeps reading hex chars until it can't find any more |
| 01:21:53 | <pavonia> | > "\x6bcp" |
| 01:21:55 | × | Jeanne-Kamikaze quits (~Jeanne-Ka@66.115.189.157) (Quit: Leaving) |
| 01:21:55 | <lambdabot> | "\1724p" |
| 01:22:04 | × | fuzzypixelz quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 258 seconds) |
| 01:22:05 | fuzzypixelz_ | is now known as fuzzypixelz |
| 01:22:08 | <cnmne[m]> | ah! |
| 01:22:12 | → | Jeanne-Kamikaze joins (~Jeanne-Ka@66.115.189.157) |
| 01:22:42 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 265 seconds) |
| 01:22:46 | <cnmne[m]> | that makes sense, thanks. I guess there's no short cut and I'll have to pattern match a little more ... |
| 01:23:01 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 01:24:59 | → | nfd joins (~nfd9001@c-67-183-38-33.hsd1.wa.comcast.net) |
| 01:25:43 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:4007:51f:3ce1:375) |
| 01:25:48 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 01:27:41 | → | alx741 joins (~alx741@186.178.110.71) |
| 01:27:48 | × | Kronic quits (~Kronic___@84.203.98.133) (Quit: Leaving) |
| 01:28:39 | → | chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
| 01:30:05 | × | nfd quits (~nfd9001@c-67-183-38-33.hsd1.wa.comcast.net) (Ping timeout: 240 seconds) |
| 01:30:19 | → | boxscape joins (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) |
| 01:30:30 | × | columbarius quits (~columbari@87.123.198.150) (Ping timeout: 258 seconds) |
| 01:31:13 | × | rprije quits (~rprije@14-201-170-17.tpgi.com.au) (Remote host closed the connection) |
| 01:31:39 | → | rprije joins (~rprije@14-201-170-17.tpgi.com.au) |
| 01:31:58 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Quit: So long and thanks for all the fish!) |
| 01:32:40 | → | columbarius joins (~columbari@mue-88-130-54-086.dsl.tropolys.de) |
| 01:33:20 | × | dnlkrgr quits (~dnlkrgr@HSI-KBW-46-223-1-192.hsi.kabel-badenwuerttemberg.de) (Ping timeout: 265 seconds) |
| 01:33:38 | → | bgamari joins (~bgamari@72.65.101.158) |
| 01:34:14 | × | bgamari_ quits (~bgamari@2001:470:e438::1) (Ping timeout: 264 seconds) |
| 01:34:21 | → | olligobber joins (~olligobbe@unaffiliated/olligobber) |
| 01:36:45 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 01:37:10 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 01:37:11 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 01:39:40 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 01:40:15 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 01:40:30 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Read error: Connection reset by peer) |
| 01:40:43 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 01:40:47 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 01:42:15 | × | fuzzypixelz quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz) |
| 01:42:39 | → | bgamari_ joins (~bgamari@72.65.102.219) |
| 01:42:41 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:4007:51f:3ce1:375) (Remote host closed the connection) |
| 01:42:52 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:4007:51f:3ce1:375) |
| 01:43:24 | → | softwarm joins (4408f588@ip68-8-245-136.sd.sd.cox.net) |
| 01:43:29 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 260 seconds) |
| 01:44:04 | × | bgamari quits (~bgamari@72.65.101.158) (Ping timeout: 260 seconds) |
| 01:44:28 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 01:45:05 | × | gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 01:45:27 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 01:45:28 | × | werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 01:47:29 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Quit: So long and thanks for all the fish!) |
| 01:47:57 | → | nullniverse joins (~null@unaffiliated/nullniverse) |
| 01:48:30 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 01:48:53 | → | Lord_of_Life joins (~Lord@46.217.220.245) |
| 01:49:16 | × | Lord_of_Life_ quits (~Lord@46.217.220.217) (Ping timeout: 240 seconds) |
| 01:49:53 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 01:51:39 | × | perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Ping timeout: 260 seconds) |
| 01:51:57 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 01:54:19 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Max SendQ exceeded) |
| 01:59:04 | → | werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) |
| 01:59:05 | × | olligobber quits (~olligobbe@unaffiliated/olligobber) (Ping timeout: 240 seconds) |
| 02:01:15 | × | sakirious quits (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: The Lounge - https://thelounge.chat) |
| 02:01:42 | → | perrier-jouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 02:02:36 | × | Neuromancer quits (~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 240 seconds) |
| 02:03:09 | × | hiroaki quits (~hiroaki@2a02:908:4b1b:20a0::4e53) (Ping timeout: 272 seconds) |
| 02:04:12 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:04:25 | × | jespada quits (~jespada@90.254.245.49) (Ping timeout: 240 seconds) |
| 02:05:06 | → | polyrain joins (~polyrain@2001:8003:e501:6901:344b:e1da:e2ed:956) |
| 02:06:25 | × | drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 240 seconds) |
| 02:08:01 | → | jespada joins (~jespada@90.254.245.49) |
| 02:09:05 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 02:10:13 | → | drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net) |
| 02:11:41 | → | olligobber joins (~olligobbe@unaffiliated/olligobber) |
| 02:11:50 | → | sgibber2018 joins (~arch-gibb@208.85.237.137) |
| 02:12:02 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 02:13:21 | → | wildlander joins (~wildlande@unaffiliated/wildlander) |
| 02:14:22 | × | xff0x quits (~fox@2001:1a81:525b:e100:290b:d404:9fb5:ba71) (Ping timeout: 260 seconds) |
| 02:16:12 | → | xff0x joins (~fox@2001:1a81:5293:a900:fbf2:9a22:7e7:d551) |
| 02:18:49 | → | hf69 joins (~haskeller@ip72-205-40-121.dc.dc.cox.net) |
| 02:21:03 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Quit: So long and thanks for all the fish!) |
| 02:22:26 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 02:22:40 | → | nfd joins (~nfd9001@c-67-183-38-33.hsd1.wa.comcast.net) |
| 02:23:14 | × | xsperry quits (~as@unaffiliated/xsperry) (Remote host closed the connection) |
| 02:23:43 | × | drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 260 seconds) |
| 02:24:45 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Read error: Connection reset by peer) |
| 02:25:21 | × | hf69 quits (~haskeller@ip72-205-40-121.dc.dc.cox.net) (Quit: WeeChat 3.0) |
| 02:26:07 | → | hf69 joins (~haskeller@ip72-205-40-121.dc.dc.cox.net) |
| 02:29:28 | × | jchia quits (~jchia@58.32.35.91) (Ping timeout: 246 seconds) |
| 02:31:06 | × | hf69 quits (~haskeller@ip72-205-40-121.dc.dc.cox.net) (Quit: WeeChat 3.0) |
| 02:33:06 | × | gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 02:33:26 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 02:34:18 | → | jchia joins (~jchia@58.32.71.163) |
| 02:36:06 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:38:22 | × | nfd quits (~nfd9001@c-67-183-38-33.hsd1.wa.comcast.net) (Read error: Connection reset by peer) |
| 02:39:35 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Read error: Connection timed out) |
| 02:44:11 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 02:44:39 | → | hf69 joins (~haskeller@ip72-205-40-121.dc.dc.cox.net) |
| 02:45:32 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Max SendQ exceeded) |
| 02:47:34 | × | hf69 quits (~haskeller@ip72-205-40-121.dc.dc.cox.net) (Client Quit) |
| 02:49:26 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 02:50:14 | × | gzj quits (~gzj@unaffiliated/gzj) (Ping timeout: 258 seconds) |
| 02:51:15 | → | Kronic joins (~Kronic___@84.203.98.133) |
| 02:56:55 | → | quarters joins (~quarters@38-73-246-124.starry-inc.net) |
| 02:58:26 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Quit: So long and thanks for all the fish!) |
| 02:59:40 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 03:07:50 | → | abhixec joins (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) |
| 03:10:24 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 03:12:10 | × | electrostat quits (~dag@unaffiliated/electrostat) (Ping timeout: 246 seconds) |
| 03:13:12 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 03:14:26 | × | m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 256 seconds) |
| 03:16:08 | × | nullniverse quits (~null@unaffiliated/nullniverse) (Ping timeout: 256 seconds) |
| 03:17:11 | → | electrostat joins (~dag@unaffiliated/electrostat) |
| 03:17:57 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds) |
| 03:19:53 | × | polyrain quits (~polyrain@2001:8003:e501:6901:344b:e1da:e2ed:956) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 03:21:45 | <siraben> | Anyone writing time-traveling code in Haskell? |
| 03:23:12 | <ephemient> | we are all time travellers, moving at 1 second per second |
| 03:23:52 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:4007:51f:3ce1:375) (Remote host closed the connection) |
| 03:24:05 | × | theDon quits (~td@94.134.91.51) (Ping timeout: 240 seconds) |
| 03:24:53 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:4007:51f:3ce1:375) |
| 03:26:13 | → | theDon joins (~td@muedsl-82-207-238-126.citykom.de) |
| 03:26:46 | → | xirhtogal joins (~lagothrix@unaffiliated/lagothrix) |
| 03:26:46 | × | lagothrix quits (~lagothrix@unaffiliated/lagothrix) (Killed (beckett.freenode.net (Nickname regained by services))) |
| 03:26:46 | xirhtogal | is now known as lagothrix |
| 03:28:40 | <dsal> | siraben: depends on what you mean. I used something you could call that for traversing a maze-like problem in last year's AoC. I just kept all the states as I proceeded and could move back to any prior point in time to make different decisions. |
| 03:29:26 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:4007:51f:3ce1:375) (Ping timeout: 264 seconds) |
| 03:30:28 | <siraben> | Something like https://kcsongor.github.io/time-travel-in-haskell-for-dummies/ |
| 03:34:00 | → | hf69 joins (~haskeller@ip72-205-40-121.dc.dc.cox.net) |
| 03:36:05 | × | solonarv quits (~solonarv@astrasbourg-157-1-27-135.w90-40.abo.wanadoo.fr) (Ping timeout: 240 seconds) |
| 03:39:05 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 03:39:24 | → | ensyde joins (~ensyde@2600:1702:2e30:1a40:2d5d:a36c:99c3:9606) |
| 03:39:26 | → | aev joins (~aev@pool-108-5-152-94.nwrknj.fios.verizon.net) |
| 03:39:33 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 03:39:49 | → | Gurkenglas_ joins (~Gurkengla@unaffiliated/gurkenglas) |
| 03:40:01 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:44:19 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 265 seconds) |
| 03:45:02 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
| 03:45:12 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 03:45:28 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) |
| 03:45:47 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 03:46:44 | × | Jeanne-Kamikaze quits (~Jeanne-Ka@66.115.189.157) (Quit: Leaving) |
| 03:48:58 | <dsal> | I didn't just tardis for that particular problem. Just a map of the past. |
| 03:50:02 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) (Ping timeout: 258 seconds) |
| 03:50:38 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds) |
| 03:51:45 | × | softwarm quits (4408f588@ip68-8-245-136.sd.sd.cox.net) (Ping timeout: 245 seconds) |
| 03:52:07 | aev | is now known as aev_software |
| 03:54:21 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 03:59:33 | → | cads joins (~cads@ip-64-72-99-232.lasvegas.net) |
| 04:00:02 | × | alexelcu quits (~alexelcu@142.93.180.198) (Quit: ZNC 1.8.2 - https://znc.in) |
| 04:00:33 | → | Rudd0 joins (~Rudd0@185.189.115.103) |
| 04:00:53 | <iqubic> | "If you love it so much, why don't you marry it." Turns out that Haskell makes it really easy to tye the knot. |
| 04:00:59 | → | alexelcu joins (~alexelcu@142.93.180.198) |
| 04:03:29 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
| 04:05:23 | → | nullniverse joins (~null@unaffiliated/nullniverse) |
| 04:05:25 | × | nullniverse quits (~null@unaffiliated/nullniverse) (Max SendQ exceeded) |
| 04:06:44 | <dsal> | Ha |
| 04:08:26 | × | ensyde quits (~ensyde@2600:1702:2e30:1a40:2d5d:a36c:99c3:9606) (Quit: Leaving) |
| 04:12:30 | → | softwarm joins (4408f588@ip68-8-245-136.sd.sd.cox.net) |
| 04:13:34 | <ezzieyguywuf> | hrm, how do I use optparse-applicative to parse an optional argument? i.e. `myProg -f some.file` versus `myProg` |
| 04:14:05 | × | Gurkenglas_ quits (~Gurkengla@unaffiliated/gurkenglas) (Read error: Connection reset by peer) |
| 04:14:28 | × | chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 04:15:17 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 04:15:50 | × | Kronic quits (~Kronic___@84.203.98.133) (Read error: Connection reset by peer) |
| 04:17:27 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 04:20:37 | → | drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net) |
| 04:21:14 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 04:21:53 | <monochrom> | Use "option". In the "Mod OptionFields a" parameter, include "value ..." for the default value to make it optional. |
| 04:24:12 | × | kupi quits (uid212005@gateway/web/irccloud.com/x-zcsljpeaozocdwya) (Quit: Connection closed for inactivity) |
| 04:24:35 | → | nullniverse joins (~null@unaffiliated/nullniverse) |
| 04:24:35 | × | nullniverse quits (~null@unaffiliated/nullniverse) (Max SendQ exceeded) |
| 04:25:44 | × | matryoshka quits (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in) |
| 04:25:53 | × | drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 265 seconds) |
| 04:27:01 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) |
| 04:27:05 | × | darjeeling_ quits (~darjeelin@115.215.43.136) (Ping timeout: 260 seconds) |
| 04:28:23 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
| 04:28:56 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 272 seconds) |
| 04:28:57 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 04:31:27 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) (Ping timeout: 260 seconds) |
| 04:32:47 | → | conal joins (~conal@64.71.133.70) |
| 04:36:55 | × | softwarm quits (4408f588@ip68-8-245-136.sd.sd.cox.net) (Remote host closed the connection) |
| 04:37:24 | <ezzieyguywuf> | monochrom: but if I provide any default value, then essentially that default value can never be provided by the user as valid input, right? |
| 04:38:00 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 04:38:24 | <ezzieyguywuf> | i.e. "value -1", because sure maybe nobody would even name their file "-1", but the one time someone does and they can't because I have an `if filename == "-1" then doSomethingElse..." somewhere |
| 04:40:37 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 04:40:38 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 04:42:46 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
| 04:43:34 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) |
| 04:44:59 | → | conal joins (~conal@64.71.133.70) |
| 04:46:10 | <iqubic> | Don't just parse into "-1". Parse into Maybe a. Then you can set the default to Nothing, and use "Just a" for when the user provides a value. |
| 04:46:25 | <iqubic> | This is literally why Maybe exists. |
| 04:47:11 | <ezzieyguywuf> | iqubic: yea, I was trying to do it into Maybe, but I guess I must have borked it up |
| 04:47:16 | <ezzieyguywuf> | :) time to try again |
| 04:47:37 | × | quarters quits (~quarters@38-73-246-124.starry-inc.net) (Changing host) |
| 04:47:37 | → | quarters joins (~quarters@unaffiliated/quarters) |
| 04:48:37 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 04:49:29 | → | Tario joins (~Tario@201.192.165.173) |
| 04:50:18 | → | conal joins (~conal@64.71.133.70) |
| 04:50:29 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 04:51:59 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 04:52:14 | → | doct0rhu joins (~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net) |
| 04:54:20 | <doct0rhu> | Hi, I've a question regarding <> and >>. In some context, for example IO, I can chain several IO actions with >> if I don't care about the result of the previous action |
| 04:54:52 | → | isd joins (zenhackmat@gateway/shell/matrix.org/x-hljwevtqkvvirxdh) |
| 04:55:03 | → | argento joins (~argent0@168.227.97.29) |
| 04:55:11 | <doct0rhu> | though the result of previous action is not retained, it would still be executed. |
| 04:55:30 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 04:55:53 | <dsal> | <> and >> don't have much to do with each other. |
| 04:55:58 | <doct0rhu> | But I recently come across the case where I tried using >> to chain several `X ()` actions in XMonad. But it turned out only the last one is executed |
| 04:56:03 | <doct0rhu> | I have to use <> |
| 04:56:40 | <dsal> | :t (<>) |
| 04:56:42 | <lambdabot> | Semigroup a => a -> a -> a |
| 04:56:42 | <dsal> | :t (>>) |
| 04:56:45 | <lambdabot> | Monad m => m a -> m b -> m b |
| 04:57:13 | <doct0rhu> | Yes, purely from type theory point of view <> and >> are entirely different. But I've seen in several sources saying that >> is used to chain monadic actions together |
| 04:57:21 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 04:57:36 | <dsal> | Well, sort of. |
| 04:57:53 | <dsal> | It's >>= discarding the result of the left. |
| 04:57:54 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 04:58:14 | → | drbean joins (~drbean@TC210-63-209-32.static.apol.com.tw) |
| 04:58:23 | <doct0rhu> | But clearly in some cases, such as the one I had, <> is the correct one but >> doesn't work |
| 04:58:39 | <dsal> | <> is entirely unrelated to monads. |
| 04:59:07 | <dsal> | Without knowing the types you're talking about, it's difficult to even guess what you mean. |
| 04:59:34 | <doct0rhu> | sorry I should say `mappend` |
| 04:59:43 | <dsal> | :t mappend |
| 04:59:44 | <doct0rhu> | I should use `mappend` instead of `>>` |
| 04:59:45 | <lambdabot> | Monoid a => a -> a -> a |
| 04:59:50 | <dsal> | Still not related to monads |
| 05:00:00 | <doct0rhu> | `mappend` is the same as `<>` though |
| 05:00:07 | <isd> | Is there a good way to get the runtime to tell you how often STM transactions are being restarted due to conflicts? I'm having performance problems, and I have a hunch that it may be an issue with contenton between transactions, but I don't know how to measure. |
| 05:00:17 | → | spod_ joins (~spod@c-24-16-29-179.hsd1.wa.comcast.net) |
| 05:00:44 | <doct0rhu> | :t X |
| 05:00:46 | <lambdabot> | error: Data constructor not in scope: X |
| 05:01:04 | <doct0rhu> | or does the bot only works with Base? |
| 05:01:36 | × | shenyi quits (uid216035@gateway/web/irccloud.com/x-rigdbqxfostrvmoh) (Quit: Connection closed for inactivity) |
| 05:02:05 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds) |
| 05:02:58 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) (Remote host closed the connection) |
| 05:03:58 | × | boxscape quits (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Ping timeout (120 seconds)) |
| 05:04:01 | <doct0rhu> | newtype X a = X (ReaderT XConf (StateT XState IO) a) |
| 05:04:31 | <doct0rhu> | newtype StateT s m a |
| 05:04:42 | <doct0rhu> | Monad m => Monad (StateT s m) |
| 05:05:17 | <doct0rhu> | so second argument to ReaderT implments Monad |
| 05:05:21 | <doct0rhu> | Monad m => Monad (ReaderT r m) |
| 05:05:40 | <doct0rhu> | so ReaderT XConf (StateT XState IO) implements Monad |
| 05:06:13 | <doct0rhu> | Can I deduce that, when I use >>, it's chaining `ReaderT XConf (StateT XState IO)` but not `a` |
| 05:06:22 | <doct0rhu> | where `a` is actually what I want to chain |
| 05:06:56 | × | aev_software quits (~aev@pool-108-5-152-94.nwrknj.fios.verizon.net) (Ping timeout: 272 seconds) |
| 05:08:08 | × | spod_ quits (~spod@c-24-16-29-179.hsd1.wa.comcast.net) (Quit: Leaving) |
| 05:10:05 | × | dragestil quits (~quassel@fsf/member/dragestil) (Ping timeout: 240 seconds) |
| 05:10:16 | → | darjeeling_ joins (~darjeelin@115.215.43.136) |
| 05:11:09 | <ezzieyguywuf> | hah, whoot I got it. |
| 05:11:12 | <ezzieyguywuf> | i'm such a clutz |
| 05:14:05 | × | quarters quits (~quarters@unaffiliated/quarters) (Ping timeout: 240 seconds) |
| 05:18:08 | → | dmiles joins (~dmiles@c-98-232-203-165.hsd1.wa.comcast.net) |
| 05:18:42 | → | SanchayanMaity joins (~Sanchayan@223.226.34.150) |
| 05:21:56 | × | jedws quits (~jedws@121.209.189.201) (Read error: Connection reset by peer) |
| 05:24:06 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:26:45 | × | terrorjack quits (~terrorjac@static.23.111.201.195.clients.your-server.de) (Remote host closed the connection) |
| 05:27:27 | → | Saukk joins (~Saukk@2001:998:ec:954:1c59:9bb5:b94c:3) |
| 05:29:28 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 05:36:25 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:bbcd:2474:9519:9fb5:8678) |
| 05:37:38 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 05:39:32 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 05:39:59 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 05:40:03 | × | shutdown_-h_now quits (~arjan@2001:1c06:2d0b:2312:b4bc:f6c9:c430:776f) (Ping timeout: 258 seconds) |
| 05:40:04 | → | quarters joins (~quarters@38-73-246-124.starry-inc.net) |
| 05:40:11 | <ski> | doct0rhu : do you have several actions of type `X a', and you want to combine all the `a' results of them, not just the one from the last action ? |
| 05:40:11 | <iqubic> | Is there an easy way to convert a list of [(a, Maybe b)] -> [(a, b)] by throwing away all the elements where the snd is Nothing? |
| 05:41:43 | × | notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection) |
| 05:43:30 | <ski> | @type \l -> [(x,y) | (x,Just y) <- l] |
| 05:43:32 | <lambdabot> | [(a, Maybe b)] -> [(a, b)] |
| 05:43:42 | → | sh9 joins (~sh9@softbank060116136158.bbtec.net) |
| 05:45:10 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds) |
| 05:46:28 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 05:46:34 | <ski> | @type catMaybes . map (uncurry (fmap . (,))) :: [(a,Maybe b)] -> [(a,b)] |
| 05:46:36 | <lambdabot> | [(a, Maybe b)] -> [(a, b)] |
| 05:46:36 | <ski> | @type mapMaybe (uncurry (fmap . (,))) :: [(a,Maybe b)] -> [(a,b)] |
| 05:46:38 | <lambdabot> | [(a, Maybe b)] -> [(a, b)] |
| 05:46:47 | → | shutdown_-h_now joins (~arjan@2001:1c06:2d0b:2312:fd44:2741:1ec1:624c) |
| 05:47:20 | <int-e> | :t catMaybes . map sequenceA |
| 05:47:22 | <lambdabot> | Traversable t => [t (Maybe a)] -> [t a] |
| 05:47:22 | <ski> | (unfortunately there's no `Traversable (w,)', otherwise one could use `mapMaybe sequence') |
| 05:47:46 | <int-e> | instance Traversable ((,) a) -- Defined in ‘Data.Traversable’ |
| 05:48:14 | <ski> | oh, nice :) |
| 05:49:05 | × | gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 05:49:15 | <int-e> | :t mapMaybe traverse |
| 05:49:18 | <lambdabot> | error: |
| 05:49:18 | <lambdabot> | • Couldn't match type ‘t0 a -> f (t0 b)’ with ‘Maybe b1’ |
| 05:49:18 | <lambdabot> | Expected type: (a -> f b) -> Maybe b1 |
| 05:49:21 | <int-e> | err |
| 05:49:22 | <ski> | (for some reason, i thought it was missing, due to `WriterT' having the wrong ordering) |
| 05:49:25 | <int-e> | :t mapMaybe sequenceA |
| 05:49:27 | <lambdabot> | Traversable t => [t (Maybe a)] -> [t a] |
| 05:49:46 | <int-e> | Somehow I didn't know about mapMaybe. |
| 05:50:05 | <ski> | @type mapMaybe sequenceA :: [(a,Maybe b)] -> [(a,b)] |
| 05:50:07 | <lambdabot> | [(a, Maybe b)] -> [(a, b)] |
| 05:52:53 | <heatsink> | Is there a way to make shake use fewer parallel processes? It's not my shake program |
| 05:54:11 | → | polyrain joins (~polyrain@2001:8003:e501:6901:344b:e1da:e2ed:956) |
| 05:54:42 | <heatsink> | I was looking in the wrong place. It was stack installing prerequisites |
| 05:57:01 | → | chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
| 05:59:35 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) |
| 06:00:39 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 06:01:10 | × | dmiles quits (~dmiles@c-98-232-203-165.hsd1.wa.comcast.net) (Remote host closed the connection) |
| 06:01:29 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 06:02:34 | → | dmiles joins (~dmiles@c-98-232-203-165.hsd1.wa.comcast.net) |
| 06:03:25 | × | chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 06:03:40 | × | pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 246 seconds) |
| 06:04:12 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) (Ping timeout: 258 seconds) |
| 06:05:10 | → | conal joins (~conal@64.71.133.70) |
| 06:05:27 | × | machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 265 seconds) |
| 06:06:59 | → | pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 06:07:16 | × | sgibber2018 quits (~arch-gibb@208.85.237.137) (Quit: WeeChat 2.9) |
| 06:12:59 | × | urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna) |
| 06:13:19 | → | chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
| 06:15:04 | × | chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit) |
| 06:17:16 | × | abhixec quits (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 06:18:26 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 06:19:23 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 06:20:01 | × | ddellacosta quits (dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds) |
| 06:20:04 | → | conal joins (~conal@64.71.133.70) |
| 06:20:20 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 06:20:35 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 06:22:44 | × | Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 256 seconds) |
| 06:22:53 | × | Saukk quits (~Saukk@2001:998:ec:954:1c59:9bb5:b94c:3) (Remote host closed the connection) |
| 06:23:26 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:2465:8c15:4fac:3d31) (Ping timeout: 264 seconds) |
| 06:24:45 | → | Cthalupa joins (~cthulhu@47.186.47.75) |
| 06:25:45 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 06:25:55 | → | shenyi joins (uid216035@gateway/web/irccloud.com/x-jphgcsxjzhmtvsqg) |
| 06:26:56 | × | jlamothe quits (~jlamothe@198.251.55.207) (Ping timeout: 240 seconds) |
| 06:28:11 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:2465:8c15:4fac:3d31) |
| 06:32:27 | × | elliott_ quits (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Quit: WeeChat 2.9) |
| 06:33:15 | → | elliott_ joins (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) |
| 06:34:52 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:2465:8c15:4fac:3d31) (Ping timeout: 258 seconds) |
| 06:34:58 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 06:38:12 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:38:24 | → | jedws joins (~jedws@121.209.189.201) |
| 06:38:33 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:2465:8c15:4fac:3d31) |
| 06:39:44 | × | noecho quits (~noecho@2a01:4f8:1c0c:80ee::4223) (Quit: ZNC - http://znc.in) |
| 06:40:17 | → | noecho joins (~noecho@2a01:4f8:1c0c:80ee::4223) |
| 06:41:10 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) |
| 06:43:43 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
| 06:44:16 | × | olligobber quits (~olligobbe@unaffiliated/olligobber) (Ping timeout: 256 seconds) |
| 06:45:38 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) (Ping timeout: 264 seconds) |
| 06:50:17 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:bbcd:2474:9519:9fb5:8678) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 06:51:27 | × | thunderrd quits (~thunderrd@183.182.111.131) (Quit: If it wasn't written down it didn't happen...) |
| 06:51:53 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@mx-ll-171.5.29-209.dynamic.3bb.co.th) |
| 06:53:26 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:2465:8c15:4fac:3d31) (Ping timeout: 264 seconds) |
| 06:54:09 | × | Foritus quits (~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net) (Quit: ლ(ಠ益ಠლ) .:. <Ashley> my porn is hidden in a folder called "BBC Micro Emulator") |
| 06:56:10 | → | Foritus joins (~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net) |
| 06:56:44 | × | Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 256 seconds) |
| 06:57:16 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 06:59:38 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection) |
| 06:59:42 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:2465:8c15:4fac:3d31) |
| 07:00:42 | → | Cthalupa joins (~cthulhu@47.186.47.75) |
| 07:06:55 | × | quarters quits (~quarters@38-73-246-124.starry-inc.net) (Changing host) |
| 07:06:55 | → | quarters joins (~quarters@unaffiliated/quarters) |
| 07:07:56 | × | HarveyPwca quits (~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net) (Quit: Leaving) |
| 07:09:42 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:11:52 | → | coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) |
| 07:12:58 | × | tput quits (~tput@S0106a84e3fe54613.ed.shawcable.net) (Ping timeout: 246 seconds) |
| 07:14:42 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 07:15:30 | × | elliott_ quits (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Quit: WeeChat 2.9) |
| 07:16:32 | → | elliott_ joins (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) |
| 07:17:24 | → | acidjnk_new joins (~acidjnk@p200300d0c719ff439996fb92bd8d62ee.dip0.t-ipconnect.de) |
| 07:17:34 | <doct0rhu> | @ski I've multiple `X a`, and I want them to be executed consecutively. I don't need any of their results because I only want their side effects. |
| 07:17:34 | <lambdabot> | Maybe you meant: wiki src ask |
| 07:18:03 | <doct0rhu> | ski, I've multiple `X a`, and I want them to be executed consecutively. I don't need any of their results because I only want their side effects. |
| 07:19:08 | <doct0rhu> | But with `foo >> bar` only the last one is executed. I have to use `mappend foo bar` or `foo <> bar` |
| 07:19:53 | <xerox_> | :t mapMaybe |
| 07:19:55 | <lambdabot> | (a -> Maybe b) -> [a] -> [b] |
| 07:20:00 | <xerox_> | @index mapMaybe |
| 07:20:01 | <lambdabot> | Data.Maybe, Data.IntMap.Strict, Data.IntMap.Lazy, Data.IntMap, Data.Map.Strict, Data.Map.Lazy, Data.Map |
| 07:20:04 | <xerox_> | oh neat |
| 07:22:27 | × | Unhammer quits (~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection) |
| 07:23:29 | → | Unhammer joins (~Unhammer@gateway/tor-sasl/unhammer) |
| 07:24:10 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) |
| 07:24:13 | × | elliott_ quits (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Ping timeout: 264 seconds) |
| 07:25:21 | → | sakirious joins (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) |
| 07:26:44 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 07:28:32 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) (Ping timeout: 258 seconds) |
| 07:31:58 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
| 07:36:40 | × | Jajik quits (xchlup2@gateway/shell/fi.muni.cz/x-bbqnixzbgkvhiykp) (Quit: The Lounge - https://thelounge.chat) |
| 07:36:41 | × | xsarnik0 quits (xsarnik@gateway/shell/fi.muni.cz/x-ddaekukwitkncfss) (Quit: The Lounge - https://thelounge.chat) |
| 07:39:17 | → | Jajik joins (xchlup2@gateway/shell/fi.muni.cz/x-glzailaxclrtbxni) |
| 07:40:37 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 07:41:27 | → | xsarnik0 joins (xsarnik@gateway/shell/fi.muni.cz/x-wrudlzggfhmxxjno) |
| 07:42:43 | → | boxscape joins (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) |
| 07:43:16 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:45:36 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 240 seconds) |
| 07:45:45 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 240 seconds) |
| 07:47:19 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 258 seconds) |
| 07:52:58 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@mx-ll-171.5.29-209.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 07:53:56 | → | danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
| 07:53:58 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 07:54:18 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@mx-ll-171.5.29-209.dynamic.3bb.co.th) |
| 07:54:33 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 07:59:09 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 260 seconds) |
| 08:03:33 | → | chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
| 08:05:15 | × | chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit) |
| 08:05:19 | → | Gurkenglas joins (~Gurkengla@unaffiliated/gurkenglas) |
| 08:06:12 | → | chris8142 joins (~chris8142@srvnet-01-071.ikbnet.co.at) |
| 08:12:38 | → | olligobber joins (~olligobbe@unaffiliated/olligobber) |
| 08:13:29 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 08:16:28 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 08:17:36 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
| 08:21:42 | → | mbomba joins (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) |
| 08:22:25 | × | jespada quits (~jespada@90.254.245.49) (Ping timeout: 240 seconds) |
| 08:22:45 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 240 seconds) |
| 08:22:45 | × | quarters quits (~quarters@unaffiliated/quarters) (Ping timeout: 240 seconds) |
| 08:22:53 | <ski> | doct0rhu : how did you make `X' a monad ? |
| 08:23:35 | × | chris8142 quits (~chris8142@srvnet-01-071.ikbnet.co.at) (Quit: WeeChat 3.0) |
| 08:23:58 | <iqubic> | ski: The 'X' monad is from the window manager XMonad, it's used in the code for that, and you can also use it in your configuration too. |
| 08:24:05 | → | dnlkrgr joins (~dnlkrgr@HSI-KBW-46-223-1-192.hsi.kabel-badenwuerttemberg.de) |
| 08:24:38 | × | Lord_of_Life quits (~Lord@46.217.220.245) (Changing host) |
| 08:24:38 | → | Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 08:24:59 | → | christo joins (~chris@81.96.113.213) |
| 08:25:36 | → | jespada joins (~jespada@90.254.245.49) |
| 08:25:59 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) |
| 08:27:16 | × | Aleyna_ quits (~Aleyna@4e69b241.skybroadband.com) (Ping timeout: 240 seconds) |
| 08:29:29 | → | xsperry joins (~as@unaffiliated/xsperry) |
| 08:30:37 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) (Ping timeout: 260 seconds) |
| 08:33:55 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 08:35:11 | <ski> | then i highly doubt "But with `foo >> bar` only the last one is executed. I have to use `mappend foo bar` or `foo <> bar`" |
| 08:35:47 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 08:36:26 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 08:37:53 | → | Aleyna joins (~Aleyna@4e69b241.skybroadband.com) |
| 08:40:56 | × | Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 240 seconds) |
| 08:41:01 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 264 seconds) |
| 08:44:21 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:44:21 | → | Cthalupa joins (~cthulhu@47.186.47.75) |
| 08:46:56 | × | mozzarella quits (~sam@unaffiliated/sam113101) (Ping timeout: 240 seconds) |
| 08:49:25 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 08:51:40 | → | sgibber2018 joins (~arch-gibb@208.85.237.137) |
| 08:52:08 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 08:54:09 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 08:54:29 | <doct0rhu> | Try yourself |
| 08:55:40 | <doct0rhu> | `newtype X a = X (ReaderT XConf (StateT XState IO) a)` |
| 08:57:02 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 265 seconds) |
| 08:57:33 | <ski> | that does not make `X' an instance of `Monad' |
| 08:57:52 | <ski> | are you omitting some `deriving (...Monad..)' declaration or some `instance Monad X where ...' declaration ? |
| 08:58:27 | × | taurux quits (~taurux@net-188-152-78-21.cust.vodafonedsl.it) (Quit: ZNC 1.7.5 - https://znc.in) |
| 08:59:35 | × | hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-qeakgiprhskzevyk) (Quit: Connection closed for inactivity) |
| 08:59:45 | <ski> | % data XConf = FakeXConf |
| 08:59:45 | <yahb> | ski: |
| 08:59:48 | × | mbomba quits (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0) |
| 08:59:52 | <ski> | % data XState = FakeXState |
| 08:59:53 | <yahb> | ski: |
| 09:00:06 | <ski> | % newtype X a = MkX (ReaderT XConf (StateT XState IO) a) |
| 09:00:07 | <yahb> | ski: |
| 09:00:24 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine) |
| 09:00:48 | → | Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 09:00:51 | → | brodie_ joins (~brodie@207.53.253.137) |
| 09:00:53 | <ski> | % :t let foo :: X a -> X b -> X b; foo x0 x1 = x0 >> x1 in foo |
| 09:00:54 | <yahb> | ski: ; <interactive>:1:43: error:; * No instance for (Monad X) arising from a use of `>>'; * In the expression: x0 >> x1; In an equation for `foo': foo x0 x1 = x0 >> x1; In the expression:; let; foo :: X a -> X b -> X b; foo x0 x1 = x0 >> x1; in foo |
| 09:00:58 | brodie_ | is now known as brodie |
| 09:01:09 | <ski> | doct0rhu : i just tried it for myself, did not work |
| 09:02:05 | <doct0rhu> | just hoogle |
| 09:02:07 | × | hth313 quits (~user@node-1w7jr9qio22jw89j5t7q3mryw.ipv6.telus.net) (Ping timeout: 260 seconds) |
| 09:02:23 | → | m0rphism joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
| 09:03:46 | → | dragestil joins (~quassel@fsf/member/dragestil) |
| 09:04:30 | <ski> | if you're talking about trying the `X' defined in `xmonad', at <https://hackage.haskell.org/package/xmonad-0.15/docs/src/XMonad.Core.html#X>, rather than the `newtype X a = MkX (ReaderT XConf (StateT XState IO) a)' you suggested above (not including any `deriving' or `instance' clause or declaration), then it does derive `Monad' using `GeneralizedNewtypeDeriving', and therefore `x0 >> x1' will combine the |
| 09:04:36 | <ski> | effects of both `x0' and `x1' |
| 09:07:00 | <ski> | so .. my guess then is that there's most probably some other issue involved. perhaps you could show the code in question ? |
| 09:07:42 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) |
| 09:08:22 | → | wonko7 joins (~wonko7@2a01:e35:2ffb:7040:14a1:46f4:68f7:2133) |
| 09:08:33 | <doct0rhu> | `newtype X a = X (ReaderT XConf (StateT XState IO) a)` is the definition of X |
| 09:08:35 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@mx-ll-171.5.29-209.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 09:08:58 | <ski> | the complete definition includes the next line, `deriving (Functor, Monad, MonadFail, MonadIO, MonadState XState, MonadReader XConf, Typeable)' |
| 09:09:07 | <doct0rhu> | yes so you know that |
| 09:09:12 | <doct0rhu> | what's the point of asking me |
| 09:09:16 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@171.5.29.209) |
| 09:09:31 | <ski> | i didn't know you were talking about the `X' of `XMonad', initially |
| 09:09:50 | <doct0rhu> | if you just hoogled it's clear |
| 09:10:06 | <doct0rhu> | the question is not XMonad specific |
| 09:10:14 | <doct0rhu> | the question is why >> doesn't work and <> works |
| 09:11:14 | <ski> | i don't know (a) what you tried; (b) what effect you expected; (c) what effect you observed instead |
| 09:11:32 | <doct0rhu> | I described |
| 09:12:16 | <ski> | (so i don't know what you mean by "doesn't work" and "work", apart from the rather general/vague "though the result of previous action is not retained, it would still be executed" (and similar statements)) |
| 09:12:31 | <ski> | it's hard to guess at what might be wrong, without more specific code to look at |
| 09:12:37 | <doct0rhu> | I described exactly |
| 09:12:37 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:8d71:c22e:142f:74d9) (Ping timeout: 260 seconds) |
| 09:13:00 | <doct0rhu> | > But I recently come across the case where I tried using >> to chain several `X ()` actions in XMonad. But it turned out only the last one is executed |
| 09:13:05 | <lambdabot> | <hint>:1:37: error: |
| 09:13:05 | <lambdabot> | <hint>:1:37: error: parse error on input ‘where’ |
| 09:13:06 | <ski> | which actions, exactly, did you pass to `>>' respectively to `<>' ? |
| 09:13:24 | <ski> | "I tried using >> to chain several `X ()` actions in XMonad" -- which actions, specifically ? |
| 09:13:28 | <doct0rhu> | does that really matter which action |
| 09:13:32 | <doct0rhu> | only the type matter |
| 09:13:56 | <doct0rhu> | if some x of X works but not the other |
| 09:14:03 | <doct0rhu> | that's a serious bug in type system |
| 09:14:09 | → | catchme joins (uid355354@gateway/web/irccloud.com/x-mmxzzojjfcqrnkrg) |
| 09:14:24 | × | drbean quits (~drbean@TC210-63-209-32.static.apol.com.tw) (Ping timeout: 260 seconds) |
| 09:15:06 | <doct0rhu> | If I want to ask about XMonad question I've already asked in that way |
| 09:15:07 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@171.5.29.209) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 09:15:15 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 09:15:16 | <doct0rhu> | the question is not XMonad specific |
| 09:16:38 | <ski> | the `XMonad'-non-specific answer is that both `x0' and `x1' are executed, when `x0 >> x1' are executed (assuming `x0' doesn't abort execution (e.g. via an exception), or that some other thread terminates the thread executing `x0 >> x1', or something like that) |
| 09:17:02 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 09:17:27 | <ski> | since that's not what you're observing, i don't know what else to do, than dig deeper into more details of what you tried, what you expected, and what you observed |
| 09:17:38 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 09:17:48 | <doct0rhu> | I don't think that's what I'm asking |
| 09:19:33 | <whataday> | (sort . <>) [1..5] [3..7] how to fix it? |
| 09:20:11 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 09:20:22 | <xerox_> | > ((sort .) . (<>)) [1..5] [3..7] |
| 09:20:23 | <boxscape> | @pl \xs ys -> sort (xs <> ys) |
| 09:20:24 | <lambdabot> | (sort .) . (<>) |
| 09:20:26 | <lambdabot> | [1,2,3,3,4,4,5,5,6,7] |
| 09:20:32 | <ski> | something is clearly mismatched between what you expected/wanted, and what you observed. i can only attempt to debug the issue in the same way i would do it, if it occured to me : by digging deeper into details and expectations |
| 09:21:46 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 246 seconds) |
| 09:21:57 | <doct0rhu> | I'm not trying to debug anything |
| 09:22:31 | <doct0rhu> | my question is purely about the theory not about the specific behaviour of a library |
| 09:23:20 | <ski> | you're not attempting to resolve your question regarding the difference you observed regarding `<>' and `>>' ? |
| 09:23:55 | <doct0rhu> | holy |
| 09:23:58 | <ski> | in the case of `X', the relevant type signatures are `(>>) :: X a -> X b -> X b' vs. `(<>) :: Monoid a => X a -> X a -> X a' |
| 09:23:58 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 09:24:20 | <whataday> | what is (sort .)? |
| 09:25:04 | <xerox_> | (f . g) = \x -> f (g x) so (sort .) is that with 'f' filled (sort .) = \g x -> sort (g x) |
| 09:25:09 | <hyiltiz> | I am programmatically creating hundreds of latex files from a template, and calling builder on them. Currently, it sequentially runs pdflatex, slowly building and then writing the PDFs on disk. Should I just create a hundred thread each of which tries to grab CPU cycles and build it, or just concurrently submit one per CPU worker so it essentially builds 4 at a time? Not sure which one would be more efficient/fast. |
| 09:25:32 | × | gac410 quits (~gac410@178.162.204.214) (Ping timeout: 256 seconds) |
| 09:25:40 | <ski> | both `x0 >> x1' and `x0 <> x1', when executed, will execute `x0' and `x1' (in the absence of any abortion of execution as mentioned above). `x0 >> x1' will ignore the result (but not the effect) of `x0', giving back the result of `x1'. `x0 <> x1' will combine the result of `x0' with that of `x1' (using `<>' on those individual results) |
| 09:26:03 | <hyiltiz> | tex -> pdf is a bit CPU intensive but writing PDF into disk is also IO intensive, so not sure what would be the best strategy to parallelize/make it concurrent |
| 09:26:31 | <hyiltiz> | all of the tex -> pdf computation is fully independent with no sharing |
| 09:26:44 | <ski> | doct0rhu : the theory answer is that `x0 >> x1' ought to execute both `x0' and `x1'. if that's not happening in your experience, then something is amiss between the theory, and the practical application of it |
| 09:27:51 | <doct0rhu> | `X a <> X b` == `X (a <> b)` |
| 09:28:14 | <ski> | yes |
| 09:30:10 | <doct0rhu> | `X a >> X b` ?= `X (a >> b)` |
| 09:31:15 | <ski> | almost. (yes, to what i think you meant to express) |
| 09:31:42 | <doct0rhu> | In the definition, `newtype X a = X (ReaderT XConf (StateT XState IO) a)`, `StateT XState IO` is a monad, `ReaderT XConf (StateT XState IO)` is also a monad |
| 09:32:49 | <ski> | X a >> X b = X (liftM2 (liftM2 (>>)) a b) |
| 09:32:54 | <doct0rhu> | `ReaderT`'s `(>>)` is same as `(*>)`, `u *> v = ReaderT $ \ r -> runReaderT u r *> runReaderT v r` |
| 09:34:31 | <doct0rhu> | `newtype ReaderT r m a = ReaderT { runReaderT :: r -> m a }` |
| 09:35:31 | <ski> | = X (ReaderT (\xConf -> StateT (\xState0 -> do xState1 <- execStateT (runReaderT a xConf) xState0; runStateT (runReaderT b xConf) xState1))) |
| 09:35:58 | <ski> | doct0rhu : yes |
| 09:36:03 | <whataday> | but <> apply on two lists, sort aply on one, (sort .) . (<>) is ok? |
| 09:37:07 | × | pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!) |
| 09:37:25 | <whataday> | does (sort .) expect an unary function and an parameter? |
| 09:37:49 | <ski> | @type (sort .) |
| 09:37:51 | <lambdabot> | Ord a1 => (a2 -> [a1]) -> a2 -> [a1] |
| 09:37:54 | × | brodie quits (~brodie@207.53.253.137) (Quit: brodie) |
| 09:38:08 | <ski> | @type \f -> (sort .) . f |
| 09:38:11 | <lambdabot> | Ord a1 => (a2 -> a3 -> [a1]) -> a2 -> a3 -> [a1] |
| 09:38:19 | <ski> | @type (sort .) . (<>) |
| 09:38:21 | <lambdabot> | Ord a => [a] -> [a] -> [a] |
| 09:38:27 | → | brodie joins (~brodie@207.53.253.137) |
| 09:38:35 | <ski> | @type (null .) . (<>) |
| 09:38:38 | <lambdabot> | (Foldable t, Semigroup (t a)) => t a -> t a -> Bool |
| 09:39:05 | <ski> | @type (map isSpace .) . (<>) |
| 09:39:09 | <lambdabot> | [Char] -> [Char] -> [Bool] |
| 09:39:45 | <ski> | `(sort .) . (<>)' will, curriedly, accept two lists, combine them using `(<>)', then `sort' the result |
| 09:39:53 | → | Hexxeh joins (~Hexxeh@2.58.47.203) |
| 09:40:30 | <ski> | `h = (f .) . g' is the same as `h x y = f (g x y)'. so `h = (sort .) . (<>)' is the same as `h xs ys = sort (xs <> ys)' |
| 09:41:51 | <ski> | (if you care about it, i could show how to systematically derive `h = (f .) . g'/`h = (sort .) . (<>)', from `h x y = f (g x y)'/`h xs ys = sort (xs <> ys)' ..) |
| 09:42:14 | → | superstar64 joins (6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net) |
| 09:43:38 | → | gentauro_ joins (~gentauro@185.107.12.141) |
| 09:44:36 | → | mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
| 09:46:25 | × | gentauro quits (~gentauro@unaffiliated/gentauro) (Ping timeout: 264 seconds) |
| 09:50:36 | × | SomeoneSerge quits (~someone-s@broadband-178-140-231-18.ip.moscow.rt.ru) (Ping timeout: 240 seconds) |
| 09:51:48 | × | rprije quits (~rprije@14-201-170-17.tpgi.com.au) (Remote host closed the connection) |
| 09:52:07 | → | rprije joins (~rprije@14-201-170-17.tpgi.com.au) |
| 09:53:45 | <superstar64> | what's causing my syntax error here? https://gist.github.com/Superstar64/1913d4f016d878d2893f0fbdd1313812 |
| 09:53:59 | <superstar64> | ghc's message isn't that helpful source/Main.hs:27:25: error: Unexpected do block in function application: |
| 09:54:49 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 09:57:56 | × | gentauro_ quits (~gentauro@185.107.12.141) (Ping timeout: 265 seconds) |
| 09:59:11 | <int-e> | superstar64: does the code that ghc prints match the code you pasted? a self-contained example would help, or at least the full error message |
| 09:59:32 | <int-e> | but 25 is in the middle of the 'do' |
| 09:59:52 | <superstar64> | ok i updated it with the error message |
| 09:59:53 | <int-e> | So something seems off. Maybe tabs? |
| 10:00:23 | <superstar64> | i'm not using tabs |
| 10:00:39 | <int-e> | oh I'm miscounting, my bad |
| 10:01:29 | <superstar64> | wait, nvm i fixed it |
| 10:01:42 | <superstar64> | i forgot to wrap the second type annotation in parens |
| 10:02:45 | <ski> | let (Right (κ,_)) = runCore (typeCheck σ :: Core Kind) (CoreState Map.empty Map.empty) |
| 10:02:53 | <boxscape> | looking forward to visible type application so we can replace inline type annotations with a function, like Idris has |
| 10:03:33 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 10:04:12 | <ski> | like `(:: T) (...)' or `id @T (...)' ? |
| 10:04:26 | <boxscape> | Idris has `the Int 5` |
| 10:04:52 | <boxscape> | (or at least it did when I last used it 5 years ago) |
| 10:05:16 | × | tdammers quits (~tdammers@unaffiliated/tdammers) (Ping timeout: 256 seconds) |
| 10:05:32 | <superstar64> | `Map.!: given key is not an element in the map` any way to debug this? |
| 10:05:36 | <boxscape> | you could do it with a visibility override like your id example already, of course |
| 10:05:44 | <boxscape> | it's just a bit nicer without the @ |
| 10:05:51 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 10:06:16 | × | dmiles quits (~dmiles@c-98-232-203-165.hsd1.wa.comcast.net) (Ping timeout: 240 seconds) |
| 10:06:55 | <int-e> | superstar64: as ski said, you need parentheses for the :: Core Kind |
| 10:07:03 | <int-e> | And the resulting error is awful. |
| 10:07:07 | × | brodie quits (~brodie@207.53.253.137) (Quit: brodie) |
| 10:07:09 | <superstar64> | i already mentioned i fixed it |
| 10:07:29 | <boxscape> | superstar64 surround any calls of Map.! with trace that prints the Map and the key you're trying to get? |
| 10:07:29 | → | dmiles joins (~dmiles@c-98-232-203-165.hsd1.wa.comcast.net) |
| 10:07:44 | <superstar64> | when will ghc support stacktraces? |
| 10:07:46 | → | brodie joins (~brodie@207.53.253.137) |
| 10:08:00 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Ping timeout: 258 seconds) |
| 10:08:17 | <boxscape> | um I think it does but I'm not very well versed in them |
| 10:08:58 | <boxscape> | you might have to compile with a specific flag or something to get them to show up |
| 10:12:08 | × | doct0rhu quits (~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net) (Ping timeout: 260 seconds) |
| 10:16:33 | → | fendor joins (~fendor@91.141.1.222.wireless.dyn.drei.com) |
| 10:17:22 | × | brodie quits (~brodie@207.53.253.137) (Quit: brodie) |
| 10:17:50 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 10:18:43 | → | gentauro joins (~gentauro@unaffiliated/gentauro) |
| 10:18:58 | → | brodie joins (~brodie@207.53.253.137) |
| 10:21:50 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:23:56 | → | drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net) |
| 10:27:25 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 10:28:25 | × | drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 264 seconds) |
| 10:28:43 | × | brodie quits (~brodie@207.53.253.137) (Quit: brodie) |
| 10:29:38 | × | jedws quits (~jedws@121.209.189.201) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 10:30:02 | <ski> | <https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#hascallstack>,<https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ghci.html#stack-traces-in-ghci>,<https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ghci.html#the-ghci-debugger>,<https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/debug-info.html#requesting-a-stack-trace-from-haskell-code> |
| 10:30:47 | → | kuribas joins (~user@ptr-25vy0iac96ewj3pswoy.18120a2.ip6.access.telenet.be) |
| 10:31:24 | × | Hexxeh quits (~Hexxeh@2.58.47.203) (Ping timeout: 260 seconds) |
| 10:31:40 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@171.5.29.209) |
| 10:31:40 | <kuribas> | Let's say If I have a type SomeApp which is an applicative, but which makes a Monad when I add a function |
| 10:32:00 | <kuribas> | pressed enter to soon... |
| 10:32:01 | → | tdammers joins (~tdammers@unaffiliated/tdammers) |
| 10:32:45 | <kuribas> | Let's say I have a type SomeApp which is an applicative, and makes a Monad when I add another function. So data SomeMonad = SomeMonad SomeApp SomeFun. |
| 10:32:52 | → | brodie joins (~brodie@207.53.253.137) |
| 10:33:23 | <kuribas> | Is there a way to make a monad instance without including SomeFun for every value of SomeMonad? |
| 10:33:37 | <kuribas> | SomeFun is always the same function |
| 10:33:54 | <ski> | does `SomeFun' depend on the result type ? |
| 10:34:28 | <kuribas> | it doesn't |
| 10:35:13 | <kuribas> | for example: data PartialData m a = PartialData (Query -> Query) (ResultSet -> a) |
| 10:35:19 | <ski> | could you just do `newtype SomeMonad a = MkSomeMonad (SomeApp a)', and reference your function of type `SomeFun' directly in the `instance Monad SomeMonad where ...' ? |
| 10:35:19 | <kuribas> | which formas an applicative |
| 10:36:03 | <ski> | (where did `m' go ?) |
| 10:36:18 | <kuribas> | ah right, I don't need m here |
| 10:36:38 | <kuribas> | and type QueryRunner m = Query -> m ResultSet |
| 10:36:44 | → | vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
| 10:37:19 | <kuribas> | ski: I could, but I want it to be generic |
| 10:37:21 | → | kish` joins (~oracle@unaffiliated/oracle) |
| 10:38:29 | <ski> | runPartialData :: Monad m => QueryRunner m -> PartialData a -> Query -> m a -- ? |
| 10:38:42 | <ski> | generic, in which sense ? |
| 10:39:05 | × | Unhammer quits (~Unhammer@gateway/tor-sasl/unhammer) (Remote host closed the connection) |
| 10:39:42 | <kuribas> | for example making Query and ResultSet a type variable |
| 10:39:43 | → | Unhammer joins (~Unhammer@gateway/tor-sasl/unhammer) |
| 10:41:28 | <kuribas> | (the context is that I am trying to make a dataloader for graphql) |
| 10:41:35 | <ski> | i don't see why you feel like you have to "including SomeFun for every value of SomeMonad" in the first place |
| 10:42:08 | → | hiroaki joins (~hiroaki@2a02:908:4b1b:20a0::77a4) |
| 10:43:01 | → | zar joins (~zar@fw1.ciirc.cvut.cz) |
| 10:44:02 | <kuribas> | how can I define the monad instance otherwise? |
| 10:44:59 | <ski> | if you have a global `mySpecificSomeFun :: Query -> Query', then just refer to it in the `instance Monad PartialData where ...' declaration, if that's what you want ? |
| 10:45:29 | <ski> | (assuming the monad laws will be upheld still) |
| 10:45:47 | <kuribas> | ski: ah no, it's not global |
| 10:45:59 | <ski> | then where does it come from ? |
| 10:46:10 | <kuribas> | ski: it should be defined by the user |
| 10:46:23 | <ski> | so it's not always the same function ? |
| 10:46:35 | <kuribas> | no |
| 10:46:58 | <kuribas> | maybe Class QueryRunner query resultSet m | query -> resultSet |
| 10:47:15 | <ski> | then i misunderstood what you meant, when you said "SomeFun is always the same function". perhaps you meant, for the extent of a single invocation of `runPartialData' |
| 10:47:22 | → | tfk joins (~tfk@197.206.206.247) |
| 10:47:27 | → | SteveMcIntyre joins (~SteveMcIn@195.140.213.38) |
| 10:47:27 | <kuribas> | right, that's what I meant |
| 10:47:52 | <kuribas> | well, it should be the same function for the same query and resultSet type (see my class above) |
| 10:48:07 | <ski> | could you use `newtype PartialData a = MkPartialData ((Query -> Query) -> ResultSet -> a)' ? |
| 10:48:39 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
| 10:48:48 | <kuribas> | no, that's different |
| 10:49:31 | <kuribas> | the cps transform would be MkPartialData ((query -> query) -> (resultSet -> a) -> k) |
| 10:50:01 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 264 seconds) |
| 10:50:04 | <ski> | (the FD above would make sure the type `resultSet' is determined uniquely by the type `query'. not that the value of type `query -> query' is determined uniquely by the type `resultSet' (and the type `query', if you want to)) |
| 10:50:27 | <kuribas> | indeed |
| 10:50:44 | <kuribas> | the resultSet is determined by the query type |
| 10:50:59 | <kuribas> | (query -> query) is different for each value. |
| 10:51:26 | <ski> | perhaps you want `class QueryFun query where queryFun :: query -> query' and `class QueryFun query => QueryRunner query resultSet m | ... where ...', or something like that |
| 10:51:28 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 272 seconds) |
| 10:51:47 | <ski> | (i was not thinking of CPS) |
| 10:52:30 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 10:52:31 | <ski> | "(query -> query) is different for each value" -- each value of which type ? what value are we talking about ? |
| 10:52:58 | × | kish` quits (~oracle@unaffiliated/oracle) (Ping timeout: 260 seconds) |
| 10:53:19 | <ski> | (i was thinking of `ReaderT (Query -> Query) (..) (..)') |
| 10:55:22 | <kuribas> | hmm, this may actually work: https://gist.github.com/kuribas/dc0721c819925a85666c4a313224aabd |
| 10:56:48 | <ski> | how are you accumulating/summarizing `queryState' ? |
| 10:56:57 | <kuribas> | queryState? |
| 10:57:01 | <kuribas> | you mean query? |
| 10:57:16 | <kuribas> | that's just (.) |
| 10:57:23 | <ski> | i mean the field `queryState :: query -> query' of `PartialData query resultSet m a' |
| 10:57:25 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds) |
| 10:57:26 | <ski> | ok |
| 10:57:55 | × | tfk quits (~tfk@197.206.206.247) (Quit: tfk) |
| 10:57:56 | <ski> | could have been either `\f g -> f . g' or `\f g x -> f x <> g x' |
| 10:58:20 | <ski> | (latter requiring `Monoid query' ..) |
| 10:58:22 | → | w0rstpr0grammer_ joins (~w0rstp0gr@197.206.206.247) |
| 10:58:41 | <kuribas> | more like Endo query |
| 10:58:46 | <ski> | yep |
| 10:59:24 | <kuribas> | like this: https://gist.github.com/kuribas/dc0721c819925a85666c4a313224aabd |
| 10:59:37 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:00:00 | <kuribas> | ski: ah right, queryState is a bad name. Maybe queryTransformer |
| 11:00:13 | <kuribas> | or queryAdder |
| 11:01:32 | <kuribas> | ah, it looks so easy now... |
| 11:01:49 | <kuribas> | took me a good effort to make it like this... |
| 11:02:51 | <kuribas> | ski: the idea is to implement a graphql server (using https://hackage.haskell.org/package/graphql), but with a dataloader, which composes the query in parallel. |
| 11:03:05 | <kuribas> | rather than doing a single SQL query for each object |
| 11:04:06 | <ski> | mhm |
| 11:04:14 | <ski> | (that tells me very little) |
| 11:05:03 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 11:05:11 | <kuribas> | the library does a traversal over each field |
| 11:05:39 | <kuribas> | that's the "applicative action". |
| 11:05:44 | → | Wuzzy joins (~Wuzzy@p549c9bc8.dip0.t-ipconnect.de) |
| 11:05:46 | <kuribas> | but the subfields are monadic |
| 11:05:57 | × | polyrain quits (~polyrain@2001:8003:e501:6901:344b:e1da:e2ed:956) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 11:06:07 | → | waddlepon joins (~waddlepon@2603:3024:182f:9300:b4d3:bbe1:7f16:783a) |
| 11:06:10 | × | w0rstpr0grammer_ quits (~w0rstp0gr@197.206.206.247) (Quit: w0rstpr0grammer_) |
| 11:09:11 | × | brodie quits (~brodie@207.53.253.137) (Quit: brodie) |
| 11:09:38 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Ping timeout: 264 seconds) |
| 11:10:08 | → | neevor joins (~neevor@2601:646:4380:2460:c8b1:2b2d:8a79:bb8f) |
| 11:13:03 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 11:13:10 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 11:15:40 | → | nicren joins (~nicren@81-66-205-86.rev.numericable.fr) |
| 11:17:01 | <kuribas> | hmm, that may not work with this library... |
| 11:17:28 | <kuribas> | The monad will force a query for every field... |
| 11:18:41 | <kuribas> | or maybe I can change the extractor to work in parallel |
| 11:18:55 | × | jrm quits (~jrm@freebsd/developer/jrm) (Ping timeout: 258 seconds) |
| 11:19:38 | ← | superstar64 parts (6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net) () |
| 11:20:10 | → | christo joins (~chris@81.96.113.213) |
| 11:24:49 | × | christo quits (~chris@81.96.113.213) (Ping timeout: 264 seconds) |
| 11:24:58 | × | tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection) |
| 11:25:57 | → | tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64) |
| 11:30:25 | × | acidjnk_new quits (~acidjnk@p200300d0c719ff439996fb92bd8d62ee.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 11:30:30 | <kuribas> | hmm, so in the extractors which recurse on objects, I need to suspend each continuation, collected the results in paralell, then call the continuations... |
| 11:30:56 | <kuribas> | that looks stricky... |
| 11:31:24 | → | ph88 joins (~ph88@2a02:8109:9e00:7e5c:cb1:a2e:bc62:aff6) |
| 11:34:06 | × | nicren quits (~nicren@81-66-205-86.rev.numericable.fr) (Quit: Leaving) |
| 11:34:06 | × | MOSCOS quits (~MOSCOS@122.54.107.175) (Remote host closed the connection) |
| 11:34:32 | → | MOSCOS joins (~MOSCOS@122.54.107.175) |
| 11:39:02 | × | waddlepon quits (~waddlepon@2603:3024:182f:9300:b4d3:bbe1:7f16:783a) (Ping timeout: 264 seconds) |
| 11:41:56 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 11:42:08 | → | w0rstpr0grammer_ joins (~w0rstp0gr@197.206.206.247) |
| 11:42:48 | → | taurux joins (~taurux@net-188-152-78-21.cust.dsl.teletu.it) |
| 11:43:41 | × | wildlander quits (~wildlande@unaffiliated/wildlander) (Quit: Konversation terminated!) |
| 11:44:44 | × | vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov) |
| 11:44:59 | → | vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
| 11:45:09 | w0rstpr0grammer_ | is now known as w0rstpr0grammer |
| 11:46:31 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Ping timeout: 258 seconds) |
| 11:47:17 | → | jrm joins (~jrm@freebsd/developer/jrm) |
| 11:49:15 | × | vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit) |
| 11:49:31 | → | vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
| 11:50:24 | → | opposite1996 joins (8cd59a73@140.213.154.115) |
| 11:50:26 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@171.5.29.209) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 11:51:38 | × | olligobber quits (~olligobbe@unaffiliated/olligobber) (Ping timeout: 272 seconds) |
| 11:51:43 | <opposite1996> | hi |
| 11:52:53 | → | __monty__ joins (~toonn@unaffiliated/toonn) |
| 11:53:58 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@171.5.29.209) |
| 11:54:12 | × | ph88 quits (~ph88@2a02:8109:9e00:7e5c:cb1:a2e:bc62:aff6) (Quit: Leaving) |
| 11:54:33 | <opposite1996> | hi |
| 11:55:47 | → | plutoniix joins (~q@node-uhc.pool-125-24.dynamic.totinternet.net) |
| 11:56:48 | <juri_> | meep. |
| 11:57:14 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@171.5.29.209) (Client Quit) |
| 11:57:33 | → | chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
| 11:58:20 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 11:59:15 | × | chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit) |
| 12:02:18 | × | opposite1996 quits (8cd59a73@140.213.154.115) (Remote host closed the connection) |
| 12:02:34 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds) |
| 12:07:49 | → | conal joins (~conal@64.71.133.70) |
| 12:10:29 | ← | neevor parts (~neevor@2601:646:4380:2460:c8b1:2b2d:8a79:bb8f) ("Leaving") |
| 12:10:31 | × | w0rstpr0grammer quits (~w0rstp0gr@197.206.206.247) (Quit: w0rstpr0grammer) |
| 12:11:00 | → | w0rstpr0grammer joins (~w0rstp0gr@197.206.206.247) |
| 12:12:20 | → | conal_ joins (~conal@66.115.176.144) |
| 12:13:15 | → | fendor_ joins (~fendor@178.115.130.118.wireless.dyn.drei.com) |
| 12:13:29 | × | conal quits (~conal@64.71.133.70) (Ping timeout: 260 seconds) |
| 12:14:37 | <lambda> | is there any good reason why there isn't a generic list split function in base (like words, but for any type and delimiter)? is this really such a rare use case I keep running into for some reason? |
| 12:15:20 | <kuribas> | lambda: https://hackage.haskell.org/package/split-0.2.3.4 |
| 12:16:10 | × | fendor quits (~fendor@91.141.1.222.wireless.dyn.drei.com) (Ping timeout: 265 seconds) |
| 12:16:27 | <lambda> | kuribas: ah, bikeshedding, I see :) thanks |
| 12:19:34 | × | wwwww quits (~wwwww@unaffiliated/wwwww) (Ping timeout: 256 seconds) |
| 12:19:47 | × | w0rstpr0grammer quits (~w0rstp0gr@197.206.206.247) (Quit: w0rstpr0grammer) |
| 12:20:10 | → | w0rstpr0grammer joins (~w0rstp0gr@197.206.206.247) |
| 12:21:27 | → | wwwww joins (~wwwww@unaffiliated/wwwww) |
| 12:22:19 | → | Fractalis joins (~Fractalis@2601:987:280:8d40:1493:3822:f5a1:3ca7) |
| 12:22:26 | × | Fractalis quits (~Fractalis@2601:987:280:8d40:1493:3822:f5a1:3ca7) (Remote host closed the connection) |
| 12:23:42 | → | drbean joins (~drbean@TC210-63-209-149.static.apol.com.tw) |
| 12:28:13 | × | rprije quits (~rprije@14-201-170-17.tpgi.com.au) (Remote host closed the connection) |
| 12:28:36 | → | rprije joins (~rprije@14-201-170-17.tpgi.com.au) |
| 12:29:04 | → | chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
| 12:29:44 | × | vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov) |
| 12:29:45 | × | Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 240 seconds) |
| 12:29:45 | → | christo joins (~chris@81.96.113.213) |
| 12:30:03 | → | vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
| 12:30:46 | × | chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit) |
| 12:31:02 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:bbcd:2474:9519:9fb5:8678) |
| 12:32:56 | × | vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit) |
| 12:32:57 | → | HeavyRain joins (~heavyrain@194.127.172.77) |
| 12:33:20 | → | Cthalupa joins (~cthulhu@47.186.47.75) |
| 12:34:17 | × | w0rstpr0grammer quits (~w0rstp0gr@197.206.206.247) (Quit: w0rstpr0grammer) |
| 12:35:02 | × | jespada quits (~jespada@90.254.245.49) (Ping timeout: 256 seconds) |
| 12:37:06 | → | jespada joins (~jespada@90.254.245.49) |
| 12:37:44 | → | Deide joins (~Deide@217.155.19.23) |
| 12:37:55 | → | Tops2 joins (~Tobias@dyndsl-095-033-094-096.ewe-ip-backbone.de) |
| 12:42:21 | → | mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
| 12:43:27 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 12:44:56 | <merijn> | lambda: I mean, we don't have arrays or maps in base either :p |
| 12:45:18 | <merijn> | (And some would argue base is still much too big) |
| 12:47:52 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Ping timeout: 260 seconds) |
| 12:51:57 | <kuribas> | It's small compared to other languages. |
| 12:51:59 | × | HeavyRain quits (~heavyrain@194.127.172.77) (Quit: leaving) |
| 12:52:08 | <kuribas> | Big compared to common lisp though |
| 12:53:24 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 12:53:32 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 12:54:45 | × | xff0x quits (~fox@2001:1a81:5293:a900:fbf2:9a22:7e7:d551) (Ping timeout: 258 seconds) |
| 12:54:53 | → | Tops21 joins (~Tobias@dyndsl-095-033-094-096.ewe-ip-backbone.de) |
| 12:55:22 | → | xff0x joins (~fox@2001:1a81:5293:a900:a065:b2ef:56bb:c171) |
| 12:56:26 | → | Ariakenom joins (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) |
| 12:57:30 | → | opposite1996 joins (8cd59a73@140.213.154.115) |
| 12:57:45 | × | Tops2 quits (~Tobias@dyndsl-095-033-094-096.ewe-ip-backbone.de) (Ping timeout: 240 seconds) |
| 12:58:03 | <carbolymer> | any ideas why my popQueue loops infinitely? https://bpa.st/HNOA |
| 12:58:53 | <carbolymer> | F.alter should in the end return Nothing - and remove queue from map |
| 12:59:01 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds) |
| 12:59:23 | <carbolymer> | I mean - it's not popQueue that loops, but drainQ |
| 13:00:18 | <dminuoso> | carbolymer: Insert debugging statements? |
| 13:00:31 | <dminuoso> | unsafeIOtoSTM is useful here |
| 13:00:59 | <dminuoso> | (Just be aware that STM transactions can be restarted multiple times for various reasons when judging the output) |
| 13:01:06 | → | stackdimes joins (~stackdime@45.132.115.107) |
| 13:01:08 | × | stackdimes quits (~stackdime@45.132.115.107) (Client Quit) |
| 13:01:10 | <carbolymer> | hmm |
| 13:01:36 | <dminuoso> | Or rather, read all the notes relating to unsafeIOtoSTM |
| 13:01:55 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 13:06:34 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 13:06:41 | fendor_ | is now known as fendor |
| 13:07:06 | <dminuoso> | carbolymer: Also, is it a proper evaluation loop, or does the transaction appear to be stuck? |
| 13:07:41 | <carbolymer> | it just prints "foo" again and again |
| 13:07:47 | <carbolymer> | so it seems that tx isn't stuck |
| 13:12:42 | → | knupfer joins (~Thunderbi@200116b82c21a800a86d6bfffe485153.dip.versatel-1u1.de) |
| 13:15:06 | × | knupfer quits (~Thunderbi@200116b82c21a800a86d6bfffe485153.dip.versatel-1u1.de) (Remote host closed the connection) |
| 13:15:14 | → | knupfer joins (~Thunderbi@200116b82c21a800d1fd2af288fd3bd8.dip.versatel-1u1.de) |
| 13:15:47 | → | Neuromancer joins (~Neuromanc@unaffiliated/neuromancer) |
| 13:16:47 | × | ibloom quits (sid350277@gateway/web/irccloud.com/x-ftwuwcmqpnbfrqgs) (Ping timeout: 260 seconds) |
| 13:17:05 | → | ibloom joins (sid350277@gateway/web/irccloud.com/x-qvdyimokdwsnoffs) |
| 13:17:34 | → | Randy_ joins (randy@freebsd/user/randy) |
| 13:17:40 | → | BeatZ joins (~BeatZ@uk-lon.vpn.courvix.com) |
| 13:17:57 | × | tabaqui quits (~tabaqui@2604:a880:800:c1::21b:3001) (Ping timeout: 260 seconds) |
| 13:18:15 | → | chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
| 13:18:31 | × | otulp quits (~otulp@ti0187q162-6038.bb.online.no) (Ping timeout: 256 seconds) |
| 13:18:32 | × | BenSima[m] quits (bensimatim@gateway/shell/matrix.org/x-gsvyurbvvhccmgvr) (Ping timeout: 260 seconds) |
| 13:18:34 | × | Randy quits (randy@freebsd/user/randy) (Ping timeout: 260 seconds) |
| 13:18:35 | × | Feuermagier quits (~Feuermagi@213.178.26.41) (Remote host closed the connection) |
| 13:18:40 | Randy_ | is now known as Randy |
| 13:19:24 | × | BeatZ quits (~BeatZ@uk-lon.vpn.courvix.com) (Remote host closed the connection) |
| 13:19:24 | × | chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit) |
| 13:19:40 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
| 13:19:54 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 13:20:17 | → | BenSima[m] joins (bensimatim@gateway/shell/matrix.org/x-gdhisogubvluiqlm) |
| 13:20:30 | → | tabaqui joins (~tabaqui@2604:a880:800:c1::21b:3001) |
| 13:21:31 | <carbolymer> | when function passed to alter returns Nothing, the element should be removed from the collection, right? https://hackage.haskell.org/package/focus-1.0.1.4/docs/Focus.html#v:alter |
| 13:21:52 | <carbolymer> | I don't know if I don't understand the docs, or stm-containers immplementation of Focus is faulty |
| 13:22:21 | <dminuoso> | assuming the implementation is correct, yes |
| 13:22:51 | <dminuoso> | Using pseudo syntax, `Nothing -> Just ...` is an insertion, `Just ... -> Nothing` is a deletion and `Just ... -> Just ...` is an update |
| 13:23:32 | <carbolymer> | well damn, `F.update (NES.nonEmptySeq . NES.tail)` doesn't remove the element if `NES.nonEmptySeq . NES.tail)` returns Nothing |
| 13:23:38 | → | christo joins (~chris@81.96.113.213) |
| 13:23:47 | <carbolymer> | neither alter do |
| 13:28:55 | → | chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
| 13:29:19 | → | halbGefressen joins (~halbGefre@2a02:810d:f40:2a9c:40b2:2308:84bd:8b9b) |
| 13:29:52 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 13:31:18 | → | philopso1 joins (~caecilius@gateway/tor-sasl/caecilius) |
| 13:31:32 | → | ggole joins (~ggole@2001:8003:8119:7200:e9c3:d38f:e40d:d76e) |
| 13:31:56 | <halbGefressen> | Hi, I am trying to create an AUR package for a Haskell program (https://github.com/lukasstevens/cyp). When installing my program, it complains about the missing library that is required to run the program, which is also built in the repository by running stack build. |
| 13:31:59 | → | toorevitimirp joins (~tooreviti@117.182.180.221) |
| 13:32:12 | <halbGefressen> | or rather it complains when trying to run it |
| 13:32:23 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
| 13:32:29 | → | drbean_ joins (~drbean@TC210-63-209-188.static.apol.com.tw) |
| 13:32:38 | <halbGefressen> | Because I need ibHScyp-0.2.0.0-263wPg8EQSF297H60K9S4t-ghc8.8.4.so which gets built in the build section |
| 13:33:04 | × | drbean quits (~drbean@TC210-63-209-149.static.apol.com.tw) (Ping timeout: 246 seconds) |
| 13:33:13 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 13:34:50 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Ping timeout: 264 seconds) |
| 13:35:47 | <maerwald> | halbGefressen: don't try |
| 13:36:02 | <halbGefressen> | How do I build into a single binary then? |
| 13:36:43 | <maerwald> | yes, you can do fully static linking with musl |
| 13:36:47 | <maerwald> | e.g. on alpine |
| 13:39:03 | <halbGefressen> | I just want to package that program so that somebody can run it. What is the best method to achieve that? |
| 13:39:20 | <maerwald> | ask upstream to do releases with static binaries |
| 13:41:01 | × | opposite1996 quits (8cd59a73@140.213.154.115) (Quit: opposite1996) |
| 13:41:42 | <maerwald> | then can use github workflows for that |
| 13:42:10 | <maerwald> | here's an example https://github.com/hasufell/stack2cabal/blob/e6fae40d913ed67363671fb7238e74afedd78ffc/.github/workflows/release.yaml |
| 13:42:31 | <halbGefressen> | Do I even need a static binary? My package depends on glibc already, just this one library doesn't get copied |
| 13:42:51 | × | chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 13:48:29 | → | andrew_znc joins (~andrew@unaffiliated/andrew-znc) |
| 13:48:38 | → | chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
| 13:50:22 | × | chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Client Quit) |
| 13:52:25 | × | drbean_ quits (~drbean@TC210-63-209-188.static.apol.com.tw) (Ping timeout: 264 seconds) |
| 13:54:13 | × | toorevitimirp quits (~tooreviti@117.182.180.221) (Remote host closed the connection) |
| 13:56:20 | → | toorevitimirp joins (~tooreviti@117.182.180.221) |
| 13:59:43 | → | SomeoneSerge joins (~someone-s@37.120.212.76) |
| 14:00:38 | × | halbGefressen quits (~halbGefre@2a02:810d:f40:2a9c:40b2:2308:84bd:8b9b) (Quit: halbGefressen) |
| 14:01:06 | × | gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 14:01:27 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 14:04:09 | <carbolymer> | damn, delete in stm-containers (or rather focus) is broken :/ |
| 14:06:07 | × | gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 14:06:28 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 14:06:38 | → | acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
| 14:07:08 | × | gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 14:07:29 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 14:08:26 | × | philopso1 quits (~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection) |
| 14:08:39 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 14:09:08 | × | gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 14:09:29 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 14:09:46 | × | toorevitimirp quits (~tooreviti@117.182.180.221) (Remote host closed the connection) |
| 14:11:08 | × | gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 14:11:29 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 14:13:08 | × | gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 14:13:27 | × | SanchayanMaity quits (~Sanchayan@223.226.34.150) (Quit: SanchayanMaity) |
| 14:13:30 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 14:14:12 | → | opposite1996 joins (8cd59a73@140.213.154.115) |
| 14:15:09 | × | gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 14:15:33 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 14:19:40 | → | chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
| 14:22:07 | × | sgibber2018 quits (~arch-gibb@208.85.237.137) (Quit: WeeChat 2.9) |
| 14:24:36 | × | boxscape quits (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Ping timeout: 240 seconds) |
| 14:29:37 | × | gentauro quits (~gentauro@unaffiliated/gentauro) (Ping timeout: 264 seconds) |
| 14:31:25 | → | rayyyy joins (~nanoz@gateway/tor-sasl/nanoz) |
| 14:31:29 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 14:32:11 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 14:33:28 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 14:36:20 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 258 seconds) |
| 14:36:22 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Ping timeout: 260 seconds) |
| 14:37:45 | × | gzj quits (~gzj@unaffiliated/gzj) (Ping timeout: 240 seconds) |
| 14:39:53 | → | gentauro joins (~gentauro@unaffiliated/gentauro) |
| 14:41:01 | × | argento quits (~argent0@168.227.97.29) (Quit: leaving) |
| 14:41:30 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 14:41:45 | × | opposite1996 quits (8cd59a73@140.213.154.115) (Quit: opposite1996) |
| 14:42:02 | ← | isd parts (zenhackmat@gateway/shell/matrix.org/x-hljwevtqkvvirxdh) ("User left") |
| 14:42:47 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:bbcd:2474:9519:9fb5:8678) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 14:46:16 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds) |
| 14:47:01 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 14:53:09 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Quit: mputz) |
| 14:54:02 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 14:54:57 | → | geekosaur joins (ae68c070@cpe-174-104-192-112.neo.res.rr.com) |
| 14:54:58 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 14:57:27 | → | bitmagie joins (~Thunderbi@200116b806b03000d4de5885499e1489.dip.versatel-1u1.de) |
| 14:58:16 | × | arahael quits (~arahael@124-168-0-93.tpgi.com.au) (Ping timeout: 240 seconds) |
| 14:59:06 | → | Kronic joins (~Kronic___@84.203.98.133) |
| 14:59:36 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 240 seconds) |
| 15:03:47 | → | son0p joins (~son0p@181.136.122.143) |
| 15:05:36 | × | SomeoneSerge quits (~someone-s@37.120.212.76) (Ping timeout: 256 seconds) |
| 15:07:25 | → | arahael joins (~arahael@220-245-222-231.tpgi.com.au) |
| 15:07:43 | → | SomeoneSerge joins (~someone-s@143.244.42.97) |
| 15:10:27 | × | kuribas quits (~user@ptr-25vy0iac96ewj3pswoy.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
| 15:14:28 | × | knupfer quits (~Thunderbi@200116b82c21a800d1fd2af288fd3bd8.dip.versatel-1u1.de) (Remote host closed the connection) |
| 15:14:35 | → | knupfer joins (~Thunderbi@200116b82c21a8005c6c9e172e74e2cf.dip.versatel-1u1.de) |
| 15:15:13 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 15:17:25 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 15:18:24 | → | HorseGirl joins (~UserNick@217.138.194.74) |
| 15:18:53 | <HorseGirl> | hello |
| 15:20:24 | × | bitmagie quits (~Thunderbi@200116b806b03000d4de5885499e1489.dip.versatel-1u1.de) (Quit: bitmagie) |
| 15:20:36 | <wz1000> | Where do I find a function to randomly choose (without replacement) n elements from a list? |
| 15:21:22 | → | kenran joins (~kenran@mue-88-130-62-085.dsl.tropolys.de) |
| 15:23:20 | × | MarcelineVQ quits (~anja@198.254.202.72) (Ping timeout: 256 seconds) |
| 15:24:52 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds) |
| 15:25:03 | → | MarcelineVQ joins (~anja@198.254.202.72) |
| 15:27:19 | × | jamm quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 15:27:27 | <adamCS> | wz100: How about shuffling the list and taking the first n? http://hackage.haskell.org/package/random-shuffle-0.0.4/docs/System-Random-Shuffle.html |
| 15:27:35 | → | tenniscp25 joins (~tenniscp2@134.196.209.118) |
| 15:27:36 | <adamCS> | wz1000: ^ |
| 15:28:10 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 15:28:52 | <merijn> | Also, the magical words "Partial Fisher-Yates shuffle"! ;) |
| 15:29:50 | <ski> | HorseGirl : hello |
| 15:31:33 | → | fuzzypixelz joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
| 15:32:03 | → | boxscape joins (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) |
| 15:32:42 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds) |
| 15:33:18 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 15:34:02 | → | jlamothe joins (~jlamothe@198.251.55.207) |
| 15:36:13 | × | errst quits (~errst@unaffiliated/tirej) (Ping timeout: 264 seconds) |
| 15:38:20 | × | ixian quits (~mgold@2002:4a74:ba78:1701:0:ff:fe78:6269) (Quit: leaving) |
| 15:38:20 | × | jlamothe quits (~jlamothe@198.251.55.207) (Client Quit) |
| 15:39:07 | × | tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Remote host closed the connection) |
| 15:39:34 | → | tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64) |
| 15:41:12 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Remote host closed the connection) |
| 15:41:41 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 15:45:49 | × | boxscape quits (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Ping timeout: 264 seconds) |
| 15:46:29 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Ping timeout: 258 seconds) |
| 15:46:36 | → | Tario joins (~Tario@201.192.165.173) |
| 15:49:05 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 15:49:10 | → | ixian joins (~mgold@2002:4a74:ba78:1701:0:ff:fe78:6269) |
| 15:53:38 | → | bitmagie joins (~Thunderbi@200116b806b03000d4de5885499e1489.dip.versatel-1u1.de) |
| 15:53:48 | → | w0rstp0grammer joins (~w0rstp0gr@197.206.206.247) |
| 15:55:00 | × | w0rstp0grammer quits (~w0rstp0gr@197.206.206.247) (Remote host closed the connection) |
| 15:55:27 | × | ixian quits (~mgold@2002:4a74:ba78:1701:0:ff:fe78:6269) (Ping timeout: 260 seconds) |
| 15:56:06 | → | jlamothe joins (~jlamothe@198.251.55.207) |
| 15:56:07 | → | machinedgod joins (~machinedg@24.105.81.50) |
| 15:56:20 | → | ixian joins (~mgold@2002:4a74:ba78:1701:0:ff:fe78:6269) |
| 16:04:33 | → | DavidEichmann joins (~david@62.110.198.146.dyn.plus.net) |
| 16:04:52 | × | bitmagie quits (~Thunderbi@200116b806b03000d4de5885499e1489.dip.versatel-1u1.de) (Quit: bitmagie) |
| 16:05:12 | → | solonarv joins (~solonarv@astrasbourg-157-1-27-135.w90-40.abo.wanadoo.fr) |
| 16:05:34 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 16:10:02 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Ping timeout: 260 seconds) |
| 16:11:45 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 16:12:38 | × | hiroaki quits (~hiroaki@2a02:908:4b1b:20a0::77a4) (Ping timeout: 264 seconds) |
| 16:20:19 | ← | hf69 parts (~haskeller@ip72-205-40-121.dc.dc.cox.net) ("WeeChat 3.0") |
| 16:20:41 | → | otulp joins (~otulp@ti0187q162-6038.bb.online.no) |
| 16:20:55 | → | hf69 joins (~haskeller@ip72-205-40-121.dc.dc.cox.net) |
| 16:21:16 | → | solarion joins (~solarion@fsf/member/solarion) |
| 16:22:05 | × | jespada quits (~jespada@90.254.245.49) (Ping timeout: 240 seconds) |
| 16:23:48 | → | jespada joins (~jespada@90.254.245.49) |
| 16:25:41 | → | hekkaidekapus[ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 16:26:30 | × | chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 16:26:33 | <gentauro> | why does phadej write on /r/haskell that Safe-Haskell should be removed from GHC? |
| 16:26:36 | <gentauro> | :( |
| 16:27:03 | × | hekkaidekapus} quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
| 16:27:47 | × | wonko7 quits (~wonko7@2a01:e35:2ffb:7040:14a1:46f4:68f7:2133) (Ping timeout: 260 seconds) |
| 16:28:41 | <hpc> | he likes to live dangerously - https://www.smbc-comics.com/comic/dangerous |
| 16:30:15 | <gentauro> | hpc: but it's not gonna happen right? It's just his preferences? |
| 16:30:35 | <gentauro> | Isn't it like the linear types, if you don't want to use them, you don't? |
| 16:31:05 | <merijn> | gentauro: There's almost no reasonable use for it, though |
| 16:31:11 | <merijn> | gentauro: like, what would you use it for? |
| 16:31:12 | <int-e> | if you have a library you might have people like me approach you with patches that mark modules Trustworthy |
| 16:31:16 | <int-e> | so there is a cost |
| 16:31:47 | <merijn> | gentauro: Have you ever actually used SafeHaskell? If so, for what? |
| 16:31:54 | <int-e> | (in my case because lambdabot relies on SafeHaskell) |
| 16:33:15 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 258 seconds) |
| 16:33:44 | <int-e> | If this is part of a larger effort to cut down unpopular extensions from ghc I'd not even be opposed... but slashing only SafeHaskell seems unfair. |
| 16:34:00 | → | bitmagie joins (~Thunderbi@200116b806b03000d4de5885499e1489.dip.versatel-1u1.de) |
| 16:34:46 | <gentauro> | merijn: yeah pretty much -> uniprocess.org (noticed GitLab hasn't actualized my cert …) |
| 16:34:48 | × | son0p quits (~son0p@181.136.122.143) (Quit: leaving) |
| 16:34:53 | <merijn> | int-e: I think phadej was just underlining how useless it basically is |
| 16:35:39 | <merijn> | gentauro: Oh, if you rely on SafeHaskell for safety in the presence of untrusted code, you're already doomed |
| 16:35:43 | <gentauro> | merijn: I use it for `sanity` and to exclude `stuff` GHC don't really trust |
| 16:35:54 | <gentauro> | merijn: how come? |
| 16:36:14 | <gentauro> | safe haskell tells me that Data.Text isn't "good" and therefore can't be trusted. I like that |
| 16:36:16 | <merijn> | gentauro: It's fairly trivial to bypass and escape |
| 16:36:28 | <gentauro> | merijn: could you elaborate? |
| 16:36:44 | <int-e> | gentauro: so how do you decide what to trust? |
| 16:36:45 | <merijn> | gentauro: "enabling -XGeneralizedNewtypeDeriving" is sufficient to implement unsafeCoerce and therefore completely bypass SafeHaskell |
| 16:37:04 | <int-e> | also you're bound to have to trust base and that's a can of worms right there |
| 16:37:24 | <gentauro> | int-e: I noticed that |
| 16:37:40 | <int-e> | merijn: is it? I thought it was supposed to use `coerce` now and thereby by type-safe. |
| 16:37:42 | <merijn> | gentauro: Basically, there's almost no work in defining how SafeHaskell should interact with any of the extensions introduced after it (or even before it) |
| 16:37:49 | <gentauro> | merijn: so you are telling me that `-XXGeneralizedNewtypeDeriving` should be removed instead? xD |
| 16:38:01 | <merijn> | int-e: It's not about the code generated by GeneralizedNewtypeDeriving |
| 16:38:15 | <merijn> | gentauro: I'm not saying that |
| 16:38:20 | <int-e> | merijn: but? |
| 16:38:23 | <gentauro> | I am :) |
| 16:38:52 | <merijn> | int-e: Lemme lookup the blogpost |
| 16:39:09 | <int-e> | merijn: I mean I know of an old technique that does exactly what you said, and I was under the impression that when `coerce` was implemented that particular hole got plugged. |
| 16:39:18 | × | rprije quits (~rprije@14-201-170-17.tpgi.com.au) (Remote host closed the connection) |
| 16:39:39 | → | rprije joins (~rprije@14-201-170-17.tpgi.com.au) |
| 16:39:51 | <int-e> | and that, in fact, this was a key motivation for tackling safe coercions. |
| 16:40:06 | <gentauro> | but merijn it's possible to remove PRAGMAS with GHC flags right? So it wouldn't really be a problem on SafeHaskell project |
| 16:40:35 | <merijn> | gentauro: Sure, it just means "not allowing people to use a number of widely used extensions", so that rules out tons of code you might wanna use |
| 16:40:36 | → | zaquest joins (~notzaques@5.128.210.178) |
| 16:40:40 | <merijn> | int-e: hmm, maybe |
| 16:40:41 | × | zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection) |
| 16:41:07 | <merijn> | int-e: It's pretty likely a number of other extensions bypass SafeHaskell anyway, so my point stands even without GND ;) |
| 16:41:17 | <gentauro> | 17:40 < merijn> gentauro: Sure, it just means "not allowing people to use a number of widely used extensions" |
| 16:41:20 | <gentauro> | yes please :) |
| 16:41:29 | <gentauro> | I'm scared of the one that turns on 200 extensions :o |
| 16:41:42 | <gentauro> | those codebases will not be maintanable |
| 16:41:44 | <gentauro> | :( |
| 16:42:31 | <int-e> | merijn: let me know if you find something concrete |
| 16:42:39 | <int-e> | :) |
| 16:42:58 | <int-e> | I do share the uneasy feeling. |
| 16:43:11 | <gentauro> | merijn: yeah, I would like to read that blogpoast as well :) |
| 16:43:15 | <merijn> | int-e: TypeFamilies and GADTs are known unsafe, afaik |
| 16:43:23 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 16:44:05 | <merijn> | gentauro: Of course, even without bypassing SafeHaskell running untrusted Haskell is still unsafe. DOS attacks are fairly trivial |
| 16:44:16 | <int-e> | merijn: well not according to ghc itself |
| 16:45:02 | <int-e> | (There's no complaint with {-# LANGUAGE Safe, GADTs, TypeFamilies #-}) |
| 16:45:51 | <gentauro> | merijn: I use this for many of my `cli` projects -> https://hackage.haskell.org/package/echo-0.1.3/docs/System-IO-Echo.html I like that something that I type in my passwords with, is actually Safe !!! |
| 16:46:09 | <merijn> | gentauro: What do you think "Safe" means? |
| 16:46:33 | <merijn> | Because I fail to see how "typing passwords" is relevant for that |
| 16:46:36 | <gentauro> | I have read the paper from the 2xDavids and 2xSimons |
| 16:46:51 | <int-e> | "Safe" means you can't subvert the type system. Basically, the promise is that you can't implement unsafeCoerce unless you trust a broken library that allows it. |
| 16:46:54 | <gentauro> | merijn: it means that nothing `suspect` happens `under the hood` |
| 16:46:56 | × | srk quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection) |
| 16:46:56 | × | hexo quits (~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection) |
| 16:47:10 | <int-e> | (That's my understanding.) |
| 16:47:10 | → | hexo joins (~hexo@gateway/tor-sasl/hexo) |
| 16:47:12 | <merijn> | gentauro: It does not |
| 16:47:14 | → | srk joins (~sorki@gateway/tor-sasl/sorki) |
| 16:47:15 | <gentauro> | int-e: explained it way better |
| 16:47:21 | <merijn> | Right |
| 16:47:40 | <merijn> | But you can still forward someone's password to a webserver without violating the type system... |
| 16:47:57 | <int-e> | So GND (before `coerce`) is decidably unsafe. |
| 16:48:12 | <merijn> | A package like echo could literally send everything you type to a webserver and still be SafeHaskell |
| 16:48:32 | <merijn> | So I'm not sure what peace of mind you get from "Safe" |
| 16:48:33 | <int-e> | So is Typeable if anybody every puts the required effort into a hash collision (it's MD5 but the data isn't binary so the cheap attacks don't seem to apply) |
| 16:48:40 | → | chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
| 16:48:59 | <gentauro> | 17:47 < merijn> But you can still forward someone's password to a webserver without violating the type system... |
| 16:49:15 | <gentauro> | yes, if you allow global IO, but I tend to restrict my IO (granualary) |
| 16:49:18 | <int-e> | It's a very modest notion of safety. |
| 16:49:27 | × | jamm quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 16:49:31 | <gentauro> | so as long as GHC type-system is trustable, I think I got that solved |
| 16:49:36 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) |
| 16:50:25 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 16:50:32 | → | christo joins (~chris@81.96.113.213) |
| 16:50:37 | <gentauro> | solved = covered |
| 16:50:39 | <merijn> | gentauro: But echo is in IO, so it being Safe does nothing |
| 16:51:00 | <int-e> | merijn: The thing about GADTs and TypeFamilies is that any unsafety in the SafeHaskell sense would really mean that the underlying type system is unsound. And that's something SPJ and goldfire and co really care about quite strongly. |
| 16:52:32 | <int-e> | merijn: if you allow IO you're screwed |
| 16:52:41 | <gentauro> | merijn: you can even use Foreign ptr and stuff like that and make the module Safe to Haskell -> http://blog.stermon.com/articles/2019/02/04/haskell-usage-of-malloc-free-is-safe.html |
| 16:52:49 | <gentauro> | but you MUST expose that you are doing IO |
| 16:53:09 | <gentauro> | so you know `stuff` happens under the hood |
| 16:53:13 | <int-e> | merijn: "screwed" if your notion of safety requires no arbitrary effects |
| 16:53:40 | <merijn> | int-e: Sure, but if your notion of safety doesn't require that, then Safe Haskell is redundant :p |
| 16:53:41 | <gentauro> | but if you try to hide `IO` away with `unsafePerformIO`, you will get an error |
| 16:53:57 | <merijn> | int-e: Hence, my original quesiton |
| 16:54:01 | <merijn> | Safe *from what* |
| 16:54:05 | <int-e> | merijn: so you have to do something that never runs untrusted IO values |
| 16:54:08 | <merijn> | And why does it warrant worrying |
| 16:54:28 | <int-e> | (which is why lambdabot doesn't allow IO) |
| 16:54:51 | <merijn> | int-e: But that still means auditing all the IO in your transitive dependencies |
| 16:54:57 | × | christo quits (~chris@81.96.113.213) (Ping timeout: 260 seconds) |
| 16:54:59 | <int-e> | merijn: no |
| 16:55:00 | <merijn> | int-e: Which I'm pretty sure no one ever does :p |
| 16:55:04 | <int-e> | merijn: because you can't run them |
| 16:55:06 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 258 seconds) |
| 16:55:12 | <int-e> | > print "" |
| 16:55:17 | <lambdabot> | <IO ()> |
| 16:55:20 | <merijn> | int-e: I wasn't refering to lambdabot |
| 16:55:24 | <gentauro> | int-e: this is how I handle IO (ask described in the Safe Haskell paper) -> https://uniprocess.org/effects.html |
| 16:55:31 | <gentauro> | (updated the GitLab certificate) |
| 16:55:33 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 16:55:48 | <merijn> | int-e: I was referring to "never run untrusted IO values" <- you have to audit the IO in all your transitive dependencies to do that |
| 16:56:15 | <int-e> | merijn: *if* you allow your untrusted code to run IO actions then yes, you have to audit them transitively. and you'l end up in base where obviously many things in IO are too risky to expose |
| 16:56:39 | <int-e> | The solution is to not allow your untrusted code to run IO at all. |
| 16:56:54 | <merijn> | int-e: No I'm literally talking about "code you write yourself that uses dependencies" |
| 16:57:14 | <int-e> | We're obviously arguing with different goals in mind. |
| 16:57:23 | <merijn> | int-e: My point is: You can't trust dependencies to not do bad things without auditing them, because Safe Haskell doesn't prevent that |
| 16:57:53 | <merijn> | int-e: I cannot trust my use of the "echo" package to be safe, even if I myself write the code that does that |
| 16:57:55 | <gentauro> | merijn: that's the hole point of trust ;) |
| 16:58:01 | <int-e> | I'm protecting against random IRC users that want to abuse lambdabot. The libraries that lambdabot relies on are, by and large, and for better or worse, part of the trusted code base. |
| 16:58:51 | <int-e> | I have actually made an effort to audit modules marked Trustworthy... outside of base. |
| 16:59:07 | <merijn> | int-e: And redone so every upstream version? ;) |
| 16:59:30 | <int-e> | merijn: take a guess. (somewhat, but not nearly as diligently) |
| 17:00:16 | <int-e> | I have a namespace based sandbox as well, because... |
| 17:00:27 | <Logio> | merijn: are you saying that as it stands now, I cannot get any guarantees of purity about packages marked as Safe? |
| 17:00:31 | <int-e> | (linux namespaces) |
| 17:00:51 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 265 seconds) |
| 17:01:24 | <merijn> | Logio: Define "guarantee" and "purity" :) |
| 17:01:48 | <int-e> | Logio: you get the guarantee that any not-Safe module gets imported through (or is) a Trustworthy module in a trusted package. |
| 17:01:54 | × | conal_ quits (~conal@66.115.176.144) (Quit: Computer has gone to sleep.) |
| 17:01:54 | <gentauro> | merijn: the sentence from SPJ about launching the missiles :P |
| 17:01:57 | → | christo joins (~chris@81.96.113.213) |
| 17:02:01 | <merijn> | int-e: Right, but most of the reddit proponents of SafeHaskell don't consider any of these things :) |
| 17:02:23 | <merijn> | int-e: And once you have the sandbox the only real issue with lambdabot is it spamming the channel |
| 17:02:26 | <int-e> | Logio: on top of that you get all the guarantees that the type system provides... assuming it is sound (which is up to ghc) |
| 17:02:33 | <merijn> | And most of SafeHaskell becomes irrelevant :) |
| 17:03:09 | <int-e> | merijn: Well I feel better about the sandbox not being the first line of defense. |
| 17:03:10 | <merijn> | Logio: Anyway, what I'm really saying is that the guarantees Safe gives you are mostly worthless |
| 17:03:13 | <Logio> | merijn: I mean, running IO actions and having side effects |
| 17:03:19 | <int-e> | And I also like SafeHaskell on an intellectual level. |
| 17:03:35 | <merijn> | SafeHaskell is conceptually neat, but practically worthless |
| 17:03:58 | <Logio> | merijn: I'm mostly conserned with things touching the filesystem without me knowing about it |
| 17:04:02 | <merijn> | In that they don't protect against threat models people actually have |
| 17:04:36 | <gentauro> | so this is useless? https://gitlab.com/uniprocess/haskell-template/-/blob/master/pkg/granulated/package.core.yaml#L4-12 |
| 17:04:38 | <merijn> | Logio: Well, a completely Safe package could still ruin your filesystem at compile time :p |
| 17:04:47 | <int-e> | Well, obviously I think it has some practical value. |
| 17:04:54 | <merijn> | (Or does SafeHaskell disallow TemplateHaskell?) |
| 17:05:00 | <Logio> | I've been bitten by Python packages that did stupid stuff like running executables on import (for non-nefarious, but stupid reasons) |
| 17:05:08 | <gentauro> | merijn: yes it does ;) |
| 17:05:13 | <merijn> | gentauro: What's your threat model? |
| 17:05:17 | <int-e> | merijn: Of course it does :) |
| 17:05:41 | <gentauro> | merijn: I don't trust anybody, specially myself ;) |
| 17:05:55 | <merijn> | Question #1 of any safety/security issue is always: What's your threat model? |
| 17:06:03 | <int-e> | Which is why I'm mostly worried about *subtle* holes in SafeHaskell... and those that are there by design (trusting a broken or subverted library) |
| 17:06:57 | <gentauro> | I mean, aren't all these arguments on why to use a `pure` programming language? |
| 17:06:59 | <int-e> | merijn: SafeHaskell has a big marketing problem... it's probably oversold, lifting expectations in it to a level that it can't meet. |
| 17:07:13 | <int-e> | But that doesn't make it useless. |
| 17:07:27 | int-e | shrugs. |
| 17:07:38 | <Logio> | merijn: my threats are not about running untrusted code (in the nefarious sense), they're about statically determining that the code does no IO that might interfere with parallel execution, etc. |
| 17:07:45 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 17:07:58 | → | conal joins (~conal@66.115.176.144) |
| 17:08:22 | <merijn> | Logio: I mean, you don't really need SafeHaskell for that, tbh. Unsafe is generally so unsafe that it breaks rather quickly, so most people avoid it anyway |
| 17:08:52 | <merijn> | Logio: Like, I doubt you'll find many packages that actually end up using unsafePerformIO |
| 17:08:55 | <Logio> | merijn: yes, but I'm not guarding myself from the bad decisions of most people, but the stupid ones |
| 17:09:08 | <merijn> | And the ones that do are generally things like bytestring |
| 17:09:23 | <int-e> | merijn: foreign import unsafe ... |
| 17:09:24 | <merijn> | Logio: Stupid people can't use unsafeX in any remotely reliable way, it's too hard :p |
| 17:09:34 | <int-e> | actually just foreign import |
| 17:09:40 | × | xff0x quits (~fox@2001:1a81:5293:a900:a065:b2ef:56bb:c171) (Ping timeout: 258 seconds) |
| 17:09:45 | <merijn> | int-e: The unsafe there doesn't refer to IO at all :p |
| 17:09:50 | <Logio> | merijn: but they might at least realize that they are doing something stupid if their compile fails |
| 17:09:55 | <int-e> | merijn: I was going to say that that's a misnomer |
| 17:10:03 | <gentauro> | int-e: SafeHaskell (and rio) without this -> https://gitlab.com/uniprocess/haskell-template/-/blob/master/pkg/isolatedio/src/Uniprocess/Effects/Restricted/Instances.hs#L44-55 isnt' very usefull (combined with the trust of packages of well ofc) |
| 17:10:03 | <merijn> | int-e: Sure, but not many people foreign importing without IO |
| 17:10:17 | <int-e> | merijn: but they could. |
| 17:10:25 | <merijn> | Logio: I never check safe Haskell and I haven't hit issues like that in practice |
| 17:10:27 | <Logio> | and the stupid person might also be me, writing debug code somewhere that it shouldn't be |
| 17:10:34 | → | xff0x joins (~fox@2001:1a81:5293:a900:dcb2:a43d:af2b:c6be) |
| 17:10:45 | <int-e> | and when they do, they basically have unsafePerformIO in their code without realizing it. |
| 17:11:27 | × | bitmagie quits (~Thunderbi@200116b806b03000d4de5885499e1489.dip.versatel-1u1.de) (Quit: bitmagie) |
| 17:11:43 | <gentauro> | SafeHaskell and Debug.trace don't play well together |
| 17:12:04 | <int-e> | gentauro: duh :) |
| 17:12:04 | <gentauro> | btw, you can't even start GHCi if your project is marked as -XSafe |
| 17:12:08 | <Logio> | merijn: so what will you do when you do hit an issue like that? |
| 17:12:30 | <int-e> | gentauro: and you can bypass it using your own trustworthy reexport of Debug.Trace... if that's what you want |
| 17:12:31 | <gentauro> | I find that annoying when developing (I turn it off) but when I'm done, I turn it on again ;) |
| 17:12:53 | <int-e> | the ghci thing *is* annoying though |
| 17:12:58 | <gentauro> | int-e: as long as you comply with exposing the IO so it complies with the type-system |
| 17:13:09 | <gentauro> | but if you try do `hide` something, you get a DENY from GHC |
| 17:13:10 | <gentauro> | ;) |
| 17:13:18 | <gentauro> | I spent so much time with this xD |
| 17:13:30 | <int-e> | or rather was... I think this is fixed in ghc 8.8? |
| 17:13:57 | <merijn> | Logio: I mean, it hasn't happened in about 10+ years of Haskell, so it's not something I worry about |
| 17:14:30 | → | pavonia joins (~user@unaffiliated/siracusa) |
| 17:14:50 | <gentauro> | merijn: my only point is that I would be really sad if they just remove it from GHC cos some NSA agents, I mean some people find it annoying xD |
| 17:16:06 | × | Jonno_FTW quits (~come@api.carswap.me) (Ping timeout: 256 seconds) |
| 17:16:10 | <Logio> | merijn: sure, I'm probably just a bit paranoid having seen what Python packages are willing to do to mess with you |
| 17:16:28 | <gentauro> | anybody know if the peeps from Galois is using SafeHaskell for some of their projects? |
| 17:16:57 | <gentauro> | I guess they have some high-level-sec reqs from their Government contracts right? |
| 17:17:05 | × | Bergle_1 quits (~Bergle_4@101.165.90.119) (Ping timeout: 260 seconds) |
| 17:17:12 | <Logio> | the thing is though, I would rather have some mechanism of guarding (or at least alerting) me from stupidity, and not just hope that people know what they are doing |
| 17:17:15 | <gentauro> | (does anybody know any of Galois Haskell projects?) |
| 17:17:45 | → | Bergle_1 joins (~Bergle_4@101.165.90.119) |
| 17:17:48 | <merijn> | Logio: Well, a key difference compared to python is that modules can't run any code unless you call it :p |
| 17:17:49 | → | Jonno_FTW joins (~come@api.carswap.me) |
| 17:18:13 | × | SomeoneSerge quits (~someone-s@143.244.42.97) (Ping timeout: 264 seconds) |
| 17:18:21 | → | hth313 joins (~user@node-1w7jr9qio22jw89j5t7q3mryw.ipv6.telus.net) |
| 17:18:30 | <Logio> | merijn: and I would like that to be true for any function not typed IO |
| 17:19:58 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 17:20:02 | → | SomeoneSerge joins (~someone-s@5.253.207.84) |
| 17:21:16 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Quit: jpds) |
| 17:21:21 | <Logio> | I don't want to find out later that your supposedly pure algorithm goes and phones wolframalpha.com for answers (which is not far off from things I've seen Python people do) |
| 17:22:47 | <gentauro> | Logio: slide number 10 -> http://blog.stermon.com/assets/talks/2019-04-08_foss-north-limiting-side-effects-of-applications-at-compile-time.pdf ssh-decorator was sending your private keys to the author … |
| 17:23:09 | <gentauro> | that's stuff I would like to remove from my codebase … and that's the reason I "really, really" try to use SafeHaskell |
| 17:23:32 | → | shatriff joins (~vitaliish@176-52-216-242.irishtelecom.com) |
| 17:24:37 | <gentauro> | and you get to think on a another level when you try to solve problems. This is a good summary on using SafeHaskell -> http://blog.stermon.com/articles/2019/02/21/the-main-reason-i-use-safe-haskell-is-restriction.html |
| 17:24:41 | <gentauro> | ;) |
| 17:24:58 | → | Jeanne-Kamikaze joins (~Jeanne-Ka@66.115.189.167) |
| 17:25:26 | <gentauro> | in my book, forcing yourself to use SafeHaskell, will make you a better Haskell dev |
| 17:25:47 | <gentauro> | (in some obscure and unhealty way xD) |
| 17:26:26 | <Logio> | that's a bit beside my point, since that package would'be always been about having side effects |
| 17:27:14 | <Logio> | If I run anything typed IO from anyone elses package, I expect missiles to be launched |
| 17:28:04 | <gentauro> | Logio: unless you avoid it :P |
| 17:28:05 | <Logio> | if it's not, I want my compiler to assure me that that's not happening |
| 17:28:23 | <Athas> | I don't think Safe Haskell will be removed, even if I also think it is not very useful. I recall that it was described as easy to implement and maintain. |
| 17:28:53 | <Logio> | the latter case is something that should not require trust |
| 17:28:59 | <gentauro> | Logio: slides 17-21 -> http://blog.stermon.com/assets/talks/2019-04-08_foss-north-limiting-side-effects-of-applications-at-compile-time.pdf |
| 17:29:10 | <gentauro> | you can't actually design your way out of it ;) |
| 17:29:42 | <gentauro> | and for me that's a really powerfull thing when it comes to security |
| 17:30:06 | <Kronic> | It took a long time but I finally understand how use megaparsec to solve some of the AOC problems. Embarassingly what confused me the most was where the combinators were coming from |
| 17:30:31 | <gentauro> | btw, Kris Jenkins (at Tweag.io who does a lot of Elm and PureScript) said that Global IO in Haskell is as bad as Global variables in imperative/OO languages. And I somehow tend to agree |
| 17:31:07 | → | vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
| 17:31:20 | <gentauro> | 18:28 < Athas> I don't think Safe Haskell will be removed, even if I also think it is not very useful. I recall that it was described as easy to implement and maintain. |
| 17:31:31 | <gentauro> | Athas: if it happens, I guess it would be time to move to Futhark ;) |
| 17:32:39 | → | Tario joins (~Tario@201.192.165.173) |
| 17:32:42 | → | coot_ joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) |
| 17:33:01 | × | rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection) |
| 17:33:27 | → | rayyyy joins (~nanoz@gateway/tor-sasl/nanoz) |
| 17:33:49 | <dsal> | Kronic: that's pretty normal, afaict |
| 17:34:20 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 17:34:25 | <sm[m]> | Agreed, you and all of us Kronic |
| 17:34:48 | × | conal quits (~conal@66.115.176.144) (Quit: Computer has gone to sleep.) |
| 17:35:09 | <dminuoso> | Kronic: Overall, I dont think AOC is a good way to learn megaparsec. |
| 17:35:50 | → | conal joins (~conal@66.115.176.144) |
| 17:35:56 | × | conal quits (~conal@66.115.176.144) (Client Quit) |
| 17:36:03 | <dminuoso> | In my opinion, the ideal way to write parsers with parser combinators like megaparsec, is by trying to formulate production rules in BNF, and then match your code with the BNF as much as possible. |
| 17:36:13 | × | coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 264 seconds) |
| 17:36:13 | coot_ | is now known as coot |
| 17:36:14 | <sm[m]> | it sure has caused a wave of new megaparsec learners.. |
| 17:36:31 | <gentauro> | dminuoso: you have to start small … |
| 17:36:31 | <dminuoso> | Rather than trying to make an ad-hoc thing |
| 17:36:40 | <dminuoso> | gentauro: Then start with a simple grammar! |
| 17:37:01 | <dminuoso> | monochrom has a lot to say about folks trying to skip the theory and just "get practical first" |
| 17:37:03 | <gentauro> | dminuoso: most people (no academic background) don't know what a grammar is ;) |
| 17:37:14 | <dminuoso> | So learn about grammars then? |
| 17:37:19 | <dsal> | I tend to read manuals later. |
| 17:37:42 | <gentauro> | dminuoso: to drive a car, you don't need to know how the engine works right? |
| 17:37:43 | <sm[m]> | I agree with dminuoso, these days I always write a grammar as a comment before writing any non trivial parser |
| 17:38:01 | <gentauro> | to compile your application, you don't need to know how the compiler works right? |
| 17:38:02 | <dminuoso> | gentauro: The analogy is deeply flawed. |
| 17:38:09 | <dsal> | If you want to make crushed ice, you have to have a strong physics background. |
| 17:38:14 | → | conal joins (~conal@66.115.176.144) |
| 17:38:14 | × | conal quits (~conal@66.115.176.144) (Client Quit) |
| 17:38:43 | → | conal joins (~conal@66.115.176.144) |
| 17:38:45 | <gentauro> | dminuoso: might be, but it still delivers the point ;) |
| 17:38:55 | <sm[m]> | Iwrite a spec to know what correct parser behaviour is |
| 17:39:01 | × | conal quits (~conal@66.115.176.144) (Client Quit) |
| 17:39:13 | × | gzj quits (~gzj@unaffiliated/gzj) (Ping timeout: 264 seconds) |
| 17:39:14 | <Kronic> | A fair few people told me that AOC is not a good way to learn it but I wansn't using megaparsec to solve AOC, it's the other way around |
| 17:39:20 | <dsal> | For real projects, I often just write a config file in the format I want, then write a parser for that, then use my software. |
| 17:39:43 | <dsal> | Kronic: AoC isn't a good way to learn megaparsec because the parsing you get to do is typically pretty limited. |
| 17:40:01 | <sm[m]> | surely that's good when starting ? |
| 17:40:07 | <glguy> | aoc seems like a fine way to learn megaparsec |
| 17:40:10 | <dsal> | But it's a good way to learn megaparsec because you at least can use it some, and I learn nice little things. |
| 17:40:14 | <gentauro> | glguy: I agree |
| 17:40:20 | <glguy> | you get some easy stuff to learn on, and if something really complicated you shouldn't be using parser combinators anyway |
| 17:40:32 | <gentauro> | basic examples that get you `hooked` on the power of `parser combinators` |
| 17:40:39 | <ephemient> | there were some more interesting inputs to parse in past years |
| 17:40:46 | <ephemient> | not much this year so far though |
| 17:40:48 | <gentauro> | for that point, if you are more interesed, then learn more about parsing and |
| 17:40:50 | <dminuoso> | My main beef with parser combinators here, is that they have way too much adhoc power. |
| 17:41:09 | <gentauro> | 18:40 < ephemient> not much this year so far though |
| 17:41:13 | <gentauro> | ephemient: I agree :) |
| 17:41:17 | <dsal> | ephemient: Yeah, I can't remember whether input was harder to parse, or I'm just better at parsing because I've written a lot of parsers since then. |
| 17:41:47 | <glguy> | I can only think of a couple AoC problems that were close to hard to parse over the years |
| 17:42:25 | → | mozzarella joins (~sam@unaffiliated/sam113101) |
| 17:42:49 | → | thunderseethe joins (4a882763@cpe-74-136-39-99.kya.res.rr.com) |
| 17:42:52 | → | conal joins (~conal@66.115.176.144) |
| 17:43:06 | <glguy> | 2018 day 24 was more annoying |
| 17:43:08 | <Kronic> | Generally I tune out anything like that, megaparsec is clearly very robust but I would not want to have to try to learn it in the context of something much more complicated because I find when that is the case, stuff inside my head is fighting for room. AOC let me just ignore the problem and focus on the solution. |
| 17:43:28 | <Kronic> | I mean, there is a reason that during a driving test they make you go around the car park at first |
| 17:43:46 | <glguy> | megaparsec is particularly good for aoc because its error messages can help with debugging your parser as you write it |
| 17:44:05 | <thunderseethe> | Is there a way to construct a type level function that behaves like `(\i -> a i -> b i)`? |
| 17:45:25 | <ephemient> | <off-topic> eh, my driving lessons and driving test went out onto public roads right away |
| 17:45:27 | <solonarv> | sure: type AB i = A i -> B i -- for example |
| 17:45:42 | × | chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 17:45:46 | <solonarv> | although this isn't quite a "type-level function" since you must fully apply it |
| 17:45:49 | <thunderseethe> | Or I guess like, a type alias `type Fn a b i = a i -> b i` except `Fn a b` is valid as a type |
| 17:46:01 | <thunderseethe> | Ah yeah, I need the partial application specifically |
| 17:46:10 | <ski> | s/is/isn't/ |
| 17:46:34 | <glguy> | Parsing AoC 2017 Day 25 was rather annoying, too |
| 17:46:38 | <ski> | where do you need it ? |
| 17:47:02 | <sm[m]> | #haskell driving instruction: throw you out in a F1 car on day 1 :) |
| 17:47:05 | <glguy> | but maybe not so much hard as tedious |
| 17:47:16 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 17:47:44 | <thunderseethe> | or perhaps I'm misguided in general. I'm trying to put together an indexed applicative class with sig `class IxFunctor f => IxApplicative (f :: (Type -> Type) -> Type -> Type) where` and struggling with sig for `<*>` |
| 17:48:31 | <thunderseethe> | I assume I need something like `f (\i a i -> b i) i -> f a i -> f b i` but I would not be surprised if my approach if fundamentally flawed |
| 17:49:04 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 17:49:21 | × | sh9 quits (~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8) |
| 17:50:16 | <solonarv> | I've mostly seen "IxApplicative" defined like so: class IxApplicative (f :: k -> k -> Type -> Tyoe) where ipure :: a -> f i i a; (<*@>) :: f i j (a -> b) -> f j k a -> f i k b |
| 17:50:16 | <ski> | thunderseethe : that doesn't kind-check |
| 17:50:24 | <solonarv> | note that there are *two* indices! |
| 17:50:58 | <ski> | (perhaps not use `k' for two different things) |
| 17:51:07 | <solonarv> | oh, oops ;) |
| 17:52:00 | → | cosimone joins (~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8) |
| 17:52:33 | <ski> | thunderseethe : i guess you actually meant `\i -> a i -> b i', when you said `\i a i -> b i' there ? |
| 17:52:44 | <thunderseethe> | yes |
| 17:53:47 | <thunderseethe> | with the `k -> k -> Type -> Type` is the idea that by foregoing `(Type -> Type)` we avoid needing (->) specifically and sidestep the type level partial application? |
| 17:55:57 | <ski> | the usual thing people want, when they do "indexed monad" is to express a kind of "binary relations" on these indices. so `return' ends up expressing reflexivity on the indices, and `(>>=)' (or `join', if you prefer) ends up expressing transitivity |
| 17:56:13 | → | juuandyy joins (~juuandyy@90.166.144.65) |
| 17:57:28 | <ski> | while it looks like you're wanting to express functors, not on `Type', but on `ki -> Type', where `ki' is whatever the kind of your indices you want to have |
| 17:58:47 | × | johnw quits (~johnw@haskell/developer/johnw) (Ping timeout: 260 seconds) |
| 17:59:09 | <ski> | (still endofunctors, just like `Functor' expresses endofunctors on concrete Haskell types. only difference is that you want to express endofunctors on types parameterized on input type of kind `ki', and then want to have an applicative version of these functors) |
| 17:59:28 | <ski> | thunderseethe : anyway, try `newtype' |
| 18:00:01 | <thunderseethe> | That may be the case but I'm not following your throughline, if I swap to `f :: (ki -> Type) -> Type -> Type` For a given concrete `ki` I'm in the same spot right wrt to my `<*>` def? |
| 18:00:41 | → | johnw joins (~johnw@haskell/developer/johnw) |
| 18:00:44 | <ski> | the situation i was describing would be `f :: (ki -> Type) -> (ki -> Type)' (only you had `ki = Type' above) |
| 18:01:27 | <thunderseethe> | by newtype do you mean somthing like `newtype Fn a b i = Fn (a i -> b i)`? |
| 18:01:36 | <ski> | yes |
| 18:02:00 | <ski> | (i'm not too sure it makes sense in your situation, but you can try it and see ?) |
| 18:02:47 | <thunderseethe> | Is there a way I can do that without it influencing the remainder of my api? My reservation with a newtype is that anyone consuming `<*>` would require wrapping their base (->) in my `Fn` wrapper |
| 18:03:01 | <thunderseethe> | not the end of the world, but I'd like to avoid it if possible |
| 18:04:19 | × | p8m_ quits (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 246 seconds) |
| 18:04:29 | <ski> | (the question would be : if `C' and `KI' are categories, and `C' is cartesian closed, is `C^KI' also cartesian closed, and is the exponential `F -> G' in it the functor that maps `I' (in `KI') to the exponential object `F I -> G I' ?) |
| 18:04:58 | → | p8m joins (p8m@gateway/vpn/protonvpn/p8m) |
| 18:05:12 | <dolio> | "Yes" and "no". |
| 18:05:35 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in) |
| 18:05:55 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 18:06:20 | <thunderseethe> | I don't think that's the question, but maybe |
| 18:07:06 | <ski> | is the latter salvagable by some "reasonable" extra assumptions ? or is there some other "interesting" modification that would hold ? |
| 18:07:08 | <dolio> | Actually, that might require qualifiers. C needs to have tensors by homs of KI, I think. |
| 18:08:49 | <dolio> | Maybe if KI is discrete it would reduce to that. |
| 18:09:23 | <thunderseethe> | KI is `Type` so I'd guess that implies it's hask? |
| 18:09:28 | <ski> | thunderseethe : i was thinking perhaps you could yoneda or coyoneda it (by which i mean, being able to "lift" `\i -> a i -> b i' out into a context, where you could hopefully saturate the application), but then i recalled that you're exactly trying to express that `f' is a functor, so i don't think that'd work .. |
| 18:09:48 | <thunderseethe> | Ah yeah |
| 18:11:13 | <dolio> | ski: The reason what you said doesn't work is that it's not functorial, so it needs to be fixed up by doing `forall r. (i -> r) -> F r -> G r` instead. |
| 18:11:18 | <ezzieyguywuf> | lol, search results for "haskell cassava" https://i.imgur.com/Xcb8zY1.png |
| 18:11:23 | <ski> | (if `F' is a functor, then `F T' is (yoneda) equivalent to `forall a. (T -> a) -> F a', and (coyoneda) to `exists a. (F a,a -> T)'. so, using either of those, you can "lift" `T' out of `F') |
| 18:11:29 | <dolio> | Like Kripke semantics. |
| 18:12:15 | <ski> | dolio : oh, right. of course |
| 18:12:31 | <ski> | (you just yonedaed it) |
| 18:12:48 | <ski> | (how's it like Kripke semantics ?) |
| 18:12:49 | → | elliott_ joins (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) |
| 18:13:14 | <dolio> | Implication works the same way. Quantify over all worlds in one direction. |
| 18:13:36 | <ski> | hm, i see |
| 18:13:36 | <monochrom> | haha ezzieyguywuf |
| 18:13:42 | <ski> | interesting observation |
| 18:14:07 | <dolio> | Because otherwise it wouldn't be appropriately monotone. |
| 18:14:22 | <ski> | (reminds me of some modal logic whose Kripke semantics used a ternary relation, for interpreting implication) |
| 18:14:39 | <ski> | yea |
| 18:14:45 | × | vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov) |
| 18:15:04 | → | vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
| 18:15:36 | <ski> | (something like `forall v,w. R u v w -> F v -> G w'. might misremember the quantifiers) |
| 18:17:23 | × | sakirious quits (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: The Lounge - https://thelounge.chat) |
| 18:17:27 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds) |
| 18:19:15 | × | vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit) |
| 18:19:36 | → | vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
| 18:20:06 | <dolio> | So basically, presheaves become a generalization of the stuff used in Kripke semantics, and when you use presheaves as to interpret logic people call it Kripke-Joyal semantics, I think. |
| 18:20:32 | <ski> | mhm |
| 18:20:42 | <dolio> | Or maybe sheaves as well. |
| 18:21:32 | <ski> | have presheaves been used for modal stuff ? |
| 18:22:39 | <dolio> | Probably. |
| 18:25:26 | <ski> | hmm. so `forall r. (i -> r) -> F r -> G r' is actually like `[] (F -> G)' (interpreting `F -> G' here plain pointwise, as thunderseethe wanted), since `[] F T' is `forall a. (T -> a) -> F a' (and `<> F T' is `exists a. (F a,a -> T)') |
| 18:25:32 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 18:26:57 | <dolio> | `[](F -> G)` would be `λ j -> forall i r. (i -> r) -> F r -> G r` I believe. |
| 18:27:17 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 18:27:24 | <ski> | yea, forgot to abstract over `i' |
| 18:27:55 | <ski> | hm, oh. you quantified `i'. what's `j' for then ? |
| 18:27:57 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 18:28:14 | × | amiri quits (~amiri@cpe-76-91-154-9.socal.res.rr.com) (Remote host closed the connection) |
| 18:28:17 | <dolio> | Every proposition in modal logic is interpreted as a functor from the worlds. |
| 18:28:38 | <ski> | yes, i should have said `\i -> forall r. (i -> r) -> F r -> G r' is actually like `[] (F -> G)' |
| 18:28:54 | <dolio> | It's not, though. That is just `F -> G`. |
| 18:30:35 | <dolio> | Well, I guess if you're talking about classical modal logic, it might be. |
| 18:31:01 | <dolio> | What I'm talking about is the semantics for intuitionistic logic, I guess. |
| 18:31:41 | <ski> | well, i'm interpreting `[] F' (interior of `F') by `\u -> forall v. (u -> v) -> F v', and taking `F -> G' in `[] (F -> G)' to mean exactly `\i -> F i -> G i' (which is not monotone / upper / a functor) |
| 18:32:22 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 260 seconds) |
| 18:32:50 | <ski> | yea, i was first thinking about Kripke for intuitionistic logic, and then thinking about the usual Kripke for modal logic, interpreting `[]' and `<>' as switching worlds (and then thinking of `[]' and `<>' as yoneda and coyoneda in this functor setting) |
| 18:34:27 | <ski> | so yoneda / necessity is used to make the interpretation of implication monotone, because it wouldn't otherwise be, because of the contravariance |
| 18:34:31 | → | ddellacosta joins (dd@gateway/vpn/mullvad/ddellacosta) |
| 18:34:45 | <dolio> | Yeah. |
| 18:34:56 | × | juuandyy quits (~juuandyy@90.166.144.65) (Ping timeout: 240 seconds) |
| 18:35:34 | <ski> | (and i hadn't noticed before that that could be seen as a reason for the modal interpretation of intuitionistic logic wrapping implication in necessity) |
| 18:35:49 | → | Foobarblob joins (188838c2@ip24-136-56-194.ga.at.cox.net) |
| 18:37:52 | <operand> | How do I "cast" an Int to an Integer? |
| 18:38:06 | <operand> | It's quite difficult to find on Hoogle |
| 18:38:13 | <hpc> | @hoogle Int -> Integer |
| 18:38:14 | <lambdabot> | Test.DejaFu.SCT.Internal toId :: Coercible Id a => Int -> a |
| 18:38:14 | <lambdabot> | Prelude toInteger :: Integral a => a -> Integer |
| 18:38:14 | <lambdabot> | GHC.Real toInteger :: Integral a => a -> Integer |
| 18:38:25 | <hpc> | toInteger :P |
| 18:38:31 | <operand> | Thanks! :P |
| 18:38:35 | <hpc> | what were you searching for? |
| 18:38:45 | <operand> | I somehow didnt think of searching for a type signature... I've mostly used hoogle to look up the signatures of names rather than the other way around |
| 18:38:54 | <hpc> | ah yep, that'll do it |
| 18:38:59 | <teddyc> | wow hoogle bot. really cool |
| 18:39:01 | <hpc> | i always start with type signatures |
| 18:39:06 | <ski> | @type fromInteger |
| 18:39:08 | <lambdabot> | Num a => Integer -> a |
| 18:39:09 | <ski> | @type fromIntegral |
| 18:39:11 | <lambdabot> | (Integral a, Num b) => a -> b |
| 18:39:32 | <ski> | @src fromIntegral |
| 18:39:32 | <lambdabot> | fromIntegral = fromInteger . toInteger |
| 18:40:00 | <ski> | @type realToFrac |
| 18:40:04 | <lambdabot> | (Real a, Fractional b) => a -> b |
| 18:40:05 | <ski> | @src realToFrac |
| 18:40:05 | <lambdabot> | realToFrac = fromRational . toRational |
| 18:41:25 | × | thunderseethe quits (4a882763@cpe-74-136-39-99.kya.res.rr.com) (Remote host closed the connection) |
| 18:47:01 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 18:47:48 | × | xff0x quits (~fox@2001:1a81:5293:a900:dcb2:a43d:af2b:c6be) (Ping timeout: 258 seconds) |
| 18:48:13 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
| 18:48:46 | → | xff0x joins (~fox@2001:1a81:5293:a900:f3be:5ee0:a079:bf8c) |
| 18:48:48 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 18:49:25 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 18:50:23 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds) |
| 18:53:45 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds) |
| 18:56:37 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 18:59:17 | × | mounty quits (~mounty@210.1.196.133) (Ping timeout: 260 seconds) |
| 19:01:14 | × | dmiles quits (~dmiles@c-98-232-203-165.hsd1.wa.comcast.net) (Ping timeout: 260 seconds) |
| 19:01:50 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds) |
| 19:03:08 | × | berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 258 seconds) |
| 19:03:31 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 19:06:16 | → | Sheilong joins (uid293653@gateway/web/irccloud.com/x-besskplfeidxcvug) |
| 19:06:58 | → | drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net) |
| 19:07:50 | → | dmiles joins (~dmiles@c-98-232-203-165.hsd1.wa.comcast.net) |
| 19:07:56 | <dminuoso> | operand: As an additional primitive to be aware of: toIntegralSized for converting into a smaller numeric type without loss by including a runtime check |
| 19:08:08 | <dminuoso> | (That is, between any two Integral types) |
| 19:11:29 | → | lambda-11235 joins (~lambda-11@2600:1700:7c70:4600:bc15:16d3:5c9f:657f) |
| 19:11:32 | × | Rudd0 quits (~Rudd0@185.189.115.103) (Read error: Connection reset by peer) |
| 19:15:57 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Remote host closed the connection) |
| 19:16:43 | → | Vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) |
| 19:16:55 | × | Vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Remote host closed the connection) |
| 19:17:02 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 19:19:25 | → | amiri joins (~amiri@cpe-76-91-154-9.socal.res.rr.com) |
| 19:19:37 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Ping timeout: 258 seconds) |
| 19:22:18 | × | tenniscp25 quits (~tenniscp2@134.196.209.118) () |
| 19:23:41 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 19:23:59 | × | shatriff quits (~vitaliish@176-52-216-242.irishtelecom.com) (Remote host closed the connection) |
| 19:24:39 | × | tsrt^ quits (tsrt@ip98-184-89-2.mc.at.cox.net) () |
| 19:27:53 | → | justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311) |
| 19:28:17 | → | caef^ joins (caef@ip98-184-89-2.mc.at.cox.net) |
| 19:31:32 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds) |
| 19:34:25 | → | justanotheruser joins (~justanoth@unaffiliated/justanotheruser) |
| 19:35:14 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 19:36:17 | <justsomeguy> | Out of curiosity, is there a way to persist type information to runtime (so for example, a function can query the type of new input values)? Or is the type system completely static? |
| 19:37:00 | × | hf69 quits (~haskeller@ip72-205-40-121.dc.dc.cox.net) (Remote host closed the connection) |
| 19:37:03 | <solonarv> | you can do that, yes, that's what Typeable and the related machinery do |
| 19:37:39 | <merijn> | justsomeguy: It's completely static, but that doesn't mean you can't do fascinating dynamic looking hacks :p |
| 19:37:45 | <merijn> | :t cast |
| 19:37:47 | <lambdabot> | (Typeable a, Typeable b) => a -> Maybe b |
| 19:38:00 | <mniip> | a TypeRep is a complete runtime description of a concrete type |
| 19:38:03 | <merijn> | > cast True :: Maybe Int |
| 19:38:06 | <lambdabot> | Nothing |
| 19:38:10 | <merijn> | > cast True :: Maybe Bool |
| 19:38:13 | <lambdabot> | Just True |
| 19:38:28 | <mniip> | Typeable is the (compiler-managed) typeclass that associates a type with its TypeRep |
| 19:38:39 | <merijn> | justsomeguy: There's also the Dynamic type, which is basically built on top of Typeable and cast |
| 19:38:42 | <mniip> | Dynamic is a pair of a value and its TypeRep |
| 19:38:54 | <merijn> | @hoogle Dynamic |
| 19:38:55 | <lambdabot> | module Data.Dynamic |
| 19:38:55 | <lambdabot> | Data.Dynamic data Dynamic |
| 19:38:55 | <lambdabot> | Data.Dynamic Dynamic :: forall a . TypeRep a -> a -> Dynamic |
| 19:39:44 | <mniip> | I wonder what happens if you codensity dynamic |
| 19:40:15 | <mniip> | data Dynamic where Dynamic :: (forall b. Typeable b => Maybe b) -> Dynamic |
| 19:40:58 | <solonarv> | looks to me like a DMap TypeRep Identity |
| 19:41:32 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Remote host closed the connection) |
| 19:41:37 | <Kronic> | with the haskell plugin in vscode is there a way to see what the type of something under the cursor is instead of on mouse hover ? |
| 19:42:14 | → | Vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) |
| 19:44:15 | × | nek0 quits (~nek0@mail.nek0.eu) (Quit: The Lounge - https://thelounge.chat) |
| 19:44:24 | <mniip> | solonarv, hmm I haven't thought about that |
| 19:44:29 | <mniip> | you could store multiple types |
| 19:45:00 | <mniip> | I guess the correct codensity would be |
| 19:45:10 | <mniip> | ((forall a. Typeable a => a -> r) -> r) |
| 19:45:13 | × | cads quits (~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 264 seconds) |
| 19:45:20 | <solonarv> | eh, not quite the same becaose you can't go write fwd :: Dynamic -> DMap TypeRep Identity |
| 19:45:32 | → | DTZUZU joins (~DTZUZU@205.ip-149-56-132.net) |
| 19:45:39 | <solonarv> | (since there's no way to get "all the typereps for which this is Just") |
| 19:46:03 | <mniip> | it is to DMap as function is to Map |
| 19:47:07 | × | Vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 265 seconds) |
| 19:47:14 | <solonarv> | yeah |
| 19:47:44 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 19:47:55 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Remote host closed the connection) |
| 19:48:22 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 19:48:57 | <justsomeguy> | It's interesting how Haaskell has these facilities for introspection, even though its type system starts from a completely different place than the other languages I've used (Python, JS). ...I'm going to have to read through Data.Typeable and the paper for Type.Reflection. |
| 19:52:55 | × | knupfer quits (~Thunderbi@200116b82c21a8005c6c9e172e74e2cf.dip.versatel-1u1.de) (Quit: knupfer) |
| 19:53:04 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Ping timeout: 256 seconds) |
| 19:54:13 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
| 19:54:25 | × | justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Remote host closed the connection) |
| 19:55:09 | × | HorseGirl quits (~UserNick@217.138.194.74) (Quit: Going offline, see ya! (www.adiirc.com)) |
| 19:56:35 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 19:56:42 | → | quarters joins (~quarters@unaffiliated/quarters) |
| 19:56:45 | × | o1lo01ol1o quits (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) (Read error: Connection reset by peer) |
| 19:56:53 | → | o1lo01ol1o joins (~o1lo01ol1@bl8-213-81.dsl.telepac.pt) |
| 19:57:08 | → | mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
| 20:00:47 | <quarters> | hello. while I'm able to run stack just fine on arch linux, the ~/.stack directory is at least 2x that of ~/.cabal . I was hoping to use cabal for this reason, but it sounds like arch package maintainers abandoned haskell. that said, I was considering using the haskell docker image to develop with, but wasn't quite sure how to go about doing this. I'm using vs code for development and was considering using the dev container feature for this |
| 20:02:09 | <merijn> | quarters: cabal/ghc work fine, just don't use the Arch packages to install them. You can either use ghcup or consult the Arch wiki (which I think has a lot of info on how to fix/work around their broken Haskell environment) |
| 20:03:41 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 20:05:33 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 20:07:30 | <quarters> | merijn: thanks. I'll look into using ghcup right now. the issue I was having (in case a solution's been found for this) is the one described here: https://bbs.archlinux.org/viewtopic.php?id=230166 |
| 20:08:18 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Ping timeout: 258 seconds) |
| 20:10:53 | × | Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving) |
| 20:10:58 | <merijn> | quarters: The problem is that Arch maintainers *intentionally* ship a broken GHC configuration |
| 20:11:56 | <merijn> | quarters: Specifically, they *only* ship the dynamic library versions of packages, but by default GHC uses static linking. Which leads it to complain about missing static libraries when used normally, since those are intentionally not installed |
| 20:12:17 | <merijn> | quarters: So the fix is (as I said initially) to not use any of the Arch Haskell packages |
| 20:12:40 | → | Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
| 20:13:07 | <merijn> | I think you can get a non-broken GHC via ghc-static, but consult the Arch wiki for details |
| 20:13:37 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in) |
| 20:13:37 | → | Feuermagier joins (~Feuermagi@213.178.26.41) |
| 20:13:53 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 20:14:26 | <geekosaur> | that gets you the missing part of ghc itself but not of any other haskell libs installed via arch |
| 20:17:28 | → | juuandyy joins (~juuandyy@90.166.144.65) |
| 20:18:26 | → | cads joins (~cads@ip-64-72-99-232.lasvegas.net) |
| 20:18:33 | <merijn> | Sure |
| 20:18:34 | × | ggole quits (~ggole@2001:8003:8119:7200:e9c3:d38f:e40d:d76e) (Quit: Leaving) |
| 20:19:12 | → | hiroaki joins (~hiroaki@2a02:908:4b1b:20a0::77a4) |
| 20:19:25 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 20:22:30 | → | bitmagie joins (~Thunderbi@200116b806b03000d4de5885499e1489.dip.versatel-1u1.de) |
| 20:23:38 | × | bitmagie quits (~Thunderbi@200116b806b03000d4de5885499e1489.dip.versatel-1u1.de) (Client Quit) |
| 20:23:40 | → | hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-vdkgorsbhzvcovdf) |
| 20:23:41 | <quarters> | merijn: gotcha. thanks. is running "cabal run" in the project directory doing it wrong? that is, do I need to specify the project name as an argument? |
| 20:24:14 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 20:24:45 | <quarters> | running cabal run sets off a long list of what looks like libraries/packages and it's been running for the past 10 minutes |
| 20:27:31 | <merijn> | quarters: It's installing all the dependencies needed to build your project so it can be run |
| 20:27:50 | <merijn> | Which, depending on the project and the number of dependencies can take a while, yes |
| 20:28:57 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Ping timeout: 272 seconds) |
| 20:29:56 | <quarters> | merijn: ah. ok. I've only included base and scotty for this project. I'm guessing that the dependencies that are downloaded are globally installed rather than on a project by project basis? |
| 20:30:41 | <merijn> | They are globally installed and shared "as possible", yes |
| 20:31:51 | × | juuandyy quits (~juuandyy@90.166.144.65) (Quit: Konversation terminated!) |
| 20:32:32 | × | conal quits (~conal@66.115.176.144) (Quit: Computer has gone to sleep.) |
| 20:33:18 | → | conal joins (~conal@66.115.176.144) |
| 20:33:23 | × | rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds) |
| 20:34:45 | × | vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov) |
| 20:35:02 | → | vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
| 20:35:56 | × | conal quits (~conal@66.115.176.144) (Client Quit) |
| 20:36:30 | <quarters> | awesome. thanks! |
| 20:37:49 | → | conal joins (~conal@66.115.176.144) |
| 20:37:49 | × | conal quits (~conal@66.115.176.144) (Client Quit) |
| 20:38:05 | <aplainzetakind> | My ~/.cabal is getting pretty huge from all the v2-installs of various projects and ghc versions. I can't break anything by manually removing things from ~/.cabal/packages/hackage.haskell.org/ right? |
| 20:38:10 | <aplainzetakind> | Like, everything. |
| 20:38:22 | <aplainzetakind> | They'd be rebuilt as needed? |
| 20:38:40 | <sclv> | the store holds the installs |
| 20:38:46 | <sclv> | that dir just caches downloaded tarballs |
| 20:39:00 | <sclv> | but if you delete from the store selectively it invalidates the index and _everything_ breaks |
| 20:39:07 | <sclv> | so you have to delete the store all at once or not at all |
| 20:39:15 | × | vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit) |
| 20:39:28 | <monochrom> | ~/.cabal/packages/hackage.haskell.org holds downloaded tarball and the result of "cabal update" only. |
| 20:39:33 | → | vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
| 20:39:56 | → | g4br13l joins (~g4br13l@191.96.4.51) |
| 20:40:03 | <monochrom> | If you no longer use GHC 8.6.3, for example, you can erase ~/.cabal/store/ghc-8.6.3 |
| 20:40:47 | <monochrom> | If you're OK with scorched earth and rebuilding every lib you actually use today for the actual GHC version you use today, it's also OK to erase all of ~/.cabal/store |
| 20:40:52 | → | conal joins (~conal@66.115.176.144) |
| 20:41:06 | → | doct0rhu joins (~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net) |
| 20:41:29 | <aplainzetakind> | Alright, there are quite a few ghc folders there. Most can go probably. |
| 20:44:52 | → | OpenSorceress joins (~opensorce@rrcs-67-79-205-19.sw.biz.rr.com) |
| 20:44:52 | × | OpenSorceress quits (~opensorce@rrcs-67-79-205-19.sw.biz.rr.com) (Changing host) |
| 20:44:52 | → | OpenSorceress joins (~opensorce@unaffiliated/screamingbanshee) |
| 20:45:14 | <monochrom> | Actually you can also do precision surgical delete if you know how to use "ghc-pkg --package-db=$HOME/.cabal/store/ghc-<version> unregister" first. |
| 20:46:22 | <monochrom> | err, $HOME/.cabal/store/ghc-<version>/package.db |
| 20:46:25 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 20:46:54 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 20:47:11 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 20:47:31 | <aplainzetakind> | Well I didn't even know ghc-pkg was a thing. |
| 20:48:06 | <merijn> | aplainzetakind: ~/.cabal/store/ghc-X.Y can be safely nuked |
| 20:48:25 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 20:48:30 | × | SomeoneSerge quits (~someone-s@5.253.207.84) (Ping timeout: 265 seconds) |
| 20:48:38 | <merijn> | aplainzetakind: Of course your first few compiles after that will be *super* slow, but it's fine |
| 20:49:00 | × | conal quits (~conal@66.115.176.144) (Quit: Computer has gone to sleep.) |
| 20:49:14 | <merijn> | There's also some experimental tools for cleaning up the store, but tbh they're more bother than they're worth |
| 20:49:38 | → | conal joins (~conal@66.115.176.144) |
| 20:51:45 | × | conal quits (~conal@66.115.176.144) (Client Quit) |
| 20:54:03 | → | conal joins (~conal@66.115.176.144) |
| 20:54:03 | × | conal quits (~conal@66.115.176.144) (Client Quit) |
| 20:54:11 | → | alestane joins (~nevin@pool-98-118-117-32.bstnma.fios.verizon.net) |
| 20:55:58 | × | g4br13l quits (~g4br13l@191.96.4.51) (Ping timeout: 256 seconds) |
| 20:57:39 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 20:58:23 | <alestane> | Greetings; I am fairly new to Haskell and am taking my first crack at producing code that generates some output, asks the user if they want to continue, generates some more if they say yes, asks them again, and so on. I've looked at several examples and explanations so far. One solution appears to be to use a recursive function; however, I also had the notion to generate a lazily evaluated list of user inputs and feed it to a |
| 20:58:24 | <alestane> | takeWhile. |
| 20:59:00 | <alestane> | However, this approach seems to run into an issue where the linked exectuable seems to wait for me to type in all the input and hit CTRL-D before it processes anything. |
| 21:00:12 | <alestane> | Currently my user input funciton is returning a IO [Char]; I've wondered if maybe it should be returning [IO Char] instead. |
| 21:00:28 | <lortabac> | alestane: the problem is that IO is not lazy |
| 21:00:42 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 21:00:44 | <monochrom> | output is line-buffered if terminal |
| 21:00:59 | <alestane> | I am expecting to process it line-by-line. |
| 21:00:59 | <monochrom> | as in, held up until the next newline |
| 21:01:09 | <alestane> | Each input is one line, that's fine. |
| 21:01:18 | <monochrom> | output |
| 21:01:20 | <lortabac> | there are functions that do lazy IO, but it's kind of a hack |
| 21:01:27 | → | Tario joins (~Tario@201.192.165.173) |
| 21:01:48 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 21:02:21 | <monochrom> | Well, actually, the correct thing to do is post your code. But I'm going away in a minute. |
| 21:02:21 | × | darjeeling_ quits (~darjeelin@115.215.43.136) (Ping timeout: 258 seconds) |
| 21:02:30 | <merijn> | I think what both monochrom and lortabac are trying to say is "please put your code on a pastebin so we don't all have to guess what's going on" ;) |
| 21:02:38 | → | justsomeguy joins (~justsomeg@216.186.218.241) |
| 21:02:38 | × | justsomeguy quits (~justsomeg@216.186.218.241) (Changing host) |
| 21:02:38 | → | justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311) |
| 21:02:38 | × | monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 272 seconds) |
| 21:02:51 | <lortabac> | :) |
| 21:02:52 | <merijn> | monochrom: Dammit, man...couldn't have waited 2 more seconds to write that? ;) |
| 21:03:34 | <monochrom> | relativity, there is no "before and after", etc |
| 21:04:06 | <alestane> | I've used enough command-line environments to understand line buffers. |
| 21:04:10 | monochrom | sees much red shift when observing merijn! |
| 21:04:11 | → | darjeeling_ joins (~darjeelin@115.215.43.136) |
| 21:06:06 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 21:06:41 | × | mapperr quits (~mapperr@vmi389916.contaboserver.net) (Remote host closed the connection) |
| 21:06:43 | <alestane> | https://pastebin.com/c8Z2bQ7U is what compiled at the proof-of-concept stage. |
| 21:07:11 | <alestane> | It's supposed to get the first character of each line, echo it back with a Q after it, then get the next line. |
| 21:07:13 | → | knupfer joins (~Thunderbi@200116b82c21a800b1a58bfd9064fb73.dip.versatel-1u1.de) |
| 21:07:43 | <merijn> | alestane: Question: What do you think the stopping condition for the recursion in 'choices' is? |
| 21:07:58 | → | mapperr joins (~mapperr@vmi389916.contaboserver.net) |
| 21:08:00 | × | ridcully quits (~ridcully@p57b5259e.dip0.t-ipconnect.de) (Quit: update) |
| 21:08:06 | <alestane> | Well, I was intending to feed it to a takeWhile. |
| 21:08:14 | → | ridcully joins (~ridcully@p57b5259e.dip0.t-ipconnect.de) |
| 21:08:17 | <merijn> | alestane: That won't work, though |
| 21:08:53 | <alestane> | I was trying to build an "evaluate as needed" list akin to the "ones = 1 : ones" example |
| 21:08:57 | <merijn> | Because if you do, like "fmap (takeWhile foo)" the takeWhile won't run until *all* IO inside choices is done |
| 21:09:07 | <alestane> | Well, clearly it doesn't work, no. |
| 21:09:15 | <merijn> | alestane: Right, but you can't evaluate IO "as needed" (at least not safely) |
| 21:09:17 | × | DavidEichmann quits (~david@62.110.198.146.dyn.plus.net) (Ping timeout: 260 seconds) |
| 21:09:36 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 272 seconds) |
| 21:09:38 | <alestane> | Can I lazily build a [IO Char]? |
| 21:09:39 | <merijn> | alestane: So the "mapM" on line 13 won't run until "choices" finishes, but that never finishes |
| 21:09:56 | <alestane> | Or is my entire approach just incorrect? |
| 21:10:22 | <merijn> | Can you? Yes. Does it do what you want? probably not |
| 21:10:27 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Ping timeout: 260 seconds) |
| 21:10:49 | <merijn> | alestane: I would simply move the "putStrLn" into the recursion of choices (or something along those lines |
| 21:11:24 | <merijn> | Although it depends a bit on what you wanna actually do with said inpu |
| 21:11:38 | <alestane> | I'll see how it works as an experiment and keep in mind that it may not be ideal/ |
| 21:12:11 | <merijn> | alestane: unrelatedly: let/in looks atrocious in 'choices' consider just using a where block instead :) |
| 21:12:25 | <merijn> | (In fact, let in almost always looks atrocious :p) |
| 21:13:01 | <alestane> | I tried writing it with where because that was the example I was working from, and it wouldn't compile. So clearly I was missing something. |
| 21:13:56 | <merijn> | alestane: This should work: https://paste.tomsmeding.com/LP1lbfZ4 |
| 21:15:01 | <alestane> | I may also have made a hash of the Haskell whitespace rules (I know that ws is significant in certain constructs, but am still grokking the actual rules). |
| 21:15:27 | <merijn> | alestane: https://en.wikibooks.org/wiki/Haskell/Indentation |
| 21:15:40 | × | dax quits (dax@bitbot/dax) (Quit: brb) |
| 21:15:59 | <alestane> | I know it's basically a syntactic sugar for a braces syntax that isn't used much. |
| 21:16:47 | <alestane> | In any case, I appreciate the guidance. |
| 21:16:54 | <merijn> | alestane: also |
| 21:17:08 | <merijn> | alestane: I would personally probably write choices as something like: https://paste.tomsmeding.com/kdaTWbVH |
| 21:17:17 | <merijn> | alestane: (using an empty line as stop condition) |
| 21:17:24 | → | dax joins (dax@bitbot/dax) |
| 21:17:27 | <alestane> | I haven't really used functional programming since my first undergrad CS class in Scheme lo these many years ago. |
| 21:17:36 | <merijn> | And getting rid of the potential crash that your use of "head" on an empty line potentially has :) |
| 21:18:31 | <alestane> | I tried building the stop condition into the data collection in one of my first attempts. A lot of this has been exploring a curiosity. |
| 21:23:28 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 21:25:19 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 21:26:14 | <alestane> | merijn, what does the <$> in that example accomplish? |
| 21:26:53 | <alestane> | Just better management of expression grouping? |
| 21:27:09 | × | justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Read error: Connection reset by peer) |
| 21:29:08 | <dsal> | :t (<$>) |
| 21:29:10 | <lambdabot> | Functor f => (a -> b) -> f a -> f b |
| 21:29:34 | <solonarv> | (<$>) = fmap -- it's the same thing, just as an infix operator |
| 21:31:02 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 21:31:16 | → | danso joins (~dan@69-165-210-185.cable.teksavvy.com) |
| 21:34:09 | × | geekosaur quits (ae68c070@cpe-174-104-192-112.neo.res.rr.com) (Remote host closed the connection) |
| 21:39:41 | → | aev_software joins (~aev@pool-108-5-152-94.nwrknj.fios.verizon.net) |
| 21:39:48 | <monochrom> | getLine is not lazy. [IO Char] would be an XY problem. KISS and implement a loop body that reads one line and prints one line right away. |
| 21:40:35 | <monochrom> | The current code stands as looping over reading more lines and never does anything else. |
| 21:41:06 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 21:41:15 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) |
| 21:41:22 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Client Quit) |
| 21:41:50 | → | monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) |
| 21:41:52 | → | kupi joins (uid212005@gateway/web/irccloud.com/x-mjbkiotsmhixgetl) |
| 21:44:30 | <ski> | alestane : if you want to `mapM' with a procedure like `putStrLn' that's not producing any interesting output / result value when invoked, it's better to use `mapM_' (since then you don't collect a list of useless `()' values) |
| 21:44:33 | → | z0 joins (~z0@188.250.3.59) |
| 21:46:15 | <z0> | hmm... is the uppercase pi classified as a symbol? ghc is trying to treat it as an operator |
| 21:46:31 | <alestane> | Well, that was test code, but that might be the desirable case in the end. |
| 21:46:48 | <merijn> | z0: Depends which one :p |
| 21:47:02 | <merijn> | > generalCategory 'Π' |
| 21:47:05 | → | sigstuff joins (eclipsed@gateway/shell/gnu/x-jfqyakfbvgumyqie) |
| 21:47:07 | <lambdabot> | UppercaseLetter |
| 21:47:10 | → | GuerrillaMonkey joins (~Jeanne-Ka@66.115.189.209) |
| 21:47:34 | <merijn> | > generalCategory '∏' |
| 21:47:36 | <monochrom> | Yes depends on which one, there are two or more. |
| 21:47:38 | <lambdabot> | MathSymbol |
| 21:47:45 | <ski> | > map isUpper "Π∏" |
| 21:47:48 | <lambdabot> | [True,False] |
| 21:48:18 | ← | sigstuff parts (eclipsed@gateway/shell/gnu/x-jfqyakfbvgumyqie) () |
| 21:48:25 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Quit: mputz) |
| 21:48:32 | <merijn> | z0: Are you sure you have "uppercase pi" (my first example) or "N-ary product" (the second one) :p |
| 21:49:00 | <z0> | ah that might be it |
| 21:49:32 | <z0> | vim digraphs disappointing me again |
| 21:49:53 | × | Jeanne-Kamikaze quits (~Jeanne-Ka@66.115.189.167) (Ping timeout: 265 seconds) |
| 21:52:48 | → | SomeoneSerge joins (~someone-s@37.120.212.76) |
| 21:53:11 | × | urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna) |
| 21:53:44 | <dsal> | I've seen a lot of people use ß for the letter B because they think they look cool and nobody understand how stupid they are. |
| 21:53:48 | × | coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 21:54:57 | <z0> | my bad. turns out i was using *P instead of P* |
| 21:55:08 | <z0> | vim is cool after all |
| 21:56:22 | × | DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...) |
| 21:56:39 | <merijn> | dsal: THe number of Greek restaurants I've seen in the US/UK that use capital sigma as E is frustrating >.> |
| 21:56:54 | <dsal> | Oh. Yeah, that is actually worse. |
| 21:57:05 | → | rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) |
| 21:57:13 | <ski> | merijn : was just about to say .. |
| 21:57:40 | <merijn> | I'm like...the capital E in greek is just E >.< |
| 21:57:46 | <ski> | (well, not restaurants, but the common practice) |
| 21:58:01 | → | coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) |
| 21:58:14 | → | mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
| 21:58:34 | <z0> | i have this convention i use for naming things in personal projects where i use greek letters for some accessors and very rarely for constructors. i cringe everytime i use Α instead of A |
| 21:58:36 | <dsal> | People just universally don't understand the family of s |
| 21:59:36 | <pjb> | merijn: And what about dayak? "DAЯK" |
| 21:59:57 | <pjb> | I can't stand it. |
| 22:00:17 | <ski> | or using an upper case lambda, in place of a `D' |
| 22:00:28 | → | Rudd0 joins (~Rudd0@185.189.115.108) |
| 22:00:47 | <z0> | in my country grocery shop fridges are filled with GRΣΣK YOGURT |
| 22:00:59 | <monochrom> | And the move "My Big Fat Greek Wedding" spells "GRΣΣK". |
| 22:01:12 | ski | shudders |
| 22:01:16 | <pjb> | unbearable. |
| 22:01:27 | × | fendor quits (~fendor@178.115.130.118.wireless.dyn.drei.com) (Remote host closed the connection) |
| 22:01:47 | × | lambda-11235 quits (~lambda-11@2600:1700:7c70:4600:bc15:16d3:5c9f:657f) (Ping timeout: 260 seconds) |
| 22:01:48 | <z0> | and those ridiculous programming langages that use backslash for a lambda. ugh |
| 22:01:54 | <z0> | wait... |
| 22:02:00 | <ski> | haha :) |
| 22:02:16 | × | GuerrillaMonkey quits (~Jeanne-Ka@66.115.189.209) (Ping timeout: 256 seconds) |
| 22:02:21 | <monochrom> | I gave up cringing because I came from getting used to people doing the following: |
| 22:02:42 | → | fendor joins (~fendor@178.115.130.118.wireless.dyn.drei.com) |
| 22:02:50 | <monochrom> | In math channels a beginner would write "x*x -> x^2 = 2x". |
| 22:03:01 | × | Entroacceptor quits (~mad@mad.unserver.de) (Remote host closed the connection) |
| 22:03:23 | <monochrom> | It means "x*x rewrites to x^2, the derivative equals 2x" |
| 22:03:42 | → | DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) |
| 22:03:47 | <monochrom> | In C, = means assignment, == means equal. |
| 22:03:50 | × | fendor quits (~fendor@178.115.130.118.wireless.dyn.drei.com) (Remote host closed the connection) |
| 22:04:07 | <monochrom> | It's human nature. They know the right way, and they must blow it. |
| 22:04:22 | × | drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 256 seconds) |
| 22:04:44 | × | vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov) |
| 22:04:52 | ski | . o O ( "Equality" by Maria Kovalyova,Roman Cheplyaka in 2012-11-15 at <https://ro-che.info/ccc/18> ) |
| 22:05:02 | → | vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
| 22:07:53 | → | drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net) |
| 22:08:42 | → | conal joins (~conal@66.115.176.144) |
| 22:09:15 | × | vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit) |
| 22:09:34 | → | vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) |
| 22:10:39 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 22:11:03 | × | srk quits (~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds) |
| 22:11:23 | × | hexo quits (~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds) |
| 22:11:36 | × | urodna quits (~urodna@unaffiliated/urodna) (Client Quit) |
| 22:12:02 | → | srk joins (~sorki@gateway/tor-sasl/sorki) |
| 22:12:07 | → | hexo joins (~hexo@gateway/tor-sasl/hexo) |
| 22:13:05 | <dminuoso> | • Found type wildcard ‘_’ standing for ‘_’ |
| 22:13:07 | dminuoso | sighs |
| 22:13:15 | → | mounty joins (~mounty@2001:8000:2f59:0:400b:cdf8:4398:2a2e) |
| 22:14:53 | × | conal quits (~conal@66.115.176.144) (Quit: Computer has gone to sleep.) |
| 22:16:03 | → | conal joins (~conal@66.115.176.144) |
| 22:16:43 | × | knupfer quits (~Thunderbi@200116b82c21a800b1a58bfd9064fb73.dip.versatel-1u1.de) (Ping timeout: 258 seconds) |
| 22:18:14 | → | olligobber joins (~olligobbe@unaffiliated/olligobber) |
| 22:18:45 | × | coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
| 22:18:46 | × | alestane quits (~nevin@pool-98-118-117-32.bstnma.fios.verizon.net) (Quit: alestane) |
| 22:19:05 | × | SomeoneSerge quits (~someone-s@37.120.212.76) (Ping timeout: 240 seconds) |
| 22:21:05 | × | quarters quits (~quarters@unaffiliated/quarters) (Ping timeout: 240 seconds) |
| 22:21:06 | → | coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) |
| 22:21:28 | → | SomeoneSerge joins (~someone-s@89.46.223.79) |
| 22:22:16 | × | drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 265 seconds) |
| 22:22:39 | → | alestane joins (~nevin@pool-98-118-117-32.bstnma.fios.verizon.net) |
| 22:23:13 | × | coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
| 22:23:44 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8) (Quit: cosimone) |
| 22:23:52 | × | kenran quits (~kenran@mue-88-130-62-085.dsl.tropolys.de) (Quit: leaving) |
| 22:25:46 | → | coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) |
| 22:25:52 | → | nek0 joins (~nek0@mail.nek0.eu) |
| 22:26:32 | → | fuzzypixelz_ joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
| 22:27:04 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 258 seconds) |
| 22:30:10 | → | fendor joins (~fendor@178.115.130.118.wireless.dyn.drei.com) |
| 22:30:13 | × | fuzzypixelz quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 264 seconds) |
| 22:30:13 | fuzzypixelz_ | is now known as fuzzypixelz |
| 22:32:25 | × | ddellacosta quits (dd@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 246 seconds) |
| 22:33:27 | × | cyphase quits (~cyphase@unaffiliated/cyphase) (Read error: Connection reset by peer) |
| 22:34:20 | <z0> | maybe it's the cuneiform t and not the undersore symbol |
| 22:35:07 | × | MOSCOS quits (~MOSCOS@122.54.107.175) (Remote host closed the connection) |
| 22:35:32 | → | MOSCOS joins (~MOSCOS@122.54.107.175) |
| 22:35:47 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 22:37:20 | → | cyphase joins (~cyphase@unaffiliated/cyphase) |
| 22:39:16 | × | alestane quits (~nevin@pool-98-118-117-32.bstnma.fios.verizon.net) (Quit: alestane) |
| 22:40:51 | → | chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) |
| 22:43:20 | → | wonko7 joins (~wonko7@2a01:e35:2ffb:7040:14a1:46f4:68f7:2133) |
| 22:44:37 | × | hth313 quits (~user@node-1w7jr9qio22jw89j5t7q3mryw.ipv6.telus.net) (Ping timeout: 260 seconds) |
| 22:45:13 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 264 seconds) |
| 22:47:09 | → | lambda-11235 joins (~lambda-11@2600:1700:7c70:4600:bcf8:5fc6:a3cf:8574) |
| 22:47:18 | × | dax quits (dax@bitbot/dax) (Quit: dax) |
| 22:48:31 | × | fendor quits (~fendor@178.115.130.118.wireless.dyn.drei.com) (Remote host closed the connection) |
| 22:51:36 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 22:53:00 | × | conal quits (~conal@66.115.176.144) (Quit: Computer has gone to sleep.) |
| 22:53:26 | → | quarters joins (~quarters@38-73-246-124.starry-inc.net) |
| 22:54:10 | → | alestane joins (~nevin@pool-98-118-117-32.bstnma.fios.verizon.net) |
| 22:58:22 | → | shons joins (~shons@182.1.111.32) |
| 22:58:43 | → | conal_ joins (~conal@64.71.133.70) |
| 22:59:44 | × | chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 23:00:16 | × | thecoffemaker quits (~thecoffem@unaffiliated/thecoffemaker) (Ping timeout: 240 seconds) |
| 23:01:54 | × | xsperry quits (~as@unaffiliated/xsperry) () |
| 23:02:06 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
| 23:04:58 | × | Rembane quits (~Rembane@li346-36.members.linode.com) (Remote host closed the connection) |
| 23:07:14 | → | Rembane joins (~Rembane@li346-36.members.linode.com) |
| 23:08:53 | <quarters> | hello. I'm trying to follow this tutorial https://adit.io/posts/2013-04-15-making-a-website-with-haskell.html while stripping out some of the "magical"/unexplained parts like a number of the import statements and seeing it break and learning by identifying the missing parts that made it break. While doing this, I get an error: https://dpaste.org/zyus error: parse error on input ‘deriving’ and was wondering what the bare minimum |
| 23:08:53 | <quarters> | for addressing this could be |
| 23:09:35 | <Rembane> | quarters: Add the words after the word deriving. :) |
| 23:09:57 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 23:10:05 | × | alestane quits (~nevin@pool-98-118-117-32.bstnma.fios.verizon.net) (Quit: alestane) |
| 23:11:44 | → | alestane joins (~nevin@pool-98-118-117-32.bstnma.fios.verizon.net) |
| 23:11:45 | × | plutoniix quits (~q@node-uhc.pool-125-24.dynamic.totinternet.net) (Quit: Leaving) |
| 23:12:55 | → | cosimone joins (~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8) |
| 23:15:18 | → | thecoffemaker joins (~thecoffem@unaffiliated/thecoffemaker) |
| 23:15:43 | × | Sheilong quits (uid293653@gateway/web/irccloud.com/x-besskplfeidxcvug) (Quit: Connection closed for inactivity) |
| 23:15:50 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 23:16:45 | <quarters> | Rembane: sorry. I don't understand. I tried looking up deriving to see its usage and found this which is also confusinghttps://stackoverflow.com/questions/6082090/haskell-deriving-show-for-custom-type |
| 23:17:01 | <Axman6> | quarters: as far as I understand, the syntax of the quasiquote used by persistent is not the same as the syntax for defining haskell data types |
| 23:17:29 | <Axman6> | I would be surprised if deriving is supported in the quasiquote at all |
| 23:17:36 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 23:17:45 | <quarters> | Axman6: thank you! quasiquote was it! |
| 23:17:50 | <Axman6> | hmm, I'm wrong, sorry |
| 23:18:13 | <quarters> | I now found the reason why {-# LANGUAGE QuasiQuotes #-} |
| 23:18:14 | <quarters> | was included :) |
| 23:18:19 | <quarters> | from here https://gist.githubusercontent.com/egonSchiele/5400694/raw/ed1a15dc0d768ce603ab788ecd149862457533ad/Main.hs |
| 23:18:25 | → | sakirious joins (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) |
| 23:18:29 | <Axman6> | yes, that's what [persist| ... |] is |
| 23:18:29 | <quarters> | which I removed intentionally since there was no explanation of its purpose |
| 23:18:41 | × | danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds) |
| 23:18:49 | × | conal_ quits (~conal@64.71.133.70) (Ping timeout: 265 seconds) |
| 23:18:54 | <quarters> | I'm trying to lazily learn haskell concepts, if that makes sense |
| 23:19:09 | <Axman6> | this does not seem like a good approach to me |
| 23:20:32 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds) |
| 23:21:07 | <Axman6> | and trying to learn haskell by starting with yesod seems like a particularly difficult path, there is _a lot_ magic in yesod |
| 23:21:08 | <merijn> | Axman6: persistent uses deriving in its quasi quoter for, well, adding deriving :p |
| 23:21:16 | <Axman6> | yeah I was wrong |
| 23:22:18 | → | christo joins (~chris@81.96.113.213) |
| 23:22:24 | <Axman6> | without having the whole code I assumed that the quasiquote was working because the extension would have been enabled |
| 23:23:24 | <merijn> | but yeah, randomly copying code and commenting out bits isn't going to be very educational |
| 23:23:38 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:23:42 | × | Alleria_ quits (~AllahuAkb@2604:2000:1484:26:243e:f6eb:6465:f2c9) (Ping timeout: 260 seconds) |
| 23:24:03 | <quarters> | ok. I will rethink my approach then :) |
| 23:24:39 | <Axman6> | asking questions in here when you get stuck on something will be much more fruitful |
| 23:24:53 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:d49:4176:8f36:b5d5) (Remote host closed the connection) |
| 23:24:58 | <quarters> | my concern is that I'll frontload all the learning while losing a lot of it due to disuse |
| 23:24:59 | <monochrom> | This is a good approach if you comment out everything web-related. |
| 23:25:20 | × | solonarv quits (~solonarv@astrasbourg-157-1-27-135.w90-40.abo.wanadoo.fr) (Ping timeout: 256 seconds) |
| 23:25:23 | → | Alleria_ joins (~AllahuAkb@2604:2000:1484:26:bd49:94e5:c539:ee9b) |
| 23:25:33 | <monochrom> | In fact, s/comment out/delete/ |
| 23:26:15 | <Axman6> | the web was a mistake |
| 23:27:44 | <monochrom> | You aspire "one day I'll join NASA and build rockets" so you apply for engineering school and you get admitted. |
| 23:28:15 | <monochrom> | First year courses are basic physics, basic engineering drawing, basic calculus, basic toy examples, basic everything. |
| 23:28:31 | <Axman6> | man, reading that post is just reminding me how painful yesod is |
| 23:28:34 | <monochrom> | That's how you build a rocket. By not starting with "project-based learning". |
| 23:29:16 | <monochrom> | If you don't take Haskell types seriously, there is no way you will understand any of the web frameworks on Hackage. |
| 23:29:25 | <Axman6> | oh it's not even yesod, it's just persistent which is painful |
| 23:29:34 | <monochrom> | It is not enough to "know" them. You have to take them seriously. |
| 23:30:28 | <Axman6> | yeah trying to use a Haskell web framework, except the most stringly typed ones, without having a good grasp of haskell types and some patterns is going to be very painful |
| 23:30:31 | <quarters> | will the hls also be able to suggest pragmas that can fix issues? |
| 23:32:25 | <Axman6> | sometimes... but if hls isn't going to help you if you don't know the language to begin with |
| 23:32:37 | × | cosimone quits (~cosimone@2001:b07:ae5:db26:1fb3:ef3f:ece2:c6f8) (Quit: cosimone) |
| 23:36:31 | × | coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 23:41:36 | × | shenyi quits (uid216035@gateway/web/irccloud.com/x-jphgcsxjzhmtvsqg) (Quit: Connection closed for inactivity) |
| 23:41:59 | <nineonine> | hello everyone. I have 2 packages that I develop locally - `foo` and `bar`. How do I tell Cabal that `bar` should use locally built library from `foo` ? |
| 23:43:14 | → | softwarm joins (4408f588@ip68-8-245-136.sd.sd.cox.net) |
| 23:43:25 | × | Gurkenglas quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 264 seconds) |
| 23:45:42 | <merijn> | nineonine: You want a cabal.project file |
| 23:46:32 | <merijn> | nineonine: Just add a line "packages: " with paths to the cabal files |
| 23:46:40 | <merijn> | https://github.com/merijn/broadcast-chan/blob/master/cabal.project#L1 |
| 23:46:56 | <merijn> | (the other lines are pretty much unnecessary/optional) |
| 23:47:05 | <nineonine> | merijn, many thanks! |
| 23:47:13 | × | bliminse quits (~bliminse@host86-140-186-196.range86-140.btcentralplus.com) (Ping timeout: 260 seconds) |
| 23:47:44 | → | bliminse joins (~bliminse@host86-140-186-196.range86-140.btcentralplus.com) |
| 23:48:54 | × | Kronic quits (~Kronic___@84.203.98.133) (Read error: Connection reset by peer) |
| 23:50:02 | <quarters> | I had thought that the code here https://gist.githubusercontent.com/egonSchiele/5400694/raw/ed1a15dc0d768ce603ab788ecd149862457533ad/Main.hs would run just fine, but I'm seeing this error: "Not in scope: ‘persist’" |
| 23:50:29 | × | __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving) |
| 23:50:36 | × | olligobber quits (~olligobbe@unaffiliated/olligobber) (Ping timeout: 240 seconds) |
| 23:52:06 | → | Vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) |
| 23:55:18 | → | Mikagami joins (~MOSCOS@152.32.70.55) |
| 23:55:32 | × | vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov) |
| 23:56:11 | × | shons quits (~shons@182.1.111.32) (Quit: Leaving) |
| 23:56:58 | × | Vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 260 seconds) |
| 23:58:16 | × | MOSCOS quits (~MOSCOS@122.54.107.175) (Ping timeout: 240 seconds) |
| 23:58:42 | → | MOSCOS joins (~MOSCOS@122.54.107.175) |
All times are in UTC on 2020-12-13.