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.