Home freenode/#haskell: Logs Calendar

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.