Home freenode/#haskell: Logs Calendar

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

00:00:08 <jle`> if you put in the thought about what to do in the empty case (or why it shouldn't come up), then it makes sense to use it
00:00:30 aev_ joins (~aev@pool-108-5-152-94.nwrknj.fios.verizon.net)
00:00:36 <jle`> but just leaving the pattern match can help with thinking about your code
00:00:40 <jle`> and later on when you decide to refactor it
00:00:50 × aev quits (~aev@pool-108-5-152-94.nwrknj.fios.verizon.net) (Read error: Connection reset by peer)
00:00:59 <jle`> i guess they got scared
00:01:05 aev_ is now known as aev
00:02:03 <monochrom> No, they got dodgy connection.
00:02:09 × drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 258 seconds)
00:02:29 <monochrom> Perhaps the router go scared, yes. :)
00:02:36 <aev> oh dear, my connection just broke. And now my nick doesn't work.
00:02:54 <dminuoso> aev: See, partial code causes problems like spurious disconnects.
00:02:59 <aev> :D
00:03:11 <monochrom> No, I/O code does.
00:03:16 <dminuoso> heh
00:03:31 <monochrom> I/O and mutability are the ones worth fighting against.
00:03:55 <monochrom> partial functions *pfft*
00:03:57 <aev> What if I/O is exactly the effect I seek?
00:04:16 <dminuoso> I/O is not a particular effect, it's the sledge hammer of effects.. :)
00:04:27 × o1lo01ol1o quits (~o1lo01ol1@92.250.17.1) (Ping timeout: 258 seconds)
00:04:37 <aev> I really dislike mutability. I worked hard to make all my java applications use immutable data.
00:05:37 <Rembane> aev: How did it go?
00:05:42 <aev> It's what I like about haskell and rust: it appears everything is immutable by default. Unless I haven't seen mutable things yet. Which is possible.
00:06:09 <jle`> yeah, haskell values are all immutable (barring unsafe compiler hacks)
00:06:13 <aev> Rembane: it turned out quite possible, though only through a lot of preparation. And def. not canon java.
00:06:27 × jb55 quits (~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection)
00:06:46 <Rembane> aev: Nice! I didn't think it was really possible. :)
00:06:59 <aev> Using immutable data had an unexpected side effect: my programs are much faster now.
00:07:09 <jle`> we can still describe mutable code, though, so it's nice
00:07:15 <jle`> kind of gets the best of both worlds in a way
00:07:25 <jle`> *mutable algorithms
00:07:54 ski . o O ( (`-Woverlapping-patterns',)`-Wincomplete-patterns',`-Wincomplete-uni-patterns',(`-Wmissing-fields',)`-Wincomplete-record-updates',`-Wpartial-fields' )
00:08:24 <aev> Why doesn't -Wall include -Wincomplete-uni-patterns?
00:09:13 <dminuoso> Why would you think -Wall included *all* warnings?
00:09:17 <dminuoso> Seems quite unreasonable.
00:09:24 × dnlkrgr quits (~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 256 seconds)
00:10:52 <merijn> incomplete-uni-patterns is an annoying warning, that's why :p
00:11:06 <monochrom> all < everything because -Wall turns on a strict subset of -Weverything :)
00:11:36 argento joins (~argent0@168.227.97.34)
00:12:15 <Kronic> Does anyone know if there is anything special that needs to be done to get on-hover type lookups for a stack project with vscode haskell ?
00:12:33 <ski> (also `-Wincomplete-record-updates',`-Wpartial-fields')
00:13:05 <dminuoso> aev: I guess the ratoinale is `-Wall` turns on all the pessimistic warnings you'd likely want, without giving debatable warnings. Some particular examples that come to mind is `-fwarn-missing-import-lists` or `-fwarn-monomorphism-restriction`
00:13:15 <dminuoso> It's very unlikely you'd ever want to see warnings for these
00:13:19 <Kronic> Ah nevermind just restarting the lsp fixed it for some reason
00:13:38 <dminuoso> aev: So the choice of "which warnings should be excluded" is opinionated.
00:13:40 <merijn> dminuoso: That's explicitly the rationale in the user guide
00:13:59 <merijn> Also "-Wall" in gcc is "the standard thing you turn on" and gcc doesn't even *have* a flag to enable all warnings
00:14:17 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:c067:8b42:febe:186b) (Remote host closed the connection)
00:14:58 <dminuoso> merijn: I dont see any rationale for -Wall.
00:15:03 <dminuoso> Just a description of what it does.
00:15:37 <merijn> hmm, maybe I misremembered
00:17:56 × filwisher quits (~filwisher@78.141.201.45) (Ping timeout: 240 seconds)
00:18:32 matryoshka joins (~matryoshk@184.75.223.227)
00:19:12 Vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
00:19:24 Tops2 joins (~Tobias@dyndsl-095-033-093-163.ewe-ip-backbone.de)
00:21:40 <aev> dminuoso: sounds reasonable. Thank you!
00:22:09 × aev quits (~aev@pool-108-5-152-94.nwrknj.fios.verizon.net) (Quit: See you later!)
00:22:50 ski . o O ( "Java Precisely" by Peter Sestoft (of Moscow ML fame) in 2002,2005,2016 at <https://www.itu.dk/people/sestoft/javaprecisely/> )
00:22:51 filwisher joins (~filwisher@78.141.201.45)
00:23:16 × Vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 240 seconds)
00:23:54 mouseghost . o O ( . o O )
00:24:22 × argento quits (~argent0@168.227.97.34) (Ping timeout: 265 seconds)
00:24:24 × vnz quits (~vnz@unaffiliated/vnz) (Quit: ZNC - http://znc.in)
00:25:54 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
00:26:56 × wonko7 quits (~wonko7@lns-bzn-55-82-255-183-4.adsl.proxad.net) (Ping timeout: 240 seconds)
00:28:56 × nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 240 seconds)
00:28:56 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
00:29:13 × seveg quits (~gabriel@2a02-ab04-0249-8d00-3603-db93-c217-257c.dynamic.v6.chello.sk) (Ping timeout: 272 seconds)
00:29:34 drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net)
00:29:59 seveg joins (~gabriel@2a02-ab04-0249-8d00-3603-db93-c217-257c.dynamic.v6.chello.sk)
00:30:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
00:33:06 <koz_> mouseghost: You're thinking about thinking?
00:33:14 <mouseghost> koz_, yes
00:33:34 <mouseghost> about this "emoji"thing
00:33:46 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds)
00:33:53 <monochrom> https://ro-che.info/ccc/9
00:34:35 <koz_> ROFL
00:34:50 <monochrom> Don't forget the lens one, too.
00:34:58 Vulfe joins (~vulfe@2600:1702:31b0:34e0:dd32:f3f6:1e86:cd44)
00:35:41 <koz_> monochrom: Lens one?
00:36:20 <monochrom> https://ro-che.info/ccc/23
00:38:17 <koz_> Lol.
00:38:37 argento joins (~argent0@168.227.97.34)
00:39:20 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
00:39:33 nineonine joins (~nineonine@50.216.62.2)
00:39:37 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:dd32:f3f6:1e86:cd44) (Ping timeout: 260 seconds)
00:39:50 <phaazon> ahah
00:39:55 conal joins (~conal@64.71.133.70)
00:40:01 × acidjnk_new quits (~acidjnk@p200300d0c719ff72385a765c3f0a7348.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
00:40:27 × conal quits (~conal@64.71.133.70) (Client Quit)
00:41:14 conal joins (~conal@64.71.133.70)
00:41:14 × conal quits (~conal@64.71.133.70) (Client Quit)
00:41:53 conal joins (~conal@64.71.133.70)
00:42:01 × conal quits (~conal@64.71.133.70) (Client Quit)
00:43:58 × nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 256 seconds)
00:45:07 × shenyi quits (uid216035@gateway/web/irccloud.com/x-qbidixgzwkexrbur) (Quit: Connection closed for inactivity)
00:45:44 × vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving)
00:46:05 nineonine joins (~nineonine@50.216.62.2)
00:46:15 Vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
00:48:08 × mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew)
00:49:16 × st8less quits (~st8less@inet-167-224-197-181.isp.ozarksgo.net) (Ping timeout: 240 seconds)
00:55:03 codeAlways joins (uid272474@gateway/web/irccloud.com/x-owjpcrxiqhhkvogb)
00:57:24 × xiinotulp quits (~q@ppp-27-55-90-169.revip3.asianet.co.th) (Ping timeout: 256 seconds)
00:58:44 cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net)
01:00:32 × Vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Remote host closed the connection)
01:00:46 × asnyx quits (~asnyx@brettgilio.com) (Quit: Long live IRC! <https://brettgilio.com/irc.html>)
01:00:46 × brettgilio quits (~brettgili@brettgilio.com) (Quit: Long live IRC! <https://brettgilio.com/irc.html>)
01:02:45 × argento quits (~argent0@168.227.97.34) (Ping timeout: 240 seconds)
01:04:22 × star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds)
01:04:57 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:05:28 Vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
01:09:11 xiinotulp joins (~q@node-uks.pool-125-24.dynamic.totinternet.net)
01:09:49 star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
01:09:51 asnyx joins (~asnyx@brettgilio.com)
01:10:00 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
01:10:24 brettgilio joins (~brettgili@brettgilio.com)
01:10:30 × Vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 272 seconds)
01:14:21 × Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
01:16:29 × brettgilio quits (~brettgili@brettgilio.com) (Quit: Long live IRC! <https://brettgilio.com/irc.html>)
01:16:29 × asnyx quits (~asnyx@brettgilio.com) (Quit: Long live IRC! <https://brettgilio.com/irc.html>)
01:17:12 GZJ0X_ joins (~gzj@unaffiliated/gzj)
01:17:56 chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
01:18:00 × maroloccio quits (~marolocci@pousada3ja.mma.com.br) (Quit: WeeChat 2.3)
01:20:01 dnlkrgr joins (~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de)
01:24:05 × dnlkrgr quits (~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 240 seconds)
01:25:58 st8less joins (~st8less@inet-167-224-197-181.isp.ozarksgo.net)
01:26:52 × olligobber quits (~olligobbe@unaffiliated/olligobber) (Remote host closed the connection)
01:26:53 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
01:26:54 Vulfe joins (~vulfe@2600:1702:31b0:34e0:dd32:f3f6:1e86:cd44)
01:27:45 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 240 seconds)
01:28:50 pfurla joins (~pfurla@216.151.180.196)
01:29:22 asnyx joins (~asnyx@brettgilio.com)
01:30:41 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection)
01:31:01 Thoralf joins (~Thoralf__@69.162.230.96)
01:31:03 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
01:31:25 × columbarius quits (~columbari@i5E86B3A7.versanet.de) (Ping timeout: 240 seconds)
01:31:32 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:dd32:f3f6:1e86:cd44) (Ping timeout: 260 seconds)
01:31:53 brettgilio joins (~brettgili@brettgilio.com)
01:34:01 columbarius joins (~columbari@87.123.198.150)
01:37:14 argento joins (~argent0@168.227.97.34)
01:38:51 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:46:09 <Thoralf> Hello. I haven't been irc for a while. I'm just starting into Haskell. I want to do algorithms on abstract datatypes. Are their any particular libraries I should look into?
01:46:23 enedil parts (~enedil@d101-29.icpnet.pl) ()
01:46:58 Lord_of_Life_ joins (~Lord@46.217.220.217)
01:47:34 × Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 246 seconds)
01:48:25 × Ariakenom_ quits (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) (Quit: Leaving)
01:48:34 × asnyx quits (~asnyx@brettgilio.com) (Quit: Long live IRC! <https://brettgilio.com/irc.html>)
01:50:33 Vulfe joins (~vulfe@2600:1702:31b0:34e0:90a6:68cd:a3b5:c04d)
01:50:50 Jeanne-Kamikaze joins (~Jeanne-Ka@66.115.189.177)
01:55:14 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:90a6:68cd:a3b5:c04d) (Ping timeout: 264 seconds)
01:55:48 × matryoshka quits (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
01:56:11 matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
01:57:31 × matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit)
01:57:39 <Kronic> Thoralf, https://www.fpcomplete.com/haskell/learn/ you could see if something here interests you, not sure i have much for the topic you asked for though
01:57:55 matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
01:58:42 vicfred joins (~vicfred@unaffiliated/vicfred)
02:00:21 × nuncanada quits (~dude@179.235.160.168) (Quit: Leaving)
02:00:57 <koz_> Thoralf: That's a very general question. It depends on what algorithms, and what abstract data types.
02:01:34 × drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 246 seconds)
02:02:36 × jespada quits (~jespada@90.254.245.49) (Ping timeout: 240 seconds)
02:03:16 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
02:03:25 × st8less quits (~st8less@inet-167-224-197-181.isp.ozarksgo.net) (Quit: WeeChat 2.9)
02:03:40 Tario joins (~Tario@201.192.165.173)
02:05:29 jespada joins (~jespada@90.254.245.49)
02:08:13 × matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
02:11:53 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
02:13:15 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
02:15:37 × xff0x quits (~fox@2001:1a81:5221:8f00:c3d7:cf86:7125:4808) (Ping timeout: 272 seconds)
02:17:19 xff0x joins (~fox@2001:1a81:525b:e100:290b:d404:9fb5:ba71)
02:17:38 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 260 seconds)
02:18:04 Tario joins (~Tario@201.192.165.173)
02:19:26 cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
02:19:57 × thunderrd quits (~thunderrd@183.182.110.8) (Ping timeout: 246 seconds)
02:22:36 × xsperry quits (~as@unaffiliated/xsperry) (Remote host closed the connection)
02:24:10 rprije joins (~rprije@14-201-170-17.tpgi.com.au)
02:26:11 matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
02:26:22 <dsal> Go möb for maximum abstraction
02:26:39 dsal still hasn't used `möb foldMap`
02:32:37 xsperry joins (~as@unaffiliated/xsperry)
02:33:46 × mbomba quits (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0)
02:34:34 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 260 seconds)
02:35:58 × Tops2 quits (~Tobias@dyndsl-095-033-093-163.ewe-ip-backbone.de) (Read error: Connection reset by peer)
02:38:22 × carlomagno quits (~cararell@148.87.23.8) (Remote host closed the connection)
02:39:04 carlomagno joins (~cararell@148.87.23.5)
02:43:27 Vulfe joins (~vulfe@2600:1702:31b0:34e0:90a6:68cd:a3b5:c04d)
02:46:38 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:48:33 × elliott__ quits (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
02:49:41 FreeBirdLjj joins (~freebirdl@101.228.42.108)
02:51:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
02:51:50 conal joins (~conal@64.71.133.70)
02:54:41 × GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
02:55:00 GZJ0X_ joins (~gzj@unaffiliated/gzj)
02:57:19 × dmiles quits (~dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 260 seconds)
02:58:58 dmiles joins (~dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
02:59:04 × GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
02:59:25 GZJ0X_ joins (~gzj@unaffiliated/gzj)
02:59:53 heatsink_ joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
03:02:26 × heatsink quits (~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) (Ping timeout: 264 seconds)
03:02:26 × chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
03:02:28 × m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 260 seconds)
03:02:45 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:90a6:68cd:a3b5:c04d) (Remote host closed the connection)
03:04:20 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds)
03:05:25 × dmiles quits (~dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 240 seconds)
03:12:21 dmiles joins (~dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
03:12:44 × filwisher quits (~filwisher@78.141.201.45) (Ping timeout: 260 seconds)
03:13:12 × Cthalupa quits (~cthulhu@47.186.47.75) (Ping timeout: 260 seconds)
03:14:17 drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net)
03:14:22 Cthalupa joins (~cthulhu@47.186.47.75)
03:16:38 × matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
03:16:58 matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
03:17:52 × dmiles quits (~dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 246 seconds)
03:18:25 filwisher joins (~filwisher@78.141.201.45)
03:18:34 × drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 246 seconds)
03:19:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:21:55 Vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
03:24:00 × matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
03:24:20 matryoshka joins (~matryoshk@184.75.223.227)
03:24:45 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
03:25:16 × theDon quits (~td@muedsl-82-207-238-169.citykom.de) (Ping timeout: 240 seconds)
03:25:18 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
03:25:25 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
03:27:24 xirhtogal joins (~lagothrix@unaffiliated/lagothrix)
03:27:24 lagothrix is now known as Guest78754
03:27:24 × Guest78754 quits (~lagothrix@unaffiliated/lagothrix) (Killed (hitchcock.freenode.net (Nickname regained by services)))
03:27:24 xirhtogal is now known as lagothrix
03:27:29 theDon joins (~td@94.134.91.51)
03:29:24 × GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
03:30:48 nowhere_man joins (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155)
03:30:56 × MOSCOS quits (~MOSCOS@122.54.107.175) (Remote host closed the connection)
03:31:24 MOSCOS joins (~MOSCOS@122.54.107.175)
03:34:56 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
03:35:46 conal joins (~conal@64.71.133.70)
03:36:34 × conal quits (~conal@64.71.133.70) (Client Quit)
03:37:53 × matryoshka quits (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
03:38:17 matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
03:43:56 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds)
03:45:17 conal joins (~conal@64.71.133.70)
03:47:39 × Kronic quits (~Kronic___@84.203.98.133) (Quit: Leaving)
03:49:32 × fiddlerwoaroof quits (~fiddlerwo@unaffiliated/fiddlerwoaroof) (Quit: Gone.)
03:49:43 × nitrix quits (~nitrix@haskell/developer/nitrix) (Quit: Genius is one percent inspiration and ninety-nine percent perspiration)
03:50:02 fiddlerwoaroof joins (~fiddlerwo@unaffiliated/fiddlerwoaroof)
03:51:27 × Sheilong quits (uid293653@gateway/web/irccloud.com/x-zbtjtxhgvedwatkk) ()
03:52:29 × pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!)
03:53:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
03:53:59 FreeBird_ joins (~freebirdl@101.228.42.108)
03:55:18 × matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
03:55:38 matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
03:56:14 × FreeBirdLjj quits (~freebirdl@101.228.42.108) (Ping timeout: 260 seconds)
03:56:15 × fiddlerwoaroof quits (~fiddlerwo@unaffiliated/fiddlerwoaroof) (Quit: Gone.)
03:56:23 nitrix joins (~nitrix@haskell/developer/nitrix)
03:56:26 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
03:57:18 fiddlerwoaroof joins (~fiddlerwo@unaffiliated/fiddlerwoaroof)
03:58:06 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:58:46 × matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit)
03:59:04 matryoshka joins (~matryoshk@184.75.223.227)
03:59:49 × solonarv_ quits (~solonarv@astrasbourg-157-1-27-135.w90-40.abo.wanadoo.fr) (Ping timeout: 258 seconds)
04:01:08 × fiddlerwoaroof quits (~fiddlerwo@unaffiliated/fiddlerwoaroof) (Client Quit)
04:01:29 FreeBirdLjj joins (~freebirdl@101.228.42.108)
04:01:37 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 246 seconds)
04:02:44 fiddlerwoaroof joins (~fiddlerwo@unaffiliated/fiddlerwoaroof)
04:03:01 × FreeBird_ quits (~freebirdl@101.228.42.108) (Ping timeout: 246 seconds)
04:03:16 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
04:05:47 × Jeanne-Kamikaze quits (~Jeanne-Ka@66.115.189.177) (Quit: Leaving)
04:12:08 × matryoshka quits (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
04:12:21 matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
04:14:26 polyrain joins (~polyrain@58.161.132.217)
04:19:41 geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
04:20:51 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:23:49 wei2912 joins (~wei2912@unaffiliated/wei2912)
04:24:32 × matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
04:25:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
04:26:22 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
04:27:33 conal joins (~conal@64.71.133.70)
04:29:23 sgibber2018 joins (~arch-gibb@208.85.237.137)
04:29:28 rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
04:29:33 × sgibber2018 quits (~arch-gibb@208.85.237.137) (Client Quit)
04:29:50 × conal quits (~conal@64.71.133.70) (Client Quit)
04:29:55 sgibber2018 joins (~arch-gibb@208.85.237.137)
04:30:15 conal joins (~conal@64.71.133.70)
04:30:18 × sgibber2018 quits (~arch-gibb@208.85.237.137) (Client Quit)
04:30:43 sgibber2018 joins (~arch-gibb@208.85.237.137)
04:32:46 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
04:33:45 × rekahsoft quits (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 240 seconds)
04:36:42 chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
04:38:43 × sgibber2018 quits (~arch-gibb@208.85.237.137) (Quit: WeeChat 2.9)
04:40:12 sakirious joins (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
04:43:27 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
04:44:11 DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
04:45:47 × Vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Remote host closed the connection)
04:51:46 × heatsink_ quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
04:53:34 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:54:31 Vulfe joins (~vulfe@2600:1702:31b0:34e0:90a6:68cd:a3b5:c04d)
04:58:51 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:90a6:68cd:a3b5:c04d) (Ping timeout: 258 seconds)
05:03:54 × fiddlerwoaroof quits (~fiddlerwo@unaffiliated/fiddlerwoaroof) (Quit: Gone.)
05:05:21 berberman_ joins (~berberman@unaffiliated/berberman)
05:05:58 fiddlerwoaroof joins (~fiddlerwo@unaffiliated/fiddlerwoaroof)
05:06:48 × Thoralf quits (~Thoralf__@69.162.230.96) (Read error: Connection reset by peer)
05:09:04 × cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
05:11:35 zaquest joins (~notzaques@5.128.210.178)
05:11:50 FreeBird_ joins (~freebirdl@101.228.42.108)
05:13:12 × zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection)
05:13:25 × FreeBirdLjj quits (~freebirdl@101.228.42.108) (Ping timeout: 240 seconds)
05:16:04 Vulfe joins (~vulfe@2600:1702:31b0:34e0:90a6:68cd:a3b5:c04d)
05:18:54 FreeBirdLjj joins (~freebirdl@101.228.42.108)
05:20:47 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:90a6:68cd:a3b5:c04d) (Ping timeout: 260 seconds)
05:21:28 × FreeBird_ quits (~freebirdl@101.228.42.108) (Ping timeout: 258 seconds)
05:21:29 SanchayanMaity joins (~Sanchayan@223.226.34.150)
05:22:32 superstar64 joins (6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net)
05:22:48 <superstar64> are there any versions of the lambda calculus that don't have function application?
05:22:59 <superstar64> like a version that only has composition or something?
05:27:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
05:29:20 plutonux joins (~q@node-uk0.pool-125-24.dynamic.totinternet.net)
05:31:33 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
05:31:41 × klardotsh quits (~klardotsh@c-71-231-242-112.hsd1.wa.comcast.net) (Quit: WeeChat 2.9)
05:32:29 conal joins (~conal@64.71.133.70)
05:32:35 × xiinotulp quits (~q@node-uks.pool-125-24.dynamic.totinternet.net) (Ping timeout: 258 seconds)
05:32:40 × conal quits (~conal@64.71.133.70) (Client Quit)
05:34:39 × chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:38:37 Saukk joins (~Saukk@2001:998:ec:944:a00f:6382:4f0:3e7e)
05:39:14 klardotsh joins (~klardotsh@c-71-231-242-112.hsd1.wa.comcast.net)
05:44:38 <ski> superstar64 : in a cartesian closed category, there is no application, per se (while there is composition). however, there's still an "application morphism" `app : (A -> B) * A >---> B' that plays the role of application
05:46:14 dirediresalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
05:46:14 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
05:47:07 Tario joins (~Tario@201.192.165.173)
05:47:17 × polyrain quits (~polyrain@58.161.132.217) (Quit: My MacBook has gone to sleep. ZZZzzz…)
05:47:47 polyrain joins (~polyrain@2001:8003:e501:6901:4d74:df70:9155:39bf)
05:48:13 <ski> if e.g. `add : Nat * Nat >---> Nat' so that `curry add : Nat >---> (Nat -> Nat)', then `<curry add,id> : Nat >---> (Nat -> Nat) * Nat' and `app . <curry add,id> : Nat >--> Nat' then expresses `\n -> n + n'
05:49:23 × DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Ping timeout: 260 seconds)
05:51:49 <ski> (note that `curry add' is not application of `curry' to `add'. rather `curry f' is a special construct that converts from a morphism `f : A * B >---> C' to a morphism `curry f : A >---> (B -> C)'. another name for `curry f' is `lambda f'. compare with that if `..x..y.. :: C' depending on free variables `x :: A' and `y :: B', then `(\y -> ..x..y..) :: B -> C' depending on free variable `x :: A')
05:52:10 heatsink joins (~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97)
05:52:31 × polyrain quits (~polyrain@2001:8003:e501:6901:4d74:df70:9155:39bf) (Ping timeout: 258 seconds)
05:52:46 <superstar64> right, i need to go back to learning category theory eventually
05:53:50 <superstar64> ski that kinda reminds me of `ArrowApply`
05:53:54 <ski> yes
05:53:57 <ski> @type app
05:53:59 <lambdabot> ArrowApply a => a (a b c, b) c
05:54:32 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:54:37 <ski> except that doesn't really distinguish between the type of morphisms (i wrote `>--->' above), and the type of exponential objects (i wrote `->')
05:55:36 <ski> one could, very roughly, say that category theory is an abstract theory of "first-order functions". morphisms can not take morphisms as "input", nor produce them as output
05:56:08 <ski> in a cartesian closed category, we can simulate higher-order morphisms, by using exponential objects, though
05:56:44 × heatsink quits (~heatsink@2600:1700:bef1:5e10:10df:3645:c218:97) (Ping timeout: 258 seconds)
05:57:18 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
05:57:28 Vulfe joins (~vulfe@2600:1702:31b0:34e0:90a6:68cd:a3b5:c04d)
05:57:39 <superstar64> something like this then right? `data Term = Variable String | Lambda String Term | Compose Term Term | App`
05:58:27 <superstar64> wait, do you need products for this?
05:58:37 <ski> `A >---> B' describes a *set* of morphisms, between the two objects `A' and `B' (in whatever category we're talking about). `A -> B', on the other hand, is an object, can be placed to the left and to the right of `>--->'
05:58:49 <ski> you need products in a cartesian closed category, yes
05:59:34 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
05:59:54 <ski> "something like this then right?" -- is that supposed to represent categorical morphism terms in a cartesian closed category ?
06:00:25 <superstar64> i'm just curious about other types of lambda calculi that don't have native application
06:00:46 <superstar64> like, ski combinator calculi don't have native lambdas right?
06:01:39 <ski> right
06:02:06 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:90a6:68cd:a3b5:c04d) (Ping timeout: 258 seconds)
06:02:37 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 260 seconds)
06:03:12 sgibber2018 joins (~arch-gibb@208.85.237.137)
06:03:20 <ski> (although, i'd say SKI combinators do not form a calculus, since there's no bound/local variables. see <http://lambda-the-ultimate.org/node/533#comment-7712>)
06:04:22 <superstar64> what do i call it then? a turing machine?
06:04:25 <ski> i think most things people would call lambda calculi have application. either as a primitive, or at least as a macro-defined / derived construct
06:05:19 <ski> perhaps you could call it (SKI combinators) a "combinator/combinatory system" ?
06:05:45 <superstar64> wikipedia calls it a calculus https://en.wikipedia.org/wiki/SKI_combinator_calculus
06:06:02 <ski> i'm well aware
06:06:46 <ski> (Turing machines are something specific. SKI combinators are not a machine model of computation, they're a language model. see e.g. <http://existentialtype.wordpress.com/2011/03/16/languages-and-machines>)
06:06:57 <superstar64> some difference
06:06:59 <superstar64> *same
06:07:19 <int-e> . o O ( it's a pointless calculus )
06:07:32 <ski> anyway, i think there's some continuation-based systems, which have lambda, but not a primitive application
06:08:16 <int-e> My real objection to SKI is that the only way I know to make use of it is through abstraction elimination... there's no intuition to it.
06:08:57 × Foritus quits (~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net) (Read error: Connection reset by peer)
06:09:03 <superstar64> well, there's this https://en.wikipedia.org/wiki/B,_C,_K,_W_system
06:09:09 <ski> it's pretty ad hoc yes. (just like Hilbert-style axiomatic systems commonly are)
06:09:13 <int-e> Lambda calculus is pretty much directly programmable once you have a few primitives; abstraction + applicatiin gives you a 'let' binding.
06:09:50 <superstar64> int-e bckw might be more manageable
06:10:03 × urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna)
06:10:12 <ski> not really much better, i'd say
06:10:43 <int-e> superstar64: that really has the same issue, it still only makes sense (to me) through abstraction eliminiation. And the W is awkward.
06:10:46 <int-e> ymmv
06:11:18 <int-e> points -- that is, named values -- turn out to be important for understanding things.
06:12:09 <ski> i guess one should also mention concatenative languages, here ..
06:12:29 <ski> @where Charity
06:12:29 <lambdabot> http://pll.cpsc.ucalgary.ca/charity1/www/home.html
06:12:34 <superstar64> i mean you could augment the ski combinator calculus with let in
06:12:34 <int-e> Is anybody doing BCKS
06:12:46 <ski> superstar64 : ^ that's a language based on categorical composition
06:13:14 <superstar64> cool
06:13:52 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 272 seconds)
06:14:05 Foritus joins (~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net)
06:15:15 <ski> anyway, i guess you could avoid products, if you use multicategories rather than categories ..
06:15:31 <superstar64> what do stack languages use for as stack manipulation primatives?
06:15:58 <superstar64> how would it be to translate them bckw
06:16:48 <ski> stuff like `drop',`dup',`swap',`rot',&c.
06:17:21 <superstar64> i know nothing about concatenative languages
06:17:31 <ski> SKI and BCKW uses application, concatenative languages use composition (of stack-transformers)
06:19:04 <superstar64> well, it's easy to translate a bunch of compositions to bckw, it's the stack transformers that i'm curious about
06:19:08 <ski> `1 2 +' evaluates to `3'. `1 2 + 3 *' evaluates to `9'. `1 2 3 * +' evaluates to `7' (that's reverse polish notation, so far. doesn't need a concatenative explanation)
06:20:09 <nfd> hey, I'm sure there's some Traversable t => a -> t (a -> a) -> a that i'm just not thinking of that chains a value through a bunch of pure transformations, yeah?
06:20:28 <nfd> sitting around in the common library
06:20:36 <superstar64> right, i read about this before https://github.com/leonidas/codeblog/blob/master/2012/2012-02-17-concatenative-haskell.md
06:20:43 <ski> `3 dup *' evaluates to `9', `1 2 3 drop +' evaluates to `3', `1 2 3 4 + swap - +' evaluates to `6'
06:22:01 <nfd> i mean, i can just do this with simple recursion over the list, but something like that sounds really elegant
06:22:22 <ski> `+',`*',`-' takes the two top elements off the stack, performs the arithmetic operation, and pushes the result back on top of the stack. numerals like `1',`2',`3' pushes the corresponding number on top of the stack. `dup' copies/duplicates the top item. `drop' removes the top item. `swap' exchanges the order of the top two items
06:23:11 × nowhere_man quits (~pierre@2a01:e0a:3c7:60d0:e88f:4e24:f6a7:f155) (Remote host closed the connection)
06:23:14 <superstar64> nfd, i think you want foldr or foldl for that
06:24:18 <superstar64> foldMap and Endo might work too
06:24:33 <ski> @type appEndo . foldMap Endo
06:24:35 <lambdabot> Foldable t => t (a -> a) -> a -> a
06:24:45 <ski> @type ala Endo foldMap
06:24:47 <lambdabot> Foldable t => t (b -> b) -> b -> b
06:24:50 <superstar64> ski, i know the extreme basics of concatnative languages, i've just never used them
06:25:06 <ski> ok
06:26:07 <nfd> thanks. I didn't want foldl because the function on the inside is unary
06:26:26 GZJ0X_ joins (~gzj@unaffiliated/gzj)
06:26:33 <ski> @type foldr (.) id
06:26:36 <lambdabot> Foldable t => t (b -> b) -> b -> b
06:27:01 <ski> @type foldr ($)
06:27:03 <lambdabot> Foldable t => a -> t (a -> a) -> a
06:28:07 Vulfe joins (~vulfe@2600:1702:31b0:34e0:162:3ea3:dfa1:29af)
06:28:08 <superstar64> or `foldr id` to make it more confusing
06:28:35 <ski> superstar64 : anyway, i prefer using CPS to get "heterogenous stacks"
06:29:24 <superstar64> i'm not too familiar with CPS either
06:30:56 <superstar64> what would be a good use case for the Cont monad?
06:31:20 × GZJ0X_ quits (~gzj@unaffiliated/gzj) (Ping timeout: 256 seconds)
06:31:36 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:32:46 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:162:3ea3:dfa1:29af) (Ping timeout: 258 seconds)
06:32:55 abhixec joins (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net)
06:34:59 Gurkenglas_ joins (~Gurkengla@unaffiliated/gurkenglas)
06:36:02 christo joins (~chris@81.96.113.213)
06:39:16 × abhixec quits (~abhixec@c-67-169-141-95.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
06:39:59 <c_wraith> mostly it's good for confusing people
06:39:59 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
06:40:08 × plutonux quits (~q@node-uk0.pool-125-24.dynamic.totinternet.net) (Quit: Leaving)
06:40:28 <superstar64> always a good use case
06:41:36 <c_wraith> you can find some literature on using it to linearize control in with-style functions, but it turns out somewhat simpler things like Codensity can solve the same problem with fewer opportunities for bugs
06:41:39 dmiles joins (~dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
06:42:40 × sunetoft quits (~sunetoft@s91904426.blix.com) (Remote host closed the connection)
06:43:37 <ski> > let run f = f id; push x k = k x; dup k x = k x x; drop k _ = k; swap k y x = k x y; uop f k x = k (f x); bop f k y x = k (f x y) in run (push 1 . push 2 . dup . uop succ . push 4 . bop (+) . swap . bop (-) . bop (+))
06:43:40 <lambdabot> 6
06:46:02 <monochrom> http://www.vex.net/~trebla/haskell/cont.xhtml
06:49:03 Lowl3v3l1 joins (~Lowl3v3l@dslb-002-203-233-025.002.203.pools.vodafone-ip.de)
06:49:21 Lowl3v3l1 parts (~Lowl3v3l@dslb-002-203-233-025.002.203.pools.vodafone-ip.de) ()
06:49:28 Vulfe joins (~vulfe@2600:1702:31b0:34e0:162:3ea3:dfa1:29af)
06:49:34 <ski> @where Backus
06:49:34 <lambdabot> "Can Programming Be Liberated from the von Neumann Style?: A Functional Style and Its Algebra of Programs" (Turing Award lecture) by John Warner Backus in 1977-10-17 at <https://amturing.acm.org/
06:49:34 <lambdabot> award_winners/backus_0703524.cfm>,<http://www.thocp.net/biographies/papers/backus_turingaward_lecture.pdf>
06:51:33 × Lowl3v3l quits (~Lowl3v3l@2001:638:1558:99f8::1) (Ping timeout: 258 seconds)
06:51:50 <superstar64> `(\k -> k 1) . (\k -> k 2) :: (Num t1, Num t2) => (t2 -> t1 -> c) -> c`
06:51:57 <superstar64> feels like semantic editor combinators
06:52:06 × brodie quits (~brodie@207.53.253.137) (Quit: brodie)
06:53:13 BusError1 joins (~BusError@84.39.117.57)
06:53:29 heatsink joins (~heatsink@2600:1700:bef1:5e10:f583:3a4a:33e8:d9b1)
06:53:53 nineonin_ joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
06:53:56 × argento quits (~argent0@168.227.97.34) (Quit: leaving)
06:54:07 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:162:3ea3:dfa1:29af) (Ping timeout: 260 seconds)
06:56:30 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:57:25 × nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 240 seconds)
06:58:04 × heatsink quits (~heatsink@2600:1700:bef1:5e10:f583:3a4a:33e8:d9b1) (Ping timeout: 258 seconds)
06:58:53 jamm joins (~jamm@unaffiliated/jamm)
07:00:44 <ski> (iirc, i worked out the above CPS representation of concatenative in Haskell, maybe fifteen years ago, or thereabouts ..)
07:01:04 × nineonin_ quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
07:01:55 <superstar64> jeez, that's a long time ago
07:02:09 polyrain joins (~polyrain@2001:8003:e501:6901:4d74:df70:9155:39bf)
07:03:08 <int-e> > let begin n = n id; end = id; run = ($ id); push c v n = n (c . (\k -> k v)); pop c n = n (c . (\k _ -> k)); uop c f n = n (c . (\k x -> k (f x))); bop c f n = n (c . (\k y x -> k (f x y))); swap c n = n (c . (\k x y -> k y x)) in run $ begin push 4 push 2 push 3 bop (*) uop succ swap bop (-) end
07:03:11 <lambdabot> 3
07:06:01 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
07:06:30 <shachaf> "Codensity is simpler than Cont" is, I guess, an argument you could make.
07:07:12 <ski> int-e : istr seeing some version of that, before
07:07:41 <ski> (maybe a paper or a blag)
07:07:51 <int-e> ski: yeah it has come up before... but I felt an urge to to reconstruct it
07:08:15 <shachaf> I feel like I saw a version without the pushes, but if it was just using Num instances I'm not sure how it would make (*) work as well.
07:08:30 <shachaf> Maybe it just called it mul or something. Or maybe I'm just making things up.
07:08:58 × geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 272 seconds)
07:09:04 <int-e> > let begin n = n []; end [v] = v; push xs x n = n (x : xs); pop (_ : xs) n = n xs; uop (x : xs) f n = n (f x : xs); bop (y : x : xs) f n = n (f x y : xs); swap (x : y : xs) n = n (y : x : xs) in begin push 4 push 2 push 3 bop (*) uop succ swap bop (-) end
07:09:07 <lambdabot> 3
07:09:20 cads joins (~cads@ip-64-72-99-232.lasvegas.net)
07:09:25 <int-e> I think that's closer to the original version.
07:10:07 <ski> being the one in the blag superstar64 linked to ?
07:10:13 <int-e> And in any case, this version is easier to understand.
07:11:05 <int-e> ski: I don't know, didn't look
07:11:28 <ski> > let begin n = n (); end (v,()) = v; push xs x n = n (x,xs); pop (_,xs) n = n xs; uop (x,xs) f n = n (f x,xs); bop (y,(x,xs)) f n = n (f x y,xs); swap (x,(y,xs)) n = n (y,(x,xs)) in begin push 4 push 2 push 3 bop (*) uop succ swap bop (-) end
07:11:30 <lambdabot> 3
07:11:42 <int-e> "original" being something I've toyed with before, probably after seeing it elsewhere.
07:11:52 <ski> ok
07:11:57 <superstar64> ski, are `drop`, `dup`, and `swap` enough to create any permutation the stack?
07:12:03 <ski> no
07:12:05 <int-e> ah. tuples for type-checking. right.
07:12:30 <ski> you'd need `dip' or something like that
07:12:59 <shachaf> Is there an analogy to BCKW?
07:12:59 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
07:13:03 <superstar64> it would be nice if i could make this complete https://gist.github.com/Superstar64/d9262b493da18c32839167ad78247341
07:13:31 × FreeBirdLjj quits (~freebirdl@101.228.42.108) (Remote host closed the connection)
07:13:46 FreeBirdLjj joins (~freebirdl@101.228.42.108)
07:14:16 <int-e> . o O ( "assumtion" is a typo )
07:14:41 <superstar64> i can't spell
07:16:37 <superstar64> i have a half complete c++ version too
07:17:51 <superstar64> ski, what's `dip`?
07:18:04 <ski> superstar64 : `dip' temporarily "lifts" up an element from the stack, and applies a word to the stack underneath it (then puts the lifted element back on top)
07:19:03 <ski> it's a higher-order word. you need to push the word you want to apply, to the top of the stack (Factor calls this a "quotation". see e.g. <https://docs.factorcode.org/content/word-dip%2Ckernel.html>)
07:19:06 <shachaf> I mean, CKW are certainly similar to swap/drop/dup.
07:19:50 <ski> (quotations makes the concatenative model deviate from a plain linear composition of words, adding nesting to it)
07:20:15 × hiroaki quits (~hiroaki@2a02:908:4b1b:20a0::6874) (Ping timeout: 272 seconds)
07:20:31 × pfurla quits (~pfurla@216.151.180.196) (Ping timeout: 265 seconds)
07:21:38 × polyrain quits (~polyrain@2001:8003:e501:6901:4d74:df70:9155:39bf) (Ping timeout: 264 seconds)
07:22:35 <int-e> superstar64: How about a constructor PushAssm :: (Logic g a -> Logic h b) -> Logic (x ': g) a -> Logic (x ': h)
07:22:43 <int-e> ... b
07:23:08 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
07:23:16 <superstar64> what does that do?
07:23:28 <int-e> superstar64: then you can push swaps to any desired depth in the stack. Look at PushAssm (PushAssm ExchangeSwap)
07:24:20 <int-e> (same for contractions and weakenings)
07:24:49 × MarcelineVQ quits (~anja@198.254.202.72) (Ping timeout: 264 seconds)
07:25:02 <superstar64> i'm just trying to picture that the typing rule would look like for `PushAssm`
07:25:23 <ski> > let run f = f id; push x k = k x; dip k w x = w (k x); swap k y x = k x y; cons k xs x = k (x:xs) in run (push 1 . push 2 . push 3 . push 4 . swap . push [] . cons . cons . cons . cons)
07:25:26 <lambdabot> [1,2,4,3]
07:25:28 <ski> > let run f = f id; push x k = k x; dip k w x = w (k x); swap k y x = k x y; cons k xs x = k (x:xs) in run (push 1 . push 2 . push 3 . push 4 . push swap . dip . push [] . cons . cons . cons . cons)
07:25:30 <lambdabot> [1,3,2,4]
07:25:32 <ski> > let run f = f id; push x k = k x; dip k w x = w (k x); swap k y x = k x y; cons k xs x = k (x:xs) in run (push 1 . push 2 . push 3 . push 4 . push (push swap . dip) . dip . push [] . cons . cons . cons . cons)
07:25:34 <lambdabot> [2,1,3,4]
07:26:00 MarcelineVQ joins (~anja@198.254.202.72)
07:26:24 Vulfe joins (~vulfe@2600:1702:31b0:34e0:6112:b849:59e3:f5a8)
07:27:39 <ski> (exercise : express `dip' in the pair-based formulation)
07:27:46 <int-e> superstar64: Oh right, it's not sound. Too bad
07:29:15 <superstar64> wait, isn't `dip` just `flip (.)`?
07:29:39 <ski> in my CPS formulation, yes
07:30:09 <siraben> ski: do you program in this pointfree way a lot?
07:30:21 <ski> .. not really
07:30:31 <int-e> it's a curiosity
07:30:40 <siraben> looks like forth at that point, heh
07:30:41 <int-e> it produces terrible type errors
07:30:55 <ski> siraben : yes, the point was to express concatenative programming
07:31:02 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:6112:b849:59e3:f5a8) (Ping timeout: 258 seconds)
07:32:02 hiroaki joins (~hiroaki@2a02:908:4b1b:20a0::7af8)
07:32:13 × cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
07:32:40 <ski> (see backlog back to about one hour and a quarter of an hour, ago, at least)
07:35:06 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:36:07 <ski> superstar64 : s/Constraction/Contraction/
07:36:19 <superstar64> i really can't spell
07:36:44 <int-e> siraben: hmm, but nothing is stopping you from doing ExchangeSwap :: Logic (delta :++ x ': y ': gamma) a -> Logic (delta :++ y ': x ': gamma) a directly (apart from interfering with type inference)
07:38:34 × Saukk quits (~Saukk@2001:998:ec:944:a00f:6382:4f0:3e7e) (Remote host closed the connection)
07:38:39 <superstar64> int-e did you mean me?
07:39:19 × Aleyna quits (~Aleyna@4e69b241.skybroadband.com) (Ping timeout: 246 seconds)
07:39:56 boxscape joins (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
07:40:09 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
07:40:49 <boxscape> is there some smart (possibly lensy) way if you have a function (a -> a -> a) and two tuples (a, a) to basically zipWith them together?
07:41:00 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
07:41:00 <int-e> superstar64: yes
07:43:14 dnlkrgr joins (~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de)
07:43:47 Vulfe joins (~vulfe@2600:1702:31b0:34e0:280e:dac8:70d3:26e)
07:44:02 <superstar64> boxscape `\f -> join bimap (uncurry f)` maybe?
07:44:53 <koz_> @pl \f -> join bimap (uncurry f)
07:44:53 <lambdabot> join bimap . uncurry
07:45:00 <int-e> :t curry . join (***) . uncurry
07:45:04 <lambdabot> (a -> b -> c) -> (a, b) -> (a, b) -> (c, c)
07:45:09 <boxscape> nice, thanks
07:45:13 <int-e> oh, wrong way...
07:45:18 <boxscape> oh
07:45:28 <ski> @type \f -> curry (join (***) (uncurry f) . ((fst *** fst) &&& (snd *** snd))) -- not terribly elegant ..
07:45:28 <int-e> :t join bimap . uncurry
07:45:30 <lambdabot> (a -> b -> c) -> (a, a) -> (b, b) -> (c, c)
07:45:30 <lambdabot> Bifunctor p => (a -> b -> c) -> p (a, b) (a, b) -> p c c
07:48:17 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:280e:dac8:70d3:26e) (Ping timeout: 258 seconds)
07:49:23 × polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 272 seconds)
07:49:59 olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber)
07:52:26 <ski> @type (uncurry (&&&) . (join (***) *** join (***))) (fst,snd)
07:52:28 <lambdabot> ((a, b), (a, b)) -> ((a, a), (b, b))
07:52:30 <ski> @type (uncurry (&&&) . join (***) (join (***))) (fst,snd)
07:52:32 <lambdabot> ((b, b), (b, b)) -> ((b, b), (b, b))
07:52:48 <ski> @type (fst *** fst) &&& (snd *** snd)
07:52:50 <lambdabot> ((c, b1), (c', b2)) -> ((c, c'), (b1, b2))
07:54:20 heatsink joins (~heatsink@2600:1700:bef1:5e10:f583:3a4a:33e8:d9b1)
07:56:01 <ski> @type let diag x = (x,x); pap (f,g) (x,y) = (f x,g y) in \f x y -> diag f `pap` x `pap` y
07:56:03 <lambdabot> (t1 -> t2 -> b) -> (t1, t1) -> (t2, t2) -> (b, b)
07:56:05 <ski> @type let diag x = (x,x); pap (f,g) (x,y) = (f x,g y) in (pap .) . pap . diag
07:56:08 <lambdabot> (t1 -> t2 -> b) -> (t1, t1) -> (t2, t2) -> (b, b)
07:57:06 <boxscape> why pap?
07:57:13 <ski> "pair apply"
07:57:16 <boxscape> I see
07:57:34 <superstar64> unix level identifiers here
07:57:50 justsomeguy joins (~justsomeg@216.186.218.241)
07:57:50 × justsomeguy quits (~justsomeg@216.186.218.241) (Changing host)
07:57:50 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
07:58:12 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
07:59:01 × heatsink quits (~heatsink@2600:1700:bef1:5e10:f583:3a4a:33e8:d9b1) (Ping timeout: 258 seconds)
07:59:07 sord937 joins (~sord937@gateway/tor-sasl/sord937)
08:00:08 argento joins (~argent0@168.227.97.29)
08:01:44 plutoniix joins (~q@ppp-27-55-91-186.revip3.asianet.co.th)
08:02:56 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 240 seconds)
08:04:54 Vulfe joins (~vulfe@2600:1702:31b0:34e0:7431:bf69:c5fc:f139)
08:05:09 dyeplexer joins (~lol@unaffiliated/terpin)
08:08:26 coot joins (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl)
08:09:22 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:7431:bf69:c5fc:f139) (Ping timeout: 260 seconds)
08:09:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:11:04 × Rudd0 quits (~Rudd0@185.189.115.98) (Ping timeout: 256 seconds)
08:13:56 × argento quits (~argent0@168.227.97.29) (Quit: leaving)
08:15:22 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Read error: Connection reset by peer)
08:16:11 justsomeguy joins (~justsomeg@216.186.218.241)
08:16:11 × justsomeguy quits (~justsomeg@216.186.218.241) (Changing host)
08:16:11 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
08:22:48 × Igloo quits (~igloo@matrix.chaos.earth.li) (Ping timeout: 260 seconds)
08:24:23 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds)
08:26:03 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds)
08:28:30 sord937 joins (~sord937@gateway/tor-sasl/sord937)
08:30:43 toorevitimirp joins (~tooreviti@117.182.180.221)
08:31:12 Vulfe joins (~vulfe@2600:1702:31b0:34e0:648f:75d8:8e88:fb15)
08:32:31 wonko7 joins (~wonko7@2a01:e35:2ffb:7040:14a1:46f4:68f7:2133)
08:32:34 × SanchayanMaity quits (~Sanchayan@223.226.34.150) (Quit: SanchayanMaity)
08:35:49 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:648f:75d8:8e88:fb15) (Ping timeout: 258 seconds)
08:36:55 danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
08:38:24 rayyyy joins (~nanoz@gateway/tor-sasl/nanoz)
08:39:27 Boomerang joins (~Boomerang@xd520f68c.cust.hiper.dk)
08:39:55 × howdoi quits (uid224@gateway/web/irccloud.com/x-yhdmsladghejwjme) (Quit: Connection closed for inactivity)
08:45:31 × FreeBirdLjj quits (~freebirdl@101.228.42.108) (Remote host closed the connection)
08:45:53 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
08:46:08 FreeBirdLjj joins (~freebirdl@101.228.42.108)
08:47:08 Aleyna joins (~Aleyna@4e69b241.skybroadband.com)
08:50:54 × FreeBirdLjj quits (~freebirdl@101.228.42.108) (Ping timeout: 265 seconds)
08:52:58 × jamm quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
08:53:33 × christo quits (~chris@81.96.113.213) (Remote host closed the connection)
08:54:08 jamm joins (~jamm@unaffiliated/jamm)
08:55:06 heatsink joins (~heatsink@2600:1700:bef1:5e10:f583:3a4a:33e8:d9b1)
08:58:23 Igloo joins (~igloo@matrix.chaos.earth.li)
08:59:11 o1lo01ol1o joins (~o1lo01ol1@92.250.93.77)
08:59:26 × heatsink quits (~heatsink@2600:1700:bef1:5e10:f583:3a4a:33e8:d9b1) (Ping timeout: 264 seconds)
09:00:04 × ComaGrayce[m] quits (commagrays@gateway/shell/matrix.org/x-wnllrsfagmchmmsu) (Quit: Idle for 30+ days)
09:00:07 × dominicusin[m] quits (dominicusi@gateway/shell/matrix.org/x-cmzyfydfwudbfyjq) (Quit: Idle for 30+ days)
09:00:25 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
09:00:41 × boxscape quits (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Connection closed)
09:00:51 Vulfe joins (~vulfe@2600:1702:31b0:34e0:70d3:cac2:13bd:e617)
09:02:17 Vulfe_ joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net)
09:03:38 kenran joins (~kenran@mue-88-130-62-159.dsl.tropolys.de)
09:03:46 × o1lo01ol1o quits (~o1lo01ol1@92.250.93.77) (Ping timeout: 256 seconds)
09:05:26 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:70d3:cac2:13bd:e617) (Ping timeout: 264 seconds)
09:06:36 × Vulfe_ quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Ping timeout: 240 seconds)
09:06:46 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Ping timeout: 272 seconds)
09:15:26 × superstar64 quits (6ccefa7c@108-206-250-124.lightspeed.miamfl.sbcglobal.net) (Remote host closed the connection)
09:18:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
09:21:25 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
09:26:46 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds)
09:32:05 acidjnk_new joins (~acidjnk@p200300d0c719ff439996fb92bd8d62ee.dip0.t-ipconnect.de)
09:40:14 m0rphism joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
09:40:25 × _xor quits (~xor@74.215.46.133) (Ping timeout: 246 seconds)
09:41:26 × bliminse quits (~bliminse@host86-140-186-196.range86-140.btcentralplus.com) (Quit: leaving)
09:42:36 _xor joins (~xor@74.215.46.133)
09:43:06 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
09:51:45 × cyphase quits (~cyphase@unaffiliated/cyphase) (Ping timeout: 240 seconds)
09:52:16 × hlysig quits (~hlysig@mobile-194-144-46-247.3G.internet.is) (Ping timeout: 240 seconds)
09:52:39 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
09:52:53 neiluj joins (~jco@91-167-203-101.subs.proxad.net)
09:55:45 heatsink joins (~heatsink@2600:1700:bef1:5e10:5852:737a:bf84:ad99)
09:58:03 × codedmart quits (~codedmart@149.28.9.205) (Quit: ZNC 1.7.5 - https://znc.in)
09:58:18 codedmart joins (~codedmart@149.28.9.205)
09:58:59 × _xor quits (~xor@74.215.46.133) (Read error: Connection reset by peer)
09:59:21 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
09:59:43 _xor joins (~xor@74.215.46.133)
10:00:12 × heatsink quits (~heatsink@2600:1700:bef1:5e10:5852:737a:bf84:ad99) (Ping timeout: 260 seconds)
10:03:31 × keltono quits (~keltono@x-160-94-179-178.acm.umn.edu) (Ping timeout: 246 seconds)
10:04:15 Rudd0 joins (~Rudd0@185.189.115.108)
10:05:20 × Boomerang quits (~Boomerang@xd520f68c.cust.hiper.dk) (Quit: Leaving)
10:06:11 keltono joins (~keltono@x-160-94-179-178.acm.umn.edu)
10:09:38 bitmagie joins (~Thunderbi@200116b806732a00352e66f69926ee2c.dip.versatel-1u1.de)
10:09:58 boxscape joins (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
10:10:03 raichoo joins (~raichoo@dslb-188-100-007-024.188.100.pools.vodafone-ip.de)
10:10:44 <boxscape> % [True, False] ^?! (to . map) (intToDigit . fromEnum) . binary
10:10:44 <yahb> boxscape: 2
10:10:55 <boxscape> is there a more lensy function to use here than `to . map`?
10:12:02 × bitmagie quits (~Thunderbi@200116b806732a00352e66f69926ee2c.dip.versatel-1u1.de) (Client Quit)
10:12:04 Tops2 joins (~Tobias@dyndsl-095-033-025-077.ewe-ip-backbone.de)
10:14:02 bitmagie joins (~Thunderbi@200116b806732a00352e66f69926ee2c.dip.versatel-1u1.de)
10:14:39 LKoen joins (~LKoen@214.175.9.109.rev.sfr.net)
10:15:49 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds)
10:16:09 bliminse joins (~bliminse@host86-140-186-196.range86-140.btcentralplus.com)
10:17:04 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
10:18:36 Codaraxis_ joins (Codaraxis@gateway/vpn/mullvad/codaraxis)
10:20:10 Vulfe joins (~vulfe@2600:1702:31b0:34e0:744b:1304:691e:6e97)
10:20:34 son0p joins (~son0p@181.58.39.182)
10:21:37 × fresheyeball quits (~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com) (Ping timeout: 258 seconds)
10:22:22 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 256 seconds)
10:22:46 × Codaraxis__ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 258 seconds)
10:23:40 fresheyeball joins (~isaac@c-71-237-105-37.hsd1.co.comcast.net)
10:24:38 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:744b:1304:691e:6e97) (Ping timeout: 264 seconds)
10:25:47 × plutoniix quits (~q@ppp-27-55-91-186.revip3.asianet.co.th) (Quit: Leaving)
10:26:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
10:27:34 <boxscape> % ([True, False] & each %~ intToDigit . fromEnum) ^?! binary
10:27:35 <yahb> boxscape: 2
10:27:39 <boxscape> I suppose you can do that
10:30:26 × gentauro quits (~gentauro@unaffiliated/gentauro) (Ping timeout: 258 seconds)
10:32:32 × Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
10:38:34 knupfer joins (~Thunderbi@200116b82c539b00206a0afffea30188.dip.versatel-1u1.de)
10:39:20 × knupfer quits (~Thunderbi@200116b82c539b00206a0afffea30188.dip.versatel-1u1.de) (Remote host closed the connection)
10:39:33 knupfer joins (~Thunderbi@200116b82c539b002c2009fe07c95185.dip.versatel-1u1.de)
10:41:22 × bitmagie quits (~Thunderbi@200116b806732a00352e66f69926ee2c.dip.versatel-1u1.de) (Quit: bitmagie)
10:42:16 gentauro joins (~gentauro@unaffiliated/gentauro)
10:47:30 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
10:47:46 nomeata joins (~jojo@dslb-084-056-082-238.084.056.pools.vodafone-ip.de)
10:52:25 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds)
10:52:40 × rprije quits (~rprije@14-201-170-17.tpgi.com.au) (Ping timeout: 258 seconds)
10:53:43 justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311)
10:54:05 Ariakenom joins (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se)
10:55:10 <iqubic> This is really screwing with me.
10:56:20 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
10:56:28 heatsink joins (~heatsink@2600:1700:bef1:5e10:7900:2404:7a95:fd58)
10:56:30 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:58:05 <boxscape> iqubic are you talking about what I wrote or something else?
10:58:47 <iqubic> I don't like how you are doing [Bool] -> Int via Binary and lenses. It irks me.
10:59:39 <boxscape> Yeah it'd probably make more sense to use `foldl' (\acc x -> acc * 2 + fromEnum x) 0`
11:00:08 <iqubic> as day 5 of this year's Advent of Code tells me, that's also much faster.
11:00:15 <boxscape> interesting
11:00:27 <iqubic> The binary prism really takes a large chunk of time to run.
11:00:28 <int-e> > foldl' (\a d -> a*2 + fromIntegral (fromEnum d)) 0 [True, False]
11:00:35 <lambdabot> 2
11:01:06 × heatsink quits (~heatsink@2600:1700:bef1:5e10:7900:2404:7a95:fd58) (Ping timeout: 258 seconds)
11:01:42 <int-e> Oh, it's converting to a string and then reading as a binary number? eww.
11:01:52 <iqubic> int-e: Yes it is.
11:02:02 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
11:02:11 <int-e> I wrote no code for day 5.
11:02:13 <iqubic> :t intToDigit
11:02:15 <lambdabot> Int -> Char
11:02:59 <boxscape> actually kind of strange that binary doesn't work for text and such
11:03:03 <boxscape> s/text/Text
11:03:09 <int-e> (And I'm not convinced I would have been faster if I had.)
11:03:35 <int-e> :t binary
11:03:37 <lambdabot> (Integral a, Choice p, Applicative f) => p a (f a) -> p String (f String)
11:04:41 <iqubic> For each Bool in the list, turn it into a Int with fromEnum and then turn each Int into a Char with intToDigit. Then run the slow (comparatively) binary prism.
11:05:32 × knupfer quits (~Thunderbi@200116b82c539b002c2009fe07c95185.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
11:07:52 quantumvatican joins (~private@lfbn-idf2-1-504-211.w86-246.abo.wanadoo.fr)
11:09:21 × hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-sljyysfpgmayjhiw) (Quit: Connection closed for inactivity)
11:21:33 × jamm quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
11:22:21 jamm joins (~jamm@unaffiliated/jamm)
11:26:47 × jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 258 seconds)
11:29:04 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
11:31:22 <iqubic> composeAll :: [a -> a] -> a -> a
11:31:25 <iqubic> composeAll fs x = foldl' (\x f -> f x) x fs
11:31:40 <iqubic> This is my favorite function that I've written in a long while.
11:32:47 × dmiles quits (~dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Read error: Connection reset by peer)
11:32:59 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:33:19 <iqubic> I can't simply do "appEndo . foldMap Endo" because that does a foldr and gets the order of the composition all wrong. I'd have to reverse my list first to get that to work.
11:33:19 o1lo01ol1o joins (~o1lo01ol1@188.140.12.65)
11:34:00 dmiles joins (~dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
11:34:20 <boxscape> I was about to suggest `ala Endo foldMap` but I suppose that's the same thing
11:37:00 <iqubic> boxscape: but that will turn "[f, g, h]" into "f . g . h", which is the wrong way around. I need "h . g . f"
11:37:35 <boxscape> iqubic right, I meant it's the same as what you said wouldn't work
11:37:39 <boxscape> % :t \fs x -> foldl' (&) x fs
11:37:40 <yahb> boxscape: Foldable t => t (a -> a) -> a -> a
11:37:41 <boxscape> this would work though
11:38:36 × o1lo01ol1o quits (~o1lo01ol1@188.140.12.65) (Ping timeout: 240 seconds)
11:39:08 <iqubic> It might.
11:39:39 Vulfe joins (~vulfe@2600:1702:31b0:34e0:9562:4afc:5ab:31a9)
11:39:43 <iqubic> What does (&) do?
11:40:02 <iqubic> :t (&)
11:40:06 <lambdabot> a -> (a -> b) -> b
11:40:12 <iqubic> Ah. I see.
11:40:12 <boxscape> it's just `flip ($)`
11:40:36 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
11:41:37 × boxscape quits (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Connection closed)
11:41:47 boxscape joins (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
11:42:10 <iqubic> \fs x -> foldl' (&) x fs works.
11:42:55 × dmiles quits (~dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Ping timeout: 246 seconds)
11:43:24 <iqubic> This is similar to traversing over a container full of state actions, except that I don't care about any intermediate results.
11:44:26 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:9562:4afc:5ab:31a9) (Ping timeout: 264 seconds)
11:45:44 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
11:45:59 <iqubic> I have used Haskell for so long that just making a container full of functions, and then composing them all to get one final function was just the first thing I thought of when seeing today's Advent Of Code puzzle.
11:46:59 × jespada quits (~jespada@90.254.245.49) (Quit: Sleeping)
11:49:29 GZJ0X_ joins (~gzj@unaffiliated/gzj)
11:51:03 <aplainzetakind> Can I define typeclass constraint synonyms?
11:52:09 <boxscape> % type MyConstraint a = (Show a, Eq a) -- like this aplainzetakind?
11:52:09 <yahb> boxscape:
11:52:44 <aplainzetakind> If that works, exactly.
11:52:46 <aplainzetakind> Thanks.
11:52:57 <int-e> iqubic: I saw that the state had four scalars and refrained from that kind of foolishness :P
11:53:02 JuanMiguel joins (~juanmi@50.red-83-55-69.dynamicip.rima-tde.net)
11:53:11 jamm joins (~jamm@unaffiliated/jamm)
11:53:16 <iqubic> what kind of foolishness?
11:53:22 × JuanMiguel quits (~juanmi@50.red-83-55-69.dynamicip.rima-tde.net) (Client Quit)
11:53:31 <int-e> composing a ton of functions
11:55:08 <iqubic> Right. That kind of foolishness isn't too slow though. In fact, it's quite fast.
11:55:51 <int-e> I'm not worried about speed of the resulting code here. I'm worried about overloading my puny brain :P
11:56:57 × rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
11:57:27 × BusError1 quits (~BusError@84.39.117.57) (Remote host closed the connection)
11:57:29 heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net)
11:57:59 <iqubic> Ah. I see. To me, this is just the simplest way to deal with tons of stateful actions in a row in haskell
12:01:05 dmiles joins (~dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
12:01:06 <pja> Q: Is foldl strict in current ghc? I vaguely remember some discussion about switching it over.
12:02:02 × heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 256 seconds)
12:02:11 <iqubic> pja: foldl is not strict. foldl' (note the appostrophe) is strict. Note that you might have to import it from Data.Foldable.
12:02:15 Vulfe joins (~vulfe@2600:1702:31b0:34e0:4196:bf01:8b7b:2503)
12:02:24 <enikar> R: Use foldl' instead.
12:06:01 <boxscape> hm apparently the definition of foldl in base is `foldl f z t = appEndo (getDual (foldMap (Dual . Endo . flip f) t)) z`, interesting
12:06:23 <iqubic> That is? Why!?!
12:06:39 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:4196:bf01:8b7b:2503) (Ping timeout: 258 seconds)
12:06:42 <iqubic> Why not just use the more standard recursive apporoach of:
12:06:45 <int-e> :t appEndo . foldMap Endo
12:06:47 <lambdabot> Foldable t => t (a -> a) -> a -> a
12:06:54 <iqubic> foldl _ [] = []
12:07:04 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
12:07:15 <iqubic> foldl f (x:xs) = f x : foldl f xs
12:07:24 <boxscape> because that's only for lists
12:07:29 <iqubic> Right. I see.
12:08:22 <boxscape> that also looks like foldr to me?
12:08:24 <boxscape> @src foldr
12:08:24 <lambdabot> foldr f z [] = z
12:08:24 <lambdabot> foldr f z (x:xs) = f x (foldr f z xs)
12:08:45 <iqubic> boxscape: No. What I wrote was actual map.
12:08:46 <int-e> it looks like map
12:08:53 <boxscape> oh, right
12:09:09 <int-e> @src foldl
12:09:09 <lambdabot> foldl f z [] = z
12:09:10 <lambdabot> foldl f z (x:xs) = foldl f (f z x) xs
12:09:55 <pja> iqubic: Why did foldl' get moved out of the Prelude? Given that you almost never want the non-strict version this seems a little ... perverse.
12:10:09 <int-e> pja: it was never in Prelude
12:10:22 <iqubic> pja: I'm the wrong person to ask about that, you'll need to ask someone else.
12:10:45 <olligobber> is there any advantage to using f . g $ x over f $ g $ x?
12:10:55 <pja> Wasn’t it? Maybe I’m mis-remembering
12:10:58 <boxscape> you have one fewer ugly dollar sign
12:11:16 <olligobber> I like $ signs, they make up for how little haskell programming pays
12:11:18 × nomeata quits (~jojo@dslb-084-056-082-238.084.056.pools.vodafone-ip.de) (Quit: Client exiting)
12:11:21 <int-e> olligobber: you can factor out the f . g part directly. that's the strongest argument I know off
12:11:28 <int-e> olligobber: largely it just doesn't matter
12:11:33 <olligobber> ok
12:11:49 <iqubic> boxscape: dollar signs are the only way we can keep haskell from looking like lisp with a million parens.
12:12:00 <boxscape> Oh I agree, they're better than parentheses
12:12:04 <boxscape> just not better than dots
12:12:05 <int-e> I've done things like return $ f . g $ x with no regrets.
12:12:26 <olligobber> ew
12:12:35 <int-e> it's punctuation
12:12:37 <iqubic> int-e: That's some cursed haskell there.
12:12:43 <boxscape> ew, return
12:12:51 <int-e> iqubic: "return $" is a single entity to me
12:13:04 <int-e> boxscape: I'm approaching 20 years of Haskell.
12:13:14 <iqubic> Yeah, me too. I just don't like that statement.
12:13:14 <boxscape> heh, fair enough
12:13:48 × Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection)
12:13:50 mananamenos joins (~mananamen@84.122.202.215.dyn.user.ono.com)
12:14:05 <olligobber> apparently I've used return 4 times in advent of code 2020 so far
12:14:13 <int-e> boxscape: I'm slowly switching to "pure" but it's a process.
12:14:37 <int-e> The fingers aren't there yet.
12:14:39 <olligobber> you'd think I would have switched to pure with all the purescript I've been writing, but apparently not
12:14:39 <iqubic> Yeah. Switching to "pure" is certainly a process. I know what you mean.
12:14:50 mastarija joins (~mastarija@93-136-86-23.adsl.net.t-com.hr)
12:14:59 <boxscape> hm "returnscript"
12:15:05 <olligobber> lol
12:15:34 <iqubic> It's just that when I see "pure" at the end of a do block, it feels all sorts of wwrong.
12:15:37 × mananamenos quits (~mananamen@84.122.202.215.dyn.user.ono.com) (Remote host closed the connection)
12:15:50 × madnight quits (~madnight@static.59.103.201.195.clients.your-server.de) (Quit: ZNC 1.7.1 - https://znc.in)
12:15:57 <boxscape> if you see pure at the end of a do block you can replace it with a MonadComprehension and get rid of the pure :)
12:16:00 mananamenos joins (~mananamen@84.122.202.215.dyn.user.ono.com)
12:16:24 drmdst joins (67e75c70@103.231.92.112)
12:16:29 <iqubic> yeah, but that's a whole different can of worms.
12:16:38 <boxscape> that's true
12:18:17 <drmdst> I was told to email hackage-trustees@haskell.org to request permission to upload, but my email is rejected with SPF failure. Which tells me to see details at openspf.net, which doesn't even resolve. But I have valid SPF records, and have no problems sending and receiving mail for the last 10 years. Sooo whoever is running hackage may want to fix
12:18:17 <drmdst> their email.
12:18:24 <[exa]> `pure` looks weird in a do-notation DSL that's aiming to simulate impurity
12:18:26 × olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection)
12:18:57 <int-e> drmdst: #haskell-infrastructure may be a better place for this
12:19:33 <drmdst> int-e: thanks.
12:19:34 <int-e> at the very least it's less likely to scroll off before anybody sees it there
12:19:42 <iqubic> [exa]: that's exactly my take on this "return" vs "pure" dilemma
12:19:53 × wei2912 quits (~wei2912@unaffiliated/wei2912) (Remote host closed the connection)
12:20:04 <int-e> (anybody with the power to fix it)
12:20:17 <boxscape> I could get on board with using `return` only in the context of the imperative DSL and pure everywhere else, I suppose
12:20:35 <iqubic> boxscape: I already do that.
12:20:50 drmdst is now known as amingoia
12:22:36 <boxscape> I think it's still confusing though because if you want a do-block to evaluate to to the result of `someAction :: IO String`, you don't end the do block with `return someAction` like you would in an imperative language, you end it with `someAction`
12:23:01 <boxscape> confusing from the point of view of someone who's trying to learn this and has imperative experience, I mean
12:23:10 <[exa]> the only technical problem is that `return` is in Monad and we're likely not removing it anytime soon b/c a lot of code depends on it
12:23:27 <iqubic> [ex]
12:23:45 <boxscape> [exa] and a lot of educational material uses it
12:24:02 <[exa]> that's the other, slightly lesser problem
12:24:12 <iqubic> [exa]: isn't pulling return out of the Monad typeclass part of the Monad Applicatic proposal?
12:24:36 <[exa]> not sure, but there's been a lot of discussion about that afaik
12:25:10 <boxscape> I'm hoping we can put `join` *into* Monad at some point but apparently roles have to be fixed first...
12:26:21 <[exa]> a tiny bit of extra syntax would help I'd say
12:26:28 × dyeplexer quits (~lol@unaffiliated/terpin) (Ping timeout: 256 seconds)
12:26:48 <boxscape> extra syntax for what?
12:27:06 <iqubic> I don't know the current state of the Monad Applicative proposal is. God, GHC is like a patchwork system that's being held together by duct tape, and any tiny change to any one part of it could affect a completely different part of GHC.
12:27:21 <[exa]> instead of `return` and `pure` in do-notation. Like `-> result` instead of `return result`
12:27:34 <boxscape> hm I see
12:27:46 <iqubic> GHC is the perl of the haskell world.
12:27:57 <[exa]> both `pure` and `return` mean something else, and people apparently want to make the `do` syntax more applicative-ish too
12:28:03 <[exa]> iqubic: +1
12:28:25 × mastarija quits (~mastarija@93-136-86-23.adsl.net.t-com.hr) (Quit: Leaving)
12:28:52 <[exa]> or well, something less over-used than ->... like `= result`. Would also avoid a lot of unnecessary $'s
12:28:57 <iqubic> I mean, GHC has a laundry list of language pragmas you can enable. It doesn't strictly adhere to the 10 year old haskell2010 standard.
12:29:27 <[exa]> I'm saving this as a procrastination project #549234645
12:30:20 dyeplexer joins (~lol@unaffiliated/terpin)
12:31:18 sepples joins (~sepples@67.205.168.224)
12:34:14 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:34:16 × amingoia quits (67e75c70@103.231.92.112) (Remote host closed the connection)
12:34:51 slidercrank1 joins (~slidercra@s91904426.blix.com)
12:36:18 Varis joins (~Tadas@unaffiliated/varis)
12:37:00 geekosaur joins (ac3a8c7e@172.58.140.126)
12:37:04 jpcooper joins (~user@unaffiliated/jpcooper)
12:37:36 <jpcooper> Hello. Are there any examples of people trying to create a custom syntax, maybe with TH, which recreates the functionality seen in J's trains of verbs? https://www.jsoftware.com/help/learning/09.htm
12:39:34 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
12:39:56 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
12:40:34 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
12:40:46 <jpcooper> If not, bagsy
12:42:30 p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515)
12:43:21 <boxscape> % :t ala Endo foldMap' . Reverse -- this isn't any better than your foldl' solution iqubic, but I figured out how to do it with ala without actually reversing the list
12:43:22 <yahb> boxscape: Foldable f => f (b -> b) -> b -> b
12:43:42 <boxscape> (Reverse just changes how foldMap operates rather than reversing the list)
12:44:26 × kenran quits (~kenran@mue-88-130-62-159.dsl.tropolys.de) (Quit: leaving)
12:45:16 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 272 seconds)
12:47:56 × Kaiepi quits (~Kaiepi@47.54.252.148) (Ping timeout: 256 seconds)
12:48:24 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
12:48:33 jpcooper parts (~user@unaffiliated/jpcooper) ("ERC (IRC client for Emacs 26.1)")
12:51:18 drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net)
12:52:16 × hexfive quits (~hexfive@50-47-142-195.evrt.wa.frontiernet.net) (Quit: i must go. my people need me.)
12:53:17 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 260 seconds)
12:53:20 Kronic joins (~Kronic___@84.203.98.133)
12:56:08 Kaiepi joins (~Kaiepi@47.54.252.148)
12:56:54 Vulfe joins (~vulfe@2600:1702:31b0:34e0:b8a0:b828:e101:a624)
12:58:14 heatsink joins (~heatsink@2600:1700:bef1:5e10:b8b7:e159:8e2c:1d1c)
13:00:34 drbean joins (~drbean@TC210-63-209-180.static.apol.com.tw)
13:01:50 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:b8a0:b828:e101:a624) (Ping timeout: 264 seconds)
13:03:02 × heatsink quits (~heatsink@2600:1700:bef1:5e10:b8b7:e159:8e2c:1d1c) (Ping timeout: 264 seconds)
13:03:28 Vulfe joins (~vulfe@2600:1702:31b0:34e0:2934:49bf:39ab:a879)
13:05:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:08:26 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:2934:49bf:39ab:a879) (Ping timeout: 264 seconds)
13:08:31 thunderrd joins (~thunderrd@183.182.111.131)
13:11:36 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
13:11:54 × dnlkrgr quits (~dnlkrgr@HSI-KBW-046-005-005-080.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 265 seconds)
13:12:33 christo joins (~chris@81.96.113.213)
13:12:41 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
13:13:22 × son0p quits (~son0p@181.58.39.182) (Quit: Lost terminal)
13:14:12 × jamm quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
13:14:48 nicren joins (~nicren@81-66-205-86.rev.numericable.fr)
13:15:00 jamm joins (~jamm@unaffiliated/jamm)
13:17:01 <boxscape> hm I don't really understand why ala uses all the Wrapping stuff rather than Coercible
13:18:19 Poscat[m] joins (poscatmatr@gateway/shell/matrix.org/x-bvzvvoefeynvfsar)
13:18:36 dnlkrgr joins (~dnlkrgr@ip-109-42-3-164.web.vodafone.de)
13:19:08 × nicren quits (~nicren@81-66-205-86.rev.numericable.fr) (Client Quit)
13:19:13 <lortabac> maybe ala is older than Coercible?
13:19:29 × jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 258 seconds)
13:19:48 <boxscape> lortabac oh, yeah, that could be
13:20:54 <geekosaur> it definitely is, but one would thik by this point it would have been rewritten; Coercible has been around for a while
13:21:53 <geekosaur> unless they have a need to support pre-Coercible versions of ghc
13:22:17 son0p joins (~son0p@181.136.122.143)
13:22:56 <boxscape> hmm
13:23:03 mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl)
13:23:03 × mouseghost quits (~draco@87-206-9-185.dynamic.chello.pl) (Changing host)
13:23:03 mouseghost joins (~draco@wikipedia/desperek)
13:25:41 jamm joins (~jamm@unaffiliated/jamm)
13:26:24 × Gurkenglas_ quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 265 seconds)
13:29:11 madnight joins (~madnight@static.59.103.201.195.clients.your-server.de)
13:32:03 × MOSCOS quits (~MOSCOS@122.54.107.175) (Remote host closed the connection)
13:32:29 MOSCOS joins (~MOSCOS@122.54.107.175)
13:35:44 solonarv joins (~solonarv@astrasbourg-157-1-27-135.w90-40.abo.wanadoo.fr)
13:36:56 × drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 240 seconds)
13:36:56 fendor joins (~fendor@91.141.1.222.wireless.dyn.drei.com)
13:37:37 berberman joins (~berberman@unaffiliated/berberman)
13:38:16 × dnlkrgr quits (~dnlkrgr@ip-109-42-3-164.web.vodafone.de) (Ping timeout: 240 seconds)
13:38:21 × berberman_ quits (~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds)
13:38:41 <boxscape> % ala' :: forall a f g . (Functor f, Coercible a (g a), Coercible (g a) a) => (a -> g a) -> ((a -> g a) -> f (g a)) -> f a; ala' _ = au (iso coerce coerce)
13:38:41 <yahb> boxscape:
13:38:42 <boxscape> % ala' Sum foldMap [1..5]
13:38:43 <yahb> boxscape: 15
13:38:46 <boxscape> it seems possible at least
13:39:23 <boxscape> edwardk do you know why ala uses Unwrapped rather than Coercible? Is it because no one has bothered to change the implementation since Coercible was introduced, or to support older ghc versions, or some deeper reason?
13:39:43 cosimone joins (~cosimone@93-47-228-249.ip115.fastwebnet.it)
13:40:12 philopsos joins (~caecilius@gateway/tor-sasl/caecilius)
13:40:18 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds)
13:40:23 dnlkrgr joins (~dnlkrgr@HSI-KBW-46-223-1-192.hsi.kabel-badenwuerttemberg.de)
13:40:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
13:40:37 chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
13:41:06 × GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
13:41:26 GZJ0X_ joins (~gzj@unaffiliated/gzj)
13:41:41 <siraben> How can I get infix pattern synonyms?
13:42:05 × GZJ0X_ quits (~gzj@unaffiliated/gzj) (Read error: Connection reset by peer)
13:42:06 <siraben> I'm defining `(.:) :: a -> b -> a.:b` such that `a.:s = (a,s)` and would like to be able to pattern match on it
13:42:20 <siraben> so `dup (a.:s) = a.:a.:s` would work
13:42:25 GZJ0X_ joins (~gzj@unaffiliated/gzj)
13:42:58 <boxscape> siraben it looks like operator patterns have to start with :
13:43:01 Tario joins (~Tario@201.192.165.173)
13:43:09 <boxscape> operator meaning... infix
13:43:59 the-smug-one joins (~user@83-92-112-87-cable.dk.customer.tdc.net)
13:44:36 <boxscape> % pattern a :. s = (a,s) -- siraben
13:44:36 <yahb> boxscape:
13:45:14 × raichoo quits (~raichoo@dslb-188-100-007-024.188.100.pools.vodafone-ip.de) (Quit: Lost terminal)
13:45:48 × Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer)
13:45:59 <siraben> boxscape: thanks
13:46:03 Tario joins (~Tario@201.192.165.173)
13:46:10 Vulfe joins (~vulfe@2600:1702:31b0:34e0:2934:49bf:39ab:a879)
13:47:57 <tomjaguarpaw> Does anyone know why cabal v2-exec doesn't rebuild if the source has changed (but v2-run does)? Is it just because the exact dependenties for a v2-exec can't be determined?
13:48:09 × drbean quits (~drbean@TC210-63-209-180.static.apol.com.tw) (Ping timeout: 265 seconds)
13:49:44 <ephemient> siraben: types, constructors (pattern synonyms use this namespace too): name starts with uppercase or : \\ type variables, values: name starts with non-uppercase letter or non-: punctuation
13:49:51 <[exa]> tomjaguarpaw: cabal exec is meant to run build-tools (ie. not the "current project" or program), cabal run is for running the program
13:50:27 elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
13:50:28 <boxscape> ( ephemient well, type operators don't have to start with : if you use -XTypeOperators )
13:51:17 <siraben> maybe we need PatternOperators too
13:51:37 pavonia joins (~user@unaffiliated/siracusa)
13:52:05 <boxscape> yeah I can't think of a good reason why patterns should have to start with :
13:53:04 <geekosaur> same reason constructors start with uppercase. constructor (including pattern) vs. variable is how pattern matching knows what to match on vs. what's a inding
13:53:05 <ephemient> I think it's just because they act like (de)constructors, so they follow the same rules that constructors do
13:53:09 <geekosaur> *binding
13:53:27 × slidercrank1 quits (~slidercra@s91904426.blix.com) (Remote host closed the connection)
13:53:46 <boxscape> ephemient right, sorry, I meant I can't think of a good reason why infix constructors or patterns should have to start with :
13:53:54 <boxscape> but bindings make sense
13:54:01 <boxscape> I was only thinking of type level bindings, which can't be operators
13:54:06 <boxscape> but I suppose value level bindings can be
13:54:43 <boxscape> % let foo (!) a b = a ! b in foo (+) 1 2
13:54:44 <yahb> boxscape: 3
13:54:45 <boxscape> yeah
13:55:16 <boxscape> hmm how does agda handle thiss
13:57:21 × justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 272 seconds)
13:57:36 <boxscape> looks like it treats it as a binding iff there is no constructor with that name in scope
13:58:25 o1lo01ol1o joins (~o1lo01ol1@31.22.216.239)
13:58:56 o1lo01ol_ joins (~o1lo01ol1@31.22.216.239)
13:59:07 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
13:59:14 gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh)
14:00:16 × o1lo01ol1o quits (~o1lo01ol1@31.22.216.239) (Read error: No route to host)
14:05:09 × GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
14:05:30 GZJ0X_ joins (~gzj@unaffiliated/gzj)
14:06:09 × GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
14:06:30 GZJ0X_ joins (~gzj@unaffiliated/gzj)
14:07:08 × GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
14:07:29 GZJ0X_ joins (~gzj@unaffiliated/gzj)
14:08:08 × GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
14:08:29 GZJ0X_ joins (~gzj@unaffiliated/gzj)
14:08:41 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:bbcd:2474:9519:9fb5:8678)
14:09:09 × GZJ0X_ quits (~gzj@unaffiliated/gzj) (Remote host closed the connection)
14:10:06 <boxscape> % ala Endo foldMap [(+1), (*2)] 4
14:10:07 <yahb> boxscape: 9
14:10:08 <boxscape> % ala' Endo foldMap [(+1), (*2)] 4
14:10:09 <yahb> boxscape: ; <interactive>:70:6: error:; * Occurs check: cannot construct the infinite type: a ~ a -> a; Expected type: (a -> a) -> Endo (a -> a); Actual type: ((a -> a) -> a -> a) -> Endo (a -> a); * In the first argument of ala', namely `Endo'; In the expression: ala' Endo foldMap [(+ 1), (* 2)] 4; In an equation for `it': it = ala' Endo foldMap [(+ 1), (* 2)] 4; * Relevant bi
14:10:23 <boxscape> looks like i didn't quite manage to replicate it actually
14:12:22 drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net)
14:12:26 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
14:12:29 veox joins (~veox@185.163.110.125)
14:14:39 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
14:15:52 hlysig joins (~hlysig@mobile-194-144-46-247.3G.internet.is)
14:18:25 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds)
14:19:51 × sgibber2018 quits (~arch-gibb@208.85.237.137) (Quit: WeeChat 2.9)
14:21:13 <nshepperd2> my dependently typed scanf is coming along well... https://github.com/nshepperd/advent-of-code/blob/master/2020/TScanf.hs
14:22:15 cyphase joins (~cyphase@unaffiliated/cyphase)
14:23:14 <boxscape> nice
14:25:41 <merijn> iqubic: I'm a bit late with this comment, but non-strict foldl is being slain in GHC 9.2 \o/
14:26:02 <nshepperd2> slain how?
14:26:13 × Moyst quits (~moyst@212-149-213-144.bb.dnainternet.fi) (Remote host closed the connection)
14:26:20 × DigitalKiwi quits (~kiwi@unaffiliated/digitalkiwi) (Quit: quite.)
14:26:20 × noan quits (~noan@2604:a880:400:d0::12fc:5001) (Quit: ZNC 1.8.2 - https://znc.in)
14:26:30 <merijn> nshepperd2: foldl is changed to be strict
14:26:41 <merijn> As are sum and product
14:26:43 DigitalKiwi joins (~kiwi@unaffiliated/digitalkiwi)
14:26:45 noan joins (~noan@2604:a880:400:d0::12fc:5001)
14:26:51 Moyst joins (~moyst@212-149-213-144.bb.dnainternet.fi)
14:27:08 <boxscape> huh, vmchale wrote a blog post recently saying that foldl is sometimes better than foldl', unfortunately I'm getting HTTP 500 atm http://blog.vmchale.com/article/fold-haskell
14:27:17 <xerox_> merijn: pretty cool
14:27:50 <merijn> nshepperd2: Cooler heads prevailed and those 2 guys that argued "something might hypothetically break!" were ignored and that 1.5 package on haskell that relies on lazy foldl (I can't imagine how that'd happen) can just deal with it
14:28:08 × dirediresalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
14:28:15 <merijn> boxscape: She's to busy shitposting on twitter to maintain her server ;)
14:28:21 <boxscape> I guess so :D
14:28:38 <nshepperd2> fair enough
14:28:42 dirediresalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
14:28:43 <merijn> I'll check archive.org, because I find ithard to imagine a case where lazy foldl is better
14:29:13 <boxscape> https://web.archive.org/web/20201203003910/http://blog.vmchale.com/article/fold-haskell
14:29:14 <merijn> So far the 5 times it's been brought up on the mailing list people only brought up *hypothetical* breakage, no one has ever provided an example where lazy foldl is preferable
14:29:30 <nshepperd2> this only affects the instance for lists, right?
14:30:11 <boxscape> wait
14:30:20 <boxscape> merijn looks like she just said that foldr is better in that case actually
14:30:46 <merijn> nshepperd2: The Foldable default implementations are changed to strict by default, but instances of Foldable can override that, of course
14:31:07 <merijn> boxscape: That sounds more reasonable
14:31:37 <merijn> No one says foldl' is the best fold, people are just saying foldl' is always better than foldl, making the existence of foldl a dumb curiosity and a useless trap for newbies
14:31:42 <merijn> Same goes for sum and fold
14:31:56 <merijn> The number of times I've ever wanted lazy sum and fold in my life: 0
14:32:33 <merijn> The number of times I forgot that "sum" and "fold" in Prelude where dangerous traps and I should reimplement them using foldl' in my own code: tons of times
14:33:26 <ephemient> lazy sum might make sense with peano numbers, but… that can't matter enough to affect the default
14:33:40 fuzzypixelz joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
14:33:41 <aplainzetakind> What's wrong with this?
14:33:55 <aplainzetakind> Solver a b c is a -> (b, c)
14:33:55 <merijn> nshepperd2: https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4355/diffs
14:34:08 <merijn> nshepperd2: maximum, minimum, etc. are all changed too
14:34:23 <solonarv> ephemient: but then foldr is better than foldl(') anyway!
14:34:59 <ephemient> that is true
14:35:00 <solonarv> foldl and foldl' will not produce anything before traversing the entire list, foldr will (so with foldr (+) 0, you can get the head of your lazy peano natural immediately)
14:35:06 <aplainzetakind> "this" being: https://dpaste.com/3SVPETL2F
14:36:09 <aplainzetakind> I'm getting ambiguous type variable complaints, but don't know where to put what.
14:37:53 matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
14:38:00 <dminuoso> can you include the full error message?
14:39:26 <aplainzetakind> dminuoso: https://dpaste.com/C8NCK3MFT
14:40:12 <dminuoso> Ah yes, the typical `show . read` problem
14:40:26 <aplainzetakind> Not particular to RankNTypes?
14:42:31 __monty__ joins (~toonn@unaffiliated/toonn)
14:43:17 <dminuoso> Ah, not even that. It's quite simple
14:43:33 <dminuoso> aplainzetakind: At what type should `read` be instantiated at?
14:44:12 <dminuoso> % And equivalently, show?
14:44:13 <yahb> dminuoso: ; <interactive>:77:17: error: parse error on input `,'
14:44:14 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:bbcd:2474:9519:9fb5:8678) (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:44:51 <aplainzetakind> dminuoso: Well, the 'a' in the type signature, but thats
14:45:07 <aplainzetakind> that's not how the scopes of type variables work I suppose.
14:45:21 <boxscape> mkSol :: (forall a b . (Read a, Show b) => a -> b) -> String -> String -- here's a simpler type signature with the same problem
14:45:22 <dminuoso> it looks like you're confused about who gets to pick the types
14:45:48 <boxscape> (and corresponding definition: mkSol f = show . f . read)
14:45:53 <dminuoso> aplainzetakind: You as the implementor of mkSol have to/get to instantiate `f` at one or multiple types.
14:46:17 <dminuoso> Not the caller/consumer of mkSol.
14:46:26 <aplainzetakind> Hmm.
14:46:42 <dminuoso> Equivalently you, the implementor of mkSol, as the *consumer/caller* of read *must* decide what to instantiate `read` at.
14:46:58 <boxscape> aplainzetakind if you look at (Read a, Show a), they're constaints for f, not for mkSol, so you can't use read and show of those instances inside mkSol
14:48:01 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:bbcd:2474:9519:9fb5:8678)
14:48:38 <boxscape> aplainzetakind I don't suppose you could just use `mkSol :: forall a b c. (Read a, Show b, Show c) => Solver a b c -> Solver String String String` instead?
14:48:57 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:2934:49bf:39ab:a879) (Ping timeout: 260 seconds)
14:49:16 Saukk joins (~Saukk@2001:998:ec:954:1c59:9bb5:b94c:3)
14:49:31 <aplainzetakind> boxscape: I have Solve a b c's from every day with different a b c's.
14:49:37 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
14:49:44 <boxscape> I see
14:50:04 <aplainzetakind> I want to pool them into a function which takes the day number as a parameter and gives me String -> (String, String)
14:50:05 dminuoso smells an AoC library
14:50:13 <aplainzetakind> dminuoso: Obviously.
14:50:15 <dminuoso> :)
14:50:40 <aplainzetakind> Is this sort of RankNTypes stuff not the right way to go about it?
14:50:53 <dminuoso> aplainzetakind: If you write `f :: (forall s. ... s ...) -> T` then you demand that the argument to `f` *must* be polymorphic.
14:51:07 <dminuoso> aplainzetakind: this gives the implementor of f the chance to instantiate its argument at multiple arguments
14:51:08 <dminuoso> for instance
14:52:04 <dminuoso> % f :: (forall s. Num s => s) -> (String, String); f n = (show @Float n, show @Int n)
14:52:05 <yahb> dminuoso:
14:52:07 <aplainzetakind> This is the whole file: https://dpaste.com/E34G4S5RE
14:52:08 <dminuoso> % f 2
14:52:09 <yahb> dminuoso: ("2.0","2")
14:52:36 <dminuoso> aplainzetakind: ^- this demands, that you call `f` with a polymorphic Num value. You may not pass Int to it, the argument itself has to be polymorphic
14:52:44 <dminuoso> Then f can instantiate its arguments at multiple types as it sees fit
14:52:51 <__monty__> I'm running a criterion benchmark, something along the lines of `nfIO (readFile "myFile.txt" >>= process)` and I'm getting an error "openFile: resource exhausted (Too many open files)" Am I wrong in expecting criterion to fore the value of "process", which would force the value of readFile and close the fd?
14:53:00 dminuoso smells another AoC library
14:53:33 <aplainzetakind> dminuoso: I kind of understand.
14:53:35 <merijn> __monty__: You need to fully evaluate the String you read via readFile
14:53:45 <merijn> __monty__: Or better, don't use the String version of readFile...
14:54:00 <__monty__> Not a library, just my solution benchmark. This has worked fine so far, I'm not sure why it doesn't today.
14:54:19 <aplainzetakind> dminuoso: What I understand indicates that this is not going to solve my problem.
14:54:22 <merijn> __monty__: Actually, better yet even is not separate reading the input from the benchmark
14:54:31 <merijn> s/not//
14:54:34 <dminuoso> aplainzetakind: Right, you just need a regular polymorphic binding. :)
14:54:48 <__monty__> merijn: But I want that included.
14:54:51 <merijn> __monty__: Reading the input shouldn't be part of what your benchmarking, so I'm confused why you have it there
14:55:10 <merijn> __monty__: Why?
14:55:33 <merijn> It's completely arbitrary and dependent on disk contention, filesystem overhead, etc. super noisy and all that
14:55:44 <__monty__> Because it's closer to "Time it takes to run the program to solve for input X."
14:56:00 <dminuoso> aplainzetakind: for `f :: forall a. ... a ...` it is the caller/consumer of `f` that can instantiate `f` at multiple/different choices for the type a. To the implementor of `f` the type is unknown, it has to write code that works over any choice of it.
14:56:07 <dminuoso> aplainzetakind: With rank 2 types it's reversed
14:56:08 <merijn> Well, then you need to do it properly and fully evaluate the input each time
14:56:14 <__monty__> These benchmarks are just for me, not to compete or publish : )
14:56:26 <boxscape> aplainzetakind how about this? https://i.imgur.com/helP7mx.png
14:56:51 <merijn> __monty__: Whether they're "just for you" is rather irrelevant when it comes to making them do something sensible :p
14:56:55 <__monty__> Megaparsec's sepEndBy doesn't consume the entire input?
14:57:08 <aplainzetakind> boxscape: Yeah, that works.
14:57:27 <aplainzetakind> I was confused as to where to make things polymorphic.
14:57:34 <merijn> __monty__: I fail to see how "sepEndBy" and "consuming entire input" are at all related?
14:58:22 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
14:58:30 <merijn> I mean, if you use sepEndBy and fuck up your parser implementation so it doesn't read anything, that seem unrelated to sepEndBy
14:58:51 <__monty__> Imo a realistic result includes the variation that comes with disk IO. Maybe I'd have to up the number of runs to get more reliable values but not measuring it makes the numbers useless to me.
14:59:12 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 265 seconds)
14:59:44 Vulfe joins (~vulfe@2600:1702:31b0:34e0:2934:49bf:39ab:a879)
14:59:48 heatsink joins (~heatsink@2600:1700:bef1:5e10:b8b7:e159:8e2c:1d1c)
15:00:16 <boxscape> aplainzetakind FWIW, this way, the Constraints are locked up inside the Solver, rather than having to be provided by mkSol, which is why it works
15:00:20 <merijn> Then my use readFile from strict text still applies :p
15:01:56 × geekosaur quits (ac3a8c7e@172.58.140.126) (Remote host closed the connection)
15:02:31 <merijn> __monty__: As for why it suddenly doesn't work, criterion keeps running test until it the statistical noise in timings is below a certain threshold
15:02:51 <merijn> __monty__: So if your machine's disk is noisier today, then it will cause more reruns which will run you out of file descriptors
15:02:56 <__monty__> Yeah but why would a file from a previous test stay open?
15:03:02 _linker_ joins (~linker@2a02:a31a:a041:9a80:30fe:7017:9f55:4ae6)
15:03:22 Entertainment joins (~entertain@104.246.132.210)
15:03:27 <merijn> __monty__: Because you're using lazy IO and apparently not consuming it strictly enough to trigger cleanup during GC
15:04:35 × berberman quits (~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in)
15:04:42 × heatsink quits (~heatsink@2600:1700:bef1:5e10:b8b7:e159:8e2c:1d1c) (Ping timeout: 260 seconds)
15:04:55 berberman joins (~berberman@unaffiliated/berberman)
15:05:41 <__monty__> Lesson learned I guess, include eof in your parser if you want to be sure you've read the entire file.
15:06:28 <Kronic> For megaparsec, is there like a list of common examples I can look at -- taking all of the library functions and just trying to glue them together is proving to be quite hard
15:06:44 <__monty__> I was under the impression that eol consumed an eof too. I've always had to use `sepEndBy p eol` instead of `sepBy p eol <* eof`.
15:07:04 <ephemient> if you provide input through Criterion.Main.env, it's deepseq'ed it so that should not have issues either
15:07:10 sm[m] has a eolof
15:07:28 <merijn> ephemient: Yes, but that lifts the input out of the benchmark (as I said he should), but he doesn't want that
15:07:59 <ephemient> whoops, I missed reading wherever that was. why not though
15:08:17 × Codaraxis_ quits (Codaraxis@gateway/vpn/mullvad/codaraxis) (Read error: Connection reset by peer)
15:09:15 <__monty__> Because reading the input seems to be most of the work timing-wise. Makes comparing to others' results useless. I think by using criterion I'm already not measuring loading up the GHC runtime?
15:10:50 × Saukk quits (~Saukk@2001:998:ec:954:1c59:9bb5:b94c:3) (Remote host closed the connection)
15:10:58 <__monty__> Kronic: You'll probably want to use some of the combinators from the parser-combinators package. I'm not sure there's any simple reference to look at other than the megaparsec tutorial, maybe the parsec documentation? Or AoC repos if you don't mind spoilers : )
15:11:04 <merijn> "comparing to others' results" and looking at more than order of magnitude is already useless
15:11:20 <boxscape> aplainzetakind also, basically, what you would want in your original type signature is exists instead of forall. Which doesn't exist, so I used an existential type as one of at least two possible encodings (Though apparently Richard Eisenberg is working on adding native existential quantification)
15:11:21 <merijn> This just in: Benchmarking properly is hard and trusting *anyone* else's benchmarks is folly
15:11:35 <__monty__> That's what I'm doing. But disk IO can easily make an order of magnitude of difference.
15:11:45 FreeBirdLjj joins (~freebirdl@101.228.42.108)
15:11:46 <merijn> __monty__: And if you don't care to the level of precision of doing it properly, then there's little to no gain from benchmarking file IO
15:12:04 <Kronic> Trying to avoid spoilers! I'm using AOC as a way to teach myself things like parsers and lenses. I guess I will re-read their tutorial and see what I can find
15:12:06 <merijn> __monty__: If you're already benchmarking everything yourself you can just factor out the cost of disk access
15:12:38 <ephemient> IO speeds also vary greatly on depending on OS, hardware, other IO, and caching. assuming it's in hot cache, reading a few kB from page cache isn't going to outweigh the computation time.
15:12:55 <merijn> Kronic: tbh, the AoC problems aren't very well suited to parser combinators (you can use them, naturally, but the problems are small and simple enough that parser combinators have a lot of mental overhead compared to the simple problem)
15:13:10 × dmiles quits (~dmiles@c-73-67-179-188.hsd1.wa.comcast.net) (Read error: Connection reset by peer)
15:13:45 <Kronic> That's true, but I'm not solving AOC to solve AOC, I'm solving AOC to learn Haskell bits of Haskell in a fun way
15:13:48 <__monty__> It's been easy going since day 7 imo : )
15:13:52 <merijn> If there's anything I've learned from my HPC it's this. There's two kinds of benchmarks: obviously wrong ones and subtly wrong ones ;)
15:14:27 dmiles joins (~dmiles@c-73-67-179-188.hsd1.wa.comcast.net)
15:14:36 <__monty__> I just want something that's a little more reliable than "time dayXY".
15:14:39 × infinity0 quits (~infinity0@freenet/developer/infinity0) (Ping timeout: 260 seconds)
15:14:40 <siraben> How do I properly use Kleisli? `runKleisli (P.getChar >>> ord >>> return ())` doesn't seem to work but I'm confused as to why
15:14:46 <siraben> I thought >>> would take the place of `>=>` here?
15:14:58 infinity0 joins (~infinity0@freenet/developer/infinity0)
15:15:16 <merijn> Kronic: Sure, I'm just saying that parser combinators can feel less practical than they are due to the lightweight problems
15:15:49 × drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 260 seconds)
15:16:04 × FreeBirdLjj quits (~freebirdl@101.228.42.108) (Ping timeout: 246 seconds)
15:16:28 <Kronic> That's fair, I definitely see the value in learning them, I just figured being able to build a simple one would teach me a few things
15:17:20 × o1lo01ol_ quits (~o1lo01ol1@31.22.216.239) (Remote host closed the connection)
15:18:11 <merijn> Kronic: tbh, a slightly more complex input with a well-defined grammar is probably easier (something like SMTP or HTTP), iirc attoparsec's benchmarks had a full HTTP parser in less than 100 lines
15:18:36 <boxscape> aplainzetakind here's a version using another encoding of existential quantification, without an existential type https://i.imgur.com/yEgviU4.png
15:18:42 <merijn> I guess a slightly more modern version would be something like JSON
15:18:52 <siraben> `runKleisli (Kleisli P.putStrLn . Kleisli P.readFile)` ooh
15:21:05 <merijn> Kronic: oh, 65 lines even, 18 of which are imports/exports :p
15:21:39 ktor joins (~sailfish@adsl-dyn204.78-98-180.t-com.sk)
15:21:51 × dmiles quits (~dmiles@c-73-67-179-188.hsd1.wa.comcast.net) ()
15:22:02 × ktor quits (~sailfish@adsl-dyn204.78-98-180.t-com.sk) (Client Quit)
15:22:35 <xerox_> siraben: I remember using such a construction once but I can't remember why
15:22:47 × Jajik quits (xchlup2@gateway/shell/fi.muni.cz/x-iogrzypdphdyrmwo) (Quit: Ping timeout (120 seconds))
15:22:47 × xsarnik0 quits (xsarnik@gateway/shell/fi.muni.cz/x-ctybhcsimuoygovq) (Quit: Ping timeout (120 seconds))
15:25:10 xsarnik0 joins (xsarnik@gateway/shell/fi.muni.cz/x-sopdpeeczzokwttj)
15:25:54 <siraben> xerox_: i'm trying to generalize https://github.com/leonidas/codeblog/blob/master/2012/2012-02-17-concatenative-haskell.md
15:26:03 <siraben> generalize `>=>` to any Kleisli category
15:26:22 <xerox_> siraben: which '.' was that?
15:27:00 <merijn> Control.Category.. presumably
15:27:07 × mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew)
15:27:28 <xerox_> aah
15:27:40 <xerox_> ok that matches
15:27:51 <siraben> xerox_: yeah control.category
15:28:55 Jajik joins (xchlup2@gateway/shell/fi.muni.cz/x-jeuscridzgvbxynx)
15:31:55 <siraben> Has anyone used the time traveling/backwards State monad and for what purpose?
15:31:56 <siraben> Single pass assembler seems cool
15:32:04 justanotheruser joins (~justanoth@unaffiliated/justanotheruser)
15:32:55 × jamm quits (~jamm@unaffiliated/jamm) (Remote host closed the connection)
15:34:53 × russruss84 quits (~russruss@my.russellmcc.com) (Quit: The Lounge - https://thelounge.chat)
15:35:14 russruss84 joins (~russruss@my.russellmcc.com)
15:35:19 russruss84 is now known as russruss
15:35:26 × dirediresalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
15:35:26 × russruss quits (~russruss@my.russellmcc.com) (Client Quit)
15:35:44 russruss joins (~russruss@my.russellmcc.com)
15:36:19 dirediresalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
15:37:40 <boxscape> is there a way to make ex2 here work? And why doesn't it work? https://dpaste.com/EWFBYEE4Z
15:38:49 urodna joins (~urodna@unaffiliated/urodna)
15:39:21 <boxscape> Oh you need impredicative types for this don't you
15:39:31 <c_wraith> yes
15:39:42 <c_wraith> for it to work you need to instantiate map polymorphically
15:40:41 <c_wraith> And the list literal, for that matter
15:41:26 <c_wraith> Is the Quick Look stuff due in the next version of GHC?
15:41:31 <boxscape> c_wraith ah, yeah, if I use map @Ex it works
15:41:57 <boxscape> (with pre-quick-look impredicativity)
15:43:52 <boxscape> c_wraith also, yes, quick look is merged into master
15:44:42 <c_wraith> cool. I can't wait to play with that. Hopefully there will be some places it works well enough to be a real ergonomic improvement
15:44:52 <boxscape> yeah
15:45:33 drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net)
15:47:28 <Boarders> Does anyone know a fast way to compare mutable unboxed vectors?
15:48:50 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:bbcd:2474:9519:9fb5:8678) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:50:08 mouseghost joins (~draco@wikipedia/desperek)
15:52:42 vnz joins (~vnz@51.15.143.225)
15:52:43 × vnz quits (~vnz@51.15.143.225) (Changing host)
15:52:43 vnz joins (~vnz@unaffiliated/vnz)
15:57:47 kenran joins (~kenran@mue-88-130-62-159.dsl.tropolys.de)
15:57:55 × kenran quits (~kenran@mue-88-130-62-159.dsl.tropolys.de) (Client Quit)
15:58:10 × drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 265 seconds)
15:58:42 kenran joins (~kenran@mue-88-130-62-159.dsl.tropolys.de)
15:59:34 × chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:00:15 × kenran quits (~kenran@mue-88-130-62-159.dsl.tropolys.de) (Client Quit)
16:00:33 heatsink joins (~heatsink@2600:1700:bef1:5e10:b8b7:e159:8e2c:1d1c)
16:00:58 kenran joins (~kenran@mue-88-130-62-159.dsl.tropolys.de)
16:01:57 drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net)
16:05:05 × heatsink quits (~heatsink@2600:1700:bef1:5e10:b8b7:e159:8e2c:1d1c) (Ping timeout: 258 seconds)
16:08:02 × mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
16:08:29 × LKoen quits (~LKoen@214.175.9.109.rev.sfr.net) (Remote host closed the connection)
16:08:56 Gurkenglas_ joins (~Gurkengla@unaffiliated/gurkenglas)
16:09:37 × the-smug-one quits (~user@83-92-112-87-cable.dk.customer.tdc.net) (Ping timeout: 246 seconds)
16:13:41 <exarkun> What do I read to learn more about the execution model of Conduits? The implementation?
16:14:36 heatsink joins (~heatsink@2600:1700:bef1:5e10:b8b7:e159:8e2c:1d1c)
16:15:03 × boxscape quits (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Quit: Connection closed)
16:15:19 <sm[m]> exarkun: michael snoyman's blog posts about it, maybe
16:15:44 boxscape joins (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
16:16:25 <c_wraith> if you go to his blog, be aware the implementation has changed several times - make sure you find posts describing the implementation you're using
16:16:31 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
16:18:19 <sm[m]> yes
16:19:23 <exarkun> is there a trick to find all the conduit posts or do I just have to manual scan the whole archive :/
16:19:42 knupfer joins (~Thunderbi@200116b82c539b00d4a140fffe29ef76.dip.versatel-1u1.de)
16:20:01 × Entertainment quits (~entertain@104.246.132.210) (Ping timeout: 264 seconds)
16:20:37 knupfer1 joins (~Thunderbi@200116b82c539b0098bdfcc50eb54675.dip.versatel-1u1.de)
16:20:38 × knupfer quits (~Thunderbi@200116b82c539b00d4a140fffe29ef76.dip.versatel-1u1.de) (Remote host closed the connection)
16:20:38 knupfer1 is now known as knupfer
16:20:43 <exarkun> (kind of a rhetorical question)
16:20:49 <merijn> Tekmo also did a bunch of posts on pipes and contrasting them with conduit
16:20:56 mastarija joins (~mastarija@93-136-128-137.adsl.net.t-com.hr)
16:21:13 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 264 seconds)
16:22:23 <merijn> exarkun: https://kseo.github.io/posts/2017-01-25-write-your-own-stream-processing-library-part1.html ?
16:24:26 hekkaidekapus} joins (~tchouri@gateway/tor-sasl/hekkaidekapus)
16:24:54 machinedgod joins (~machinedg@24.105.81.50)
16:26:23 × hekkaidekapus{ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds)
16:27:01 <exarkun> Hmm maybe that will help, I dunno. Thanks though. I'm kind of unsure what my question really is. I just want to understand better :/
16:28:39 × son0p quits (~son0p@181.136.122.143) (Quit: leaving)
16:29:22 hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net)
16:30:56 <sm[m]> scanning a blog archive isn't that hard :)
16:31:23 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:32:41 <monochrom> In an ideal world, this would be right in the doc, not need to google or find blogs...
16:33:41 kritzefitz joins (~kritzefit@212.86.56.80)
16:37:42 <merijn> monochrom: And then the link dies because MS redoes the MSR website and giving a shit about durable URLs is so passe and Web1.0 ;)
16:37:49 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:2934:49bf:39ab:a879) (Remote host closed the connection)
16:38:54 × tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Quit: Off to see the wizard.)
16:40:07 patrickp joins (~patrickp@windows98.dev)
16:40:54 <monochrom> This happened to cabal[-install] too when v2 first came out. Instead of putting the new information in the user guide where it belongs, "I'm so excited I'll blog it"
16:41:22 × Jajik quits (xchlup2@gateway/shell/fi.muni.cz/x-jeuscridzgvbxynx) (Quit: Ping timeout (120 seconds))
16:41:22 × xsarnik0 quits (xsarnik@gateway/shell/fi.muni.cz/x-sopdpeeczzokwttj) (Quit: Ping timeout (120 seconds))
16:41:31 tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64)
16:41:40 <monochrom> The irony being if you blog it and then just copying the blog post into the user guide, that's already infinitely better and at no extra cost.
16:42:32 Vulfe joins (~vulfe@2600:1702:31b0:34e0:2934:49bf:39ab:a879)
16:43:26 <monochrom> This happened to backpack too. The necessary information, even merely user-facing one, was not entered into the GHC user guide or the cabal user guide. Instead, it's a bunch of blog posts.
16:43:27 <Kronic> What is a decent web framework to start out with as a beginner that has an easy to follow tutorial?
16:44:19 Jajik joins (xchlup2@gateway/shell/fi.muni.cz/x-bbqnixzbgkvhiykp)
16:44:31 xsarnik0 joins (xsarnik@gateway/shell/fi.muni.cz/x-ddaekukwitkncfss)
16:44:32 × codeAlways quits (uid272474@gateway/web/irccloud.com/x-owjpcrxiqhhkvogb) (Quit: Connection closed for inactivity)
16:44:44 <monochrom> In that case it was fortunate that the author also had a PhD thesis due, so what I did was I went straight for the thesis. An author has much more incentive in making a PhD thesis complete and coherent than making a blog so.
16:46:24 <merijn> monochrom: Man...trigger warnings >.>
16:46:45 <sm[m]> are we sure it's not in the doc ?
16:47:21 × gawen quits (~gawen@movzbl.root.sx) (Quit: cya)
16:47:30 <merijn> monochrom: I come here to peacefully procrastinate from writing and you gotta throw that stuff out there in plain sight >.>
16:47:47 <sm[m]> (exarkun?)
16:48:03 polyphem joins (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
16:48:14 <sm[m]> Kronic: scotty is simplest, yesod is most mature and fully documented, IHP is newest and funnest
16:48:21 conal joins (~conal@64.71.133.70)
16:48:34 <Kronic> Are they all actively maintained ?
16:48:45 <sm[m]> the last two are at least
16:49:36 gawen joins (~gawen@movzbl.root.sx)
16:49:49 Entertainment joins (~entertain@104.246.132.210)
16:49:53 × Entertainment quits (~entertain@104.246.132.210) (Client Quit)
16:49:57 <Kronic> Seems Scotty is maintained, I'll give it a shot I guess
16:50:18 × knupfer quits (~Thunderbi@200116b82c539b0098bdfcc50eb54675.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
16:51:16 LKoen joins (~LKoen@214.175.9.109.rev.sfr.net)
16:52:05 × conal quits (~conal@64.71.133.70) (Client Quit)
16:52:15 geekosaur joins (ac3a541c@172.58.84.28)
16:52:52 × quantumvatican quits (~private@lfbn-idf2-1-504-211.w86-246.abo.wanadoo.fr) (Quit: Lost terminal)
16:53:15 × justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) ()
16:54:02 <geekosaur> the FadeHooks could probably use some work, I was basically cribbing from other code without knowing what I was doing at the time
16:54:50 <geekosaur> so there may be a more fundamental bug to fix under this, since I didn't intend just throwing away actions
16:54:51 <monochrom> FadeHooks is an interesting name...
16:54:57 <geekosaur> whoops
16:55:03 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
16:55:05 <geekosaur> I keep forgetting what channel I'm in
17:03:50 <maerwald> is there a way to reasonably figure out the highest base constraint of a package without running a full resolution?
17:03:52 HarveyPwca joins (~HarveyPwc@c-98-220-98-201.hsd1.il.comcast.net)
17:04:19 <exarkun> sm[m]: It doesn't seem to be in the README which is a large part of the "official" docs, and I can't deduce it from the API docs, though maybe a more expert Haskeller could
17:04:50 <sm[m]> exarkun: just curious what's missing exactly ? I had a quick look and the conduit docs seem excellent
17:04:50 × hlysig quits (~hlysig@mobile-194-144-46-247.3G.internet.is) (Remote host closed the connection)
17:04:53 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 258 seconds)
17:05:09 <merijn> sm[m]: They don't talk about how they're implemented, though
17:05:18 <merijn> sm[m]: Which is what he was asking :)
17:05:23 <sm[m]> what about the presentation ?
17:05:38 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
17:05:39 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:2934:49bf:39ab:a879) (Remote host closed the connection)
17:06:14 <sm[m]> if not there, then I agree it would be great to link some of that history to the readme. The posts (his, Gabriel's, maybe others) were very informative
17:06:57 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
17:09:52 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
17:10:05 <sm[m]> presentation seems rather detailed. Maybe that LambdaConf 2017 talk was published ?
17:10:46 <sm[m]> yes indeed, https://www.google.com/search?client=safari&rls=en&q=LambdaConf+2017+michael+snoyman&ie=UTF-8&oe=UTF-8
17:11:38 × mananamenos quits (~mananamen@84.122.202.215.dyn.user.ono.com) (Read error: Connection reset by peer)
17:11:47 shenyi joins (uid216035@gateway/web/irccloud.com/x-rigdbqxfostrvmoh)
17:12:13 × drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 264 seconds)
17:13:17 Vulfe joins (~vulfe@2600:1702:31b0:34e0:2934:49bf:39ab:a879)
17:13:36 × filwisher quits (~filwisher@78.141.201.45) (Ping timeout: 240 seconds)
17:13:56 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds)
17:15:01 knupfer joins (~Thunderbi@i59F7FF2B.versanet.de)
17:15:41 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
17:17:07 juuandyy joins (~juuandyy@90.166.144.65)
17:17:14 amerigo joins (uid331857@gateway/web/irccloud.com/x-vjipgcwqkmvmljqz)
17:17:28 <exarkun> sm[m]: I am trying to implement a first-ready composition function
17:17:50 o1lo01ol1o joins (~o1lo01ol1@31.22.216.239)
17:17:57 <exarkun> sm[m]: I don't know if this is even a coherent thing to want from Conduit
17:18:07 <exarkun> sm[m]: It seems like a basic thing to want so maybe there's a good reason it's missing
17:18:16 <exarkun> sm[m]: Or maybe it's not even missing but I can't recognize it in the docs
17:18:55 × boxscape quits (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Ping timeout: 246 seconds)
17:19:12 <sm[m]> Maybe.. here I defer to others
17:19:27 <exarkun> If it is coherent and doesn't exist then I'm not sure what tools I should reach for to implement it
17:19:52 <exarkun> Threads to run each component separately from each other?
17:20:06 <exarkun> Or is there something in the Conduit implementation that would make some other strategy better?
17:20:29 filwisher joins (~filwisher@78.141.201.45)
17:20:55 boxscape joins (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
17:22:18 <exarkun> I guess Conduit is probably all single threaded and it just calls functions to get a value from the first component and then calls some functions to pass it to the second, and so on ... but it seems like I have to guess or read the implementation to find out
17:22:26 × o1lo01ol1o quits (~o1lo01ol1@31.22.216.239) (Ping timeout: 256 seconds)
17:22:39 <dminuoso> exarkun: Have you tried looking at the implementation?
17:23:06 <merijn> exarkun: Conduit is (mostly) intended for single threaded processing, yes
17:23:27 <merijn> exarkun: I think there are other libraries that couple conduits running in separte threads together
17:23:45 <merijn> exarkun: And, of course, I wrote my own library for parallelising a specific conduit stage
17:24:01 × dirediresalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
17:24:07 × xff0x quits (~fox@2001:1a81:525b:e100:290b:d404:9fb5:ba71) (Ping timeout: 260 seconds)
17:24:13 <merijn> exarkun: https://hackage.haskell.org/package/broadcast-chan-conduit-0.2.1.1/docs/BroadcastChan-Conduit.html#v:parMapM
17:24:28 <exarkun> dminuoso: I've tried a bit but I'm sufficiently inexperienced that it's slow going
17:24:43 <merijn> That works nicely if one of your conduit stages does some slow IO
17:24:45 <dminuoso> exarkun: Which parts in particular were holding you back?
17:25:27 <merijn> One of my pipelines has to do slow IO requests (they take a few seconds to complete) and parMapM means I can have multiple requests "in flight" at a time (you'll lose ordering, though)
17:26:31 <exarkun> merijn: That looks like it might be a good source of hints for implementing what I want (which is kind of like a fan-out / fan-in component)
17:27:04 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 260 seconds)
17:27:13 × matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Read error: Connection reset by peer)
17:27:21 matryoshka` joins (~matryoshk@184.75.223.227)
17:27:53 <merijn> exarkun: Eh...word of warning
17:28:09 <exarkun> dminuoso: It's not necessarily any single thing, more to do with the fact that much of the implementation relies on features or libraries that I'm not familiar with
17:28:12 <merijn> exarkun: The implementation is a horrific nightmare of low-level threading and async exception details :)
17:28:25 Jeanne-Kamikaze joins (~Jeanne-Ka@66.115.189.157)
17:28:30 <merijn> exarkun: fan out/fan in can be accomplished much easier, tbh!
17:29:08 <merijn> exarkun: fan in is simply "conduit repeatedly reads from a single channel with multiple writers"
17:29:23 <merijn> exarkun: fan out is simply "conduit repeatedly writes into a single channel with multiple readers"
17:29:56 <merijn> exarkun: And if you need a channel that can be closed when the upstream is done writing, I've got you covered too ;) https://hackage.haskell.org/package/broadcast-chan
17:30:47 taurux joins (~taurux@net-188-152-78-21.cust.dsl.teletu.it)
17:31:03 <exarkun> Well, I guess that's kind of what I figured. I posted that MVar-based code yesterday or the day before (which just used MVar as the simplest proof of concept while I figured out how to glue it into Conduit)
17:31:08 × mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew)
17:31:24 <exarkun> but I got stuck actually gluing it into Conduit
17:33:00 <exarkun> My Haskell skill is at the level that even "conduit repeatedly reads from a single channel with multiple writers" is probably an hour to figure out (which is fine, part of my goal here is to learn more)
17:33:29 <merijn> exarkun: "awaitForever $ \x -> liftIO (putMVar m x)" :p
17:34:23 <merijn> exarkun: "forever $ readMVar m >>= yield"
17:34:43 <merijn> oh, wait, that's gotta be "liftIO (takeMVar m) >>= yield"
17:35:02 <merijn> (readMVar would read the same element each time and without liftIO it doesn't type check)
17:36:07 <merijn> % forever $ print True
17:36:13 <yahb> merijn: True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True; True;
17:36:19 <merijn> (I was smart enough to try that in PM first :p)
17:36:58 <dminuoso> Why is cabal failing to find a build plan here? https://gist.github.com/dminuoso/4dc113de1a22ab5db5b6a8880e18e58a
17:37:00 <dminuoso> Im a bit stunned
17:37:08 <merijn> exarkun: You need slightly more complex logic to handle "when will nothing ever be written to this MVar again"
17:37:29 <dminuoso> Where could the constraint `haskell-generate:setup.Cabal>=1.10 && <1.25` possibly come from?
17:37:35 <dminuoso> Im not finding these bounds anywhere
17:37:53 <merijn> dminuoso: I think that can happen if something is installed in the global database?
17:38:17 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
17:38:20 <merijn> Dinner time, though
17:39:03 Aleyna_ joins (~Aleyna@4e69b241.skybroadband.com)
17:39:38 × fuzzypixelz quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: fuzzypixelz)
17:39:59 × matryoshka` quits (~matryoshk@184.75.223.227) (Read error: Connection reset by peer)
17:40:00 × Aleyna quits (~Aleyna@4e69b241.skybroadband.com) (Ping timeout: 256 seconds)
17:40:15 matryoshka joins (~matryoshk@184.75.223.227)
17:40:25 <dminuoso> Well.. uh
17:41:01 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
17:41:04 <dminuoso> So the only special thing here, is that it has a custom Setup.hs
17:41:18 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
17:42:32 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection)
17:44:37 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
17:44:55 × taurux quits (~taurux@net-188-152-78-21.cust.dsl.teletu.it) (Quit: ZNC 1.7.5 - https://znc.in)
17:45:13 taurux joins (~taurux@net-188-152-78-21.cust.vodafonedsl.it)
17:45:57 xff0x joins (~fox@2001:1a81:525b:e100:290b:d404:9fb5:ba71)
17:46:37 vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
17:47:22 hth313 joins (~user@node-1w7jr9qio22jw89j5t7q3mryw.ipv6.telus.net)
17:47:28 × mastarija quits (~mastarija@93-136-128-137.adsl.net.t-com.hr) (Ping timeout: 260 seconds)
17:48:31 <sm[m]> dminuoso: we had a case like this recently where a typo in the cabal file (cabal-version: >=N) activated a complicated legacy mode in cabal
17:48:39 × LKoen quits (~LKoen@214.175.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”)
17:49:12 × acidjnk_new quits (~acidjnk@p200300d0c719ff439996fb92bd8d62ee.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
17:49:24 <hth313> what is the best way to build on Windows? using mingw, DOS prompt or Powershell?
17:49:25 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 264 seconds)
17:49:27 × vnz quits (~vnz@unaffiliated/vnz) (Quit: ZNC - http://znc.in)
17:49:57 <sm[m]> hth313: stack, in any of those
17:50:46 hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-qeakgiprhskzevyk)
17:50:52 × knupfer quits (~Thunderbi@i59F7FF2B.versanet.de) (Remote host closed the connection)
17:50:59 × boxscape quits (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Ping timeout: 260 seconds)
17:51:19 vnz joins (~vnz@51.15.143.225)
17:51:19 × vnz quits (~vnz@51.15.143.225) (Changing host)
17:51:19 vnz joins (~vnz@unaffiliated/vnz)
17:52:52 mastarija joins (~mastarija@93-136-128-137.adsl.net.t-com.hr)
17:53:14 drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net)
17:53:49 <adamCS> exarkun: slightly OT, but streamly (https://hackage.haskell.org/package/streamly) is more...up-front about how to handle concurrency, etc. Maybe that would be a help?
17:54:22 × vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov)
17:54:48 <exarkun> adamCS: maybe! thanks for the tip, I'll check it out
17:54:50 vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
17:55:12 <hth313> I have a complex UNIX setup, using GHC, cabal, cmake (for a library), controlled by a custom Python script(does a lot more than just building), I try mingw, endless problems with paths, terminfo not there. I tried with mingw
17:55:18 × vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
17:55:37 vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
17:55:52 <hth313> I am wondering if it works without mingw, if I can go for native Windows scripting instead?
17:56:16 <sm[m]> hth313: haha, that on windows will be a whole nother kettle of fish. Maybe WSL2 is best
17:56:22 <hth313> mingw cannot even run cmake properly :(
17:56:47 <hth313> and that is from the mingw shell command line
17:57:03 <sm[m]> s/Maybe //
17:57:47 × drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 258 seconds)
17:58:25 <hth313> I want to build native Windows command line apps for end users, no UNIX for them
17:58:42 × mastarija quits (~mastarija@93-136-128-137.adsl.net.t-com.hr) (Quit: Leaving)
17:58:51 <hth313> I thought mingw would be good for building native apps, but that seems not to be the case
17:59:28 <hth313> good when you come from a UNIX setting, to port it and have native Windows binaries that work like Windows command line programs in the end
18:00:07 <hth313> WSL2 means the end user would need to use WSL2 also?
18:02:01 <Guest81293> if i have e (iterate f x) that produces a list of xs that eventually stabilize - example: ([9,6,4,3,2,1,2,1,1,1,1...]) - what is the canonical way of getting the first repeated element? (in this case the 1)
18:02:30 matryoshka` joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
18:02:33 <Guest81293> *a
18:02:45 <c_wraith> There isn't any great solution, though there are clever answers
18:02:48 × matryoshka quits (~matryoshk@184.75.223.227) (Read error: Connection reset by peer)
18:03:49 <monochrom> The "why functional programming matters" paper by John Hughes shows one way.
18:04:10 <sm[m]> hth313: generally a pure haskell app built with cabal or (more easily) stack will just work for any windows user, and they won't need any haskell tools installed. Yours is more complicated though
18:04:21 <Guest81293> now im curious
18:04:25 <monochrom> I also show it in my class. http://www.cs.utoronto.ca/~trebla/CSCC24-2020-Summer/03-haskell-evaluation.html#lazygood
18:06:47 drincruz joins (~adriancru@ool-44c748be.dyn.optonline.net)
18:07:05 <c_wraith> > (\xs -> dropWhile (uncurry (/=)) . zip xs . tail $ xs) [4, 3, 7, 2, 9, 3, 5, 5, 23] -- too clever by half. Also incomplete for the sake of illustration
18:07:08 <lambdabot> [(5,5),(5,23)]
18:07:33 <Guest81293> ha
18:08:16 × matryoshka` quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
18:09:11 matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
18:10:12 × matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Read error: Connection reset by peer)
18:10:29 matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
18:16:19 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
18:16:31 boxscape joins (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8)
18:19:45 × matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in)
18:20:25 fuzzypixelz joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
18:20:34 <xerox_> > let dup (x:y:_) | x == y = x; dup (_:xs) = dup xs in dup $ iterate (\x -> x/2 + 1/x) 1.0
18:20:37 <lambdabot> 1.414213562373095
18:23:01 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 264 seconds)
18:23:10 acidjnk_new joins (~acidjnk@p200300d0c719ff439996fb92bd8d62ee.dip0.t-ipconnect.de)
18:25:16 <Kronic> WSL2 would mean that, yes hth313, also as an aside, WSL is an incredibly frustrating experience imo. I tried it for a long time until I eventually swapped to vmware player and I've had no problems since. Would recommend.
18:25:41 × juuandyy quits (~juuandyy@90.166.144.65) (Ping timeout: 256 seconds)
18:26:31 × fuzzypixelz quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Remote host closed the connection)
18:26:58 <hth313> Kronic: all these UNIX-like environments on Windows are just various degrees of pain and should be avoided whenever possible
18:28:50 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
18:30:19 <__monty__> I thought WSL2 basically *was* linux running in a VM with some nice integrations on top?
18:30:24 × dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection)
18:31:26 <hth313> So if Python/GHC works in Windows, it sounds as it would be better to use a native Windows shell. I basically wonder if GHC and cabal (with many libraries to install) require mingw or similar to work properly
18:32:45 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds)
18:33:23 juuandyy joins (~juuandyy@90.166.144.65)
18:34:08 × kritzefitz quits (~kritzefit@212.86.56.80) (Ping timeout: 260 seconds)
18:34:25 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
18:35:06 <Kronic> __monty__ be that as it may, it's filled with gotchas and all of the things that people didn't think about it. Every time I tried it it was a disappointment.
18:35:18 <sm[m]> I think they do, eg stack and maybe GHC include it (or msys2 or some such)
18:37:52 D3R43 joins (5d2282d7@93-34-130-215.ip49.fastwebnet.it)
18:38:31 <D3R43> Hello! I am approaching haskell, I was trying to configure the terminal in order to have a working environment within ubuntu. I was trying to install haskell-language-server, to do that I installed stack (v. 2.5.1) but it keeps telling me "Cabal file info not found for aeson-1.5.2.0". This error doesn't tell me anything at all, cabal didn't even
18:38:31 <D3R43> try to install it (the guide I'm following, https://github.com/haskell/haskell-language-serve, says I could either choose stack or cabal and completely randomly I chosen the first). The error message doesn't say anything to me, can someone help me find my way?
18:40:12 <glguy> The easiest way I know how to install hls is via ghcup
18:40:24 <glguy> But maybe a stack user has gotten it working with stack
18:40:46 matryoshka joins (~matryoshk@184.75.223.227)
18:43:18 <merijn> D3R43: Not directly related to your problem, but: https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07
18:43:27 × neiluj quits (~jco@91-167-203-101.subs.proxad.net) (Remote host closed the connection)
18:43:41 <merijn> D3R43: I am guessing you are using stack in combination with hpack?
18:44:02 conal joins (~conal@64.71.133.70)
18:44:53 × hiroaki quits (~hiroaki@2a02:908:4b1b:20a0::7af8) (Ping timeout: 272 seconds)
18:44:56 <sm[m]> D3R43: the easiest easiest way is to use VS Code's Haskell extension which sets it up for you
18:46:42 <merijn> sm[m]: I'm not sure that "switching entire editors" is in fact the easiest way :)
18:47:00 <glguy> It's certainly the easiest way if your goal is HLS support
18:47:09 <glguy> but not if your goal is to use a specific editor
18:47:22 <maerwald> merijn: depends, heh... ever tried getting proper typescript support in vim?
18:47:47 <merijn> maerwald: No, because I live in a blissful world where Javascript (and by extension typescript) are a problem for "other people"
18:48:01 <merijn> The magic of the "Someone Else's Problem-field!"
18:48:50 × geekosaur quits (ac3a541c@172.58.84.28) (Ping timeout: 245 seconds)
18:49:06 <sm[m]> I say offer the easiest solution first, it's often what a new poster wants
18:49:30 <sm[m]> we can swiftly get more complicated as needed
18:49:36 livvy joins (~livvy@gateway/tor-sasl/livvy)
18:50:21 <sm[m]> but, I did somehow assume D3R43 was on windows, I don't know why I did that
18:52:28 <merijn> sm[m]: Because the previous discussion was by someone else about windows and your brain short-circuited? ;)
18:52:47 Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net)
18:52:48 <sm[m]> no doubt. Sorry :)
18:54:56 × dagnabbit quits (~thelounge@140.82.8.179) (Ping timeout: 240 seconds)
18:55:12 knupfer joins (~Thunderbi@200116b82c539b009c1c9f21e3904fbb.dip.versatel-1u1.de)
18:55:36 × blackdog quits (~blackdog@198.211.112.85) (Ping timeout: 240 seconds)
18:55:43 blackdog joins (~blackdog@198.211.112.85)
18:56:00 dagnabbit joins (~thelounge@140.82.8.179)
18:56:35 hiroaki joins (~hiroaki@2a02:908:4b1b:20a0::4e53)
18:56:56 × Aleksejs quits (~Aleksejs@haskell.lv) (Ping timeout: 240 seconds)
18:56:56 × catern quits (~catern@104.131.201.120) (Ping timeout: 240 seconds)
18:57:56 × drewolson quits (~drewolson@64.227.24.16) (Ping timeout: 240 seconds)
18:58:16 × ornxka quits (~ornxka@unaffiliated/ornx) (Ping timeout: 240 seconds)
18:58:16 drewolson joins (~drewolson@64.227.24.16)
18:59:09 Aleksejs joins (~Aleksejs@haskell.lv)
18:59:10 ornxka joins (~ornxka@unaffiliated/ornx)
18:59:23 catern joins (~catern@104.131.201.120)
18:59:30 × motherfsck quits (~motherfsc@unaffiliated/motherfsck) (Quit: quit)
19:01:16 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
19:01:16 × vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov)
19:01:32 vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
19:01:35 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
19:01:44 geekosaur joins (ac3a541c@172.58.84.28)
19:02:23 conal joins (~conal@64.71.133.70)
19:03:02 × berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds)
19:03:31 berberman joins (~berberman@unaffiliated/berberman)
19:04:00 gproto23 joins (~gproto23@unaffiliated/gproto23)
19:04:58 × gproto23 quits (~gproto23@unaffiliated/gproto23) (Client Quit)
19:05:46 × vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
19:06:03 vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
19:06:09 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 260 seconds)
19:06:27 kritzefitz joins (~kritzefit@212.86.56.80)
19:07:33 × vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
19:08:04 vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
19:08:34 × vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Client Quit)
19:08:49 × solonarv quits (~solonarv@astrasbourg-157-1-27-135.w90-40.abo.wanadoo.fr) (Ping timeout: 246 seconds)
19:08:59 vfaronov joins (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru)
19:09:47 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
19:12:04 <D3R43> Great feedback guys. @sm[m] I'd rather not change to VS code, even though I know it is very lightweight and handy. Unfortunately I have to stick to the terminal only. I will look into ghcup thanks @glguy . @merijn I love not having to bother with javascript too!
19:12:32 <D3R43> So basically I'm just looking for something that will optimize my vim-experience with haskell ^^
19:12:36 × shf quits (~sheaf@2a01:cb19:80cc:7e00:159e:9ac:2ff5:a704) (Read error: Connection reset by peer)
19:13:23 <merijn> D3R43: ghcide (which is what haskell-lang-server is built on top of) + ALE seems to work well for me
19:13:53 <merijn> D3R43: Might need this too: https://github.com/merijn/dotfiles/blob/master/dotfiles/vim/autoload/ale_linters/haskell/ghcide.vim
19:14:20 × filwisher quits (~filwisher@78.141.201.45) (Quit: ZNC 1.7.1 - https://znc.in)
19:14:26 <glguy> My favorite vim GHC experience is having a ghcid window open adjacent to my editor
19:15:01 filwisher joins (~filwisher@78.141.201.45)
19:15:29 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds)
19:16:05 <Kronic> you could try onivim, it's basically vim and vscode glued together
19:16:09 elliott__ joins (~elliott@pool-108-45-178-3.washdc.fios.verizon.net)
19:16:11 <D3R43> Yup, i'm planning on having two tmux sessions, one with ghci and one with vim, I was just looking for vim plugins providing syntax highlighting and mybe lyinting
19:16:20 <D3R43> *linting
19:16:22 <glguy> D3R43: not ghci, but ghcid
19:16:33 <glguy> well, I like having both, but ghcid tends to be more important
19:17:05 <D3R43> OK, I was about to ask about whether ghcid was a typo or not, I'm looking that up, don't know what that is
19:17:30 <glguy> It automatically reloads a ghci session that it wraps when files change
19:17:38 <sm[m]> ghc/ghci/ghcid/ghcide all different :)
19:17:38 <MarcelineVQ> ghcid is the bee's knees
19:17:40 <glguy> so you get feedback as soon as you save
19:17:45 <merijn> Well
19:17:55 <glguy> You can put _ holes in your file to get type information at a location
19:17:57 <merijn> You get feedback as soon as "cabal build" gets to the file you changed >.>
19:18:06 <glguy> no, it doesn't cabal build
19:18:09 <glguy> it ghci reloads
19:18:15 <merijn> Like, ghcid is at best "ok" the feedback cycle is entirely too long
19:18:18 <glguy> and with -fno-code or whatever it is, that's pretty fast
19:18:30 <merijn> glguy: By default, if you use ghci, but that doesn't work for multi package projects
19:18:39 <merijn> Then you need to use cabal build
19:18:41 <Kronic> I use stack build with file-watch and vs code, it has been working for me fairly well so far
19:18:41 <glguy> merijn: It doesn't work when you're editing multiple projects
19:18:41 <sm[m]> sure it does (can)
19:18:57 <glguy> merijn: but it works on multi-component projects when you're working on one component
19:19:06 <sm[m]> ghcid -c 'stack repl all', or ghcid ...-idir1 -idir2
19:19:31 <glguy> merijn: and what you're describing is unlikely to be the case for a new user learning Haskell
19:19:38 <MarcelineVQ> merijn: You must have some pretty big projects, the feedback has always been very fast for me. Regardless for someone starting out it's gonna be plenty fast
19:19:49 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
19:20:37 <merijn> MarcelineVQ: Yes, some of the bigger project can easily take a few minutes to build if you change one of the files that is transitively included everywhere
19:20:43 <merijn> ghcide is orders of magnitude faster for that
19:20:49 <Kronic> perhaps the fact that you guys have different computers is playing a role here
19:21:06 <merijn> Kronic: Considering this is on a machine with 30+ cores and 192GB RAM I doubt it ;)
19:21:28 <glguy> merijn: considering that then yes, different computers
19:21:32 <Kronic> What's the single core speed on that?
19:21:32 <merijn> MarcelineVQ: Sure, ghcid is pretty good
19:21:50 <D3R43> Wow, ok, a lot of feedback, thanks everyone
19:22:05 <merijn> MarcelineVQ: My point is that everyone doesn't say "ghcid is pretty good for just starting out", everyone always says "I don't understand why anyone would ever want something other than ghcid"
19:22:23 <glguy> everyone certainly doesn't always say that
19:22:23 <merijn> If people would say "ghcid is pretty good for starting out", sure, no complaints
19:22:42 <merijn> glguy: Well, there;s always at least one person saying that whenever someone talks editor tools :)
19:22:57 <sm[m]> correcting myself.. I heard stack repl has an "all" target but I don't know what it is. You certainly can use ghcid for multi-package projects though, and it's fast. I've been doing it for years
19:23:00 <MarcelineVQ> hehe, well I've never needing anything but ghcid, but no that doesn't extend to others
19:23:04 <monochrom> I don't understand why anyone would ever want IDE. There! :)
19:23:11 <merijn> sm[m]: Stack repl fakes it
19:23:14 <glguy> /nick everyone
19:23:23 <merijn> sm[m]: It just dumps everything into a single component and hopes it works
19:23:34 <sm[m]> fine
19:23:46 <merijn> Which, admittedly, it often will
19:23:56 <sm[m]> I'll paste an actual command I use, so I don't screw up:
19:23:56 <sm[m]> stack exec -- ghci -rtsopts -Wall -fno-warn-unused-do-bind -fno-warn-name-shadowing -fno-warn-missing-signatures -fno-warn-orphans -fno-warn-type-defaults -ihledger-lib -ihledger-lib/other/ledger-parse -ihledger -ihledger-ui -ihledger-web -ihledger-web/app -DPATCHLEVEL=32 -DDEVELOPMENT -DVERSION="\"1.20\"" hledger/Hledger/Cli/Main.hs
19:23:56 <monochrom> In fact, I have a Kevlin Henney talk to back me up: https://www.youtube.com/watch?v=FyCYva9DhsI&feature=youtu.be&t=1858
19:23:59 <merijn> But! iirc the work on multi-component ghci is getting merged soon!
19:24:25 <sm[m]> -iPKGDIR is the thing
19:24:30 <merijn> monochrom: I just want warnings highlighted in my editor and the ability to query "type under cursor" :p
19:24:55 <monochrom> I already have those.
19:25:18 <merijn> So do I with ghcide ;)
19:26:06 × elliott__ quits (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Quit: WeeChat 2.9)
19:26:26 <monochrom> OK, good for you. I have those from emacs and haskell-mode or dante. For 1/10 of the installation hassle.
19:26:59 <Kronic> I don't understand, would people not want a good standalone IDE for haskell to exist?
19:27:14 <blissful> i wouldn't want to need a new IDE just for haskell
19:27:23 <merijn> Kronic: tbh, if it'd require me to use anything other than vim I personally wouldn't care
19:27:42 <merijn> Kronic: but then, I'm the kinda person who also works on 100k SLOC C++ applications in vim, rather than an IDE, so...
19:27:44 <monochrom> Kronic: I think https://ro-che.info/ccc/26 sums up human nature.
19:27:56 <geekosaur> different people are different. I never developed the habit of using an IDE for any language
19:28:07 <Kronic> I think it's evident considering how much code there is already written in Haskell that you don't need one. My question is what is wrong with one existing?
19:28:29 <sm[m]> Kronic: in haskell land, many of us are conditioned to hair shirts, bread and dry water :)
19:28:49 <maerwald> merijn: vim was written for and by C/C++ programmers, where source files are 10k lines and you need a way to navigate without losing your sanity
19:29:02 <maerwald> for many "modern" languages, this doesn't apply anymore
19:29:03 <merijn> Kronic: Nothing
19:29:18 <blissful> hmm, so on this topic, is anyone else using hls with coc in vim?
19:29:26 <merijn> Kronic: But, selection bias has obviously led to "most established Haskellers not caring about/needing IDEs"
19:29:42 <merijn> Kronic: And the people who want/need an IDE are obviously not versed enough in Haskell to write one
19:29:58 <Kronic> Seems like an unfortunate situation
19:30:17 <merijn> Kronic: So, the *practical* reason why people react antagonistically to "Haskell needs an IDE" is the silent part "and you guys who don't like IDEs should write it for me, for free"
19:30:54 <monochrom> I don't oppose other people using IDEs.
19:30:56 <merijn> I don't think anyone reasonable objects to the idea of "a Haskell IDE existing", but plenty object to getting blamed for the lack of one existing
19:30:59 <Kronic> To be fair, I don't think anyone is looking for it to be free. If there was an extremely clean well put together haskell IDE I'd happily pay whatever price that comes at
19:31:31 <Kronic> If not to support haskell development, but also to potentially give myself a new experience in working with this language
19:31:34 <merijn> Kronic: Yeah, but the market for that is too small for someone to create one and become the next IntelliJ
19:31:45 <monochrom> My angle is it's the IDE users that inflict on me "why are you not using an IDE? you're a criminal" and/or "I won't start learning Haskell until an IDE is up and running".
19:32:27 elliott_ joins (~elliott@pool-108-45-178-3.washdc.fios.verizon.net)
19:33:19 × elliott_ quits (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Client Quit)
19:33:22 <sm[m]> Kronic: also for years we had attempts at a nice IDE, which would always consume much sweat and end in tears. But just lately the situation has changed, VS Code + Haskell now works easily and well for many
19:33:31 <monochrom> Kronic: Empirical data has shown that the paid IDE for Mac, and the free IDE from FPComplete (see that comic again), have flopped.
19:33:52 saki_ joins (~saki@2a02:a03f:487f:9b00:9d1f:944e:1a51:aa7a)
19:34:38 <monochrom> Let me also tell you a piece of history of IRC math channels.
19:35:05 <maerwald> free IDE from FPComplete?
19:35:12 <monochrom> For like 20 years people in IRC math channels kept wishing for an "IRC LaTeX plugin".
19:35:39 <monochrom> Said plugin actually happened. Pidgin had one.
19:35:41 <geekosaur> intero?
19:35:46 × lep-delete quits (~lep@94.31.80.94) (Read error: Connection reset by peer)
19:36:05 <sm[m]> maerwald: they had a web-based one years ago
19:36:08 <monochrom> Said people went on to wish for an "IRC LaTeX plugin" ignoring the IRC LaTeX plugin in Pidgin.
19:36:29 fuzzypixelz joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
19:36:30 <monochrom> This is why I say that that comic is so piercing in exposing human nature.
19:36:33 lep-delete joins (~lep@94.31.80.94)
19:36:38 <monochrom> It is not just you people.
19:36:41 lep-delete is now known as test
19:37:06 <Kronic> I think there are too many black marks around the word IDE. My point simply put is that anything you can download which gives you an easy to use out of the box haskell experience is a good thing. Paid, free or some other model. I don't want an IDE personally because I'm pretty happy with my workflow but I wouldn't object to one existing, and I would in fact support it.
19:37:09 test is now known as Guest72755
19:37:26 <monochrom> Also I wish everyone respected that "data" is plural and I would write "Empirical data have shown..."
19:37:30 Guest72755 is now known as lep-delete
19:37:49 <MarcelineVQ> but if you have two androids you have datas
19:37:52 <merijn> monochrom: Hard disagree
19:38:00 <merijn> monochrom: Data is clearly an uncountable mass noun
19:38:25 <D3R43> Wow, thanks for the great feedback everyone! I'm a bit overwalmed with the answers you provided ... So basically which benefits does hls offer over plain ghcid? I hope this doesn't start a flame war ...
19:38:37 <geekosaur> "codes"
19:38:37 <monochrom> No, please use "information" for the uncountable.
19:38:47 <merijn> geekosaur: I hate HPC people so much
19:38:50 <sm[m]> Kronic: certainly, no argument there. It's always one of the community's biggest wishes in surveys
19:38:58 <merijn> Gets under my skin at every conference
19:39:10 <hpc> merijn: hey!
19:39:36 <sm[m]> D3R43: basically instead of showing you the errors in a separate terminal window, it can (when integrated with an editor like VS Code) show them inline in your code
19:39:38 <[exa]> merijn: h p c people are somehow specific in saying data wrong?
19:39:50 <merijn> [exa]: No, they say "codes" instead of "code"
19:39:59 <[exa]> what the
19:40:00 <merijn> It's never "this HPC code" it's always "these HPC codes" >.<
19:40:05 <D3R43> @sm[m] does it apply to vim too?
19:40:05 <lambdabot> Unknown command, try @list
19:40:28 <monochrom> I want to say "codes" too.
19:40:29 <MarcelineVQ> what about people like me who never know when to say datum
19:40:33 <sm[m]> D3R43: any editor with supports Language Server Protocol. I'm sure vim does, but only in VS Code is it easy to set up
19:40:37 <[exa]> merijn: are they like really the people who do programming or just the supercomputer owners?
19:40:48 <[exa]> because the latter category _is_ saying a lot of bs
19:40:57 <hpc> are they speaking in their first language?
19:40:58 <[exa]> s/owners/managers/ etc
19:41:02 <monochrom> I am tired of "these two pieces of code" please allow me to just write "these two codes" and be done with it.
19:41:16 <monochrom> English is such a piece of work.
19:41:18 <hpc> i have only ever heard that before from people who aren't perfectly fluent
19:41:21 <MarcelineVQ> monochrom: programming isn't about generalizing to solve problems :O
19:41:31 <[exa]> monochrom: prograaaaaaaaams *trumpet meme*
19:41:31 <sm[m]> D3R43: ie yes, it can apply to vim too, if you can figure out how
19:42:04 <monochrom> Yeah OK I'll use "programs" and "code fragments/snippets".
19:42:16 <[exa]> snippets, great!
19:42:38 <[exa]> `code' collides with coding theory, that gets quite irritating sometimes
19:43:17 <[exa]> the worst part is mceliece-style cryptography where certain people talk about code that codes information using codes (respectively: programs, encrypt, codes)
19:43:23 <monochrom> Yeah, I recognize that "codes" is already taken: "two codes" = two encodings, esp. in coding theory.
19:43:32 × drincruz quits (~adriancru@ool-44c748be.dyn.optonline.net) (Ping timeout: 256 seconds)
19:46:30 <monochrom> Hey I found a way to 1-up that game!
19:46:42 <monochrom> code that codes the Napolean code using codes
19:47:02 × juuandyy quits (~juuandyy@90.166.144.65) (Ping timeout: 258 seconds)
19:47:05 solonarv joins (~solonarv@astrasbourg-157-1-27-135.w90-40.abo.wanadoo.fr)
19:51:07 da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:bbcd:2474:9519:9fb5:8678)
19:51:46 saki__ joins (~saki@2a02:a03f:487f:9b00:9d1f:944e:1a51:aa7a)
19:52:01 × saki_ quits (~saki@2a02:a03f:487f:9b00:9d1f:944e:1a51:aa7a) (Ping timeout: 272 seconds)
19:53:28 × fuzzypixelz quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Remote host closed the connection)
19:55:28 elliott_ joins (~elliott@pool-108-45-178-3.washdc.fios.verizon.net)
19:55:28 × da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:bbcd:2474:9519:9fb5:8678) (Ping timeout: 258 seconds)
19:55:55 Codaraxis joins (Codaraxis@gateway/vpn/mullvad/codaraxis)
19:57:12 × carlomagno quits (~cararell@148.87.23.5) (Ping timeout: 272 seconds)
19:58:39 × elliott_ quits (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Client Quit)
20:02:02 × saki__ quits (~saki@2a02:a03f:487f:9b00:9d1f:944e:1a51:aa7a) (Quit: Konversation terminated!)
20:02:56 <Guest81293> when ghci tells me a module is a member of a hidden package, what does it mean and how do i unhide it? google is confusing me
20:03:11 <merijn> Guest81293: It means you didn't specify it as a build dependency
20:03:34 royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
20:03:41 × doct0rhu quits (~orctarorg@pool-72-88-158-154.nwrknj.fios.verizon.net) (Remote host closed the connection)
20:03:41 <merijn> "Hey, I see you're importing this module that happens to be in this package, but you didn't tell me that was a dependency you were using"
20:04:49 × DataComputist quits (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net) (Quit: Leaving...)
20:04:51 <Guest81293> im not using a cabal file nor do i want to if i dont have to. are there any disadvantages to unhiding a package?
20:05:43 <Guest81293> the package is unordered-containers and im just solving aoc
20:05:44 <merijn> You can't unhide packages so much, as well tell ghc which packages it's allowed to use
20:06:07 <merijn> I forget the flag for specifying packages to GHC, though
20:06:17 <merijn> I just made a single cabal file for all AOC exercises, tbh
20:06:34 <Guest81293> :set -package maybe?
20:07:52 DataComputist joins (~lumeng@static-50-43-26-251.bvtn.or.frontiernet.net)
20:07:53 <geekosaur> -package, yes
20:08:39 aev joins (~aev@pool-108-5-152-94.nwrknj.fios.verizon.net)
20:08:45 <aev> join ##java
20:08:51 <aev> whoops
20:08:59 <Guest81293> someone tells me i can also do sudo ghc-pkg expose unordered-containers. any reason not to?
20:11:05 shf joins (~sheaf@2a01:cb19:80cc:7e00:d59b:49eb:ac7c:3f2a)
20:12:05 g4br13l joins (bf600db4@191.96.13.180)
20:12:43 <Guest81293> this is confusing
20:12:52 × whatisRT quits (~whatisRT@ip5b416a33.dynamic.kabel-deutschland.de) (Ping timeout: 246 seconds)
20:13:13 <sm[m]> Guest81293 (IRC): perhaps ignore that someone, that's not something anyone needs to do normally
20:13:18 <aev> If you know what you're doing I don't see why you wouldn't want to expse hidden packages.
20:13:42 <merijn> tbh, figuring out how to get that to work without a cabal file is probably more work than adding a simple cabal file will ever be
20:13:43 <aev> Usually packages are hidden to protect us.
20:15:18 <sm[m]> ghci -package unordered-containers aoc.hs # fine
20:16:06 whatisRT joins (~whatisRT@ip5b416a33.dynamic.kabel-deutschland.de)
20:17:31 × D3R43 quits (5d2282d7@93-34-130-215.ip49.fastwebnet.it) (Remote host closed the connection)
20:18:25 × g4br13l quits (bf600db4@191.96.13.180) (Ping timeout: 245 seconds)
20:18:29 <Guest81293> tbh when it comes to cabal i usually don't know what i'm doing
20:18:54 o1lo01ol1o joins (~o1lo01ol1@31.22.216.239)
20:19:04 <Guest81293> thanks
20:20:27 <aev> I'm having problems with ghcid after installing it using cabal install ghcid. When I start it, it tells me it isn't trying to start ghcid, but instead it starts cabal repl with a whole bunch of options that it then complains about that it doesn't recognize them, and refuses to start. I reinstalled ghcid but it does the same thing. I'm on a fresh debian instance under WSL. Suggestions on how to fix that?
20:21:04 <merijn> aev: Which version of "cabal"?
20:21:41 <merijn> Guest81293: A super minimal example (other files in the repo are spoilers for previous days, obviously): https://github.com/merijn/AdventOfCode2020/blob/master/advent.cabal
20:21:49 <sm[m]> Guest81293 (IRC): when you want to save the list of packages required for your program, next step up is a cabal or stack "script", where you list them at the top of the file. When it gets more complicated still, a package
20:22:25 <aev> merijn: it says "cabal-install version 2.2.0.0"
20:23:48 × o1lo01ol1o quits (~o1lo01ol1@31.22.216.239) (Ping timeout: 272 seconds)
20:23:48 <merijn> aev: Which options does it not recognise? (also 2.2 is kinda old, you should probably upgrade to 3.0 or 3.2)
20:23:58 elliott_ joins (~elliott@pool-108-45-178-3.washdc.fios.verizon.net)
20:24:27 <aev> Odd: I installed it yesterday. Why wouldn't it give me the latest version?
20:24:56 <aev> I'm going to try upgrading first and see what happens.
20:25:14 × elliott_ quits (~elliott@pool-108-45-178-3.washdc.fios.verizon.net) (Client Quit)
20:25:14 ddellacosta joins (dd@gateway/vpn/mullvad/ddellacosta)
20:25:34 <hyperisco> I have a Digest SHA1 and I want a binary string, how do I get that?
20:25:48 <hyperisco> like a ByteString where the characters are bytes
20:26:15 <merijn> aev: "cabal install cabal-install" should work (or at least, put the newest version wherever cabal normally puts executables)
20:26:21 <merijn> aev: Where did you install it from?
20:26:23 <sm[m]> aev: it's easy to install a not-latest thing, depending how you do it
20:26:37 <hyperisco> the docs say to look here but this doesn't seem to give any clues https://hackage.haskell.org/package/memory-0.15.0/docs/Data-ByteArray.html
20:26:40 <merijn> hyperisco: I think there's a "convert" function somewhere
20:26:49 <merijn> hyperisco: I've got the code using it somewhere
20:27:36 <merijn> hyperisco: https://github.com/merijn/Belewitte/blob/master/benchmark-analysis/src/Types.hs#L45
20:27:52 <merijn> oh, wait, that's reversed
20:28:13 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
20:28:33 <merijn> hyperisco: https://github.com/merijn/Belewitte/blob/d15a4a128925ca4e8f9ee14d85940085e88e6a1c/benchmark-analysis/ingest-src/Jobs.hs#L47
20:28:35 elliott_ joins (~elliott@pool-108-45-178-3.washdc.fios.verizon.net)
20:28:36 <merijn> That's the one
20:28:43 <aplainzetakind> How can I match a given Text with Megaparsec?
20:28:43 <hyperisco> I think convert works, type checks at least, lets see
20:28:57 <aplainzetakind> Text.Megaparsec.Char.string basically.
20:29:04 × boxscape quits (54a35b08@gateway/web/cgi-irc/kiwiirc.com/ip.84.163.91.8) (Ping timeout: 260 seconds)
20:29:14 <aplainzetakind> Can't use that because Tokens Text ~ Text apparently.
20:29:57 <aev> merijn: doing that now. I installed it from the packages available in the Debian apt list. There were 2 versions and I chose the newest. I'm quite sure the first thing I did after that was upgrading. Maybe I missed it.
20:30:15 <hyperisco> great thanks merijn
20:30:24 <geekosaur> hash -r?
20:30:28 mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
20:30:41 <hyperisco> so, I could be crazy, but I am appending the hash of a file to the file for the purposes of verifying the integrity of the file
20:30:50 <sm[m]> string (also named chunk) is the way, aplainzetakind
20:31:08 <sm[m]> aev: if installing with cabal, you must say cabal install cabal-install-3.2.0.0 to be sure
20:32:37 <merijn> aev: Oh, yeah, debian just installs stupidly old stuff
20:33:06 <merijn> aplainzetakind: Oh, do you have OverloadedStrings enabled?
20:33:39 <merijn> aplainzetakind: Char.string works, but you need to pass it Text, not String
20:33:59 <merijn> hyperisco: You are right, that is crazy ;)
20:34:10 <hyperisco> what would you do
20:34:12 <merijn> Well, depending on what you're verifying against
20:34:40 <merijn> hyperisco: Well, step 1 is identifying the goal. Corrupted downloads? Read errors? Active tampering? Unique identification of a file?
20:35:07 <hyperisco> you seemed more sure at the start there
20:36:13 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 264 seconds)
20:36:14 <aplainzetakind> sm[m]: For some reason I keep getting can't match [Char] with Text things.
20:36:16 <merijn> hyperisco: Well, "append checksum + signing" is a usual approach to authenticate files, but the exact order and operations are rather subtle to get right
20:36:28 <merijn> aplainzetakind: Because you don't have OverloadedStrings enabled :)
20:36:42 <merijn> aplainzetakind: If you write: Char.string "foo"
20:36:55 <merijn> Then "foo" is a String, and for Text input Char.string wants Text
20:37:08 <merijn> So you need to either do: Char.string (T.pack "foo")
20:37:15 <merijn> Or enable OverloadedStrings
20:37:16 <aplainzetakind> merijn: But I do.
20:37:24 <merijn> aplainzetakind: GHC disagrees :)
20:38:06 <sm[m]> @where paste perhaps, aplainzetakind
20:38:06 <lambdabot> Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com
20:39:38 <aplainzetakind> The problem is, I'm trying to change all my AoC stuff from String to Text.
20:39:52 <aplainzetakind> So there are many modules that are complaining.
20:40:14 <aplainzetakind> I first defined a global synonym type Input = String
20:40:32 <aplainzetakind> Changed all the parsing stuff's signatures to that Input.
20:41:21 <aplainzetakind> Then made parsing functions polymorphic, (Token s ~ Char, Stream s) => s -> ParseResult sort of.
20:41:40 <aplainzetakind> Then finally switched that Input = String to Input = Text.
20:41:51 <aplainzetakind> So the situation is pretty horrible :)
20:42:02 <aplainzetakind> Let me try to localize it.
20:42:32 <sm[m]> yeah, often the best thing is to back out your change and try again in much smaller steps
20:46:40 <ezzieyguywuf> How do I use =~ with a Data.Text? https://hackage.haskell.org/package/regex-tdfa-1.3.1.0/docs/Text-Regex-TDFA.html#v:-61--126-
20:47:02 <ezzieyguywuf> I've tried `"string" =~ "pattern" :: (Text, Text, Text, [Text])` but this does not work I get a kind error
20:47:18 <ezzieyguywuf> (with :set -XOverloadedStrings of course)
20:49:36 × cads quits (~cads@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds)
20:49:39 psy-bot joins (~yaaic@2600:380:5233:3c24:60c2:d5c2:5799:f2fe)
20:49:45 <aplainzetakind> OK, it seems it's not a fundamental issue.
20:50:04 <aplainzetakind> Just some incompatible functions here and there.
20:50:26 × toorevitimirp quits (~tooreviti@117.182.180.221) (Remote host closed the connection)
20:50:39 <aplainzetakind> For instance, I have `many lowerChar` somewhere, which is of course [Char].
20:50:57 <merijn> aplainzetakind: "fmap T.pack" ;)
20:51:03 <aplainzetakind> Should I just pack it in such cases?
20:51:04 <aplainzetakind> OK
20:51:10 DavidEichmann joins (~david@62.110.198.146.dyn.plus.net)
20:51:14 <aplainzetakind> Not inefficient?
20:51:25 <merijn> aplainzetakind: Well, it'd be "better" (in terms of efficiency) to use, like, takeWhileP
20:51:29 <merijn> But for AOC it won't matter
20:52:07 <aplainzetakind> Even megaparsec doesn't matter in that respect.
20:52:23 × DavidEichmann quits (~david@62.110.198.146.dyn.plus.net) (Remote host closed the connection)
20:52:35 <aplainzetakind> Just for the sake of exercise.
20:53:16 <aev> So, building cabal-install failed because it couldn't locate zlib... gotta love fresh linux distros that lack everything.
20:53:26 × matryoshka quits (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in)
20:53:29 <merijn> aplainzetakind: I mean, realistically it won't matter for any parser on still you start wanting to parse, like gigabytes of data
20:53:29 <hyperisco> are there archive types that include hashes so that they self-verify their contents?
20:53:44 <dminuoso> sm[m], merijn; Hah it's not a bug, it's a feature: https://github.com/haskell/cabal/issues/5278
20:53:54 <geekosaur> just need zlib-dev, I suspect
20:53:58 <dminuoso> Guess I should make it a habit to run `cabal check` when running into unexpected issues
20:54:08 <merijn> dminuoso: oh, that was actually in the back of my mind
20:55:24 <dminuoso> Think Im gonna satisfy the feature request and rig in a diagnostic that tells the user why it introduced a non-obvious constraint.
20:55:39 <sm[m]> dminuoso: that's the one. A "feature".
20:56:50 <hyperisco> well what specifically about zlib?
20:57:23 <sm[m]> (I take it back, that's not the one from the other day. This is another one.)
20:59:42 <sm[m]> hyperisco: I think geekosaur was replying to aev
21:00:15 <geekosaur> I thought hyperisco was as well…
21:00:23 Guest81293 is now known as z0
21:01:09 <dminuoso> aev: "[...] distros that lack everything" - are you suggesting a linux distribution should install everything by default?
21:01:45 <geekosaur> one might be used to e.g.arch where there's no difference between runtime and devel packages
21:02:09 <geekosaur> (granting that that is part of why they botched their haskell ecosystem)
21:02:26 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
21:03:09 <sm[m]> poor old arch.. they need a spokesperson in here :)
21:04:34 × hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 256 seconds)
21:04:43 acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
21:05:51 matryoshka joins (~matryoshk@184.75.223.227)
21:06:17 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
21:07:24 <aev> dminuoso: on the contrary. I would like an installer package to identify which dependencies it requires before it starts building stuff. It's implicit dependencies like zlib in this case that consume a lot of time when they're missing. The package maintainer assumes that that lib is available. And on a fresh system it isn't. So it's their fault and they need to fix it. I'll see if I can send them a pull
21:07:26 × Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving)
21:07:30 <aev> request for that.
21:07:49 × nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 246 seconds)
21:08:35 <merijn> aev: The Haskell package? How would you expect it to install zlib?
21:09:14 Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net)
21:10:17 matryoshka` joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809)
21:10:20 <sm[m]> aev is suggesting that apt install cabal-install should also install some very common requirements like zlib-dev, I'm guessing
21:10:31 × matryoshka quits (~matryoshk@184.75.223.227) (Read error: Connection reset by peer)
21:10:56 <aev> No. I'm suggesting it alerts us of missing libs before it starts a minutes-long building effort, only to break after half an hour.
21:11:09 <sm[m]> aev, which "it" ?
21:11:12 <sm[m]> cabal ?
21:11:25 <aev> The cabal-install package.
21:11:28 <geekosaur> that much it ought to be doing already, I think
21:11:32 <sm[m]> I agree that would be nice
21:11:33 son0p joins (~son0p@181.136.122.143)
21:11:41 <merijn> It depends if it's using pkg-config depends
21:11:49 <merijn> Or just blindly assuming zlib is there
21:11:54 <sm[m]> libtinfo-dev libtinfo5 are two other libs often needed on debian
21:12:07 <geekosaur> but theres a bootstrapping problem with cabal-install since the normal checks are part of cabal-install…
21:12:20 <merijn> Ah
21:12:23 <merijn> It's not cabal-install
21:12:36 <merijn> cabal-install depends on the zlib package and that doesn't check whether zlib is present
21:12:51 <aev> Right now it looks like it blindly assumes it's there. Rust packages have the same problem: the package devs have those dependencies themselves so they forget to include a check.
21:12:53 <merijn> Because (by default) pkg-config is disabled in the zlib package
21:13:30 <merijn> aev: The is no generic way to check whether a package is installed, though
21:13:40 <merijn> Nor is there a generic way to check if a C library is available
21:14:32 × knupfer quits (~Thunderbi@200116b82c539b009c1c9f21e3904fbb.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
21:14:39 <aev> Cabal-install gets installed by the cabal executable. There does not need to be anything generic. It can be completely custom.
21:15:13 <merijn> aev: It's not cabal-install package that is wrong, it's the zlib package
21:15:22 <merijn> aev: And how do you propose this custom thing would work?
21:15:41 <sm[m]> I think it would be reasonable and convenient for debian's ghc package to depend on debian's zlib-dev, libtinfo-dev, libtinfo5 packages
21:15:56 <aev> I don't know yet. At this point I'm at the stage of complaining because I have a fresh environment.
21:16:03 <sm[m]> a pity Clint is not here
21:16:16 × DTZUZU quits (~DTZUZU@205.ip-149-56-132.net) (Ping timeout: 240 seconds)
21:16:52 <aev> Maybe the cabal package could depend on zlib-dev. That would fix the problem for cabal-install.
21:16:55 <merijn> aev: The problem is, as it usually is, that "why doesn't the package just check for X?" is that sensibly doing anything like that is generally impossible unless you assume very specific systems
21:17:20 <sm[m]> aev, I think ghc would be better, because you might be using stack or just ghc itself
21:17:25 <merijn> aev: Right, but that only works if we're talking actual linux distro packages
21:17:46 <aev> sm: agreed
21:17:48 <merijn> aev: The actual haskell package can't depend on "zlib-dev", because there's no notion of what "zlib-dev" even is
21:18:02 <aev> merijn: now that's a problem.
21:18:20 <merijn> aev: It's an unfixable problem
21:18:47 <merijn> aev: zlib-dev is a specific package on a specific distro. How could you possibly specify a dependency on a C library that works on all distros, macOS, and windows?
21:19:04 <merijn> aev: Answer: You can't, since there's no shared package manager that exists on all 3
21:19:12 <aev> How does the builder figure out it needs zlib and then fail, if it doesn't know what zlib is? It doesn't even say it needs zlib-dev. It complains about zlib. Of course the distro has zlib by default, but not zlib-dev.
21:19:13 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 260 seconds)
21:19:39 <merijn> (not to mention macOS having multiple package managers, windows not really having one at all, and all linux distro using different ones with names that might be zlib, zlib-dev, or really anything
21:20:08 <merijn> aev: It just passed "-lzlib" to the system linker and the system linker checks if a library by that name exists and then uses it
21:20:35 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
21:20:41 <aev> So... can't the installer do that in the beginning of its process?
21:20:51 <merijn> aev: zlib-dev isn't the name of a library, it's the name of the package that has a library named zlib. But some distros tag libraries with -dev fixers
21:21:24 <merijn> aev: Not really, because there is no portable way to ask a linker of a library exists
21:21:55 <merijn> You'd need to ship some kind of dummy object file (which aren't portable either!) and try and link that with the linker and see if it fails
21:22:20 <merijn> aev: The rabbit hole just keeps going and going and getting less portable and more system specific as you go
21:22:30 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
21:23:03 <merijn> aev: The end result is something like ghcup/rustup which basically are just a long list of distro/OS specific instructions to get everything installed
21:23:10 <geekosaur> and then there's what happens if its there but has its own dependency for some reason
21:23:50 <aplainzetakind> Does Text have any disadvantages compared to String?
21:24:03 <merijn> aev: And that's the only real thing that works "write a script per possible distro/OS that fetches dependencies", which is not really something you wanna somehow embed inside, say, cabal-install. Which is why non have the build tools in any language do that
21:24:19 <merijn> aplainzetakind: Eh, it's harder to pattern match and list functions don't work? That's about it
21:24:38 conal joins (~conal@64.71.133.70)
21:24:42 <aplainzetakind> That's what I thought.
21:24:45 <dolio> Text uses slightly more memory for very small strings, I think.
21:24:49 <c_wraith> Text literals aren't as efficient
21:24:54 <merijn> dolio: tbh, I doubt it
21:25:05 <sm[m]> all that said.. there's two or three C libs that are typically missing and we've been helping new haskellers figure this out for years. There must be some things that can be done to reduce the hassle
21:25:13 × aev quits (~aev@pool-108-5-152-94.nwrknj.fios.verizon.net) (Read error: Connection reset by peer)
21:25:14 <dolio> But that's not really worth worrying about.
21:25:20 aev joins (~aev@pool-108-5-152-94.nwrknj.fios.verizon.net)
21:25:20 <merijn> dolio: String has like 24 bytes per character, I dunno how big the overhead of Text is, but it's probably close unless you have like 1 character strings :p
21:25:24 <aev> Gah, my network connection broke again
21:25:41 <c_wraith> merijn: that overhead doesn't always exist.
21:25:41 <aplainzetakind> Can't one create an interface like the list one for strings using PatternSynonyms?
21:25:55 <Clint> sm[m]: if someone files a wishlist bug those dev packages could be added as some kind of weak dependencies
21:26:20 <merijn> aplainzetakind: Well, Text already has Text versions of most list functions, so...someone already did? :p
21:26:31 <merijn> aplainzetakind: And you can probably use PatternSynonyms, yes
21:26:37 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection)
21:26:51 <sm[m]> ah hi Clint. So that idea of making debian's ghc depend on say zlib-dev, libtinfo-dev, libtinfo5 might fly ?
21:27:11 <c_wraith> Text has bad ergonomics for anything you expect to be a code literal
21:27:35 <geekosaur> I think the intended fix for Text vs. String is backpack? but it's taking a while to actuallly happen because of missing build tool support
21:27:54 <aev> Debian keeps breaking the installs. Going to use ghcup instead.
21:28:12 <merijn> geekosaur: With ezyang doing pytorch I don't see it happening any time soon :p
21:28:46 <c_wraith> I'd use Text for input on anything I care about text input handling. But if you are writing functions that accept values you expect to be literals in code, String is a lot less likely to be a hassle and performance will usually be a wash.
21:30:06 × bitmapper quits (uid464869@gateway/web/irccloud.com/x-npxxmdhrbnlnnshm) (Quit: Connection closed for inactivity)
21:31:48 <sm[m]> c_wraith++
21:33:13 × aev quits (~aev@pool-108-5-152-94.nwrknj.fios.verizon.net) (Ping timeout: 264 seconds)
21:33:41 knupfer joins (~Thunderbi@i59F7FF2B.versanet.de)
21:34:32 <c_wraith> Haskell doesn't have a "string problem". It has options for a lot of different cases, because it turns out that strings are *not* actually one representation fits all.
21:35:05 <sm[m]> Haskell has a "batteries" and "imports" problem :)
21:35:36 <c_wraith> yeah, those are fair. lots of options, surprisingly verbose to combine them
21:36:00 <Kronic> meh, I think it's not unreasonable to say that people coming from somewhere else expect it to simple when Haskell has made it harder than what they think it should be. Speaking as one of those people right now
21:36:38 <c_wraith> Though if you're writing an application rather than a library, you can do a lot to reduce the import overhead by creating a custom set of default imports.
21:37:03 × royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
21:37:06 <c_wraith> Unfortunately, you can't do that with qualified imports, so it has its limits
21:38:27 <sm[m]> Kronic: it's not unreasonable. The main problem is how to get from here to a clean modern complete standard library and language defaults that makes all the easy/right things easy
21:38:38 <Clint> sm[m]: cabal-install sounded more reasonable, i think.. if you're using debian-packaged libraries with debian-packaged ghc, all those will be pulled in for you automatically and you won't have to worry about it
21:40:04 <sm[m]> Clint: ie the cabal-install and stack packages could depend on those common C libs, maybe ?
21:40:12 <Kronic> Sure. I mean, if the biggest problem a language has is "working with text is a little bit annoying for someone new" then that's a good problem to have in comparison to what could be the case. I don't have any idea how to make it any easier, because much of Haskell is still very new to me. My only point was it's definitely not obvious why all of the various options exist at first
21:41:08 <Clint> sm[m]: yeah, but it would have to be a weak dependency because those things aren't actual dependencies
21:41:27 <Clint> so like a Recommends or a Suggests
21:41:28 <sm[m]> cool. aev was ready to submit requests.. come back aev..
21:42:04 <sm[m]> Clint: when does apt install those ? automatically, or does it just mention them in the output ?
21:43:29 × danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds)
21:44:40 chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
21:45:19 <sm[m]> Kronic: yes, it's similar for time, dates, maps, vectors, ... I believe
21:46:25 × matryoshka` quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Read error: Connection reset by peer)
21:46:29 matryoshka joins (~matryoshk@184.75.223.227)
21:46:33 × geekosaur quits (ac3a541c@172.58.84.28) (Remote host closed the connection)
21:46:35 jespada joins (~jespada@90.254.245.49)
21:47:27 <Sose> I made a new servant stack project with `stack new todo servant` but I can't get it to build... I don't really understand these error messages. https://gist.github.com/Sose/d955fd1d1149abf4070eb6a9cd2216a7
21:48:07 Noldorin joins (~noldorin@unaffiliated/noldorin)
21:48:51 SomeoneSerge joins (~someone-s@5.253.207.86)
21:48:54 <merijn> sm[m]: tbh, I'd like to know which languages do have a clean complete standard library and are easy to install :p
21:49:13 <merijn> sm[m]: I guess maybe Go? But their standard library is "just pull HEAD from github", afaict
21:49:40 × Noldorin quits (~noldorin@unaffiliated/noldorin) (Client Quit)
21:49:50 <MarcelineVQ> complete for who >:<
21:50:04 nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net)
21:50:21 <merijn> Kronic: On the one hand it can be tricky, but otoh, when was the last time a language you used was powerful enough for vectors to be something that could be implemented well in a 3rd party library? ;)
21:50:30 <merijn> (or Text or...)
21:50:31 <sm[m]> merijn: it's all relative of course, but people usually say python's or ruby's stdlib are more complete and easy to work with
21:50:34 <merijn> MarcelineVQ: Well, that too
21:50:51 <merijn> sm[m]: Python's standard lib is also filled with deprecated junk people keep having to tell people not to use :)
21:51:14 <dolio> Is this the same python where people are ranting about all the string types?
21:51:24 <merijn> dolio: Probably, but they are wrong
21:51:25 <sm[m]> I know you like to argue, but can you please just.. see my point ? :)
21:51:36 <merijn> If anything, we don't have enough string types :)
21:51:42 <dolio> Yeah, the 'string problem' is that programmers don't understand strings. :)
21:51:47 <merijn> sm[m]: I'm not disagreeing that haskell is a bit messy
21:52:04 <merijn> sm[m]: It's just that, imho, people have a romanticised view of how well it's "solved" in other languages
21:52:27 <merijn> Usually the solution in other languages is "we threw man-decades at things until it was manually fixed in all cases"
21:52:31 <sm[m]> thanks. Let's not let that be an excuse not to look at ways to improve
21:52:35 <merijn> Which, fine, that's good for users
21:52:43 <merijn> But not something we can easily replicate
21:52:54 <merijn> And in the grand scheme of things Haskell really isn't that bad
21:53:47 <Kronic> Haskellers have such a stranger vocabulary, otoh/machinery are phrases used constantly, I'll catch myself saying it eventually I guess
21:53:52 <merijn> You should try installing LLVM and libstdc++ without relying on a package manager...it's a disaster that no mortal can decipher, but LLVM is big enough to be packaged by "other people" so no one has to notice :)
21:53:56 <Kronic> or words, I mean
21:54:31 <Sose> merijn: oh no :D
21:55:26 <merijn> Sose: "GHC is so big, it's 1.5 GB!" *looks at LLVM with it's 40 GB build dir and 3.5 GB final install size* 'heh...yeah, you're right...'
21:57:06 × chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:58:19 <merijn> Like, I get it, we all want everything to be a single button labelled "DWIM", but things are complicated and lots of the bad things with cabal and Haskell in general aren't bad because we design bad solutions, but because cross-platform and portable things are hard, especially when not designed into the architecture from the start
21:58:51 <Clint> sm[m]: it installs Recommends automatically unless you specifically opt out of that
21:59:36 × vfaronov quits (~vfaronov@broadband-95-84-210-78.ip.moscow.rt.ru) (Quit: vfaronov)
21:59:42 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
22:00:17 <Sose> I was recommended servant for making web APIs but honestly I'd rather try something else than try to get llvm working myself :|
22:00:40 <sm[m]> cool
22:01:32 olligobber joins (~olligobbe@unaffiliated/olligobber)
22:01:56 quarters joins (~quarters@unaffiliated/quarters)
22:02:21 <Kronic> is there a vscode plugin for keeping equals signs in line in haskell?
22:02:36 × Tario quits (~Tario@201.192.165.173) (Ping timeout: 272 seconds)
22:05:04 <quarters> hello. I was wondering if anyone can recommend a framework for building a trivial rest api with haskell
22:05:53 <aplainzetakind> Is there a brand new extension or something which lets one write nullary "operators" "infix"?
22:06:00 <aplainzetakind> I mean without parentheses.
22:06:12 <aplainzetakind> I mean for this empty Text synonym: https://dpaste.com/B7YCVRXYZ
22:06:25 <Rembane> quarters: Scotty!
22:06:36 <Rembane> quarters: https://hackage.haskell.org/package/scotty
22:06:47 <quarters> Rembane: thank you :)
22:06:53 <Sose> I guess I'll try scotty aswell :D
22:07:54 <Sose> I see that needs warp aswell! :D
22:08:00 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
22:08:10 <Rembane> quarters: np!
22:09:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
22:10:37 × psy-bot quits (~yaaic@2600:380:5233:3c24:60c2:d5c2:5799:f2fe) (Remote host closed the connection)
22:13:15 <Kronic> Question: if you have a pattern that repeats a lot with slightly longer function names, like this (f2 . f1) $ f0 v1 v2, is it a bad idea to just bundle that up into a local function and slap the name "f/g" on it?
22:13:29 <Kronic> Or do you guys go out of your way to give a better name to things like that
22:14:20 <Rembane> Kronic: I try to not name things. It saves so much time.
22:14:50 <Rembane> Kronic: That does look like the dot operator: ((.) . (.))
22:15:01 <Rembane> :t ((.) . (.))
22:15:06 <lambdabot> (b -> c) -> (a1 -> a2 -> b) -> a1 -> a2 -> c
22:15:20 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:15:30 <Kronic> you try to not name things?
22:15:41 <quarters> I noticed that when building a project with stack, it uses a lot of space. I was wondering if it's different for cabal
22:16:25 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 246 seconds)
22:16:54 <sclv> cabal doesn’t install its own ghc so that might save some space
22:17:03 <Rembane> Kronic: Yeah, I do pointfree style as much as I can. This means that nobody can read the code, but I don't have to name things.
22:17:43 <quarters> sclv: great. thank you
22:17:48 × jneira quits (501e6453@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.100.83) (Ping timeout: 272 seconds)
22:18:01 <Kronic> You could just not write code at all, then even you wouldn't have to read it as you write it
22:18:55 <Rembane> That's where I'm heading, not gotten there yet thoug.
22:20:02 o1lo01ol1o joins (~o1lo01ol1@31.22.216.239)
22:20:31 Tario joins (~Tario@201.192.165.173)
22:22:04 <sm[m]> quarters: also you can make stack use a single ghc with: stack --no-install-ghc --system-ghc ...
22:22:25 <quarters> sm[m]: ah nice. thanks!
22:22:28 <sm[m]> to clean up the ghcs you already have, ncdu ~/.stack is good
22:25:09 × o1lo01ol1o quits (~o1lo01ol1@31.22.216.239) (Ping timeout: 260 seconds)
22:26:35 × heatsink quits (~heatsink@2600:1700:bef1:5e10:b8b7:e159:8e2c:1d1c) (Remote host closed the connection)
22:27:01 <dminuoso> Kronic: Over the years I've become convinced that the better style is to have where clauses and lots of bindings.
22:27:45 <dminuoso> Trying to get smart with point-free might be fun as a golfing excercise, but when you re-visit your code a year later, you'll thank yourself for a) moving portions into separate bindings, b) giving them sensible names and c) attaching a type signature to them.
22:27:49 chang joins (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com)
22:28:25 <dminuoso> And perhaps d) attaching a comment to it
22:28:44 <monochrom> There is no mutual exclusion between naming and pointfree (wherever pointfree makes sense).
22:28:57 <dminuoso> Right. But then I try to keep the point-free code relatively small
22:29:41 <Kronic> Ah, maybe I was not clear. The point about the where clause is good to hear, I've been doing that already, I find it very useful. My point was say I have some small expression I repeat a bunch to get a value, my example was listed above, does it make sense to spend some time naming what exactly that is, or is there some kind of practice for having a placeholder name here for some small internal where function that doesn't matter much e.g. f or g
22:30:43 <dminuoso> Kronic: Well, if you have to even repeat it, it's worth putting into a binding for that reason alone. :)
22:30:44 <sm[m]> it's pretty subjective Kronic, whatever makes you/your team most comfortable in that part of the code I'd say
22:30:46 <monochrom> In that case I go meta for a while. Does it make sense to spend a few minutes to decide whether it makes sense to spend a few minutes to...
22:31:26 <dminuoso> Kronic: Whenever I even think about "should I maybe put this into a binding" - that thought alone is reason enough to put it on a separate binding.
22:31:51 <monochrom> And then I short-circuit all that. If within 5 minutes I can think up a good name, I go with it. If not, move on.
22:32:13 <dminuoso> One name to bind them all, one name to find them, one name to bring them all, and in Haskell bind them.
22:32:24 <Kronic> The binding part I definitely agree about, it's just the name I'm concerned about. For example in kotlin, if you have a lambda that just one parameter that is always called "it" unless you specify otherwise
22:32:28 <dminuoso> Oh that doesn't quite flow
22:33:14 <monochrom> I think the first sentence can be better as "one name to name them all".
22:33:41 × kenran quits (~kenran@mue-88-130-62-159.dsl.tropolys.de) (Quit: leaving)
22:33:46 <dminuoso> Oh I know!
22:34:05 <Rembane> Maybe if you change the words to operators.
22:34:11 <dminuoso> One where to name them all, one where to find them, one where to bring them all, and in Haskell bind them.
22:34:15 <dminuoso> monochrom: How about this? :)
22:34:26 <monochrom> Yes that works nicely.
22:34:27 × sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
22:34:51 <sm[m]> I think one where to sould be extracted to a where clause
22:35:20 <monochrom> You look at mathematics and you see that extremely useful theorems, extremely repeatedly used theorems, cannot have "meaningful" names unless you allow the names to be as lengthy as the theorems themsevles.
22:35:45 <monochrom> For example the Yoneda lemma. For example Löb.
22:36:16 <dolio> I'm not sure mathematicians even try.
22:36:33 × amerigo quits (uid331857@gateway/web/irccloud.com/x-vjipgcwqkmvmljqz) (Quit: Connection closed for inactivity)
22:36:42 × fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.7.1)
22:36:44 <monochrom> But you can try. Yoneda's lemma. What would be a better name?
22:37:02 fresheyeball joins (~isaac@c-71-237-105-37.hsd1.co.comcast.net)
22:37:12 <dolio> Presheaf induction principle.
22:37:24 × geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds)
22:37:26 <fresheyeball> is there a way I can handle a MonadError locally so the constraint is not needed?
22:37:27 <Rembane> As long as they have a name that's fairly unique that you can use to chunk the concept I'm cool with it.
22:37:31 <monochrom> Eventually you accept that many helper functions have to stay as being called "my_helper" unless you accept a name that's longer than the implementation.
22:37:44 <dminuoso> fresheyeball: Can you elaborate?
22:37:55 <fresheyeball> Basically I have some functions that don't compose
22:38:02 <dminuoso> Well, in Haskell we tend to name helper functions `go` though.
22:38:08 <fresheyeball> the `e` in their MonadError constraints are in conflict
22:38:16 <fresheyeball> and I can handle the error case locally in a nice way
22:38:35 <fresheyeball> by in conflict, I mean "do not unify"
22:39:17 <monochrom> Nice, I like presheaf induction principle. Kan extension?
22:39:45 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:40:55 <dolio> Not sure. "Extension" is already an actual technical term.
22:41:30 gnx joins (~heh@elt/leader/gnx)
22:41:38 <dolio> The "Kan" part is mostly superfluous.
22:41:58 <monochrom> Ah OK, I agree.
22:41:59 <dolio> But people need to get credit.
22:42:13 gnx parts (~heh@elt/leader/gnx) ("Leaving")
22:42:13 <dolio> Or else they don't get paid.
22:42:51 <dminuoso> Mathematicians get paid?
22:42:57 <dolio> A little bit.
22:44:46 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
22:45:38 × conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
22:46:01 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
22:46:05 conal joins (~conal@64.71.133.70)
22:46:44 × conal quits (~conal@64.71.133.70) (Client Quit)
22:46:44 saline_soln joins (~nord@2601:240:4a00:47e8:7a85:a2b5:7fa2:5039)
22:51:25 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 265 seconds)
22:51:38 × saline_soln quits (~nord@2601:240:4a00:47e8:7a85:a2b5:7fa2:5039) (Ping timeout: 264 seconds)
22:54:29 × kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection)
22:56:57 hexfive joins (~hexfive@50-47-142-195.evrt.wa.frontiernet.net)
22:57:52 aev joins (~aev@pool-108-5-152-94.nwrknj.fios.verizon.net)
22:59:05 × knupfer quits (~Thunderbi@i59F7FF2B.versanet.de) (Ping timeout: 240 seconds)
23:00:01 × __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving)
23:00:15 × Tops2 quits (~Tobias@dyndsl-095-033-025-077.ewe-ip-backbone.de) (Read error: Connection reset by peer)
23:01:11 conal joins (~conal@64.71.133.70)
23:02:26 × aev quits (~aev@pool-108-5-152-94.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds)
23:04:10 fuzzypixelz joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
23:10:31 shalokshalom joins (~quassel@2a02:1748:dd5e:7f60:e2dc:326:1bfd:b9fc)
23:10:44 <shalokshalom> https://github.com/commercialhaskell/stack/issues/5452
23:10:57 <shalokshalom> Where in the source code to add this, so I can raise a PR?
23:13:24 <dminuoso> shalokshalom: https://github.com/commercialhaskell/stack/blob/master/src/Stack/Setup.hs
23:13:52 mirrorbird joins (~psutcliff@2a00:801:2d6:5a31:e851:a991:dd63:f024)
23:13:54 <dminuoso> shalokshalom: The exit point for the error you're getting is the UnknownCompilerVersion exception
23:13:57 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:14:00 <dminuoso> Beyond that I cant help
23:15:08 zincy__ joins (~tom@host86-169-79-54.range86-169.btcentralplus.com)
23:15:16 × tom__ quits (~tom@2a00:23c8:970a:3501:b89a:3974:7a09:75a2) (Remote host closed the connection)
23:18:37 <sm[m]> huh, I was thinking https://github.com/commercialhaskell/stack/blob/master/etc/scripts/get-stack.sh
23:19:58 <dminuoso> oh
23:20:39 <dminuoso> sm[m]: The error diagnostic definitely comes from the above Setup.hs
23:21:06 <dminuoso> ahh, I see
23:21:18 <sm[m]> I see. That's the stack setup command I guess
23:21:47 <dminuoso> No your pointer is definitely right
23:22:12 <dminuoso> @pl \f -> (\(ann, n) -> (f ann n, n)))
23:22:12 <lambdabot> (line 1, column 34):
23:22:12 <lambdabot> unexpected ')'
23:22:12 <lambdabot> expecting variable, "(", operator or end of input
23:22:39 <dminuoso> @pl (\(ann, n) -> (f ann n, n))
23:22:40 <lambdabot> uncurry (join . ((,) .) . f)
23:22:59 <dminuoso> Mmm. Is there a profunctor thing for this?
23:23:21 × coot quits (~coot@37.30.50.101.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
23:25:14 × acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 260 seconds)
23:25:32 <quarters> when trying to run scotty using the code here: https://hackage.haskell.org/package/scotty, I get an error saying that where "/:word" is, a RoutePattern was expected and I was wondering what i'm doing wrong
23:25:58 <glguy> quarters, did you add this to the top of the file? {-# LANGUAGE OverloadedStrings #-}
23:26:11 <quarters> oooh no i didn't
23:26:23 <quarters> I suppose I didn't do it verbatim after all
23:26:32 <quarters> thanks! let me try that
23:27:18 heatsink joins (~heatsink@2600:1700:bef1:5e10:2465:8c15:4fac:3d31)
23:29:11 <quarters> that worked :)
23:30:27 × veox quits (~veox@185.163.110.125) (Remote host closed the connection)
23:30:36 × z0 quits (~z0@188.251.86.84) (Ping timeout: 240 seconds)
23:30:38 × gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
23:31:04 × son0p quits (~son0p@181.136.122.143) (Quit: Lost terminal)
23:31:58 × cosimone quits (~cosimone@93-47-228-249.ip115.fastwebnet.it) (Quit: cosimone)
23:32:26 × heatsink quits (~heatsink@2600:1700:bef1:5e10:2465:8c15:4fac:3d31) (Ping timeout: 264 seconds)
23:33:58 × acidjnk_new quits (~acidjnk@p200300d0c719ff439996fb92bd8d62ee.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
23:34:36 × Vulfe quits (~vulfe@2600:1702:31b0:34e0:2934:49bf:39ab:a879) (Remote host closed the connection)
23:34:49 × Gurkenglas_ quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 246 seconds)
23:36:04 × Ariakenom quits (~Ariakenom@h-98-128-229-53.NA.cust.bahnhof.se) (Quit: Leaving)
23:36:46 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
23:37:45 geowiesnot joins (~user@87-89-181-157.abo.bbox.fr)
23:39:04 alainb joins (~alainb@bras-base-hullpq2034w-grc-41-70-55-129-251.dsl.bell.ca)
23:41:07 Vulfe joins (~vulfe@2600:1702:31b0:34e0:2934:49bf:39ab:a879)
23:41:14 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Remote host closed the connection)
23:41:43 monadmatt joins (~user@119-17-128-101.771180.mel.nbn.aussiebb.net)
23:45:25 × chang quits (~textual@host-173-230-65-85.njjcmar.clients.pavlovmedia.com) (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:46:37 × fendor quits (~fendor@91.141.1.222.wireless.dyn.drei.com) (Remote host closed the connection)
23:46:49 alainb parts (~alainb@bras-base-hullpq2034w-grc-41-70-55-129-251.dsl.bell.ca) ()
23:48:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
23:49:37 <Sose> btw regarding my issue with installing `warp` earlier.. I deleted ~/.stack and suddenly it works
23:49:38 × nfd quits (~nfd9001@c-67-183-38-33.hsd1.wa.comcast.net) (Ping timeout: 272 seconds)
23:50:43 gac410 joins (~gac410@178.162.204.214)
23:55:45 × monadmatt quits (~user@119-17-128-101.771180.mel.nbn.aussiebb.net) (Ping timeout: 240 seconds)

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