Logs on 2021-01-11 (freenode/#haskell)
| 00:00:21 | × | Guest19797 quits (~textual@2603-7000-3040-0000-ad3e-16ae-7559-7e68.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 00:04:05 | × | atk quits (~Arch-TK@ircpuzzles/staff/Arch-TK) (Quit: Well this is unexpected.) |
| 00:04:57 | → | atk joins (~Arch-TK@ircpuzzles/staff/Arch-TK) |
| 00:05:19 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) |
| 00:06:04 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:06:45 | <edrx> | ok, guard is here: libraries/base/Control/Monad.hs... |
| 00:07:14 | <edrx> | what do I need to do in the ghci prompt to put "guard" in the current scope? some kind of import? |
| 00:07:43 | <monochrom> | "import Control.Monad" or ":module +Control.Monad" |
| 00:08:28 | <edrx> | monochrom: perfect!!! thanks!!! =) |
| 00:10:14 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fca4:9ad3:62d5:2599) (Ping timeout: 264 seconds) |
| 00:11:08 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 00:11:21 | × | dandart quits (~Thunderbi@home.dandart.co.uk) (Quit: dandart) |
| 00:11:37 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 00:12:07 | → | unknown joins (~unknown@185.204.1.185) |
| 00:18:36 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:5947:e9b7:38e6:9425) |
| 00:21:01 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 00:21:08 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 00:21:35 | → | matryoshka` joins (~matryoshk@184.75.223.227) |
| 00:21:35 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Read error: Connection reset by peer) |
| 00:22:46 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 00:23:06 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
| 00:23:21 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 00:23:30 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 00:24:00 | → | usr25 joins (~usr25@unaffiliated/usr25) |
| 00:24:09 | ← | usr25 parts (~usr25@unaffiliated/usr25) () |
| 00:26:07 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:5947:e9b7:38e6:9425) (Ping timeout: 260 seconds) |
| 00:27:56 | × | matryoshka` quits (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in) |
| 00:28:13 | × | Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
| 00:28:56 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 00:35:01 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Ping timeout: 264 seconds) |
| 00:35:40 | → | remby joins (~remby@bras-base-london1483w-grc-11-76-69-70-199.dsl.bell.ca) |
| 00:35:46 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:255c:18d1:c1a9:13be:6f9e) |
| 00:35:49 | <remby> | does haskell have offline documentation? |
| 00:37:51 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:5947:e9b7:38e6:9425) |
| 00:38:33 | <monochrom> | Yes. |
| 00:39:24 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection) |
| 00:40:44 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 260 seconds) |
| 00:41:29 | <remby> | ok, I guess that decides it then |
| 00:41:55 | <shapr> | hoogle is really handy |
| 00:42:17 | → | dandart joins (~Thunderbi@home.dandart.co.uk) |
| 00:42:28 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:5947:e9b7:38e6:9425) (Ping timeout: 260 seconds) |
| 00:42:32 | × | sagax quits (~sagax_nb@213.138.71.146) (Quit: Konversation terminated!) |
| 00:43:51 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:46:54 | × | kupi quits (uid212005@gateway/web/irccloud.com/x-dnfwwxqcgyemldny) (Quit: Connection closed for inactivity) |
| 00:47:48 | × | electricityZZZZ quits (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Quit: Leaving) |
| 00:49:19 | <edrx> | how do I make cabal update its installed packages to the latest versions? here's what I tried... http://ix.io/2LBD |
| 00:52:05 | → | vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net) |
| 00:55:04 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:5947:e9b7:38e6:9425) |
| 00:59:58 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:5947:e9b7:38e6:9425) (Ping timeout: 260 seconds) |
| 01:00:00 | → | Alleria joins (~textual@2603-7000-3040-0000-ad3e-16ae-7559-7e68.res6.spectrum.com) |
| 01:00:24 | Alleria | is now known as Guest81850 |
| 01:02:08 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 01:03:15 | <monochrom> | "cabal install ghc" reflects two misconceptions, not just one. |
| 01:03:37 | <monochrom> | cabal is not responsible for installing the compiler. |
| 01:04:18 | <monochrom> | the package name "ghc" does not refer to the compiler either. It refers to a library. |
| 01:04:50 | × | Guest81850 quits (~textual@2603-7000-3040-0000-ad3e-16ae-7559-7e68.res6.spectrum.com) (Ping timeout: 264 seconds) |
| 01:07:51 | <edrx> | monochrom: ooops |
| 01:08:41 | <edrx> | yeah, I was making some not-very-educated guesses and checking if they would work... |
| 01:08:45 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 01:10:41 | × | xff0x_ quits (~fox@2001:1a81:53b9:9a00:e5cb:577b:4380:8a0f) (Ping timeout: 272 seconds) |
| 01:11:13 | × | zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving) |
| 01:11:15 | → | xff0x joins (~fox@2001:1a81:53b9:9a00:e9ba:2994:380d:244a) |
| 01:16:29 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:6523:6211:1be0:a1d0) |
| 01:16:42 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 01:16:55 | → | zaquest joins (~notzaques@5.128.210.178) |
| 01:18:13 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 01:20:58 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:6523:6211:1be0:a1d0) (Ping timeout: 260 seconds) |
| 01:24:38 | × | xff0x quits (~fox@2001:1a81:53b9:9a00:e9ba:2994:380d:244a) (Ping timeout: 264 seconds) |
| 01:25:28 | → | xff0x joins (~fox@2001:1a81:53b9:9a00:3eee:771:334a:a242) |
| 01:25:40 | × | columbarius1 quits (~columbari@i5E86B32C.versanet.de) (Ping timeout: 246 seconds) |
| 01:26:23 | × | natechan quits (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Quit: WeeChat 2.9) |
| 01:27:59 | → | columbarius1 joins (~columbari@87.123.198.160) |
| 01:31:39 | × | mirrorbird quits (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Remote host closed the connection) |
| 01:32:07 | → | mirrorbird joins (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) |
| 01:35:43 | → | natechan joins (~natechan@108-233-125-227.lightspeed.sntcca.sbcglobal.net) |
| 01:36:00 | → | ArConan joins (~ArConan@202.74.1.147) |
| 01:36:26 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:c0dd:aaee:98bd:df7) |
| 01:36:57 | × | ArConan quits (~ArConan@202.74.1.147) (Remote host closed the connection) |
| 01:37:18 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:32fa:5861:e6a3:7ef9) (Ping timeout: 260 seconds) |
| 01:37:19 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 01:37:52 | → | ArConan joins (~ArConan@pcd459180.netvigator.com) |
| 01:38:26 | × | noctux quits (~noctux@unaffiliated/noctux) (Ping timeout: 264 seconds) |
| 01:38:54 | <ArConan> | hm |
| 01:39:36 | × | AWizzArd quits (~code@unaffiliated/awizzard) (Ping timeout: 240 seconds) |
| 01:39:37 | × | cocreature quits (~cocreatur@eirene.uberspace.de) (Ping timeout: 265 seconds) |
| 01:40:08 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
| 01:40:19 | × | ArConan quits (~ArConan@pcd459180.netvigator.com) (Remote host closed the connection) |
| 01:41:23 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:c0dd:aaee:98bd:df7) (Ping timeout: 260 seconds) |
| 01:41:36 | × | Gurkenglas_ quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 256 seconds) |
| 01:42:16 | × | vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection) |
| 01:44:54 | × | jmchael quits (~jmchael@87.112.235.234) (Ping timeout: 260 seconds) |
| 01:47:20 | → | ArConan joins (~ArConan@pcd459180.netvigator.com) |
| 01:48:03 | × | conal_ quits (~conal@66.115.176.210) (Quit: Computer has gone to sleep.) |
| 01:48:18 | × | ArConan quits (~ArConan@pcd459180.netvigator.com) (Remote host closed the connection) |
| 01:49:26 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:5c80:7e91:5436:7bd4) |
| 01:50:57 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 01:52:34 | → | shinobi_ joins (~shinobi@c-24-147-48-162.hsd1.ma.comcast.net) |
| 01:54:22 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:c0dd:aaee:98bd:df7) |
| 01:56:24 | × | shinobi quits (~shinobi@c-24-147-48-162.hsd1.ma.comcast.net) (Ping timeout: 272 seconds) |
| 01:56:25 | → | niekvand_ joins (~niekvande@2001:985:bebc:1:bd2c:61bf:46f:59d0) |
| 01:56:34 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 01:58:52 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:c0dd:aaee:98bd:df7) (Ping timeout: 260 seconds) |
| 01:59:29 | → | abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 01:59:32 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 02:01:13 | × | niekvand_ quits (~niekvande@2001:985:bebc:1:bd2c:61bf:46f:59d0) (Ping timeout: 260 seconds) |
| 02:03:20 | → | guest111 joins (~user@49.5.6.87) |
| 02:10:13 | × | mirrorbird quits (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Ping timeout: 272 seconds) |
| 02:12:17 | × | acidjnk_new quits (~acidjnk@p200300d0c704e77520873290fe3f7255.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 02:18:21 | → | heron joins (~owner@198.52.165.210) |
| 02:20:20 | → | conal joins (~conal@66.115.176.210) |
| 02:27:12 | → | AWizzArd joins (~code@gehrels.uberspace.de) |
| 02:27:13 | × | dwts quits (pid@gateway/shell/blinkenshell.org/x-yvyypwvhqlmptmog) (Ping timeout: 264 seconds) |
| 02:27:58 | → | niekvandepas joins (~niekvande@80-100-16-191.ip.xs4all.nl) |
| 02:28:00 | → | noctux joins (~noctux@unaffiliated/noctux) |
| 02:28:57 | → | dwts joins (pid@gateway/shell/blinkenshell.org/x-rpycedoficifxmhn) |
| 02:29:16 | → | cocreature joins (~cocreatur@eirene.uberspace.de) |
| 02:30:24 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:32:45 | × | noctux quits (~noctux@unaffiliated/noctux) (Ping timeout: 240 seconds) |
| 02:32:54 | → | noctux joins (~noctux@unaffiliated/noctux) |
| 02:33:05 | × | niekvandepas quits (~niekvande@80-100-16-191.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 02:33:08 | × | yahb quits (xsbot@haskell/bot/yahb) (Ping timeout: 272 seconds) |
| 02:37:27 | × | xff0x quits (~fox@2001:1a81:53b9:9a00:3eee:771:334a:a242) (Ping timeout: 272 seconds) |
| 02:37:37 | × | noctux quits (~noctux@unaffiliated/noctux) (Ping timeout: 265 seconds) |
| 02:38:41 | → | xff0x joins (~fox@2001:1a81:53ed:d500:65a5:563d:c1b5:1e59) |
| 02:38:43 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 02:38:49 | → | rajivr joins (uid269651@gateway/web/irccloud.com/x-xvvnrltyuwuuhove) |
| 02:39:03 | → | yahb joins (xsbot@haskell/bot/yahb) |
| 02:39:49 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 264 seconds) |
| 02:42:20 | × | dmiles quits (dmiles@c-98-232-203-68.hsd1.wa.comcast.net) () |
| 02:43:25 | × | dwts quits (pid@gateway/shell/blinkenshell.org/x-rpycedoficifxmhn) (Ping timeout: 240 seconds) |
| 02:43:46 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 02:45:03 | × | srk quits (~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds) |
| 02:45:23 | × | hexo quits (~hexo@gateway/tor-sasl/hexo) (Quit: ZNC 1.8.2 - https://znc.in) |
| 02:46:10 | × | Entertainment quits (~entertain@104.246.132.210) (Ping timeout: 246 seconds) |
| 02:46:19 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 02:49:37 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Read error: Connection reset by peer) |
| 02:51:52 | × | Wuzzy quits (~Wuzzy@p5790e648.dip0.t-ipconnect.de) (Quit: Wuzzy) |
| 02:52:17 | pedrorubster[m] | sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/GiyGDoHyIzMWlKVnaWBFSYak/message.txt > |
| 02:52:26 | → | dwts joins (pid@gateway/shell/blinkenshell.org/x-ctstbhsfeyhihnsa) |
| 02:54:20 | → | noctux joins (~noctux@unaffiliated/noctux) |
| 02:55:08 | × | conal quits (~conal@66.115.176.210) (Quit: Computer has gone to sleep.) |
| 02:55:35 | <pedrorubster[m]> | ephemient: Don't want to take advantage of you, but you helped me last time haha |
| 02:57:33 | × | dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Quit: dcbdnl) |
| 03:00:03 | → | Stanley00 joins (~stanley00@unaffiliated/stanley00) |
| 03:01:44 | → | dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) |
| 03:04:48 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 03:05:04 | × | noctux quits (~noctux@unaffiliated/noctux) (Ping timeout: 246 seconds) |
| 03:05:12 | → | noctux joins (~noctux@unaffiliated/noctux) |
| 03:11:27 | → | drbean joins (~drbean@TC210-63-209-203.static.apol.com.tw) |
| 03:16:34 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 03:17:34 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 03:18:48 | → | darjeeling_ joins (~darjeelin@115.215.40.96) |
| 03:21:15 | × | urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna) |
| 03:21:52 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 246 seconds) |
| 03:23:00 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 03:23:10 | × | remby quits (~remby@bras-base-london1483w-grc-11-76-69-70-199.dsl.bell.ca) (Quit: remby) |
| 03:24:52 | <glguy> | pedrorubster[m], that message ended up being too long to come through directly to IRC |
| 03:25:18 | × | heron quits (~owner@198.52.165.210) (Quit: WeeChat 3.1-dev) |
| 03:28:09 | → | petersen joins (~petersen@redhat/juhp) |
| 03:32:35 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:33:17 | → | jedws joins (~jedws@121.209.139.157) |
| 03:37:37 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 03:37:44 | → | dyeplexer joins (~lol@unaffiliated/terpin) |
| 03:37:47 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:bd2c:61bf:46f:59d0) |
| 03:43:17 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:bd2c:61bf:46f:59d0) (Ping timeout: 260 seconds) |
| 03:45:13 | × | xff0x quits (~fox@2001:1a81:53ed:d500:65a5:563d:c1b5:1e59) (Ping timeout: 272 seconds) |
| 03:45:54 | → | xff0x joins (~fox@2001:1a81:53ed:d500:ffc4:2540:c5b7:b45c) |
| 03:47:04 | × | theDon quits (~td@94.134.91.57) (Ping timeout: 246 seconds) |
| 03:49:02 | → | theDon joins (~td@94.134.91.199) |
| 03:50:36 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 03:50:56 | → | ransom joins (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) |
| 03:51:50 | → | maxsu joins (~maxsu@ip-64-72-99-232.lasvegas.net) |
| 03:52:56 | → | jonatanb joins (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) |
| 03:56:05 | × | jedws quits (~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 03:56:36 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 240 seconds) |
| 03:57:05 | × | jonatanb quits (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Ping timeout: 240 seconds) |
| 03:57:07 | → | gxt joins (~gxt@gateway/tor-sasl/gxt) |
| 03:58:38 | → | xirhtogal joins (~lagothrix@unaffiliated/lagothrix) |
| 03:58:38 | lagothrix | is now known as Guest22145 |
| 03:58:38 | × | Guest22145 quits (~lagothrix@unaffiliated/lagothrix) (Killed (orwell.freenode.net (Nickname regained by services))) |
| 03:58:38 | xirhtogal | is now known as lagothrix |
| 03:58:44 | → | higherkinded joins (~dm223@ip68-225-238-234.oc.oc.cox.net) |
| 04:00:00 | × | Taneb quits (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) (Quit: I seem to have stopped.) |
| 04:01:30 | → | Taneb joins (~Taneb@2001:41c8:51:10d:aaaa:0:aaaa:0) |
| 04:03:27 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 04:03:43 | × | lambda-11235 quits (~lambda-11@2600:1700:7c70:4600:2560:f230:a66e:db8d) (Max SendQ exceeded) |
| 04:04:07 | × | higherkinded quits (~dm223@ip68-225-238-234.oc.oc.cox.net) (Quit: Leaving) |
| 04:04:16 | → | lambda-11235 joins (~lambda-11@2600:1700:7c70:4600:2560:f230:a66e:db8d) |
| 04:06:02 | → | Tops2 joins (~Tobias@dyndsl-095-033-095-004.ewe-ip-backbone.de) |
| 04:06:28 | → | krofe joins (kevin@gateway/vpn/protonvpn/krofe) |
| 04:06:31 | → | iridescent joins (2fe3e53b@047-227-229-059.res.spectrum.com) |
| 04:06:42 | <iridescent> | could anyone explain how `(fmap . fmap) sum Just [1, 2, 3]`works |
| 04:06:50 | <iridescent> | `(fmap . fmap) sum Just [1, 2, 3]` |
| 04:09:00 | <glguy> | > (fmap . fmap) sum Just [1, 2, 3] |
| 04:09:03 | <lambdabot> | Just 6 |
| 04:09:12 | <glguy> | Let's inline the use of (.) |
| 04:09:24 | <glguy> | fmap (fmap sum) Just [1,2,3] |
| 04:09:33 | <iridescent> | right |
| 04:09:38 | <glguy> | the (->) r instance of fmap is (.) |
| 04:09:41 | <glguy> | so now we have: |
| 04:09:47 | <glguy> | (fmap sum . Just) [1,2,3] |
| 04:09:52 | <iridescent> | how do we know we're dealing with a (->) r instance? |
| 04:10:05 | <glguy> | :t fmap |
| 04:10:07 | <lambdabot> | Functor f => (a -> b) -> f a -> f b |
| 04:10:23 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:bd2c:61bf:46f:59d0) |
| 04:10:24 | <glguy> | And the use of fmap is: fmap _ Just |
| 04:10:36 | → | tama2 joins (~tama@unaffiliated/tama00) |
| 04:10:40 | <glguy> | so in that use, f is chosen to be: (Int -> Maybe Int) |
| 04:10:42 | <iridescent> | so "Just" is the "f a" here? |
| 04:10:44 | <glguy> | err |
| 04:10:52 | <glguy> | f is: (->) Int |
| 04:10:57 | tama2 | is now known as tama00 |
| 04:10:59 | → | heronwr joins (~heronwr@198.52.165.210) |
| 04:11:19 | <iridescent> | shouldn't we have "f a" = Int -> Maybe Int |
| 04:11:28 | <glguy> | yeah, f applied to *a* is that |
| 04:11:37 | <glguy> | f is (->) Int; a is (Maybe Int) |
| 04:11:42 | <iridescent> | oh ok |
| 04:11:46 | <glguy> | so f a is: Int -> Maybe Int |
| 04:11:54 | <glguy> | Do you know the rest or should I keep going? |
| 04:12:35 | <iridescent> | i'm good |
| 04:12:36 | × | tama1 quits (~tama@unaffiliated/tama00) (Ping timeout: 240 seconds) |
| 04:12:45 | <iridescent> | i guess that's what i didn't get |
| 04:13:56 | × | chirpsalot quits (~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net) (Ping timeout: 240 seconds) |
| 04:15:58 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:bd2c:61bf:46f:59d0) (Ping timeout: 260 seconds) |
| 04:20:10 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 04:21:24 | → | Codaraxis__ joins (~Codaraxis@141.98.255.144) |
| 04:21:43 | × | dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Quit: dcbdnl) |
| 04:23:36 | × | heronwr quits (~heronwr@198.52.165.210) (Quit: WeeChat 3.1-dev) |
| 04:24:18 | → | chirpsalot joins (~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net) |
| 04:24:52 | × | Codaraxis_ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 246 seconds) |
| 04:25:25 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 264 seconds) |
| 04:26:49 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:bd2c:61bf:46f:59d0) |
| 04:30:10 | <iridescent> | could anyone give some example of how the sequence operator is useful? |
| 04:30:25 | <iridescent> | like I understand what it does but I can't imagine why i would want to do such an operation |
| 04:31:14 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:bd2c:61bf:46f:59d0) (Ping timeout: 264 seconds) |
| 04:34:21 | → | jedws joins (~jedws@121.209.139.157) |
| 04:37:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 04:37:26 | → | ome joins (uid36537@gateway/web/irccloud.com/x-ccqrafxmodzzqrro) |
| 04:37:33 | → | Tario joins (~Tario@201.192.165.173) |
| 04:38:17 | <ome> | In Lambda Calculus, how do you read out a term like this: λx. λy. x y x |
| 04:40:59 | → | owner joins (~heronwr@198.52.165.210) |
| 04:41:28 | owner | is now known as heronwr |
| 04:42:19 | <ski> | the function that maps an input, call it ⌜x⌝, to the function that maps an input, call it ⌜y⌝, to the application of the application of ⌜x⌝ to ⌜y⌝, to ⌜x⌝ |
| 04:42:50 | <ome> | Thanks. |
| 04:44:17 | → | dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) |
| 04:44:20 | <ome> | So this would be acceptable: lambda x maps to lambda y that maps to x applied to y applied to x ? |
| 04:44:43 | <ski> | yes (if you associate the applications in the right way) |
| 04:45:59 | <ski> | i guess sometimes people read the ⌜.⌝ as dot (as least i do, at times), making it "lambda ex dot lambda why dot ex of why, of ex" |
| 04:46:01 | <ome> | cheers |
| 04:46:58 | <ski> | another ("mathy") way to spell it would be ⌜x ↦ (y ↦ x(y)(x))⌝ (⌜↦⌝ is read as "maps to") |
| 04:47:53 | <ski> | (i also used the usual math notation for application there, bracketting parameters, rather than simply using juxtaposition, as is the convention in the lambda calculus) |
| 04:52:29 | × | ryantrinkle quits (~ryan@cpe-24-168-87-184.si.res.rr.com) (Quit: Leaving.) |
| 04:56:54 | × | heronwr quits (~heronwr@198.52.165.210) (Quit: WeeChat 3.1-dev) |
| 04:58:34 | → | niekvandepas joins (~niekvande@80-100-16-191.ip.xs4all.nl) |
| 04:58:52 | × | albel727 quits (~albel727@unaffiliated/albel727) (Quit: KVIrc 5.0.1 Aria http://www.kvirc.net/) |
| 05:00:20 | → | Alleria joins (~textual@2603-7000-3040-0000-ad3e-16ae-7559-7e68.res6.spectrum.com) |
| 05:00:44 | Alleria | is now known as Guest9894 |
| 05:04:50 | × | Guest9894 quits (~textual@2603-7000-3040-0000-ad3e-16ae-7559-7e68.res6.spectrum.com) (Ping timeout: 264 seconds) |
| 05:05:31 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 265 seconds) |
| 05:06:34 | × | Vulfe_ quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Remote host closed the connection) |
| 05:07:04 | × | niekvandepas quits (~niekvande@80-100-16-191.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 05:08:27 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:08:54 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 05:12:36 | × | m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 240 seconds) |
| 05:13:31 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 05:13:38 | → | christo joins (~chris@81.96.113.213) |
| 05:14:06 | × | ystael quits (~ystael@209.6.50.55) (Ping timeout: 256 seconds) |
| 05:16:29 | <iridescent> | could soembody please explain why `(sequence .) . fmap = \f xs -> sequence (fmap f xs)` |
| 05:17:18 | <glguy> | (sequence .) . fmap |
| 05:17:27 | × | unknown quits (~unknown@185.204.1.185) (Remote host closed the connection) |
| 05:17:33 | <glguy> | (\f g x -> f (g x)) (sequence .) fmap |
| 05:17:49 | <glguy> | \x -> (sequence .) (fmap x) |
| 05:17:56 | <glguy> | \x -> sequence . fmap x |
| 05:18:19 | <glguy> | err, alpharename: \f -> sequence . fmap f |
| 05:18:37 | <glguy> | \f -> (\a b xs -> a (b xs)) sequence (fmap f) |
| 05:18:40 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 05:18:51 | <glguy> | \f -> \xs -> sequence (fmap f xs) |
| 05:18:57 | <glguy> | \f xs -> sequence (fmap f xs) |
| 05:22:44 | → | Tops21 joins (~Tobias@dyndsl-091-249-083-248.ewe-ip-backbone.de) |
| 05:23:26 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds) |
| 05:24:49 | × | Tops2 quits (~Tobias@dyndsl-095-033-095-004.ewe-ip-backbone.de) (Ping timeout: 260 seconds) |
| 05:27:52 | → | gonemad3 joins (~gonemad3@s91904426.blix.com) |
| 05:31:33 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:255c:18d1:c1a9:13be:6f9e) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 05:32:57 | × | dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Quit: dcbdnl) |
| 05:32:59 | × | ransom quits (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 05:33:38 | × | Orbstheorem quits (~roosember@hellendaal.orbstheorem.ch) (Ping timeout: 264 seconds) |
| 05:34:58 | × | Jd007 quits (~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007) |
| 05:35:46 | × | jedws quits (~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 05:37:32 | → | jedws joins (~jedws@121.209.139.157) |
| 05:38:27 | × | jamestmartin quits (james@jtmar.me) (Quit: ZNC 1.8.2+deb2 - https://znc.in) |
| 05:39:16 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 05:42:47 | → | dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) |
| 05:42:54 | → | Jd007 joins (~Jd007@d154-5-83-24.bchsia.telus.net) |
| 05:42:56 | × | dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit) |
| 05:43:14 | → | Orbstheorem joins (~roosember@hellendaal.orbstheorem.ch) |
| 05:44:05 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:45:58 | × | Jd007 quits (~Jd007@d154-5-83-24.bchsia.telus.net) (Client Quit) |
| 05:48:05 | <maerwald> | is there any library that allows to do HTTP pipelining? |
| 05:48:17 | → | jamestmartin joins (~james@jtmar.me) |
| 05:49:00 | × | iridescent quits (2fe3e53b@047-227-229-059.res.spectrum.com) (Quit: Connection closed) |
| 05:50:42 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:bd2c:61bf:46f:59d0) |
| 05:50:48 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 05:54:49 | × | krofe quits (kevin@gateway/vpn/protonvpn/krofe) (Ping timeout: 265 seconds) |
| 05:55:08 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:bd2c:61bf:46f:59d0) (Ping timeout: 260 seconds) |
| 05:55:43 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 260 seconds) |
| 05:56:50 | → | idhugo joins (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) |
| 05:56:55 | × | idhugo quits (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Remote host closed the connection) |
| 05:57:16 | × | jamestmartin quits (~james@jtmar.me) (Quit: ZNC 1.8.2+deb2 - https://znc.in) |
| 05:58:28 | <ephemient> | out of curiosity, why? HTTP pipelining is used approximately never. https://developer.mozilla.org/en-US/docs/Web/HTTP/Connection_management_in_HTTP_1.x#http_pipelining |
| 06:03:21 | <maerwald> | that's for browsers |
| 06:04:19 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 06:05:10 | <ephemient> | it is, but non-browser clients tend not to use piplining either, for similar reasons. https://daniel.haxx.se/blog/2019/04/06/curl-says-bye-bye-to-pipelining/ |
| 06:06:11 | → | danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
| 06:06:51 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 06:06:59 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:bd2c:61bf:46f:59d0) |
| 06:08:14 | <maerwald> | so which http client library does HTTP2 multiplexing by default? |
| 06:10:52 | <ephemient> | there's https://hackage.haskell.org/package/http2-client and I don't know of any others for Haskell |
| 06:11:26 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:bd2c:61bf:46f:59d0) (Ping timeout: 264 seconds) |
| 06:11:44 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 06:18:49 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 06:23:35 | <maerwald> | and, does it support multiplexing? |
| 06:29:58 | → | ADG1089__ joins (~aditya@122.163.165.143) |
| 06:31:45 | <DigitalKiwi> | https://github.com/lucasdicioccio/http2-client/issues/16 lol |
| 06:33:21 | <DigitalKiwi> | found that when searching 'pipeline' |
| 06:34:14 | → | rayyyy joins (~nanoz@gateway/tor-sasl/nanoz) |
| 06:37:35 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 06:37:47 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 06:38:53 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:bd2c:61bf:46f:59d0) |
| 06:40:08 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 06:40:46 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
| 06:41:25 | <maerwald> | Well, I didn't get much out of this ticket except passive-aggressive comments, lol: https://github.com/snoyberg/http-client/issues/452 |
| 06:43:04 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:bd2c:61bf:46f:59d0) (Ping timeout: 240 seconds) |
| 06:45:44 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 06:46:04 | <MarcelineVQ> | especially as of this moment |
| 06:46:52 | <maerwald> | lol |
| 06:47:08 | → | shf joins (~sheaf@2a01:cb19:80cc:7e00:ed22:5b3a:3fa:a0b7) |
| 06:49:04 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 246 seconds) |
| 06:49:31 | <maerwald> | was my question that complicated? |
| 06:50:51 | <maerwald> | seems like a problem if we have neither HTTP 1.1 pipelining, nor HTTP 2 multiplexing |
| 06:51:00 | × | Flonk quits (~Flonk@ec2-52-40-29-25.us-west-2.compute.amazonaws.com) (Ping timeout: 256 seconds) |
| 06:51:25 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 06:52:19 | × | phasespace quits (~sar@89-162-33-21.fiber.signal.no) (Ping timeout: 260 seconds) |
| 06:54:05 | × | jedws quits (~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 06:55:01 | → | knupfer joins (~Thunderbi@200116b82c62e300bcca5bfffe03a624.dip.versatel-1u1.de) |
| 06:55:03 | → | jedws joins (~jedws@121.209.139.157) |
| 06:56:28 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fd9b:198b:bc6e:4127) |
| 06:56:37 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 06:57:25 | × | knupfer quits (~Thunderbi@200116b82c62e300bcca5bfffe03a624.dip.versatel-1u1.de) (Remote host closed the connection) |
| 06:57:34 | → | knupfer joins (~Thunderbi@200116b82c62e3005592499e46851a57.dip.versatel-1u1.de) |
| 06:57:34 | × | ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 07:01:13 | <int-e> | maerwald: Well you did ask 5 questions (one trivial (you should share the same manager with concurrent requests...), one that is easy to infer (it keeps track of connections kept alive), another that's easy to infer (no), another that's easy to infer (it reuses connections if a suitable one was kept alive), and one that should be a feature request (you don't), all under a headline that doesn't... |
| 07:01:14 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fd9b:198b:bc6e:4127) (Ping timeout: 264 seconds) |
| 07:01:19 | <int-e> | ...apply to the package at hand because there is no HTTP pipelining support at all. |
| 07:01:33 | <int-e> | maerwald: So... I'm not surprised that you didn't get a more constructive reply. |
| 07:07:05 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 07:09:40 | → | Lycurgus joins (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) |
| 07:10:00 | × | ome quits (uid36537@gateway/web/irccloud.com/x-ccqrafxmodzzqrro) (Quit: Connection closed for inactivity) |
| 07:10:36 | × | Rudd0 quits (~Rudd0@185.189.115.103) (Ping timeout: 240 seconds) |
| 07:11:41 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:5c80:7e91:5436:7bd4) (Ping timeout: 272 seconds) |
| 07:12:02 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds) |
| 07:13:24 | × | xff0x quits (~fox@2001:1a81:53ed:d500:ffc4:2540:c5b7:b45c) (Quit: xff0x) |
| 07:13:34 | → | xff0x joins (~xff0x@2001:1a81:53ed:d500:ffc4:2540:c5b7:b45c) |
| 07:13:35 | → | phasespace joins (~sar@80-89-47-117.inet.signal.no) |
| 07:14:51 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fd9b:198b:bc6e:4127) |
| 07:19:10 | × | dandart quits (~Thunderbi@home.dandart.co.uk) (Ping timeout: 246 seconds) |
| 07:19:17 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fd9b:198b:bc6e:4127) (Ping timeout: 258 seconds) |
| 07:22:18 | × | aerium quits (~aerium@51.194.80.91) (Ping timeout: 265 seconds) |
| 07:23:38 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:aa73:cc6a:b6a6:24ce) |
| 07:24:13 | × | shailangsa quits (~shailangs@host217-39-45-247.range217-39.btcentralplus.com) (Ping timeout: 264 seconds) |
| 07:24:23 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 07:26:29 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 07:29:00 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:29:26 | → | jonatanb joins (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) |
| 07:32:24 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 07:32:42 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 07:33:13 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 07:33:33 | × | puffnfresh_ quits (~puffnfres@45.76.124.5) (Quit: ZNC 1.8.0 - https://znc.in) |
| 07:35:37 | → | dandart joins (~Thunderbi@home.dandart.co.uk) |
| 07:35:56 | × | elcaro quits (~anonymous@45.32.191.75) (Ping timeout: 240 seconds) |
| 07:36:01 | → | kuribas joins (~user@ptr-25vy0i7ug01ndhtx56u.18120a2.ip6.access.telenet.be) |
| 07:36:02 | × | BIG_JIMMY_D quits (~jim@108.61.185.76) (Ping timeout: 264 seconds) |
| 07:36:22 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fd9b:198b:bc6e:4127) |
| 07:37:01 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 272 seconds) |
| 07:37:04 | → | elcaro joins (~anonymous@45.32.191.75) |
| 07:37:09 | → | puffnfresh_ joins (~puffnfres@45.76.124.5) |
| 07:37:21 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 07:37:35 | → | kyali joins (~kyali@APN-123-255-45-gprs.simobil.net) |
| 07:37:36 | → | m0rphism joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
| 07:39:40 | → | kyali_ joins (~kyali@APN-123-255-45-gprs.simobil.net) |
| 07:40:39 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 07:41:16 | → | BIG_JIMMY_D joins (~jim@108.61.185.76) |
| 07:41:44 | → | shatriff joins (~vitaliish@176-52-216-242.irishtelecom.com) |
| 07:42:03 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds) |
| 07:42:29 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 07:44:47 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fd9b:198b:bc6e:4127) (Ping timeout: 260 seconds) |
| 07:46:07 | × | shatriff quits (~vitaliish@176-52-216-242.irishtelecom.com) (Ping timeout: 246 seconds) |
| 07:46:28 | × | cheater quits (~user@unaffiliated/cheater) (Ping timeout: 246 seconds) |
| 07:46:50 | × | petersen quits (~petersen@redhat/juhp) (Quit: petersen) |
| 07:48:23 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 240 seconds) |
| 07:48:24 | × | m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 265 seconds) |
| 07:52:03 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
| 07:52:45 | → | pera joins (pera@gateway/vpn/mullvad/pera) |
| 07:53:02 | → | petersen joins (~petersen@redhat/juhp) |
| 07:55:57 | × | petersen quits (~petersen@redhat/juhp) (Remote host closed the connection) |
| 07:56:25 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fd9b:198b:bc6e:4127) |
| 07:56:36 | → | petersen joins (~petersen@redhat/juhp) |
| 07:58:18 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 08:00:54 | × | petersen quits (~petersen@redhat/juhp) (Client Quit) |
| 08:01:42 | → | petersen joins (~petersen@redhat/juhp) |
| 08:02:55 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 08:03:24 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fd9b:198b:bc6e:4127) (Ping timeout: 240 seconds) |
| 08:03:47 | → | aerium joins (~aerium@51.194.80.91) |
| 08:06:59 | → | jespada joins (~jespada@90.254.245.49) |
| 08:07:36 | → | petersen_ joins (~petersen@redhat/juhp) |
| 08:07:40 | → | dlam joins (~dlam@dlam.me) |
| 08:09:13 | × | petersen quits (~petersen@redhat/juhp) (Ping timeout: 264 seconds) |
| 08:09:14 | petersen_ | is now known as petersen |
| 08:13:53 | → | ubert joins (~Thunderbi@p200300ecdf1ee049e6b318fffe838f33.dip0.t-ipconnect.de) |
| 08:15:51 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fd9b:198b:bc6e:4127) |
| 08:19:05 | → | cheater joins (~user@unaffiliated/cheater) |
| 08:20:26 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fd9b:198b:bc6e:4127) (Ping timeout: 264 seconds) |
| 08:20:28 | <nshepperd2> | i'm not a fan of documentation that tells you what to do |
| 08:20:48 | <nshepperd2> | "you should share a Manager" doesn't really tell you what happens if you do share a Manager |
| 08:21:56 | × | deu quits (de@uio.re) (Ping timeout: 240 seconds) |
| 08:23:40 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
| 08:24:36 | × | kyali_ quits (~kyali@APN-123-255-45-gprs.simobil.net) (Ping timeout: 240 seconds) |
| 08:25:08 | × | kyali quits (~kyali@APN-123-255-45-gprs.simobil.net) (Ping timeout: 265 seconds) |
| 08:25:47 | <dminuoso> | nshepperd2: "Keeps track of open connections for keep-alive." |
| 08:25:57 | <dminuoso> | To me, it's rather obvious.. so I dont know. |
| 08:26:16 | <nshepperd2> | and what does that do |
| 08:26:37 | <dminuoso> | It allows for persistent connections |
| 08:27:06 | <nshepperd2> | persistent how |
| 08:27:52 | <dminuoso> | nshepperd2: In HTTP persistent connections/keep-alive refers to re-using an existing TCP connection for subsequent requests. |
| 08:28:33 | <dminuoso> | The notion of pipelining/multiplexing (which maerwald referred to earlier) takes this to the next level, where you can pump out multiple HTTP requests over the same TCP connection before you have gotten back any response yet. |
| 08:28:59 | <dminuoso> | Though, admittedly, the documentation should be a bit more differentiated than that. |
| 08:29:24 | <dminuoso> | There's legit reasons *not* to share keep-alive'd connections across multiple threads. |
| 08:29:26 | <nshepperd2> | i've sort of inferred from reading the code that what happens when you make a request is that it either: reuses a previous idle connection if it's still alive; or opens a new connection if there aren't any currently idle connections |
| 08:29:41 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:29:43 | <dminuoso> | Right. I suppose it's obvious if you know what keep-alive is |
| 08:30:35 | <dminuoso> | If, for example, the remote server is slow to respond but supports concurrent connections, and you're bottlenecked on the slow responses, then sharing a manager would do no good. |
| 08:30:40 | × | pera quits (pera@gateway/vpn/mullvad/pera) (Quit: leaving) |
| 08:30:50 | <dminuoso> | But if the remote server answers quickly, and most of the time you just have idle connections, then sharing a manager is worthwhile |
| 08:31:08 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:255c:18d1:c1a9:13be:6f9e) |
| 08:32:14 | × | jonatanb quits (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Ping timeout: 272 seconds) |
| 08:32:30 | × | gonemad3 quits (~gonemad3@s91904426.blix.com) (Remote host closed the connection) |
| 08:32:40 | × | drbean quits (~drbean@TC210-63-209-203.static.apol.com.tw) (Ping timeout: 246 seconds) |
| 08:33:23 | × | stree quits (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception) |
| 08:33:39 | × | jedws quits (~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 08:33:41 | → | stree joins (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) |
| 08:34:07 | → | dhouthoo joins (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) |
| 08:35:07 | <nshepperd2> | makes sense |
| 08:36:12 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0) |
| 08:37:44 | → | chele joins (~chele@ip5b40237d.dynamic.kabel-deutschland.de) |
| 08:38:53 | → | coot joins (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) |
| 08:39:22 | → | LKoen joins (~LKoen@152.172.9.109.rev.sfr.net) |
| 08:39:50 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fd9b:198b:bc6e:4127) |
| 08:40:10 | → | kyali joins (~kyali@APN-123-255-45-gprs.simobil.net) |
| 08:40:12 | → | kyali_ joins (~kyali@APN-123-255-45-gprs.simobil.net) |
| 08:42:11 | → | hexo joins (~hexo@gateway/tor-sasl/hexo) |
| 08:42:11 | → | srk joins (~sorki@gateway/tor-sasl/sorki) |
| 08:43:24 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 08:43:28 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Client Quit) |
| 08:44:24 | × | Stanley00 quits (~stanley00@unaffiliated/stanley00) () |
| 08:44:48 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 08:48:15 | → | fendor joins (~fendor@91.141.0.240.wireless.dyn.drei.com) |
| 08:48:56 | → | oerjan joins (~oerjan@178.162.209.171) |
| 08:50:36 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 08:53:16 | × | hexo quits (~hexo@gateway/tor-sasl/hexo) (Remote host closed the connection) |
| 08:53:16 | × | srk quits (~sorki@gateway/tor-sasl/sorki) (Remote host closed the connection) |
| 08:53:34 | → | hexo joins (~hexo@gateway/tor-sasl/hexo) |
| 08:53:37 | → | srk joins (~sorki@gateway/tor-sasl/sorki) |
| 08:57:21 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 08:57:51 | <kuribas> | why do you need to buffer log output, like fast-logger does, when the file system has a buffer of it's own? |
| 09:01:01 | <maerwald> | int-e: "Manager *just* keeps connections alive and does nothing else. We don't support HTTP pipelining at all atm and HTTP 2 neither." -- 2 sentences that would have explained everything :) |
| 09:01:27 | <maerwald> | maybe I'm expecting too much |
| 09:02:11 | → | m0rphism joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
| 09:03:29 | <maerwald> | but yeah, you can respond with counter questions instead and then insult the issue author to not have read the wikipedia article :p |
| 09:04:17 | × | Lycurgus quits (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Quit: Exeunt) |
| 09:05:14 | <maerwald> | And then we're surprised haskell community doesn't have such a good reputation elsewhere |
| 09:05:22 | <dminuoso> | kuribas: Because system calls are still expensive? |
| 09:06:22 | <kuribas> | could be... |
| 09:06:46 | → | mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
| 09:07:06 | <dminuoso> | Note, that a syscall makes you pay for not only the CPU dump/restore, but it also acts as a cooperative yield |
| 09:07:16 | <dminuoso> | (At least most syscalls implicitly call the scheduler) |
| 09:07:28 | × | thunderrd quits (~thunderrd@183.182.115.7) (Quit: If it wasn't written down it didn't happen...) |
| 09:07:46 | <dminuoso> | On linux anyway |
| 09:08:00 | → | thunderrd joins (~thunderrd@183.182.115.7) |
| 09:15:33 | × | sw1nn quits (~sw1nn@2a00:23c6:2385:3a00:8a08:ba4e:209b:1d11) (Ping timeout: 268 seconds) |
| 09:16:23 | × | xff0x quits (~xff0x@2001:1a81:53ed:d500:ffc4:2540:c5b7:b45c) (Ping timeout: 260 seconds) |
| 09:16:47 | → | xff0x joins (~xff0x@port-92-193-253-100.dynamic.as20676.net) |
| 09:17:07 | × | kyali quits (~kyali@APN-123-255-45-gprs.simobil.net) (Ping timeout: 246 seconds) |
| 09:17:12 | × | kyali_ quits (~kyali@APN-123-255-45-gprs.simobil.net) (Ping timeout: 256 seconds) |
| 09:17:20 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 09:17:25 | × | lambda-11235 quits (~lambda-11@2600:1700:7c70:4600:2560:f230:a66e:db8d) (Quit: Bye) |
| 09:17:51 | × | hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-afbyogyvilwdnzfx) (Quit: Connection closed for inactivity) |
| 09:18:07 | → | ArConan joins (~ArConan@52.184.35.77) |
| 09:20:19 | → | Gurkenglas_ joins (~Gurkengla@unaffiliated/gurkenglas) |
| 09:20:36 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 09:22:19 | ← | edrx parts (~Eduardo@2804:56c:d2ef:cf00:369c:6c3f:6681:423e) ("Killed buffer") |
| 09:22:58 | → | jedws joins (~jedws@121.209.139.157) |
| 09:24:02 | → | Up39 joins (5434a07f@tm.84.52.160.127.dc.cable.static.telemach.net) |
| 09:24:19 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core) |
| 09:24:20 | → | p-core1 joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
| 09:24:45 | <Up39> | This is my naive solution to handling DB query results in hasql. Is there anything wrong with it? |
| 09:24:46 | <Up39> | handleQueryResult :: (a -> b) -> (() -> b) -> (Session.QueryError -> b) -> Either Session.QueryError (Maybe a) -> b |
| 09:24:47 | <Up39> | handleQueryResult _ _ errorFn (Left qe) = errorFn qe |
| 09:24:47 | <Up39> | handleQueryResult _ missingFn _ (Right Nothing) = missingFn () |
| 09:24:48 | <Up39> | handleQueryResult successFn _ _ (Right (Just x)) = successFn x |
| 09:26:31 | → | misak joins (~arconan@115.209.116.183) |
| 09:26:40 | p-core1 | is now known as p-core |
| 09:27:12 | <dminuoso> | Up39: Can you perhaps point out what you think would be wrong with it? |
| 09:27:20 | <dminuoso> | Are you wondering whether such a function would be idiomatic Haskell? |
| 09:27:44 | <dminuoso> | The argument of type `(() -> b)` is silly, in my opinion. Just make it `b` |
| 09:28:10 | → | sw1nn joins (~sw1nn@2a00:23c6:2385:3a00:f123:6af9:d5d5:5175) |
| 09:28:21 | × | ArConan quits (~ArConan@52.184.35.77) (Remote host closed the connection) |
| 09:28:26 | <Up39> | dminuoso: Yes, that's basically what I'm wondering. Because there always seems to be a different solution to what I come up with |
| 09:28:38 | <Up39> | oh right, it can be b beause of lazy eval |
| 09:28:41 | <ij> | () -> b might be remnant of impure language callback idea |
| 09:28:48 | <Up39> | yep! |
| 09:28:56 | <Up39> | or non-lazy at least |
| 09:29:13 | <dminuoso> | I guess it's usually a mix of both |
| 09:29:25 | <dminuoso> | It's very JavaScriptesque |
| 09:29:28 | <Up39> | yes |
| 09:30:02 | <dminuoso> | c.f.: |
| 09:30:03 | <dminuoso> | % :t maybe |
| 09:30:03 | <yahb> | dminuoso: b -> (a -> b) -> Prelude.Maybe a -> b |
| 09:30:28 | <dminuoso> | Your function is, roughly, a combination of `maybe` and `either` |
| 09:31:28 | <dminuoso> | % :t \x y z -> either (maybe y x) z |
| 09:31:28 | <yahb> | dminuoso: (a -> c) -> c -> (b -> c) -> Either (Prelude.Maybe a) b -> c |
| 09:32:14 | <Up39> | hah, year, that's the sort of thing I thought I could be missing. |
| 09:32:28 | <Up39> | yeah* |
| 09:33:52 | <kuribas> | Up39: () -> b is used in non-pure languages because there can be an associated side-effect, but in haskell that's not possible. |
| 09:34:42 | <dminuoso> | % :t unsafePerformIO |
| 09:34:42 | <yahb> | dminuoso: IO a -> a |
| 09:34:46 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 09:34:57 | <dminuoso> | It rather is about the lack of lazyness |
| 09:36:51 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 09:37:05 | × | cgfbee quits (~bot@oc1.itim-cj.ro) (Ping timeout: 240 seconds) |
| 09:40:08 | → | bitmagie joins (~Thunderbi@200116b806643e00d1c9a335a3f0c811.dip.versatel-1u1.de) |
| 09:41:28 | × | LKoen quits (~LKoen@152.172.9.109.rev.sfr.net) (Remote host closed the connection) |
| 09:42:38 | × | ubert quits (~Thunderbi@p200300ecdf1ee049e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 09:44:55 | → | cgfbee joins (~bot@oc1.itim-cj.ro) |
| 09:47:38 | × | bitmagie quits (~Thunderbi@200116b806643e00d1c9a335a3f0c811.dip.versatel-1u1.de) (Quit: bitmagie) |
| 09:50:46 | → | jmchael joins (~jmchael@87.112.235.234) |
| 09:51:17 | → | DavidEichmann joins (~david@98.27.93.209.dyn.plus.net) |
| 09:51:43 | → | hekkaidekapus joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 09:53:43 | × | hekkaidekapus] quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
| 09:54:52 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 09:55:40 | × | cgfbee quits (~bot@oc1.itim-cj.ro) (Excess Flood) |
| 09:57:45 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 09:57:56 | → | cgfbee joins (~bot@oc1.itim-cj.ro) |
| 09:59:05 | × | charukiewicz quits (~quassel@irouteince04.i.subnet.rcn.com) (Quit: charukiewicz) |
| 10:00:00 | → | ukari joins (~ukari@unaffiliated/ukari) |
| 10:00:00 | → | Alleria joins (~textual@2603-7000-3040-0000-ad3e-16ae-7559-7e68.res6.spectrum.com) |
| 10:00:02 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds) |
| 10:00:24 | Alleria | is now known as Guest24594 |
| 10:02:26 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds) |
| 10:04:50 | × | Guest24594 quits (~textual@2603-7000-3040-0000-ad3e-16ae-7559-7e68.res6.spectrum.com) (Ping timeout: 264 seconds) |
| 10:04:59 | → | solarliner joins (~solarline@243.81.10.109.rev.sfr.net) |
| 10:05:42 | <Up39> | how come pure/return works as an identity function if you don't specify the type of f in pure :: Applicative f => a -> f a ? |
| 10:05:49 | <kuribas> | dminuoso: I was conveniently ignoring unsafePerformIO |
| 10:05:54 | × | seveg quits (~gabriel@2a02-ab04-0249-8d00-3603-db93-c217-257c.dynamic.v6.chello.sk) (Quit: WeeChat 3.0) |
| 10:06:18 | <dminuoso> | Up39: What do you mean by that question exactly? |
| 10:06:50 | <Up39> | dminuoso: in ghci if I run (pure 1) it returns 1 |
| 10:07:03 | <Up39> | I would have expected a type error |
| 10:07:19 | <kuribas> | dminuoso: lazyness is not even necessary for that to hold, except for bottom values. |
| 10:07:20 | <dminuoso> | Up39: Ah. So in GHCi it defaults to picking `f ~ IO` in this |
| 10:07:53 | → | lawid joins (~quassel@dslb-090-186-127-244.090.186.pools.vodafone-ip.de) |
| 10:07:57 | <Up39> | dminuoso: Ah, that makes sense! |
| 10:08:32 | <dminuoso> | Up39: This is not the behavior for `pure` in general, just for naked top level expressions. |
| 10:09:24 | → | Rudd0 joins (~Rudd0@185.189.115.108) |
| 10:09:43 | <kuribas> | dminuoso: note that using unsafePerformIO and a () -> a function is not the same as an imperative callback, as haskell isn't required to perform the side-effect any time. |
| 10:09:45 | <dminuoso> | That is, the repl you're in is assumed to be a sort-of do-notation for IO |
| 10:10:39 | <kuribas> | no, the repl detects when it is in IO, then executes the action. |
| 10:10:42 | <dminuoso> | Which is why you can simply write something like `Prelude> f <- readFile "foo"` |
| 10:10:56 | <dminuoso> | Or just `Prelude> putStrLn "foo"` |
| 10:11:08 | <kuribas> | the repl it's is not in do notation |
| 10:12:01 | <kuribas> | otherwise pure functions wouldn't work... |
| 10:12:43 | <kuribas> | hmm, perhaps they do... |
| 10:12:49 | <kuribas> | > do 1 + 1 |
| 10:12:49 | <lortabac> | kuribas: the REPL used to require "let" for all definitions |
| 10:12:51 | <lambdabot> | 2 |
| 10:13:05 | → | esp32_prog joins (yoann@gateway/vpn/protonvpn/esp32prog/x-46565127) |
| 10:13:08 | <lortabac> | in fact you can still used "let" |
| 10:13:08 | <kuribas> | lortabac: yeah I remember |
| 10:14:49 | <dminuoso> | kuribas: Note I said "sort-of". |
| 10:18:56 | → | seveg joins (~gabriel@2a02-ab04-0249-8d00-dea6-32ff-fe17-0993.dynamic.v6.chello.sk) |
| 10:21:08 | × | rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection) |
| 10:21:55 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core) |
| 10:22:13 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
| 10:24:40 | × | Graypup_ quits (Graypup@lfcode.ca) (Quit: ZNC 1.6.1 - http://znc.in) |
| 10:25:17 | → | Graypup_ joins (Graypup@lfcode.ca) |
| 10:25:29 | → | Franciman joins (~francesco@host-82-48-174-127.retail.telecomitalia.it) |
| 10:25:30 | → | Alleria__ joins (~textual@mskresolve-a.mskcc.org) |
| 10:31:21 | → | acidjnk_new joins (~acidjnk@p200300d0c704e7934412496f05d02b0d.dip0.t-ipconnect.de) |
| 10:31:25 | × | Lowl3v3l quits (~Lowl3v3l@dslb-084-062-101-233.084.062.pools.vodafone-ip.de) (Ping timeout: 264 seconds) |
| 10:32:01 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Quit: Reconnecting) |
| 10:32:06 | → | comerijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:32:35 | × | jedws quits (~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 10:32:39 | comerijn | is now known as merijn |
| 10:33:38 | × | seveg quits (~gabriel@2a02-ab04-0249-8d00-dea6-32ff-fe17-0993.dynamic.v6.chello.sk) (Ping timeout: 264 seconds) |
| 10:35:27 | × | amiri quits (~amiri@cpe-76-91-154-9.socal.res.rr.com) (Ping timeout: 260 seconds) |
| 10:36:13 | → | ulidtko joins (~ulidtko@193.111.48.79) |
| 10:37:06 | → | rayyyy joins (~nanoz@gateway/tor-sasl/nanoz) |
| 10:38:03 | → | ulidtko|k joins (~ulidtko@194.54.80.38) |
| 10:39:15 | → | berberman_ joins (~berberman@unaffiliated/berberman) |
| 10:39:38 | × | berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds) |
| 10:40:25 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 264 seconds) |
| 10:40:45 | × | berberman_ quits (~berberman@unaffiliated/berberman) (Max SendQ exceeded) |
| 10:40:57 | × | ulidtko quits (~ulidtko@193.111.48.79) (Ping timeout: 265 seconds) |
| 10:41:13 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 10:41:29 | × | Ishutin_ quits (~Ishutin@92-249-185-150.pool.digikabel.hu) (Ping timeout: 256 seconds) |
| 10:41:43 | → | amiri joins (~amiri@cpe-76-91-154-9.socal.res.rr.com) |
| 10:45:58 | <gentauro> | top-level functions in modules don't need `let`. Why not propagate that everywhere? |
| 10:46:21 | → | thc202 joins (~thc202@unaffiliated/thc202) |
| 10:46:26 | <gentauro> | `let-it-go` (badum tsh) |
| 10:46:27 | <gentauro> | xD |
| 10:48:37 | → | Ishutin joins (~Ishutin@92-249-179-46.pool.digikabel.hu) |
| 10:49:45 | → | svc0[m] joins (svc0matrix@gateway/shell/matrix.org/x-cgayodjircveqtkr) |
| 10:51:21 | → | LKoen joins (~LKoen@152.172.9.109.rev.sfr.net) |
| 10:54:28 | → | son0p joins (~son0p@181.58.39.182) |
| 10:56:28 | <ski> | propagate it how ? |
| 10:56:48 | <ski> | they already don't need `let' inside other `where's |
| 10:58:07 | <dminuoso> | I tried to think of a way where we could describe a module as a `let bindings = ... in ModSpec { ... }` |
| 10:58:21 | <dminuoso> | But all of that crumbled together when thinking of typeclasses. |
| 10:58:40 | <ski> | why ? |
| 10:59:04 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 10:59:36 | <dminuoso> | Oh, I was thinking of just `let decls = ... in ModSpec { exportList = ...; }` |
| 10:59:51 | <int-e> | gentauro: a = b = 42; b:a |
| 10:59:57 | <int-e> | gentauro: have fun parsing |
| 10:59:59 | <dminuoso> | But that doesn't work, because a module would rather need a full blown declaration field (since typeclass instances are part of the public interface) |
| 11:00:31 | <int-e> | let/in seems essential for sanity |
| 11:00:33 | → | guest111` joins (~user@49.5.6.87) |
| 11:00:48 | × | guest111 quits (~user@49.5.6.87) (Read error: Connection reset by peer) |
| 11:00:53 | <dminuoso> | Even nix has let/in, presumably for the same reasons |
| 11:02:00 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:aa73:cc6a:b6a6:24ce) (Ping timeout: 258 seconds) |
| 11:02:23 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 11:03:14 | → | kyali joins (~kyali@APN-123-255-45-gprs.simobil.net) |
| 11:03:38 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds) |
| 11:08:23 | → | kyali_ joins (~kyali@APN-123-255-45-gprs.simobil.net) |
| 11:09:03 | → | __monty__ joins (~toonn@unaffiliated/toonn) |
| 11:11:06 | <ukari> | For data Foo = Foo {getX::Int, getY::Int} deriving (Storable), how to write a magic function to get all field label functions of (undefined::Foo) to calculate it's offset like cpp offsetof? |
| 11:11:12 | → | seveg joins (~gabriel@188-167-252-202.dynamic.chello.sk) |
| 11:11:37 | <merijn> | Define "offset" |
| 11:11:59 | <merijn> | ukari: If you mean in terms of memory, you can't, because records don't have a defined memory layout |
| 11:12:06 | <merijn> | In fact *nothing* has a defined memory layout |
| 11:12:09 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 11:13:28 | <merijn> | also, how are you deriving Storable, because that's not derivable |
| 11:13:40 | → | christo joins (~chris@81.96.113.213) |
| 11:13:46 | → | boxscape joins (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) |
| 11:13:49 | <ukari> | I could calculate offset manually by stuffs like `sizeOf . getX $ (undefined::Foo)` |
| 11:14:15 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:7e9d:7180:3ecf:ff43) |
| 11:14:27 | <ukari> | there is a GStroable plugin to help deriving Stroable |
| 11:14:41 | <merijn> | Well, that sounds like a downright bad idea |
| 11:15:43 | <merijn> | If there's one thing where I wouldn't want weird magic it's "pointer twiddling" |
| 11:20:09 | <ukari> | does it mean it's better to manually calculate offset for Foo, Foo1, Foo2 ... every time? like `fooXOffset = 0, fooYOffset = 0 + sizeOf . getY $ (undefined::Foo)` |
| 11:21:15 | → | cmcma20 joins (~cmcma20@l37-192-2-125.novotelecom.ru) |
| 11:21:53 | <__monty__> | Why do you need the offsets on the haskell side of things? |
| 11:22:22 | <misak> | > quicksort ::(Ord a) =>[a]->[a] |
| 11:22:24 | <lambdabot> | error: |
| 11:22:25 | <lambdabot> | Variable not in scope: quicksort :: [a1] -> [a1] |
| 11:22:41 | <misak> | why that? |
| 11:22:46 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 246 seconds) |
| 11:23:08 | <ukari> | vertexAttributeDescriptions in vulkan need it |
| 11:23:16 | <gentauro> | 11:59 < int-e> gentauro: a = b = 42; b:a |
| 11:23:31 | <misak> | i copy the code in the textbook |
| 11:23:34 | <gentauro> | let a = let b = 42 in b? |
| 11:23:57 | <misak> | but error |
| 11:24:13 | <gentauro> | let a = let b = 42 in b:a? (forgot the `a`) |
| 11:24:18 | <__monty__> | @hoogle quicksort |
| 11:24:19 | <lambdabot> | Data.Massiv.Array quicksort :: (Mutable r Ix1 e, Ord e) => Array r Ix1 e -> Array r Ix1 e |
| 11:24:19 | <lambdabot> | Data.Massiv.Array.Mutable.Algorithms quicksortM_ :: (Ord e, Mutable r Ix1 e, PrimMonad m) => Scheduler m () -> MArray (PrimState m) r Ix1 e -> m () |
| 11:24:28 | <__monty__> | @hoogle sort |
| 11:24:28 | <lambdabot> | Data.List sort :: Ord a => [a] -> [a] |
| 11:24:28 | <lambdabot> | Data.List.NonEmpty sort :: Ord a => NonEmpty a -> NonEmpty a |
| 11:24:28 | <lambdabot> | GHC.OldList sort :: Ord a => [a] -> [a] |
| 11:24:45 | <__monty__> | misak: Maybe you're looking for `sort` instead? |
| 11:24:52 | <int-e> | gentauro: which I find far more readable |
| 11:25:06 | <misak> | >let quicksort' :: (Ord a) => [a] -> [a] |
| 11:25:07 | <__monty__> | misak: Otherwise I suspect the quicksort function was defined earlier in the book. |
| 11:25:45 | <__monty__> | Actually, since you're providing a type signature. Do you intend to define the function or use it? |
| 11:26:17 | <int-e> | gentauro: But maybe you only suggested this for sake of the pun? |
| 11:27:06 | × | Codaraxis__ quits (~Codaraxis@141.98.255.144) (Remote host closed the connection) |
| 11:27:20 | <misak> | i want to define a function |
| 11:27:26 | → | Codaraxis__ joins (~Codaraxis@141.98.255.144) |
| 11:27:43 | <__monty__> | misak: Are you trying to do so in a file or in GHCi? |
| 11:28:09 | <misak> | <__monty__:ghci |
| 11:28:14 | × | revprez_anzio quits (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 260 seconds) |
| 11:28:34 | <misak> | although i use the function name as others |
| 11:28:37 | <__monty__> | misak: Start multi-line input with :{ and end it with :} |
| 11:29:09 | → | revprez_anzio joins (~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) |
| 11:29:17 | <__monty__> | GHCi expects it can evaluate line by line unless you use those. |
| 11:29:34 | <misak> | my compliler told me'The type signature for ‘quicksort'’ lacks an accompanying binding' |
| 11:30:12 | <__monty__> | Yes, you have to define the function. Can't have a type signature by itself. |
| 11:30:34 | → | mirrorbird joins (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) |
| 11:31:13 | <misak> | but how to rule the type of function in ghci? |
| 11:32:06 | <__monty__> | What do you mean? |
| 11:34:02 | <ski> | misak : either do what __monty__ said, or write both the type signature and the defining equation(s) in a single interactor command, separated by `;'s |
| 11:34:09 | <misak> | _monty_:do i need to declare my function in ghci? |
| 11:34:17 | <ski> | no |
| 11:34:28 | <cmcma20> | !paste |
| 11:34:33 | <ski> | you could define it in a source file, and load that, instead |
| 11:34:35 | <__monty__> | @where paste |
| 11:34:36 | <lambdabot> | Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com |
| 11:34:40 | <cmcma20> | @where paste |
| 11:34:41 | <lambdabot> | Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com |
| 11:35:16 | × | seveg quits (~gabriel@188-167-252-202.dynamic.chello.sk) (Ping timeout: 272 seconds) |
| 11:35:53 | → | seveg joins (~gabriel@2a02-ab04-0249-8d00-dea6-32ff-fe17-0993.dynamic.v6.chello.sk) |
| 11:36:46 | <cmcma20> | https://paste.tomsmeding.com/M6sePssO I'm deeply stuck on implementing this function though it's a nobrainer with deptypes. Can you enlighten me? |
| 11:37:02 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 11:37:39 | <ski> | how's `Fin' defined ? |
| 11:38:00 | <cmcma20> | it's from Data.Fin module |
| 11:38:11 | <ski> | package ? |
| 11:38:17 | <cmcma20> | package fin |
| 11:38:40 | <cmcma20> | it's indexed by Nat, has two usual suspects as constructors |
| 11:38:48 | <ski> | pattern-match ? |
| 11:39:12 | <cmcma20> | how to pattern match on k? |
| 11:39:25 | <ski> | don't |
| 11:40:12 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 11:40:18 | <__monty__> | cmcma20: You should be able to simply pattern match on Fin's constructors. |
| 11:40:48 | <cmcma20> | only if k ~ 'S n |
| 11:41:04 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 240 seconds) |
| 11:41:09 | <cmcma20> | if k ~ 'Z this function should return Nothing as there are no values of Fin 'Z |
| 11:41:12 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 11:41:13 | <__monty__> | Don't think so, cause your input type is `Fin ('S k)`. |
| 11:41:13 | → | deu joins (de@uio.re) |
| 11:41:35 | <__monty__> | strengthen Z = Nothing |
| 11:42:12 | <cmcma20> | it would be too easy. If k ~ 'S n I wanna actually return Just Z |
| 11:42:45 | <ski> | @let data Nat = Z | S Nat deriving Show |
| 11:42:46 | <lambdabot> | Defined. |
| 11:42:50 | <__monty__> | Too easy? |
| 11:42:53 | <ski> | @let data Fin (n :: Nat) where FZ :: Fin ('S n); FS :: Fin n -> Fin ('S n) |
| 11:42:54 | <lambdabot> | Defined. |
| 11:43:30 | <ski> | @let strengthen :: Fin ('S n) -> Maybe (Fin n); strengthen FZ = Nothing; strengthen (FS i) = Just i |
| 11:43:31 | <lambdabot> | Defined. |
| 11:43:43 | <int-e> | AIUI, you can't pattern match of k, and for a good reason: it'll be erased at runtime. |
| 11:43:46 | → | drbean joins (~drbean@TC210-63-209-211.static.apol.com.tw) |
| 11:43:59 | × | seveg quits (~gabriel@2a02-ab04-0249-8d00-dea6-32ff-fe17-0993.dynamic.v6.chello.sk) (Ping timeout: 244 seconds) |
| 11:44:30 | <cmcma20> | yes it will be |
| 11:44:37 | <cmcma20> | but have a look at this idris snippet |
| 11:44:38 | <cmcma20> | https://paste.tomsmeding.com/ddAMppk6 |
| 11:45:00 | → | seveg joins (~gabriel@2a02-ab04-0249-8d00-dea6-32ff-fe17-0993.dynamic.v6.chello.sk) |
| 11:45:01 | <cmcma20> | it captures the intended semantics |
| 11:45:06 | <int-e> | So, no you can't have the code distinguish between k ~ 'S n and k ~ Z on this level. |
| 11:45:32 | <boxscape> | if you really do have to pattern match on k to make this work you might have to use singletons |
| 11:45:52 | <int-e> | And I hope this doesn't change |
| 11:46:11 | <cmcma20> | don't you want -XDependentTypes? |
| 11:46:14 | <int-e> | because reliable type erasure is too important to lose. |
| 11:46:17 | <boxscape> | int-e Richard Eisenbergs plan is very much for it to not change |
| 11:46:40 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 272 seconds) |
| 11:46:41 | <boxscape> | the plan is to be able to decide for each type parameter whether it's relevant and not erased or irrelevant (as all are currently) and erased |
| 11:46:47 | <gentauro> | 12:24 < int-e> gentauro: which I find far more readable |
| 11:46:48 | <boxscape> | manually |
| 11:46:49 | <__monty__> | Recurse a single level (kinda the function obv needs to change), if that returns Nothing, return Just Z? |
| 11:47:08 | <gentauro> | int-e: the peeps from F# removed the `in` in `let binding` |
| 11:47:26 | <gentauro> | I (less) verbose stuff better |
| 11:47:26 | <gentauro> | :) |
| 11:47:34 | <int-e> | gentauro: tbf Haskell did that for `do` blocks already |
| 11:47:44 | <gentauro> | probably also the reason I use `where …` more than `let …` |
| 11:48:11 | <cmcma20> | type erasure is possible with deptypes, just use QTT |
| 11:48:17 | <int-e> | Oh I do use `where` a lot. But I would hate for the keyword to not be there. |
| 11:48:55 | <cmcma20> | boxscape: yes, or manually annotate relevance |
| 11:49:13 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 11:49:22 | <ski> | cmcma20 : matching on a value of type `Fin n', you'll learn what shape `n' is. you don't have to know that `n' is of the right shape, before being able to match on the corresponding data constructors |
| 11:50:48 | <int-e> | ski: FZ :: Fin (S n) <-- you learn nothing about n here |
| 11:51:00 | <int-e> | Or at least, not enough. |
| 11:51:19 | <ski> | that `FZ' had type `Fin (S n)', not `Fin n' |
| 11:52:47 | <cmcma20> | it still doesn't allow you to construct a meaningful result |
| 11:53:08 | <int-e> | ski: But you can't decide whether FZ :: Fin n, without inspecting n (which a dependently typed language could do) |
| 11:53:37 | <int-e> | (And Haskell, at this point, can't) |
| 11:53:48 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 244 seconds) |
| 11:54:16 | <misak> | @where paste |
| 11:54:16 | <lambdabot> | Help us help you: please paste full code, input and/or output at eg https://paste.tomsmeding.com |
| 11:54:23 | <boxscape> | well, you sort of can if you use a Nat singleton |
| 11:56:43 | <int-e> | boxscape: You still won't be pattern matching on n. You'll be pattern matching a value that happens to reflect the type (which relation you can guarantee through the type system). |
| 11:57:07 | <boxscape> | sure, but you get the same use out of it, at least |
| 11:58:03 | <cmcma20> | the same use but verbosity is enormous |
| 11:58:05 | <ski> | int-e : i don't know what you mean by "decide", there. `FZ :: Fin n' is not something that you may consider to check, it's something you're given |
| 11:58:26 | <boxscape> | cmcma20 yes, hence the push for proper dependent types in haskell :) |
| 11:58:55 | <ski> | % data Nat = Z | S Nat deriving Show |
| 11:58:55 | <yahb> | ski: |
| 11:59:15 | <int-e> | ski: in that forall (k :: Nat). Fin (S k) -> Maybe (Fin k) case you're only given FZ :: Fin (S k) |
| 11:59:15 | <ski> | % data family Fin (n :: Nat) :: * where data Fin Z = FZ; newtype Fin (S n) = FS (Fin n) |
| 11:59:15 | <yahb> | ski: ; <interactive>:90:33: error: parse error on input `where' |
| 11:59:32 | <ski> | % data family Fin (n :: Nat) :: *; data instance Fin Z = FZ; newtype instance Fin (S n) = FS (Fin n) |
| 11:59:32 | <yahb> | ski: |
| 11:59:46 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 11:59:52 | <ski> | % let strengthen :: Fin ('S n) -> Maybe (Fin n); strengthen FZ = Nothing; strengthen (FS i) = Just i |
| 11:59:52 | <yahb> | ski: ; <interactive>:92:59: error:; * Couldn't match type 'Z with 'S n; Expected type: Fin ('S n); Actual type: Fin 'Z; * In the pattern: FZ; In an equation for `strengthen': strengthen FZ = Nothing; * Relevant bindings include strengthen :: Fin ('S n) -> Maybe (Fin n) (bound at <interactive>:92:48) |
| 12:00:14 | <int-e> | ski: I think you're missing a part of what cmcma20 wants: "<cmcma20> it would be too easy. If k ~ 'S n I wanna actually return Just Z" |
| 12:00:31 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 12:00:39 | → | ArConan joins (9de62a69@157.230.42.105) |
| 12:00:53 | <int-e> | and strengthen FZ = Nothing doesn't do that. |
| 12:01:28 | <gentauro> | 12:48 < int-e> Oh I do use `where` a lot. But I would hate for the keyword to not be there. |
| 12:01:31 | × | Tops21 quits (~Tobias@dyndsl-091-249-083-248.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 12:01:36 | <ski> | int-e : i renamed to `strengthen :: Fin ('S n) -> Maybe (Fin n)' .. perhaps that's the confusion here ? |
| 12:02:20 | <cmcma20> | btw some context: this function is needed to properly substitute the outer de Brujin index of a locally nameless lambda |
| 12:02:21 | <gentauro> | int-e: I only use `let` very rarely. It's monstly in `monad` blocks cos you can define `let` bidings that depend on results of monadic code |
| 12:02:21 | <int-e> | ski: AIUI, they want strengthen FZ = Just FZ whenever the type n would allow that. |
| 12:02:53 | <int-e> | ski: and only result in Nothing if it's absolutely necessary, that is, if n = Z. |
| 12:03:19 | <ski> | hm |
| 12:03:20 | <int-e> | ski: And that's the part where I've stated that Haskell can't do that. |
| 12:03:39 | <gentauro> | but I have always thought about, syntaks like: `do getEffects <- doIO(); foo := getEffects` |
| 12:03:40 | <int-e> | (without being more explicit about what n is, for example through a singleton) |
| 12:03:49 | <gentauro> | replacing `let … in` with `:=` |
| 12:03:53 | <gentauro> | does it give sense? |
| 12:04:06 | <gentauro> | also it looks nice (OCD) when placing under each other :) |
| 12:04:14 | <gentauro> | do |
| 12:04:19 | <gentauro> | a <- foo () |
| 12:04:24 | <gentauro> | b := a |
| 12:04:25 | <gentauro> | :) |
| 12:04:28 | <int-e> | gentauro: Let's cut this short... I don't really want to think about changing Haskell's syntax. |
| 12:04:31 | ski | doesn't think `:=' looks nice |
| 12:04:43 | <ski> | (not in math, either) |
| 12:04:45 | <gentauro> | ski: if you have a math brain it does ;) |
| 12:04:49 | <ski> | nope |
| 12:04:50 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds) |
| 12:04:59 | <int-e> | The current one has its warts but I've grown used to it. |
| 12:05:13 | <gentauro> | int-e: I understand that |
| 12:05:16 | <ski> | i don't want to think of a definition as a "property of equality" |
| 12:05:19 | <__monty__> | Let without in is also less clear about when the definitions stop and the body starts. |
| 12:05:20 | <gentauro> | time to make a new language xD |
| 12:05:45 | <ski> | i want to be able to think of a defining equation as (also) being a true equality |
| 12:06:22 | <ski> | (and not all definitions use equality, anyway) |
| 12:06:24 | <gentauro> | __monty__: that's perhaps why F# has `forced` intendation rules |
| 12:06:27 | <merijn> | Equality is so easy! |
| 12:06:29 | <gentauro> | I like that A LOT |
| 12:06:33 | <merijn> | Until you start learning dependent types |
| 12:06:36 | <gentauro> | that makes people write "readable code" |
| 12:06:36 | <int-e> | gentauro: But I do feel strongly that keywords serve a purpose when reading code, so dropping them carries a cost. And I read a lot more code than I write. |
| 12:06:42 | <merijn> | Then you realise equality is *hard* |
| 12:07:06 | <merijn> | gentauro: In short: No |
| 12:07:17 | <gentauro> | merijn: no what? |
| 12:07:23 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 12:07:30 | <merijn> | gentauro: In long: I will start dispatching hitman squads if people keep suggesting trivial syntactic changes with no semantic benefit |
| 12:07:30 | <int-e> | (For example, I *like* if ... then ... else ..., even though we could easily have if :: Bool -> a -> a -> a instead) |
| 12:07:40 | → | Lowl3v3l joins (~Lowl3v3l@dslb-084-062-101-233.084.062.pools.vodafone-ip.de) |
| 12:07:42 | <ski> | (being able to think of a defining equation as a true equality is also why i dislike deviations between the pattern and the expression language) |
| 12:07:50 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:7e9d:7180:3ecf:ff43) (Ping timeout: 264 seconds) |
| 12:07:52 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 12:08:29 | → | Entertainment joins (~entertain@104.246.132.210) |
| 12:08:36 | <merijn> | gentauro: Dropping let achieves nothing. It doesn't make programs that were previously impossible possible, it doesn't make it harder to make mistakes...all it does is "type 3 letters less for no real benefit, while breaking years of education, experience and tooling" |
| 12:08:40 | <merijn> | No thanks |
| 12:09:16 | <int-e> | merijn: it makes parsing harder though... another place where the compiler has to look far ahead to decide whether something is a pattern or an expression |
| 12:09:19 | <gentauro> | merijn: fair points |
| 12:09:22 | <merijn> | Any change to syntax better have a *damn* good reason |
| 12:09:36 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 240 seconds) |
| 12:09:38 | <merijn> | *especially* changes that invalidate existing code |
| 12:09:59 | <gentauro> | nevertheless, I'm of the believers that a language should have one-way (for simplicity) to provide basic logic |
| 12:10:11 | <ski> | "one-way" ? |
| 12:10:12 | <gentauro> | so let/in vs where vs let vs … |
| 12:10:22 | <gentauro> | to much confusion to new commers |
| 12:10:29 | <merijn> | It's simple |
| 12:10:33 | ski | thinks of one-way streets |
| 12:10:34 | <__monty__> | Well, let in would probably be more useful than where, since it's an expression. |
| 12:10:37 | <merijn> | never use let unless you must, problem solved |
| 12:10:46 | <gentauro> | merijn: that's my approach !!! |
| 12:11:16 | → | new_haskeller joins (ae72a197@cpe00fc8d386d93-cm00fc8d386d90.cpe.net.cable.rogers.com) |
| 12:11:28 | <int-e> | They feel different though... let/in is often about the flow of information; `where` is more of an ambient environment for the whole definition. |
| 12:11:46 | ski | looks at new_haskeller |
| 12:12:01 | <gentauro> | int-e: I use `where` for data-transformations and local functions |
| 12:12:13 | <gentauro> | I very rareley need `let/in` bindings |
| 12:12:37 | ski | sometimes attaches `where's to `case'-`of' branches |
| 12:13:08 | <gentauro> | ski: are those `where` local to each case branch? |
| 12:13:13 | <ski> | yes |
| 12:13:14 | <int-e> | gentauro: Anyway, feel free to do whatever in your own language. |
| 12:13:33 | <ski> | (also scopes over the guards) |
| 12:13:42 | <int-e> | gentauro: Or in your own Haskell style guide, for that matter :P |
| 12:13:56 | <boxscape> | if you have something like `f x = Ctr \y -> let z = g y in ...` it seems like you can't easily replace that with case of |
| 12:14:08 | <boxscape> | err |
| 12:14:10 | <boxscape> | sorry |
| 12:14:11 | <boxscape> | with where |
| 12:14:13 | <merijn> | boxscape: sure you can |
| 12:14:13 | <__monty__> | I kinda want a where that scopes over all equations of a function. |
| 12:14:17 | <gentauro> | int-e: my own language is `hibernating` at the moment. I guess at some point I will `wake` it up :) |
| 12:14:19 | <merijn> | boxscape: Just get rid of the lambda |
| 12:14:27 | <ski> | f x = Ctr \(g -> z) -> ..z.. |
| 12:14:29 | <int-e> | __monty__: Yeah that would be nice on occasion |
| 12:14:43 | <__monty__> | But then I think good modules fix all of these silly scoping concerns and am saddened by the state of haskell's "module system." |
| 12:14:50 | <merijn> | __monty__: Let me introduce you to "case of" :p |
| 12:14:59 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 12:15:00 | <ski> | __monty__ : it's called `local'-`in'-`end', in SML, and i've wanted it for a long time, in Haskell |
| 12:15:06 | <boxscape> | merijn what would be your preferred way to get rid of the lambda? |
| 12:15:19 | <merijn> | __monty__: I'm sure that backpack could use your love with ezyang busy on pytorch |
| 12:15:33 | <merijn> | boxscape: Give it a name, put it in the where block of 'f' |
| 12:15:45 | <boxscape> | okay |
| 12:15:48 | <ski> | merijn : `case'-`of' doesn't cover the case when you want to define multiple things after the `in' |
| 12:15:57 | <gentauro> | speaking about `cases … of`. I like that in OCaml, if two branches are the same. You can handle their code in one by omitting arrows |
| 12:16:05 | <gentauro> | that's is nice. I wouldn't mind getting that to Haskell |
| 12:16:14 | <merijn> | ski: I meant that where scopes over the entire case-of then :p |
| 12:16:19 | <gentauro> | case FooBar of |
| 12:16:21 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 12:16:24 | <gentauro> | Foo |
| 12:16:26 | <gentauro> | Bar -> |
| 12:16:36 | <gentauro> | that's really usefull in OCaml |
| 12:16:36 | <ski> | merijn : i meant `local ... in f x = ..x..; g y = ..y..' |
| 12:17:03 | <dminuoso> | gentauro: I guess it's not that useful in Haskell, since we rarely have nullary-only sum types. |
| 12:17:05 | <ski> | merijn : are you suggesting `(f,g) = (\x -> ..x..,\y -> ..y..) where ...' ? |
| 12:17:09 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 12:17:11 | <merijn> | ski: That's not what I was replying to? |
| 12:17:15 | → | Profpatsch joins (~Profpatsc@static.88-198-193-255.clients.your-server.de) |
| 12:17:22 | <__monty__> | merijn: I like what backpack does. But having seen Agda's modules I'm still left wanting. |
| 12:17:27 | <merijn> | ski: I was replying to __monty__'s complaint that where doesn't scope over multiple equations |
| 12:17:28 | <dminuoso> | gentauro: And most of the time we do pattern matching, we do do want to bind some of the fields. |
| 12:17:45 | <merijn> | dminuoso: You can do that in ocaml |
| 12:17:55 | <ski> | merijn : yea, i was replying to the same thing, except i also want those multiple equations to possibly define more than one identifier |
| 12:17:59 | <merijn> | dminuoso: "Foo x | Bar x -> stuff x" works iirc |
| 12:18:05 | <Profpatsch> | Is it possible to use deriving via for a restricted instance? e.g. I have newtype Foo r = Foo (Op r) and (Op r) is Divisible if Monoid r |
| 12:18:08 | <dminuoso> | merijn: Assuming both fields are of the same type? |
| 12:18:16 | <merijn> | dminuoso: Yes |
| 12:18:27 | <dminuoso> | Profpatsch: Standalone deriving |
| 12:18:29 | <Profpatsch> | But `deriving Divisible via (Op r)` doesn’t work because of the Monoid restriction |
| 12:18:36 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 12:18:45 | <ski> | iow, being able to define some helpers, that scope over multiple definitions |
| 12:18:46 | <dminuoso> | (you can also do standalone deriving via) |
| 12:18:51 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 12:19:00 | <ski> | (which is what `local'-`in'-`end' in SML allows, in general) |
| 12:19:06 | <gentauro> | case FooBar of |
| 12:19:09 | <gentauro> | Foo x |
| 12:19:12 | <gentauro> | Bar x -> |
| 12:19:18 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:e268:f1af:eeaa:71ac) |
| 12:19:33 | <gentauro> | dminuoso: `x` can be reused from both cases |
| 12:19:37 | <ski> | `let <decls> in <expr> end' is an expression (in SML). `local <decls> in <decls> end' is a declaration |
| 12:19:38 | <gentauro> | it's pretty nice |
| 12:20:03 | <dminuoso> | Honestly, out of all the wishes what Haskell should have, I'd say circular imports is on top #1 of my list. |
| 12:20:07 | <ski> | gentauro : unfortunately no disjunctive / OR- patterns, in Haskell |
| 12:20:13 | <dminuoso> | It's my single largest annoyance with Haskell |
| 12:20:23 | <merijn> | dminuoso: Word |
| 12:20:29 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 12:20:32 | <gentauro> | dminuoso: I would say submodules |
| 12:20:34 | <gentauro> | done right |
| 12:20:42 | <int-e> | dminuoso: That's technically not a Haskell problem, but a problem with the implementation. |
| 12:20:48 | <gentauro> | right now the module system is pretty `flat` and somehow `useless` :| |
| 12:20:52 | <merijn> | Naah, I don't care so much about submodules, but recursive imports are just so painful |
| 12:21:00 | <__monty__> | ski: It does sound exactly like what I want. Though otoh with agda style modules you don't end up not being able to get at the definitions, like what haskell's *.Internal convention is meant to circumvent. |
| 12:21:00 | gentauro | coming from an OCaml/F# module world |
| 12:21:05 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 12:21:10 | <dminuoso> | int-e: I guess the distinction is meaningless these days. |
| 12:21:19 | <Profpatsch> | dminuoso: do you have an example? I don’t see how this fits together |
| 12:21:23 | <Up39> | so how do you deal with cases where imports would be circular? |
| 12:21:45 | × | Entertainment quits (~entertain@104.246.132.210) () |
| 12:21:56 | <merijn> | Up39: Try for an hour to get .hs-boot files to work, cry, give up, refactor circularlity away by tossing half the types into a .Types module >.> |
| 12:22:13 | <ArConan> | ah,i think i miss a splendid discussion |
| 12:22:13 | <ski> | __monty__ : sorry, i didn't get that about Agda style modules |
| 12:22:32 | <dminuoso> | Profpatsch: `deriving via (Op r) instance (Monoid r) => Divisible (Foo r)` |
| 12:22:41 | <dminuoso> | (I know, that syntax is eye clawing...) |
| 12:22:41 | <int-e> | merijn: . o O ( And pray that you'll never need Template Haskell ) |
| 12:22:54 | <merijn> | int-e: Trigger warning, please :( |
| 12:22:59 | <int-e> | hah |
| 12:23:02 | <ArConan> | for i usually use let..in and reported error |
| 12:23:20 | <Profpatsch> | dminuoso: I get a parse error |
| 12:23:24 | <Profpatsch> | Is that a GHC 8.10 thing? |
| 12:23:25 | <Up39> | lol, so what if you need circular imports and template haskell? |
| 12:23:35 | <int-e> | merijn: I think the thought bubble actually is a trigger warning, the way I use it. :-P |
| 12:23:35 | <merijn> | Profpatsch: You need -XStandaloneDeriving |
| 12:23:44 | <dminuoso> | And -XDerivingVia |
| 12:23:49 | <__monty__> | ski: So let/where/local all have the problem that the definitions are inaccessible from outside the body. If you used modules for scoping then you could always get at those helpers without having to crowd the top-level namespace. |
| 12:23:52 | <Profpatsch> | dminuoso: It’s both enabled |
| 12:23:55 | → | Tops2 joins (~Tobias@dyndsl-091-249-083-248.ewe-ip-backbone.de) |
| 12:24:00 | <merijn> | Up39: Quit your job, move into the mountains and become a goat herd |
| 12:24:25 | <ski> | __monty__ : why do you say it's a problem ? it's the intent of them |
| 12:24:28 | <Up39> | merijn: not the worst thing ever :P |
| 12:24:41 | <merijn> | Up39: Fortunately that cursed combination is fairly rare |
| 12:24:53 | → | mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
| 12:24:55 | <ski> | __monty__ : unless maybe if you're talking about debugging ? |
| 12:25:33 | <__monty__> | ski: Same reason the *.Internal convention exists. Even the wisest of us sometimes hides away something that's useful or even necessary. |
| 12:25:44 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds) |
| 12:25:47 | <int-e> | Up39: you cry, cry, cry... |
| 12:25:57 | <int-e> | . o O ( module Cry where import Cry ) |
| 12:26:03 | × | seveg quits (~gabriel@2a02-ab04-0249-8d00-dea6-32ff-fe17-0993.dynamic.v6.chello.sk) (Ping timeout: 246 seconds) |
| 12:26:24 | <ski> | __monty__ : it's a different need, requiring a different solution |
| 12:26:27 | <dminuoso> | Profpatsch: Mmm, are you sure you dont have an unrelated syntax error? |
| 12:26:48 | <dminuoso> | % deriving via (Op r) instance (Monoid r) => Divisible (Foo r) |
| 12:26:49 | <yahb> | dminuoso: ; <interactive>:94:15: error:; Not in scope: type constructor or class `Op'; Perhaps you meant `Ap' (imported from Control.Monad.RWS); <interactive>:94:44: error: Not in scope: type constructor or class `Divisible' |
| 12:26:56 | <dminuoso> | It parses fine with this GHCi at least |
| 12:27:03 | <merijn> | __monty__: THat's why we have |
| 12:27:07 | <merijn> | @hackage true-name ;) |
| 12:27:07 | <lambdabot> | https://hackage.haskell.org/package/true-name ;) |
| 12:27:45 | <Profpatsch> | dminuoso: oh, it has to be on toplevel |
| 12:27:51 | <Profpatsch> | I put it indented behind the type |
| 12:27:57 | <dminuoso> | Yes. |
| 12:27:58 | <__monty__> | ski: Are you familiar with Agda's modules? I think SML's Functors are similar. They're the nicest solution to scoping I've come across in any language. |
| 12:28:03 | <ski> | __monty__ : do you also think it's a problem that you can't access `m' and `n', if you're given the value of `m * n' ? |
| 12:28:27 | <__monty__> | And if `local in end` isn't a scoping construct I guess I'm missing the point. |
| 12:28:33 | <ski> | i'm familiar with SML module functors |
| 12:28:43 | <ski> | it is a scoping construct |
| 12:28:47 | <dminuoso> | Admittedly, it's poorly documented in the GHC manual. |
| 12:28:50 | <int-e> | Up39: It's not really about the imports though; circular modules will still need a .hs-boot file somwhere in the loop, and {-# SOURCE #-} imports... the issue with TH is that it breaks up modules into sections that can only refer to themselves and earlier sections... so you can have more fun with cyclic definitions. And those are ordinarily not a problem at all in Haskell. |
| 12:29:01 | <ski> | it's intended to hide local definitions |
| 12:29:15 | <Profpatsch> | dminuoso: But I noticed I can’t do it really, because I don’t have a * -> * but specialized it to * |
| 12:29:17 | <ski> | (not just to qualify them, packaging them up) |
| 12:29:20 | <Profpatsch> | So maybe I should sketch out my interface first |
| 12:29:53 | <dminuoso> | 13:21:56 merijn | Up39: Try for an hour to get .hs-boot files to work, cry, give up, refactor circularlity away by tossing half the types into a .Types module >.> |
| 12:30:05 | <dminuoso> | merijn: This works so long until your Types depend on one-another! |
| 12:30:12 | <dminuoso> | Starting the cycle anew. |
| 12:30:17 | <merijn> | dminuoso: No |
| 12:30:27 | <dminuoso> | Oh, you meant a *singular* types module? :P |
| 12:30:30 | <merijn> | Yes |
| 12:30:32 | <ski> | yes |
| 12:30:34 | <dminuoso> | Ah. |
| 12:31:04 | <int-e> | Up39: "template haskell" "stages" is the proper keyword combination for this particular dark corner of Haskell/GHC. |
| 12:31:21 | <ski> | (you could try to parameterize the types, breaking the loop. or maybe backpack could be used here ?) |
| 12:31:28 | <merijn> | Up39: One (easier) trick is to try and avoid having datatypes depend on each other directly |
| 12:32:21 | <__monty__> | ski: Pretty sure the entire field of crypto is concerned with the m * n problem : ) Granted, I don't come across the problem much in haskell. But it plagues nixpkgs for example. |
| 12:32:23 | <dminuoso> | GHC itself actually uses boot modules. I recall a discussion with several GHC core developers, where none of them appeared to know how to use boot modules... |
| 12:32:25 | <ski> | in place of `data Foo = ..Foo.Bar..; data Bar = ..Foo..Bar..', you can do `data Foo bar = ..(Foo bar)..bar..; data Bar = ..(Foo Bar)..Bar..' |
| 12:32:28 | <dminuoso> | That situation was tellig.. |
| 12:32:44 | <merijn> | Up39: i.e. instead of having "data Foo = Foo Int Bar" and "data Bar = Bar Bool Foo" do something like "data Foo f = Foo Int (f (Foo f))" and "data Bar f = Bar Bool (f (Bar f))" or something like that |
| 12:32:52 | <ski> | (but having to do that can be quite annoying) |
| 12:33:30 | ski | low fours merijn |
| 12:33:43 | <dminuoso> | And dealing with higher kinded data types introduces other annoyances, like you cant just derive instances out of the box anymore |
| 12:33:51 | <dminuoso> | % data Foo f = Foo { t :: f Int } deriving (Eq, Ord, Show) |
| 12:33:51 | <yahb> | dminuoso: ; <interactive>:96:43: error:; * No instance for (Eq (f Int)) arising from the first field of `Foo' (type `f Int'); Possible fix: use a standalone 'deriving instance' declaration, so you can specify the instance context yourself; * When deriving the instance for (Eq (Foo f)); <interactive>:96:47: error:; * No instance for (Ord (f Int)) arising from the first field of `Foo' (type `f In |
| 12:34:11 | <dminuoso> | Once you start with this, you soon have the modern equivalent of -fglasgow-exts enabled. |
| 12:35:01 | <int-e> | . o O ( Given this discussion I've decided that Haskell is the worst language on Earth and will now switch to C++. ) |
| 12:35:17 | <merijn> | int-e: lol |
| 12:35:26 | <merijn> | C++ is so much worse >.> |
| 12:35:33 | <merijn> | It's not even funny |
| 12:35:34 | <dminuoso> | I think that was the joke. |
| 12:35:57 | <int-e> | :) |
| 12:36:03 | <merijn> | dminuoso: Most people think C++ is bad, but only a few have pushed enough to realise *how* bad :p |
| 12:36:25 | <ski> | __monty__ : i don't really see why you think the `*.Internal' situation is similar to `let'/`where' or `local' |
| 12:36:58 | × | acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 246 seconds) |
| 12:37:53 | <__monty__> | I see *.Internal as a way of circumventing the scoping restrictions modules impose. let et al impose similar restrictions on the scope of their definitions. |
| 12:37:59 | <dminuoso> | One other thing I found that slightly helps in mutually dependent modules, is mtl-style code. It's a sort of late-binding. |
| 12:38:21 | <dminuoso> | Which can help break up cyclic dependencies if it's just a few functions that introduce the circularity |
| 12:38:22 | × | chirpsalot quits (~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net) (Ping timeout: 256 seconds) |
| 12:38:32 | <ski> | i have occasionally wanted to be able to access internal `where' (or `let') bindings, for debugging/testing .. (although, iirc you can actually do that, with the GHCi tracer, if the breakpoint is within the scope of the relevant bindings) |
| 12:38:56 | <Up39> | So what's the reason behind circular imports not being handled by the compiler? |
| 12:39:01 | <ski> | but other than that, i don't see why you want to break encapsulation / lexical scoping |
| 12:39:05 | <dminuoso> | Up39: It was never considered in the implementation of GHC. |
| 12:39:23 | <dminuoso> | The Haskell reports itself already permits (but not requires) circular imports. |
| 12:39:45 | <dminuoso> | It'd require a major rehaul of GHC to allow for circular imports. |
| 12:39:48 | <ski> | __monty__ : they would also preclude more aggressive optimization |
| 12:39:51 | <merijn> | dminuoso: It does, actually? |
| 12:39:56 | <merijn> | dminuoso: iirc anyway |
| 12:40:08 | <merijn> | Up39: "too hard to implement" |
| 12:40:45 | <dminuoso> | If GHC had been designed with circular dependencies from the beginning, it's conceivable a suitable implementation could have been derived. |
| 12:40:52 | <__monty__> | ski: Don't think they would. It's known statically whether or not modules are opened. |
| 12:41:16 | × | Chobbes quits (~Chobbes@pool-98-115-239-235.phlapa.fios.verizon.net) (Ping timeout: 240 seconds) |
| 12:41:21 | → | seveg joins (~gabriel@2a02-ab04-0249-8d00-dea6-32ff-fe17-0993.dynamic.v6.chello.sk) |
| 12:41:31 | <ski> | __monty__ : whole-program / global knowledge ? |
| 12:42:12 | <__monty__> | I guess. |
| 12:42:13 | ski | idly ponders building modules at run-time |
| 12:42:35 | → | Flonk joins (~Flonk@ec2-52-40-29-25.us-west-2.compute.amazonaws.com) |
| 12:42:43 | <ski> | (OCaml and Alice ML supports that. e.g. sending a module over the wire) |
| 12:42:50 | → | Entertainment joins (~entertain@104.246.132.210) |
| 12:45:47 | → | usr25 joins (~usr25@unaffiliated/usr25) |
| 12:45:54 | ahf_ | is now known as ahf |
| 12:45:54 | → | ome joins (uid36537@gateway/web/irccloud.com/x-vxnalybdhvqhuavb) |
| 12:47:51 | <Uniaika> | ski: getting some Erlang vibes from that :P |
| 12:49:52 | × | new_haskeller quits (ae72a197@cpe00fc8d386d93-cm00fc8d386d90.cpe.net.cable.rogers.com) (Quit: Ping timeout (120 seconds)) |
| 12:49:57 | <ski> | i recall a discussion about parameterizing Erlang modules, something like `-module foo(X,Y). ..X..Y..' |
| 12:50:31 | <Uniaika> | can't quite recall, but Elixir's 'use' macro enables you to call a module with parameters |
| 12:50:36 | <Uniaika> | it's very used |
| 12:53:54 | → | Chobbes joins (~Chobbes@pool-98-115-239-235.phlapa.fios.verizon.net) |
| 12:54:28 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds) |
| 12:54:39 | → | Dark_Ethereal joins (~Drew@84.93.106.197) |
| 12:54:49 | × | __monty__ quits (~toonn@unaffiliated/toonn) (Ping timeout: 264 seconds) |
| 12:55:08 | → | __monty__ joins (~toonn@unaffiliated/toonn) |
| 12:55:32 | <ArConan> | almost every time i run my haskell code,my compiler told me` Variable not in scope:`,is it something wrong with my ghc? |
| 12:55:42 | <ArConan> | https://paste.tomsmeding.com/tXnBy7hM |
| 12:56:29 | <merijn> | ArConan: You are trying to do multiline definitions in ghci |
| 12:56:29 | <Uniaika> | ArConan: okay so |
| 12:56:32 | <merijn> | That doesn't work well |
| 12:56:56 | <Uniaika> | ArConan: did you activate multiline mode for GHCi? |
| 12:57:04 | <merijn> | My recommended solution is: Don't write multiline definitions in ghci |
| 12:57:15 | <Uniaika> | ^ what he says |
| 12:57:18 | <merijn> | Just write them in a file and load the file in ghci |
| 12:58:04 | × | son0p quits (~son0p@181.58.39.182) (Quit: Lost terminal) |
| 12:58:38 | <ArConan> | Uniaika: but it is just writen in a file |
| 12:58:47 | × | LKoen quits (~LKoen@152.172.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.”) |
| 12:59:21 | <merijn> | ArConan: Well, that error is from ghci, so if you wrote it in a file, then you haven't shown us what you typed to get that error |
| 12:59:41 | <boxscape> | the error seems to indicate that you defined it as quicksort' but are calling it as quicksort without the prime |
| 13:00:40 | <ArConan> | ah,wait a minute |
| 13:00:54 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 13:00:59 | <__monty__> | Is ArConan the same person as misak? Because I'm having a dèja vu. |
| 13:02:15 | <ski> | most likely no |
| 13:03:29 | <boxscape> | /whois says most likely yes |
| 13:03:33 | <ArConan> | err ,deja vu?a music? |
| 13:05:00 | × | solarliner quits (~solarline@243.81.10.109.rev.sfr.net) (Ping timeout: 256 seconds) |
| 13:05:04 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 13:05:23 | → | mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
| 13:06:22 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 246 seconds) |
| 13:07:06 | → | geekosaur joins (ac3a8b5c@172.58.139.92) |
| 13:07:14 | → | pera joins (pera@gateway/vpn/mullvad/pera) |
| 13:07:29 | <ArConan> | so strange. |
| 13:07:29 | <ArConan> | My program is working well now..... |
| 13:07:53 | <ArConan> | what happened=$ |
| 13:08:44 | × | maxsu quits (~maxsu@ip-64-72-99-232.lasvegas.net) (Ping timeout: 256 seconds) |
| 13:08:49 | × | oerjan quits (~oerjan@178.162.209.171) (Ping timeout: 246 seconds) |
| 13:10:06 | × | phasespace quits (~sar@80-89-47-117.inet.signal.no) (Ping timeout: 256 seconds) |
| 13:10:35 | × | hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection) |
| 13:11:07 | → | hekkaidekapus joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 13:12:03 | × | seveg quits (~gabriel@2a02-ab04-0249-8d00-dea6-32ff-fe17-0993.dynamic.v6.chello.sk) (Ping timeout: 272 seconds) |
| 13:12:08 | → | thefybe joins (~thefybe@249-147-161-N2.customer.vsm.sh) |
| 13:13:01 | <ArConan> | __monty__: a new word accknowledged:') |
| 13:13:21 | <ArConan> | misak is my nickname on my client |
| 13:15:31 | → | jchia__ joins (~jchia@58.32.32.252) |
| 13:15:37 | → | xelxebar_ joins (~xelxebar@gateway/tor-sasl/xelxebar) |
| 13:16:23 | × | xelxebar quits (~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 240 seconds) |
| 13:18:13 | × | Chobbes quits (~Chobbes@pool-98-115-239-235.phlapa.fios.verizon.net) (Ping timeout: 264 seconds) |
| 13:18:25 | → | Tario joins (~Tario@201.192.165.173) |
| 13:19:21 | <Dark_Ethereal> | ArConan: what did you change? |
| 13:19:27 | → | phasespace joins (~sar@89-162-33-21.fiber.signal.no) |
| 13:20:18 | <ArConan> | emmm,maybe for i restarted my windows terminal..... |
| 13:20:36 | → | Chobbes joins (~Chobbes@pool-98-115-239-235.phlapa.fios.verizon.net) |
| 13:21:09 | → | nullifidian joins (~nullifidi@unaffiliated/nullifidian) |
| 13:22:51 | → | chirpsalot joins (~Chirps@pool-98-115-239-235.phlapa.fios.verizon.net) |
| 13:24:15 | × | Codaraxis__ quits (~Codaraxis@141.98.255.144) (Remote host closed the connection) |
| 13:24:35 | → | Codaraxis__ joins (~Codaraxis@141.98.255.144) |
| 13:25:00 | → | argento joins (~argent0@168.227.96.26) |
| 13:25:21 | × | guest111` quits (~user@49.5.6.87) (Read error: Connection reset by peer) |
| 13:25:29 | → | guest111` joins (~user@49.5.6.87) |
| 13:29:53 | → | kyali__ joins (~kyali@APN-123-251-120-gprs.simobil.net) |
| 13:30:05 | → | kyali___ joins (~kyali@APN-123-251-120-gprs.simobil.net) |
| 13:31:58 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 13:32:09 | <Dark_Ethereal> | ArConan: Restarting ghci will cause the file to be loaded afresh, so could it be that you made a fixing change but forgot to reload it in ghci? |
| 13:32:58 | × | kyali quits (~kyali@APN-123-255-45-gprs.simobil.net) (Ping timeout: 246 seconds) |
| 13:33:05 | × | kyali_ quits (~kyali@APN-123-255-45-gprs.simobil.net) (Ping timeout: 240 seconds) |
| 13:34:14 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 13:34:48 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 13:35:01 | × | aerium quits (~aerium@51.194.80.91) (Ping timeout: 264 seconds) |
| 13:36:24 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 265 seconds) |
| 13:36:40 | <ArConan> | i guess ,the old file be loaded into memory and when i use :l to load my fixed file, the windows terminal(wt) use the old filenode to find file in memory.so after restarting the wt,my code works normally@Dark_Ethereal |
| 13:37:00 | <merijn> | ArConan: You need to run ":reload" to reload the file after you change it |
| 13:37:14 | × | knupfer quits (~Thunderbi@200116b82c62e3005592499e46851a57.dip.versatel-1u1.de) (Read error: Connection reset by peer) |
| 13:37:21 | → | knupfer joins (~Thunderbi@200116b82c62e3007dce87ecfcf2f682.dip.versatel-1u1.de) |
| 13:37:32 | <__monty__> | Doesn't :load samefile work too though? |
| 13:37:39 | → | son0p joins (~son0p@181.136.122.143) |
| 13:37:49 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 13:38:15 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0) |
| 13:38:31 | → | seveg joins (~gabriel@2a02-ab04-0249-8d00-dea6-32ff-fe17-0993.dynamic.v6.chello.sk) |
| 13:39:07 | <merijn> | maybe? |
| 13:39:11 | <merijn> | I dunno xD |
| 13:39:16 | × | Codaraxis__ quits (~Codaraxis@141.98.255.144) (Ping timeout: 246 seconds) |
| 13:40:41 | <__monty__> | I'd be surprised if it didn't. Though I'd be at least equally surprised if windows decides on a whim to store a file at a new inode. |
| 13:41:03 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds) |
| 13:41:17 | → | Codaraxis__ joins (~Codaraxis@141.98.255.144) |
| 13:42:26 | → | xchg joins (~xchg@s91904426.blix.com) |
| 13:44:07 | <__monty__> | For a platform without censorship they were beholden to quite a bit of strongly censoring platforms >.< |
| 13:44:19 | <__monty__> | Woops. |
| 13:44:21 | → | LKoen joins (~LKoen@152.172.9.109.rev.sfr.net) |
| 13:46:15 | × | mirrorbird quits (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Remote host closed the connection) |
| 13:47:17 | × | Codaraxis__ quits (~Codaraxis@141.98.255.144) (Remote host closed the connection) |
| 13:47:36 | → | Codaraxis__ joins (~Codaraxis@141.98.255.144) |
| 13:47:37 | × | drbean quits (~drbean@TC210-63-209-211.static.apol.com.tw) (Ping timeout: 264 seconds) |
| 13:49:44 | → | mouseghost joins (~draco@wikipedia/desperek) |
| 13:51:19 | → | shailangsa joins (~shailangs@host86-186-142-117.range86-186.btcentralplus.com) |
| 13:51:22 | → | mirrorbird joins (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) |
| 13:52:53 | × | Chobbes quits (~Chobbes@pool-98-115-239-235.phlapa.fios.verizon.net) (Changing host) |
| 13:52:53 | → | Chobbes joins (~Chobbes@unaffiliated/chobbes) |
| 13:53:32 | × | xchg quits (~xchg@s91904426.blix.com) (Remote host closed the connection) |
| 13:54:07 | <pedrorubster[m]> | <glguy "pedrorubster, that message ended"> https://paste.tomsmeding.com/5lNChHLn |
| 13:54:09 | × | Codaraxis__ quits (~Codaraxis@141.98.255.144) (Remote host closed the connection) |
| 13:54:22 | <pedrorubster[m]> | If anyone could help me with this, I would really appreciate it! ^^ |
| 13:54:29 | → | Codaraxis__ joins (~Codaraxis@141.98.255.144) |
| 13:54:34 | × | misak quits (~arconan@115.209.116.183) (Quit: Leaving) |
| 13:54:40 | × | ADG1089__ quits (~aditya@122.163.165.143) (Remote host closed the connection) |
| 14:00:59 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 14:03:14 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 14:04:06 | <__monty__> | pedrorubster[m]: I think you should focus less on the UI and more on the implementation part first. Start by coming up with a data structure which will best support the transformations you want to apply. A list of tuples? A list of lists? A map of records? |
| 14:04:24 | → | ViCi joins (daniel@10PLM.ro) |
| 14:06:02 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds) |
| 14:11:05 | × | jespada quits (~jespada@90.254.245.49) (Ping timeout: 256 seconds) |
| 14:11:29 | → | aerium joins (~aerium@51.194.80.91) |
| 14:12:42 | → | slewis joins (~slewis@84.39.117.57) |
| 14:13:35 | → | jespada joins (~jespada@90.254.245.49) |
| 14:15:23 | → | hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net) |
| 14:15:51 | × | carldd quits (~carldd@90-224-49-113-no56.tbcn.telia.com) (Read error: Connection reset by peer) |
| 14:15:56 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 14:16:29 | → | carldd joins (~carldd@90-224-49-113-no56.tbcn.telia.com) |
| 14:19:43 | × | rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds) |
| 14:20:26 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds) |
| 14:23:45 | <kyali__> | quit |
| 14:23:49 | × | kyali___ quits (~kyali@APN-123-251-120-gprs.simobil.net) (Quit: leaving) |
| 14:23:49 | × | kyali__ quits (~kyali@APN-123-251-120-gprs.simobil.net) (Quit: leaving) |
| 14:24:06 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 14:25:19 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 14:26:08 | × | seveg quits (~gabriel@2a02-ab04-0249-8d00-dea6-32ff-fe17-0993.dynamic.v6.chello.sk) (Ping timeout: 260 seconds) |
| 14:29:49 | × | mrchampion quits (~mrchampio@38.18.109.23) (Read error: No route to host) |
| 14:31:51 | → | ystael joins (~ystael@209.6.50.55) |
| 14:32:08 | × | hyiltiz quits (~quassel@unaffiliated/hyiltiz) (Remote host closed the connection) |
| 14:33:18 | → | mrchampion joins (~mrchampio@38.18.109.23) |
| 14:33:21 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
| 14:33:44 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 260 seconds) |
| 14:34:55 | → | ADG1089__ joins (~aditya@122.163.165.143) |
| 14:35:58 | × | esp32_prog quits (yoann@gateway/vpn/protonvpn/esp32prog/x-46565127) (Ping timeout: 246 seconds) |
| 14:36:24 | → | hyiltiz joins (~quassel@unaffiliated/hyiltiz) |
| 14:41:37 | → | mmmattyx joins (uid17782@gateway/web/irccloud.com/x-wzxcapgnieyfthce) |
| 14:45:02 | × | geekosaur quits (ac3a8b5c@172.58.139.92) (Quit: Connection closed) |
| 14:47:33 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 14:52:04 | × | Codaraxis__ quits (~Codaraxis@141.98.255.144) (Ping timeout: 246 seconds) |
| 14:58:26 | × | nullifidian quits (~nullifidi@unaffiliated/nullifidian) (Quit: Leaving) |
| 15:00:25 | × | thefybe quits (~thefybe@249-147-161-N2.customer.vsm.sh) (Ping timeout: 240 seconds) |
| 15:00:49 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 15:00:53 | <pedrorubster[m]> | <__monty__ "pedrorubster: I think you should"> I'm not worried about the UI at all, I just need the logic to make the groupby work, that's all, I couldn't care less about the UI |
| 15:01:44 | × | darjeeling_ quits (~darjeelin@115.215.40.96) (Ping timeout: 260 seconds) |
| 15:02:23 | × | gxt quits (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds) |
| 15:02:23 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 15:02:52 | → | gxt joins (~gxt@gateway/tor-sasl/gxt) |
| 15:03:49 | → | acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
| 15:05:23 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 15:06:58 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 260 seconds) |
| 15:07:29 | → | hrdl joins (~ef24a0e6@unaffiliated/hrdl) |
| 15:09:17 | → | rayyyy joins (~nanoz@gateway/tor-sasl/nanoz) |
| 15:09:50 | × | LKoen quits (~LKoen@152.172.9.109.rev.sfr.net) (Remote host closed the connection) |
| 15:10:45 | → | piezoid joins (~piezoid@82-64-150-32.subs.proxad.net) |
| 15:10:50 | × | acidjnk_new quits (~acidjnk@p200300d0c704e7934412496f05d02b0d.dip0.t-ipconnect.de) (Ping timeout: 264 seconds) |
| 15:11:34 | → | Jd007 joins (~Jd007@d154-5-83-24.bchsia.telus.net) |
| 15:16:49 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds) |
| 15:18:08 | → | darjeeling_ joins (~darjeelin@115.215.40.96) |
| 15:21:43 | × | boxscape quits (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Ping timeout (120 seconds)) |
| 15:22:36 | <__monty__> | pedrorubster[m]: I'd simply use the groupby statements to tell me which columns should be part of the keys then keep a map of values which represent the "state to every one of them" you mention. You'd take input, derive the key, fetch the value, do the operation on the value and the new value and store that at the key and also output it. |
| 15:22:49 | <__monty__> | Is this enough to get you started? |
| 15:22:54 | × | hyiltiz quits (~quassel@unaffiliated/hyiltiz) (Quit: No Ping reply in 180 seconds.) |
| 15:23:26 | → | fendor_ joins (~fendor@77.119.128.187.wireless.dyn.drei.com) |
| 15:25:46 | → | pythag76[m] joins (pythag76ma@gateway/shell/matrix.org/x-uokvpcmzafuiszqm) |
| 15:26:14 | × | fendor quits (~fendor@91.141.0.240.wireless.dyn.drei.com) (Ping timeout: 260 seconds) |
| 15:26:53 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fd9b:198b:bc6e:4127) (Remote host closed the connection) |
| 15:27:19 | → | niekvandepas joins (~niekvande@2001:985:bebc:1:fd9b:198b:bc6e:4127) |
| 15:31:33 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 256 seconds) |
| 15:31:47 | → | LKoen joins (~LKoen@152.172.9.109.rev.sfr.net) |
| 15:32:02 | × | niekvandepas quits (~niekvande@2001:985:bebc:1:fd9b:198b:bc6e:4127) (Ping timeout: 260 seconds) |
| 15:33:24 | × | knupfer quits (~Thunderbi@200116b82c62e3007dce87ecfcf2f682.dip.versatel-1u1.de) (Ping timeout: 258 seconds) |
| 15:35:21 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 15:37:52 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 15:40:06 | × | ArConan quits (9de62a69@157.230.42.105) (Quit: Connection closed) |
| 15:40:47 | → | thefybe joins (~thefybe@249-147-161-N2.customer.vsm.sh) |
| 15:42:49 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 264 seconds) |
| 15:43:44 | × | miklcct quits (quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7) (Remote host closed the connection) |
| 15:44:53 | → | miklcct joins (quasselcor@2001:19f0:7001:5ad:5400:2ff:feb6:50d7) |
| 15:45:22 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 15:47:22 | → | hyiltiz joins (~quassel@unaffiliated/hyiltiz) |
| 15:47:25 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 15:48:24 | → | niekvandepas joins (~niekvande@89.205.132.36) |
| 15:48:57 | <pedrorubster[m]> | <__monty__ "Is this enough to get you starte"> Sorry, I'm a bit newbie on haskell, I really didn't got what you said :( |
| 15:49:03 | × | hyiltiz quits (~quassel@unaffiliated/hyiltiz) (Excess Flood) |
| 15:50:46 | → | hyiltiz joins (~quassel@93.119.106.77) |
| 15:50:46 | × | hyiltiz quits (~quassel@93.119.106.77) (Changing host) |
| 15:50:46 | → | hyiltiz joins (~quassel@unaffiliated/hyiltiz) |
| 15:51:37 | <__monty__> | Ok, do you know what a Map is? |
| 15:53:28 | → | niekvand_ joins (~niekvande@84.241.193.122) |
| 15:54:43 | × | niekvandepas quits (~niekvande@89.205.132.36) (Ping timeout: 246 seconds) |
| 15:55:25 | × | darjeeling_ quits (~darjeelin@115.215.40.96) (Ping timeout: 246 seconds) |
| 15:56:28 | × | argento quits (~argent0@168.227.96.26) (Ping timeout: 246 seconds) |
| 15:57:14 | → | hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-lyrlgqqxxqbznztz) |
| 15:59:22 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 16:00:04 | × | theduke quits (thedukem1@gateway/shell/matrix.org/x-hegbybueqtkglolp) (Quit: Idle for 30+ days) |
| 16:01:53 | <pedrorubster[m]> | Yes, I do |
| 16:01:53 | × | carlomagno quits (~cararell@148.87.23.11) (Remote host closed the connection) |
| 16:01:54 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Remote host closed the connection) |
| 16:02:03 | <pedrorubster[m]> | Not that newbie, the issue is mainly |
| 16:02:20 | <pedrorubster[m]> | Imagine that I do average 1 groupby 2 groupby 3 |
| 16:02:30 | <pedrorubster[m]> | I need to keep state on every pair on the 2nd and 3rd column |
| 16:02:48 | <pedrorubster[m]> | But how do I do if it's 3? |
| 16:02:59 | <texasmynsted> | anybody here use haskell on macOS and integrate it with a GUI? |
| 16:03:01 | <pedrorubster[m]> | because if it was only just 2, it would be easier |
| 16:03:07 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 16:03:14 | → | mastarija joins (~mastarija@188.252.198.137) |
| 16:03:23 | <pedrorubster[m]> | I just don't know how to do when the number of groupby's can change to whatever you want __monty__ |
| 16:05:10 | <__monty__> | pedrorubster[m]: Ah, right. You can use lists as keys into the map. |
| 16:05:28 | <pedrorubster[m]> | How so? Sorry, I'm really really confused |
| 16:05:54 | × | hyiltiz quits (~quassel@unaffiliated/hyiltiz) (Ping timeout: 260 seconds) |
| 16:06:52 | × | thefybe quits (~thefybe@249-147-161-N2.customer.vsm.sh) (Remote host closed the connection) |
| 16:07:09 | → | thefybe joins (~thefybe@249-147-161-N2.customer.vsm.sh) |
| 16:07:50 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Ping timeout: 264 seconds) |
| 16:07:53 | × | niekvand_ quits (~niekvande@84.241.193.122) (Remote host closed the connection) |
| 16:08:28 | → | niekvandepas joins (~niekvande@84.241.193.122) |
| 16:08:38 | → | hyiltiz joins (~quassel@93.119.106.77) |
| 16:08:38 | × | hyiltiz quits (~quassel@93.119.106.77) (Changing host) |
| 16:08:38 | → | hyiltiz joins (~quassel@unaffiliated/hyiltiz) |
| 16:10:33 | <__monty__> | So, the groupby's tell you which columns to collect in a list and then you can use that list as a key into the Map. |
| 16:10:37 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 16:11:00 | × | pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!) |
| 16:11:26 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 16:11:55 | → | knupfer joins (~Thunderbi@mue-88-130-61-056.dsl.tropolys.de) |
| 16:12:07 | × | knupfer quits (~Thunderbi@mue-88-130-61-056.dsl.tropolys.de) (Client Quit) |
| 16:12:10 | → | knupfer1 joins (~Thunderbi@200116b82c62e30071e812f479534363.dip.versatel-1u1.de) |
| 16:12:25 | × | niekvandepas quits (~niekvande@84.241.193.122) (Ping timeout: 240 seconds) |
| 16:12:31 | <pedrorubster[m]> | yes, but how do you keep state for every combination to each value that each collumn can take? |
| 16:13:03 | × | hyiltiz quits (~quassel@unaffiliated/hyiltiz) (Client Quit) |
| 16:13:53 | → | darjeeling_ joins (~darjeelin@115.215.40.96) |
| 16:13:54 | <__monty__> | You mean because average needs past values? |
| 16:14:18 | → | niekvandepas joins (~niekvande@84.241.193.122) |
| 16:14:33 | knupfer1 | is now known as knupfer |
| 16:16:27 | <pedrorubster[m]> | No, I mean |
| 16:16:32 | × | shailangsa quits (~shailangs@host86-186-142-117.range86-186.btcentralplus.com) (Ping timeout: 256 seconds) |
| 16:16:38 | <pedrorubster[m]> | for example |
| 16:16:48 | pedrorubster[m] | sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/tVKfHWkowCYQvGWKDjSEHegC/message.txt > |
| 16:16:50 | <pedrorubster[m]> | On this case |
| 16:17:05 | <pedrorubster[m]> | you need to save state to every combination that the 2nd column and the 3rd can take |
| 16:17:39 | <pedrorubster[m]> | it's 1,4 for the first 3, then it changes to 2,4 and then 2,2 back to 2,4 and then 2,2 and you need to save state to EVERY combination that can occur |
| 16:18:20 | <__monty__> | 0 4 1 4 -> key is [1, 4] -> insertWith [1,4] avg 4 stateMap |
| 16:18:21 | pedrorubster[m] | sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/EBelxKWsEYGkNuhBkxtejTBl/message.txt > |
| 16:19:15 | <__monty__> | Does that next run operate on the data stored so far? |
| 16:20:02 | <pedrorubster[m]> | No |
| 16:20:03 | × | hexo quits (~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds) |
| 16:20:08 | → | carlomagno joins (~cararell@148.87.23.13) |
| 16:20:13 | <pedrorubster[m]> | You start the program, you put the groupby line first |
| 16:20:16 | <pedrorubster[m]> | then you can't change it |
| 16:20:50 | → | hexo joins (~hexo@gateway/tor-sasl/hexo) |
| 16:20:52 | <__monty__> | Then I don't really see the problem. You read the groupby's and those fix which values you add to the list you'll use as a key each time. |
| 16:21:30 | <pedrorubster[m]> | How do you scale from 2 groupby to 3 for example |
| 16:21:46 | <ij> | is it possible to read from an mutable vector without effects? |
| 16:22:09 | <xerox_> | what does that mean |
| 16:22:12 | <pedrorubster[m]> | __monty__: Can I DM you? I'm willing to pay for your help, I'm stuck on this for over 10 hours |
| 16:23:23 | → | Guest_81 joins (782028db@120.32.40.219) |
| 16:23:45 | <Guest_81> | Hey, I'd like to ask a question about "cabal install --only-dependencies", thank you so much! |
| 16:24:03 | <merijn> | Guest_81: "it's mostly obsolete" ;) |
| 16:24:09 | <Guest_81> | I ran this one in terminal, then show "cabal: Invalid package ID: ." |
| 16:24:19 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Read error: Connection reset by peer) |
| 16:24:24 | <Guest_81> | :') oh |
| 16:24:28 | <merijn> | Guest_81: Well, does you have a cabal file in that directory? |
| 16:24:39 | <Guest_81> | our teacher let us do like that |
| 16:24:40 | <ij> | xerox_, well, I know the only place where I would mutate the vector, so in-between the mutations I would like to be able to read it whole (just not to be required to type-check effects) in-between mutations |
| 16:24:52 | <ij> | I'm not sure I explained it very well |
| 16:24:53 | <Guest_81> | oh I'm not sure, merijn how could I check? |
| 16:25:16 | <merijn> | Well, is there a file with the extension .cabal? |
| 16:25:22 | <xerox_> | ij: maybe you can look at the api available for the various mutable vectors haskell has |
| 16:25:30 | <Guest_81> | I use cabal-install version 3.2.0.0 and macOS 11.1 |
| 16:25:38 | <ij> | xerox_, yeah, I'm looking |
| 16:25:47 | <Guest_81> | merijn oh! |
| 16:25:56 | <Guest_81> | where can I find it '=( |
| 16:26:18 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 16:26:33 | → | ransom_ joins (~c4264035@8.48.134.54) |
| 16:26:35 | <merijn> | Guest_81: "cabal install --dependencies-only ." assumes there's a cabal file/package in the current directory, if you don't have one, then it's not gonna work, no |
| 16:26:45 | <xerox_> | ij: maybe your point is you think there could be a pure way to read that wouldn't need the type to be in the effect monad like IO or ST, but that woudln't work very well because then the read wouldn't be sequenced, so it could happen before or after other writes which kind of makes it impossible to use? |
| 16:27:08 | <Guest_81> | oh!!!!!!!!! |
| 16:27:27 | <Guest_81> | so I need to " cd ...."? |
| 16:27:28 | <ij> | xerox_, yeah, but this could work, if you had a lock on it that said "pure computation is using it, so no modifications possible until that's happened" |
| 16:27:35 | <Guest_81> | oh! |
| 16:27:38 | <Guest_81> | got it!!! |
| 16:27:54 | <ij> | xerox_, does that make sense? I'm just wondering whether there's something that works that way\ |
| 16:28:03 | <Guest_81> | Thank you so much!!!! merijn |
| 16:28:17 | <xerox_> | ij: that is not needed because inside your io/st action you can go off in the pure world as long as you want and then come back for the next important-to-happen-in-order thing |
| 16:28:21 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
| 16:29:02 | <ij> | xerox_, but I can just pass it around in the pure world, I can't read it |
| 16:29:03 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds) |
| 16:29:08 | × | ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Ping timeout: 272 seconds) |
| 16:29:36 | <ij> | xerox_, is the only option to model effects inside my logic that reads from vector? |
| 16:29:52 | × | Guest_81 quits (782028db@120.32.40.219) (Quit: Connection closed) |
| 16:29:52 | → | turion joins (~turion@2a02:810d:8abf:c4a8:d43a:b21:28bf:441a) |
| 16:30:04 | <xerox_> | ij: I mean you can get an immutable array off of your (say) runST $ ... and then do stuff, and then do *another* runST $ ... with the new contents, nobody is stopping you |
| 16:30:14 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 16:30:21 | <ij> | I want to have only one or two copies in memory |
| 16:30:28 | <ij> | including abandoned ones |
| 16:30:32 | <xerox_> | that achieves that |
| 16:31:01 | <ij> | ah, alright. I don't know much about ST, I just have some random hunch from reading IRC |
| 16:31:11 | × | niekvandepas quits (~niekvande@84.241.193.122) (Remote host closed the connection) |
| 16:31:43 | → | niekvandepas joins (~niekvande@84.241.193.122) |
| 16:31:55 | <xerox_> | 'thaw' copies the immutable one into a new mutable one |
| 16:32:14 | <xerox_> | so you can resume your mutating mutating |
| 16:33:17 | <ski> | ij : note that the elements aren't stored in the `IOArray'/`STArray'/`MVector'/whatever |
| 16:33:17 | <ij> | I feel like ST should be able to solve my problems, but I can't piece it together in my head |
| 16:33:38 | <merijn> | ij: What's your problem? |
| 16:34:05 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:255c:18d1:c1a9:13be:6f9e) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 16:34:09 | → | solarliner joins (~solarline@243.81.10.109.rev.sfr.net) |
| 16:34:25 | × | niekvandepas quits (~niekvande@84.241.193.122) (Read error: Connection reset by peer) |
| 16:34:59 | <ij> | merijn, I realized the maze data I'm backtracking with on can be shared, because important data is in other structures |
| 16:35:18 | <ij> | ski, in the unboxed ones they are, aren't they? |
| 16:35:24 | <ski> | no |
| 16:35:48 | <ski> | they're stored in the state passed around under the covers in `IO'/`ST' |
| 16:36:11 | → | hyiltiz joins (~quassel@93.119.106.77) |
| 16:36:11 | × | hyiltiz quits (~quassel@93.119.106.77) (Changing host) |
| 16:36:11 | → | hyiltiz joins (~quassel@unaffiliated/hyiltiz) |
| 16:36:46 | <ski> | think of an `IORef'/`IOArray'/&c. as an index into an array (the memory array), or a key into a map, that, given the array/map, you'll be able to access the corresponding elements/values |
| 16:37:52 | → | niekvandepas joins (~niekvande@84.241.193.122) |
| 16:38:02 | <ski> | (this is also how `Eq (IORef a)' can work without `Eq a'. it only compares the "index") |
| 16:38:15 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 16:38:34 | <ij> | so basically a pointer to the actual data in somewhere in IO/ST context, if I understand what you're saying |
| 16:38:38 | × | son0p quits (~son0p@181.136.122.143) (Ping timeout: 256 seconds) |
| 16:38:44 | <ski> | if you only have an `IOArray', then you don't have the corresponding elements |
| 16:39:22 | <ski> | you must use `IO' to get access to the memory in which you can look up the elements. conceptually the elements are not in the `IOArray' itself |
| 16:39:28 | <ij> | because it is boxed? (stores pointers) |
| 16:39:31 | <ski> | no |
| 16:39:44 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 16:40:23 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 16:43:12 | <ski> | consider `Mem m' implemented as `State [m]', and `MemRef m' as `Int', and then give operations `newMemRef :: m -> Mem m (MemRef m)',`readMem :: MemRef m -> Mem m m',`writeMem :: MemRef m -> m -> Mem m ()' |
| 16:44:14 | <ij> | wait, IOArray is just a pointer to actual data, so you can't access contents without reading more memory – is that it? |
| 16:44:15 | <ski> | if you're given a `MemRef String', you actually only have an `Int' inside, not a `String'. you need to use `Mem' to access the `Strig' (using `readMem') |
| 16:45:04 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection) |
| 16:45:09 | <ski> | do you follow how one could implement these operations ? |
| 16:45:51 | <ij> | yes, those are basic memory operations, but typed |
| 16:46:10 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 16:46:38 | <ski> | e.g. `newMemRef m = MkMem (state (\ms -> (MkMemRef (length ms),ms ++ [m])))' |
| 16:46:57 | <ij> | yes, that is clear |
| 16:47:19 | <ski> | and it's clear that a `MemRef m' doesn't any `m', right ? |
| 16:47:26 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 16:47:30 | <ij> | yes, it's a pointer :) |
| 16:47:39 | <ski> | it's an index, into the list of `m's |
| 16:47:46 | <ij> | pointers are indexes, aren't they |
| 16:48:15 | <ski> | a pointer, if you like, with the understanding that it just tells you where to look, elsewhere, to find the location in which some particular `m' is stored |
| 16:48:25 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 16:48:55 | <ij> | I think it's safe to call it a pointer – it is not required to be a pointer to actual computer's memory |
| 16:49:01 | <ij> | to my head anyway |
| 16:49:11 | <ski> | what i'm arguing here is that it's useful to view references to mutable cells, and to mutable arrays/vectors, with `IO'/`ST'/`STM', in a similar way |
| 16:49:20 | → | geekosaur joins (42d52137@66.213.33.55) |
| 16:50:30 | <mniip> | if you yoneda a MemRef it's as good as containing a mutable m inside |
| 16:50:39 | → | twopoint718 joins (~cjw@fsf/member/twopoint718) |
| 16:50:43 | <ski> | so, you can't have `IORef a -> a' for a similar reason that you can't have `MemRef m -> m' |
| 16:51:44 | <ski> | if it couldn't change value, then it would be more arguable that one could get an operation like that |
| 16:51:47 | <ski> | (see e.g. |
| 16:51:49 | <mniip> | I guess the notion of "contain" is different in `Kleisli IO` |
| 16:51:52 | <ski> | @hackage ivar-simple |
| 16:51:53 | <lambdabot> | https://hackage.haskell.org/package/ivar-simple |
| 16:51:54 | <ski> | ) |
| 16:52:40 | <ij> | ski, but a vector is a pointer as well, isn't it? |
| 16:52:49 | <ij> | v :: Vector a |
| 16:53:02 | <merijn> | define "is" and "pointer" |
| 16:53:03 | <ski> | ij : so, if you were to allow reads from the mutable array/vector, then those could happen later, because of a lazy implementation, and then those reads wouldn't be sequenced (as mentioned before) |
| 16:53:10 | <monochrom> | Right, Haskell's -> is very different from SML's ->. "IORef a -> a" is perfectly normal in SML. |
| 16:53:36 | → | devalot joins (~ident@mail.pmade.com) |
| 16:53:41 | <ski> | ij : so .. i think your best bet are `freeze' and `thaw' operations |
| 16:54:01 | <ij> | ski, yeah, that probably means I'll have to have effectful reading |
| 16:54:17 | <merijn> | ij: Why is that a problem, though? |
| 16:54:32 | <ski> | (there are unsafe variants of those, that doesn't copy it, but to use those, one must be sure that one has no lingering reference to the old one ..) |
| 16:54:58 | <ski> | (i guess maybe one could also imagine something like a diff-array ?) |
| 16:55:01 | <ij> | merijn, I was just wondering whether that is somehow possible |
| 16:55:18 | <ski> | perhaps ij wanted to avoid sequencing a batch of reads |
| 16:55:28 | <ski> | (sequencing them wrt each other, that is) |
| 16:56:04 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 16:56:33 | ij | thinks... |
| 16:56:35 | <ij> | yes, that is exactly it |
| 16:56:51 | <monochrom> | But SML's -> is so messed up that "readIORef :: IORef a -> a" suggests that IORef Int contains the Int value, but "getChar :: () -> Char" does not suggest that () contains the Char value. |
| 16:57:18 | ski | . o O ( SML (and OCaml) even allows matching on `ref'-patterns .. ) |
| 16:57:20 | <monochrom> | (The same can be said of Haskell's IO. But at least the problem is not with -> now.) |
| 16:57:54 | <monochrom> | Oh, that reminds me of Rust. Took me a while. |
| 16:57:54 | × | ransom_ quits (~c4264035@8.48.134.54) (Ping timeout: 256 seconds) |
| 16:57:59 | → | dcbdnl joins (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) |
| 16:59:06 | × | hyiltiz quits (~quassel@unaffiliated/hyiltiz) (Quit: No Ping reply in 180 seconds.) |
| 16:59:13 | <ski> | (in the MLs, `readIORef :: IORef a -> a' would cause a type system hole (being able to implement `unsafeCoerce :: a -> b'), were it not for the "value restriction" (which is reminiscent of the DMR ..) .. (with `unsafePerformIO :: IO a -> a' for Haskell, one could implement `unsafeCoerce' in the same way)) |
| 16:59:27 | <ski> | monochrom : in which way ? |
| 16:59:29 | → | shailangsa joins (~shailangs@host86-186-177-183.range86-186.btcentralplus.com) |
| 16:59:30 | <ij> | ski, but freeze/thaw make copies |
| 16:59:36 | <ij> | did you mean the unsafe version? |
| 16:59:38 | <ij> | +s |
| 16:59:38 | <monochrom> | It also has ref patterns. |
| 16:59:51 | <ski> | ij : if you can ensure you actually use them in safe ways |
| 17:00:15 | <ski> | monochrom : ah |
| 17:00:22 | → | hyiltiz joins (~quassel@unaffiliated/hyiltiz) |
| 17:00:26 | × | xelxebar_ quits (~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection) |
| 17:00:36 | × | dcbdnl quits (~dcbdnl@c-73-76-129-120.hsd1.tx.comcast.net) (Client Quit) |
| 17:00:49 | → | xelxebar joins (~xelxebar@gateway/tor-sasl/xelxebar) |
| 17:01:16 | <ski> | monochrom : hm. does it treat variables in a pattern as (possibly) preexisting, assigning to them ? or does it always introduce new variables with patterns ? |
| 17:02:03 | <ski> | @hoogle runSTUArray |
| 17:02:03 | <lambdabot> | Data.Array.ST runSTUArray :: (forall s . ST s (STUArray s i e)) -> UArray i e |
| 17:02:03 | <lambdabot> | Data.Array.ST.Safe runSTUArray :: (forall s . ST s (STUArray s i e)) -> UArray i e |
| 17:02:22 | × | hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Remote host closed the connection) |
| 17:02:26 | <ski> | (that one does include a safe use of `unsafeFreeze') |
| 17:02:35 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 17:02:45 | → | hekkaidekapus joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 17:03:11 | <monochrom> | It is real and proper patterns like in SML and Haskell. It introduces new variables. |
| 17:03:20 | <merijn> | ij: Why is the copy a problem, though? |
| 17:03:26 | <ski> | ok |
| 17:03:38 | <ij> | merijn, too many copies, they eat all RAM |
| 17:03:43 | <ij> | and I have lots |
| 17:03:47 | <merijn> | ij: The old copies get GCed, though? |
| 17:04:09 | <ij> | merijn, could it be that they're not GCed fast enough? |
| 17:04:33 | <monochrom> | GC is at least as fast as consumption. |
| 17:04:57 | <monochrom> | But you can still be appalled at the time spent copying. |
| 17:05:30 | <ij> | it's a one-time computation, CPU can churn as much as it pleases until it's done |
| 17:06:19 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 17:06:22 | <ij> | I guess I have to profile it... (gotta figure out the right RTS option) |
| 17:07:35 | <monochrom> | You can also be concerned if your physical RAM is less than 4 times the array size. |
| 17:07:43 | <monochrom> | Yes, 4, not even 2. |
| 17:08:20 | <monochrom> | If the computer copies, you need 2 times, at least for an intermittent moment. That much you know. |
| 17:08:48 | <ephemient> | if you can't mutate objects, you never have data in older generations pointing to data in newer generations, which means there's less to scan to determine liveliness. granted, GHC RTS still has to use card tables to track some mutations, and GC hasn't gotten anywhere close to the same level of engineering work that (for example) Java's has... |
| 17:08:55 | <monochrom> | Our GC is a copying GC, like double buffering in graphics. That's another 2 times. Congrats! |
| 17:08:55 | <ij> | merijn, you bring up a good point and I'm now concerned |
| 17:09:05 | <ij> | monochrom, :) gotcha |
| 17:11:03 | <ephemient> | I believe there is an optional non-moving GC as of 8.10? I haven't used it though |
| 17:11:18 | <ij> | right, it is the giant vectors that are hogging up memory |
| 17:11:41 | <ij> | each next backtracking level deeper the previous is pinned as used, but they can be shared in this case |
| 17:12:00 | <ij> | 85% alloc for Matrix.setElem (which is unboxed Vector under the hood) |
| 17:12:59 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 17:13:28 | × | xff0x quits (~xff0x@port-92-193-253-100.dynamic.as20676.net) (Quit: xff0x) |
| 17:13:57 | → | xff0x joins (~xff0x@2001:1a81:53ed:d500:fd7a:b0e1:64e1:be91) |
| 17:14:01 | <ephemient> | https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/runtime_control.html#rts-flag---nonmoving-gc (with quite a few limitations) |
| 17:16:11 | <merijn> | tbh, rather than mutating the maze it's probably much simpler and efficient to have an immutable maze and have a Set/list/whatever to track which positions you finished |
| 17:16:46 | <merijn> | Then your memory usage is linear in the part of the maze you've explored |
| 17:17:19 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds) |
| 17:17:33 | <ij> | merijn, I do have tracking of solved pieces and other additional info, but changes are still baked into the maze |
| 17:17:52 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 17:18:15 | <ephemient> | do they have to be? the representation could be "immutable base maze + diffs" |
| 17:18:31 | <ij> | yeah, I'm now thinking that I could totally do that |
| 17:18:50 | → | christo joins (~chris@81.96.113.213) |
| 17:18:58 | <ij> | which is what I got suggested yesterday and I didn't listen |
| 17:20:18 | <ij> | I continue being wrong on a daily basis |
| 17:23:13 | × | twopoint718 quits (~cjw@fsf/member/twopoint718) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 17:24:42 | → | urodna_ joins (~urodna@unaffiliated/urodna) |
| 17:28:16 | × | urodna quits (~urodna@unaffiliated/urodna) (Ping timeout: 256 seconds) |
| 17:28:23 | × | Franciman quits (~francesco@host-82-48-174-127.retail.telecomitalia.it) (Quit: Leaving) |
| 17:28:37 | → | Aquazi joins (uid312403@gateway/web/irccloud.com/x-uolkbeaqxmvkvibt) |
| 17:29:13 | → | urodna__ joins (~urodna@pool-108-53-252-14.nwrknj.fios.verizon.net) |
| 17:29:49 | × | niekvandepas quits (~niekvande@84.241.193.122) (Remote host closed the connection) |
| 17:30:22 | → | niekvandepas joins (~niekvande@84.241.193.122) |
| 17:31:04 | × | mmmattyx quits (uid17782@gateway/web/irccloud.com/x-wzxcapgnieyfthce) (Quit: Connection closed for inactivity) |
| 17:31:35 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 17:32:08 | → | christo joins (~chris@81.96.113.213) |
| 17:32:27 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 17:32:43 | → | christo joins (~chris@81.96.113.213) |
| 17:33:00 | <nf> | can anyone explain this comment in the Distributive doc? "Due to the lack of non-trivial comonoids in Haskell, we can restrict ourselves to requiring a Functor rather than some Coapplicative class." |
| 17:33:02 | × | urodna_ quits (~urodna@unaffiliated/urodna) (Ping timeout: 256 seconds) |
| 17:33:27 | <nf> | i guess this refers to the constraint in distribute's type signature, and i understand why there are no non-trivial comonoids, but i don't know what comonoids have to do with anything |
| 17:34:01 | × | niekvandepas quits (~niekvande@84.241.193.122) (Read error: Connection reset by peer) |
| 17:34:02 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 17:34:09 | <nf> | (ping edwardk) |
| 17:34:15 | → | twopoint718 joins (~cjw@fsf/member/twopoint718) |
| 17:35:24 | × | mastarija quits (~mastarija@188.252.198.137) (Remote host closed the connection) |
| 17:35:47 | → | mastarija joins (~mastarija@188.252.198.137) |
| 17:36:12 | → | dfeuer joins (~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net) |
| 17:36:26 | × | urodna__ quits (~urodna@pool-108-53-252-14.nwrknj.fios.verizon.net) (Ping timeout: 256 seconds) |
| 17:37:25 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 17:37:26 | → | juuandyy joins (~juuandyy@90.166.144.65) |
| 17:39:13 | × | geekosaur quits (42d52137@66.213.33.55) (Ping timeout: 248 seconds) |
| 17:39:35 | × | juuandyy quits (~juuandyy@90.166.144.65) (Read error: Connection reset by peer) |
| 17:39:50 | → | juuandyy joins (~juuandyy@90.166.144.65) |
| 17:42:05 | → | conal joins (~conal@64.71.133.70) |
| 17:42:15 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 17:43:14 | × | elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 272 seconds) |
| 17:44:39 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 17:45:37 | → | elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) |
| 17:46:28 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 256 seconds) |
| 17:51:01 | × | conal quits (~conal@64.71.133.70) (Ping timeout: 256 seconds) |
| 17:52:37 | × | dyeplexer quits (~lol@unaffiliated/terpin) (Read error: Connection reset by peer) |
| 17:52:48 | → | conal joins (~conal@198.8.81.231) |
| 17:53:18 | → | dyeplexer joins (~lol@unaffiliated/terpin) |
| 17:53:36 | fendor_ | is now known as fendor |
| 17:54:02 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 17:54:59 | × | zaquest quits (~notzaques@5.128.210.178) (Ping timeout: 260 seconds) |
| 17:55:04 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 17:55:07 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds) |
| 17:57:20 | × | hyiltiz quits (~quassel@unaffiliated/hyiltiz) (Quit: No Ping reply in 180 seconds.) |
| 17:57:34 | → | hyiltiz joins (~quassel@93.119.106.77) |
| 17:57:34 | × | hyiltiz quits (~quassel@93.119.106.77) (Changing host) |
| 17:57:34 | → | hyiltiz joins (~quassel@unaffiliated/hyiltiz) |
| 17:58:21 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 17:59:23 | <dminuoso> | % type family Asg x where Asg x = x |
| 17:59:23 | <yahb> | dminuoso: |
| 17:59:26 | <dminuoso> | % data D f = D (f Int) |
| 17:59:27 | <yahb> | dminuoso: |
| 17:59:30 | <dminuoso> | % instance Eq (D Asg) |
| 17:59:30 | <yahb> | dminuoso: ; <interactive>:106:10: error:; * The type family `Asg' should have 1 argument, but has been given none; * In the instance declaration for `Eq (D Asg)' |
| 17:59:45 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 17:59:48 | <dminuoso> | Is there an alternate way to do this? |
| 18:00:08 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 18:00:18 | → | geekosaur joins (42d52137@66.213.33.55) |
| 18:02:34 | × | conal quits (~conal@198.8.81.231) (Quit: Computer has gone to sleep.) |
| 18:04:18 | <dminuoso> | % data C; type family F mode y; type instance F C y = y |
| 18:04:19 | <yahb> | dminuoso: |
| 18:04:23 | <dminuoso> | % data D m = D (F m Int) |
| 18:04:23 | <yahb> | dminuoso: |
| 18:04:25 | <dminuoso> | % instance Eq (D C) |
| 18:04:25 | <yahb> | dminuoso: ; <interactive>:123:10: warning: [-Wmissing-methods]; * No explicit implementation for; either `==' or `/='; * In the instance declaration for `Eq (D C)' |
| 18:04:31 | <dminuoso> | Mmm. This works I guess |
| 18:05:01 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds) |
| 18:07:30 | × | twopoint718 quits (~cjw@fsf/member/twopoint718) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 18:08:35 | × | ome quits (uid36537@gateway/web/irccloud.com/x-vxnalybdhvqhuavb) (Quit: Connection closed for inactivity) |
| 18:08:52 | → | conal joins (~conal@198.8.81.231) |
| 18:09:11 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 18:09:29 | → | christo joins (~chris@81.96.113.213) |
| 18:09:57 | → | Guest71 joins (~textual@64.71.174.175) |
| 18:10:33 | × | dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection) |
| 18:10:52 | ← | Guest71 parts (~textual@64.71.174.175) () |
| 18:11:14 | → | twopoint718 joins (~cjw@fsf/member/twopoint718) |
| 18:11:55 | → | _________ joins (~textual@64.71.174.175) |
| 18:12:18 | _________ | is now known as Guest65500 |
| 18:12:47 | <Guest65500> | t5 |
| 18:14:33 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 18:15:30 | × | sujeet quits (sujeet@unaffiliated/freeboson) (Quit: bye) |
| 18:16:22 | → | Ariakenom joins (~Ariakenom@2001:9b1:efb:fc00:55e4:e64e:d0d2:62ce) |
| 18:17:27 | → | sujeet joins (sujeet@unaffiliated/freeboson) |
| 18:18:44 | Guest65500 | is now known as _0x4b42 |
| 18:20:03 | × | _0x4b42 quits (~textual@64.71.174.175) (Quit: Textual IRC Client: www.textualapp.com) |
| 18:21:00 | × | xsperry quits (~as@unaffiliated/xsperry) () |
| 18:28:04 | → | argento joins (~argent0@168.227.97.34) |
| 18:29:24 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 18:39:45 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 18:39:54 | × | hyiltiz quits (~quassel@unaffiliated/hyiltiz) (Quit: hyiltiz) |
| 18:40:05 | × | rajivr quits (uid269651@gateway/web/irccloud.com/x-xvvnrltyuwuuhove) (Quit: Connection closed for inactivity) |
| 18:40:37 | → | howdoi joins (uid224@gateway/web/irccloud.com/x-yjigqeaqwzhgddjd) |
| 18:40:43 | → | Deide joins (~Deide@217.155.19.23) |
| 18:41:20 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 18:41:43 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 18:41:52 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 18:42:01 | → | hyiltiz joins (~quassel@93.119.106.77) |
| 18:42:01 | × | hyiltiz quits (~quassel@93.119.106.77) (Changing host) |
| 18:42:01 | → | hyiltiz joins (~quassel@unaffiliated/hyiltiz) |
| 18:44:11 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
| 18:44:37 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 18:44:42 | × | juuandyy quits (~juuandyy@90.166.144.65) (Quit: Konversation terminated!) |
| 18:46:00 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 18:46:13 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds) |
| 18:46:36 | × | thefybe quits (~thefybe@249-147-161-N2.customer.vsm.sh) (Ping timeout: 240 seconds) |
| 18:51:26 | → | eacameron joins (uid256985@gateway/web/irccloud.com/x-ccigqlpvwahmrvhs) |
| 18:51:38 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
| 18:55:31 | × | bennofs quits (~quassel@2a01:4f8:c17:5579::1) (Remote host closed the connection) |
| 18:55:47 | → | bennofs joins (~quassel@2a01:4f8:c17:5579::1) |
| 19:00:30 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 19:00:32 | → | Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 19:00:52 | → | mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
| 19:02:37 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 264 seconds) |
| 19:03:22 | Lord_of_Life_ | is now known as Lord_of_Life |
| 19:03:33 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:e268:f1af:eeaa:71ac) (Ping timeout: 272 seconds) |
| 19:03:39 | → | berberman_ joins (~berberman@unaffiliated/berberman) |
| 19:04:08 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Client Quit) |
| 19:04:25 | → | Alleria joins (~textual@mskresolve-a.mskcc.org) |
| 19:04:49 | Alleria | is now known as Guest94505 |
| 19:04:57 | × | berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds) |
| 19:05:13 | × | twopoint718 quits (~cjw@fsf/member/twopoint718) (Quit: Textual IRC Client: www.textualapp.com) |
| 19:05:24 | × | _deepfire quits (~user@80.92.100.69) (Remote host closed the connection) |
| 19:06:50 | × | Alleria__ quits (~textual@mskresolve-a.mskcc.org) (Ping timeout: 272 seconds) |
| 19:07:16 | × | dandart quits (~Thunderbi@home.dandart.co.uk) (Ping timeout: 240 seconds) |
| 19:07:48 | → | dandart joins (~Thunderbi@home.dandart.co.uk) |
| 19:08:54 | → | Tario joins (~Tario@201.192.165.173) |
| 19:09:39 | → | dandart1 joins (~Thunderbi@home.dandart.co.uk) |
| 19:10:45 | × | pera quits (pera@gateway/vpn/mullvad/pera) (Ping timeout: 240 seconds) |
| 19:12:05 | × | dandart quits (~Thunderbi@home.dandart.co.uk) (Ping timeout: 240 seconds) |
| 19:12:05 | dandart1 | is now known as dandart |
| 19:13:15 | × | knupfer quits (~Thunderbi@200116b82c62e30071e812f479534363.dip.versatel-1u1.de) (Remote host closed the connection) |
| 19:13:24 | → | knupfer joins (~Thunderbi@200116b82c62e3007cb54228cd86c296.dip.versatel-1u1.de) |
| 19:15:35 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:a978:5a86:791:f563) |
| 19:15:36 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 19:17:37 | × | gentauro quits (~gentauro@unaffiliated/gentauro) (Quit: leaving) |
| 19:17:53 | → | gentauro joins (~gentauro@unaffiliated/gentauro) |
| 19:24:05 | → | thefybe joins (~thefybe@249-147-161-N2.customer.vsm.sh) |
| 19:26:01 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 19:33:06 | × | puffnfresh quits (~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net) (Ping timeout: 265 seconds) |
| 19:33:58 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 19:35:01 | → | puffnfresh joins (~puffnfres@119-17-138-164.77118a.mel.static.aussiebb.net) |
| 19:41:40 | × | hive-mind quits (~hivemind@rrcs-67-53-148-69.west.biz.rr.com) (Ping timeout: 256 seconds) |
| 19:44:10 | × | conal quits (~conal@198.8.81.231) (Quit: Computer has gone to sleep.) |
| 19:45:40 | → | hive-mind joins (~hivemind@rrcs-67-53-148-69.west.biz.rr.com) |
| 19:46:08 | × | mastarija quits (~mastarija@188.252.198.137) (Quit: Leaving) |
| 19:46:44 | → | jess joins (jess@freenode/staff/jess) |
| 19:47:40 | × | jess quits (jess@freenode/staff/jess) (Client Quit) |
| 19:47:40 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 19:48:15 | → | jess joins (jess@freenode/staff/jess) |
| 19:48:19 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 19:49:56 | → | boxscape joins (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) |
| 19:50:58 | → | acidjnk_new joins (~acidjnk@p200300d0c704e7934412496f05d02b0d.dip0.t-ipconnect.de) |
| 19:51:45 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 19:52:14 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
| 19:55:10 | × | acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 246 seconds) |
| 19:56:10 | × | thefybe quits (~thefybe@249-147-161-N2.customer.vsm.sh) (Ping timeout: 256 seconds) |
| 19:56:17 | × | geekosaur quits (42d52137@66.213.33.55) (Ping timeout: 248 seconds) |
| 19:56:19 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 260 seconds) |
| 19:57:26 | → | conal joins (~conal@64.71.133.70) |
| 19:58:52 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 19:59:14 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 19:59:54 | <loli> | is there a way to jump to definition in haskell LSP for emacs for dependencies? |
| 20:00:27 | <loli> | The project I'm currently working on has a bunch of the functionality split up into many different libraries, trying to traverse them by digging in by hand instead of jump to source has gotten quite tiring |
| 20:01:49 | × | xff0x quits (~xff0x@2001:1a81:53ed:d500:fd7a:b0e1:64e1:be91) (Ping timeout: 272 seconds) |
| 20:02:12 | → | xff0x joins (~xff0x@2001:1a81:53ed:d500:fb41:db64:748c:e168) |
| 20:02:34 | → | owner joins (~heronwr@198.52.165.210) |
| 20:02:40 | owner | is now known as heronwr |
| 20:02:59 | × | Up39 quits (5434a07f@tm.84.52.160.127.dc.cable.static.telemach.net) (Quit: Connection closed) |
| 20:04:25 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds) |
| 20:05:41 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 20:06:36 | × | Neuromancer quits (~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 256 seconds) |
| 20:06:38 | <kuribas> | LSP in emacs is pretty aweful compared to vscode |
| 20:06:45 | <ezzieyguywuf> | `less -RS` is _awesome_, it's changed my life |
| 20:07:08 | → | vicfred joins (vicfred@gateway/vpn/mullvad/vicfred) |
| 20:07:33 | <loli> | is it? that is a shame |
| 20:07:38 | <loli> | I was using intero until it died |
| 20:08:40 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 20:10:55 | → | geekosaur joins (42d52137@66.213.33.55) |
| 20:11:38 | → | conal joins (~conal@64.71.133.70) |
| 20:11:51 | <dminuoso> | loli: Mmm, I use hasktags so I can just jump to definition for that. |
| 20:12:09 | <loli> | hasktags solves this issue? |
| 20:12:24 | <dminuoso> | If the definition is inside the same package, yes. |
| 20:12:31 | <loli> | no |
| 20:12:43 | <loli> | the lsp mode gives me jump to definition for definitions in the same package |
| 20:12:53 | → | Neuromancer joins (~Neuromanc@unaffiliated/neuromancer) |
| 20:12:58 | → | seveg joins (~gabriel@188-167-252-202.dynamic.chello.sk) |
| 20:13:00 | <loli> | however the codebase I work in has it's code spread out between many different libraries |
| 20:14:25 | <loli> | I think I read an issue at one point about it? I can't seem to find it again... it's just a shame, as it makes moving around, finding definitions, tedious |
| 20:16:43 | × | seveg quits (~gabriel@188-167-252-202.dynamic.chello.sk) (Client Quit) |
| 20:18:20 | klardots1 | is now known as klardotsh |
| 20:19:32 | <dminuoso> | Im not sure how that would be doable, sensibly. |
| 20:19:50 | × | ADG1089__ quits (~aditya@122.163.165.143) (Remote host closed the connection) |
| 20:19:59 | → | seveg joins (~gabriel@2a02-ab04-0249-8d00-dea6-32ff-fe17-0993.dynamic.v6.chello.sk) |
| 20:20:11 | × | danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds) |
| 20:20:14 | <sm[m]> | loli: in vs code if I mouse over something from a dependency, the haddock pops up, and also a link to the online haddock where you can click the source link |
| 20:20:15 | <dminuoso> | That would need some interesting interaction with cabal, to pluck the cabal archives used in the build.. |
| 20:20:52 | <dminuoso> | sm[m]: How does it identify that thing? |
| 20:21:04 | <sm[m]> | ah you asked about emacs, but maybe it gives an idea |
| 20:21:12 | <dminuoso> | Does it use the build plan to find the correct package on hackage? |
| 20:21:21 | <loli> | sm[m]: yeah I get something similar, modulo being able to click the link |
| 20:21:25 | <sm[m]> | no idea dminuoso. Magic! |
| 20:21:42 | <loli> | often mod :: T -> Mod \n _Defined in Code.Base.Here |
| 20:22:10 | <dminuoso> | Well, that much is easy. |
| 20:22:35 | <loli> | well ghci knows where the code is, if you :i it |
| 20:22:45 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 20:22:48 | <loli> | at least for local packages which are external to the current one |
| 20:22:53 | → | PietPtr joins (~pieter@unaffiliated/pietdagamer) |
| 20:22:55 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Read error: Connection reset by peer) |
| 20:22:56 | <dminuoso> | Sure, but that wont give you access to any haddock |
| 20:23:05 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
| 20:23:11 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
| 20:23:37 | <loli> | sure, but I'd rather just use that to jump to source |
| 20:23:57 | <loli> | since it knows where it is defined and possibly even the line number, I'd rather just have my emacs dive to the page |
| 20:24:18 | → | thefybe joins (~thefybe@249-147-161-N2.customer.vsm.sh) |
| 20:24:22 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 20:25:36 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 20:27:15 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 20:27:57 | → | nineonine joins (~nineonine@50.216.62.2) |
| 20:28:38 | → | jonatanb joins (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) |
| 20:28:55 | <sm[m]> | #haskell-ide-engine will know |
| 20:29:50 | × | ystael quits (~ystael@209.6.50.55) (Ping timeout: 256 seconds) |
| 20:30:06 | × | knupfer quits (~Thunderbi@200116b82c62e3007cb54228cd86c296.dip.versatel-1u1.de) (Remote host closed the connection) |
| 20:30:21 | → | knupfer joins (~Thunderbi@200116b82c62e300d9ff7a8eb0f2bc98.dip.versatel-1u1.de) |
| 20:30:51 | <idnar> | how do I `take` on a `Data.Text.Lazy.Builder`? |
| 20:31:08 | <merijn> | idnar: You turn it into Text first |
| 20:31:45 | <monochrom> | Possible XY problem. |
| 20:32:45 | × | jonatanb quits (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Ping timeout: 240 seconds) |
| 20:33:02 | <idnar> | let me pastebin |
| 20:35:12 | <idnar> | https://gist.github.com/mithrandi/bddb422c9b751d104f85fd926d896a95 |
| 20:41:13 | × | kuribas quits (~user@ptr-25vy0i7ug01ndhtx56u.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 20:45:04 | → | mht joins (~mht@mht.wtf) |
| 20:45:44 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 20:52:56 | <loli> | thanks sm[m] |
| 20:55:33 | <monochrom> | Perhaps "go" should count down from len to 0, too. This would not destroy the efficency benefits of using builder. |
| 20:56:49 | <monochrom> | builder's efficiency is gained from never looking back, aka "streaming". |
| 20:59:19 | × | Jd007 quits (~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007) |
| 20:59:59 | × | knupfer quits (~Thunderbi@200116b82c62e300d9ff7a8eb0f2bc98.dip.versatel-1u1.de) (Quit: knupfer) |
| 21:00:05 | × | coot quits (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 21:00:14 | → | knupfer joins (~Thunderbi@200116b82c62e3006c32357b74a11b0b.dip.versatel-1u1.de) |
| 21:02:58 | <idnar> | monochrom: good idea |
| 21:03:08 | → | Jd007 joins (~Jd007@d154-5-83-24.bchsia.telus.net) |
| 21:05:17 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 21:05:41 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 21:06:08 | × | alx741 quits (~alx741@181.196.69.216) (Quit: alx741) |
| 21:06:13 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 21:06:38 | → | conal joins (~conal@64.71.133.70) |
| 21:06:53 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 21:07:23 | × | rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds) |
| 21:07:55 | → | alx741 joins (~alx741@181.196.69.216) |
| 21:07:57 | → | p3n joins (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) |
| 21:12:54 | × | tsrt^ quits (~hph@ip98-184-89-2.mc.at.cox.net) () |
| 21:14:32 | → | nrh^ joins (~hph@ip98-184-89-2.mc.at.cox.net) |
| 21:17:13 | × | Twey quits (~twey@unaffiliated/twey) (Quit: ZNC - http://znc.in) |
| 21:18:44 | → | aveltras joins (uid364989@gateway/web/irccloud.com/x-xykekrezuzwmeque) |
| 21:19:12 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 21:19:44 | × | statusfailed quits (~statusfai@statusfailed.com) (Ping timeout: 260 seconds) |
| 21:20:07 | × | ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 21:22:23 | × | ulidtko|k quits (~ulidtko@194.54.80.38) (Ping timeout: 256 seconds) |
| 21:22:54 | × | piezoid quits (~piezoid@82-64-150-32.subs.proxad.net) (Quit: leaving...) |
| 21:23:41 | → | Twey joins (~twey@unaffiliated/twey) |
| 21:24:24 | × | danso quits (~dan@23-233-104-25.cpe.pppoe.ca) (Ping timeout: 260 seconds) |
| 21:25:25 | × | turion quits (~turion@2a02:810d:8abf:c4a8:d43a:b21:28bf:441a) (Ping timeout: 272 seconds) |
| 21:27:49 | → | statusfailed joins (~statusfai@statusfailed.com) |
| 21:27:53 | → | justsomeguy joins (~Srain@unaffiliated/--/x-3805311) |
| 21:27:56 | <koz_> | @unmtl ExceptT e (State s) a |
| 21:27:56 | <lambdabot> | s -> (Either e a, s) |
| 21:29:52 | <monochrom> | I always like to pose the question to my students "should I use s->(Either e a,s)? or should it be s->Either e (a,s)?" given a particular scenerio. |
| 21:30:17 | <Rembane> | It depends. |
| 21:30:21 | <monochrom> | Yes. |
| 21:30:59 | <monochrom> | But I always describe a scenerio to requires exactly one of them. |
| 21:31:17 | <monochrom> | To test their understanding of the consequences of each. |
| 21:31:22 | <Rembane> | ^^ good stuff |
| 21:31:31 | × | justsomeguy quits (~Srain@unaffiliated/--/x-3805311) (Remote host closed the connection) |
| 21:32:06 | <koz_> | monochrom: Bonus points - all the possible stackings of LogicT, StateT and ExceptT and the varying semantics of each. |
| 21:32:37 | <monochrom> | Ah yeah, I should do that one day. Student marks are too high. |
| 21:32:58 | <koz_> | I actually whiteboarded that up for myself recently. |
| 21:32:59 | <Rembane> | IIRC you can break things in really fun ways if you include ContT too |
| 21:33:00 | <koz_> | Good stuff. |
| 21:33:10 | <koz_> | Rembane: LogicT is a special case of ContT. |
| 21:34:04 | <monochrom> | But it's such a special case you can use the simpler [] model. |
| 21:34:13 | <Rembane> | koz_: Nice. Which one is the most fun? |
| 21:34:19 | <koz_> | Yeah, and I'd actually recommend it because otherwise your brain will break. |
| 21:34:55 | <koz_> | Rembane: ContT is the harder of the two. Depends on your definition of 'fun' I guess. |
| 21:35:00 | <monochrom> | To some extent ContT is not fair because I don't have time to teach them. |
| 21:35:24 | → | danso joins (~dan@23-233-104-25.cpe.pppoe.ca) |
| 21:35:52 | <Rembane> | koz_: I'm having a hard time deciding which definition is the most suitable here. :) |
| 21:36:08 | <koz_> | Rembane: The real question should be 'for whom is it the most fun?'. |
| 21:36:16 | <koz_> | If your answer is 'monochrom', definitely ContT. |
| 21:36:22 | <monochrom> | :) |
| 21:36:26 | <koz_> | If your answer is 'the students', then definitely LogicT. |
| 21:36:40 | <koz_> | If your answer is '#haskell', the correct response is 'porque no los dos?'. |
| 21:36:51 | <koz_> | Or, depending on where you're from, 'les deux, mon capitaine!'. |
| 21:36:51 | → | jonatanb joins (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) |
| 21:37:02 | <monochrom> | I indirectly inflicted Cont on my students in an assignment. It's by way of the monad of "from random variable to expected value". |
| 21:37:33 | <Rembane> | koz_: :D |
| 21:37:35 | <monochrom> | (which is one of many versions of "the" probability monad) |
| 21:38:15 | <monochrom> | Let X be your sample space. A random variable is a function from X to numbers. Let's say X->Double |
| 21:38:24 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 21:38:59 | <monochrom> | Err bad name choice X because people want to use X for the random variable! |
| 21:39:13 | <monochrom> | Let S be your sample space. A random variable is a function from S to numbers. Let's say R->Double. |
| 21:39:58 | <monochrom> | err typo, s/R/S/ |
| 21:40:01 | <monochrom> | Let S be your sample space. A random variable is a function from S to numbers. Let's say S->Double. |
| 21:40:24 | → | Guest_8 joins (cdfaa09d@d205-250-160-157.bchsia.telus.net) |
| 21:40:34 | × | xwvvvvwx quits (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) (Quit: ZNC 1.8.2 - https://znc.in) |
| 21:40:36 | → | son0p joins (~son0p@181.136.122.143) |
| 21:40:43 | × | Guest_8 quits (cdfaa09d@d205-250-160-157.bchsia.telus.net) (Client Quit) |
| 21:40:44 | <monochrom> | If you write "E(X)" for the expected value of X::S->Double, the logical conclusion is E :: (S->Double)->Double. |
| 21:40:53 | → | xwvvvvwx joins (xwvvvvwx@gateway/vpn/mullvad/xwvvvvwx) |
| 21:40:56 | × | jonatanb quits (~jonatanb@83.24.29.180.ipv4.supernova.orange.pl) (Ping timeout: 240 seconds) |
| 21:40:59 | <monochrom> | Hey that looks suspiciously like Cont Double S |
| 21:41:46 | <monochrom> | What really surprised me is that if fmap, pure, <*>, and >>= are to make sense in terms of expected values, they are also Cont's fmap, pure, <*>, >>= |
| 21:42:27 | <koz_> | monochrom: This is further proof that you can build an entire career on Cont(T). |
| 21:44:49 | × | danso quits (~dan@23-233-104-25.cpe.pppoe.ca) (Quit: WeeChat 3.0) |
| 21:47:19 | → | danso joins (~dan@23-233-104-25.cpe.pppoe.ca) |
| 21:47:26 | → | debclair joins (~debclair@host-181-39-120-169.netlife.ec) |
| 21:48:27 | <monochrom> | And my ingenius stroke of finishing touch of that assignment is the following. |
| 21:49:07 | <monochrom> | I reckoned that if I called it the "probability monad" as in the research literature, it's way too googlable. I needed a more obscure name. |
| 21:49:47 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 21:49:53 | <monochrom> | Hrm, probability, randomness... Eureka! "random monad". |
| 21:50:01 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
| 21:50:34 | <monochrom> | My certification of success came when a very weak student emailed me to ask "may I import Control.Monad.Random"? Gotcha! |
| 21:51:11 | <monochrom> | I.e., why give it an obscure name when you can give it a misleading name bwhahahaha |
| 21:51:45 | × | danso quits (~dan@23-233-104-25.cpe.pppoe.ca) (Client Quit) |
| 21:52:30 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 21:53:27 | × | geekosaur quits (42d52137@66.213.33.55) (Quit: Connection closed) |
| 21:53:39 | <glguy> | monochrom: misleading names have the potential to give people a false sense of familiarity. obscure ones are just scary :nod: |
| 21:53:56 | × | Aquazi quits (uid312403@gateway/web/irccloud.com/x-uolkbeaqxmvkvibt) (Quit: Connection closed for inactivity) |
| 21:54:23 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Remote host closed the connection) |
| 21:54:24 | → | conal joins (~conal@64.71.133.70) |
| 21:56:08 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 21:57:31 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds) |
| 21:58:40 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Quit: jpds) |
| 21:59:02 | × | dfeuer quits (~dfeuer@pool-173-79-253-62.washdc.fios.verizon.net) (Remote host closed the connection) |
| 22:00:15 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 22:00:46 | → | TheCommieDuck joins (~mark@host-78-146-136-48.as13285.net) |
| 22:01:52 | → | sparsity joins (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) |
| 22:02:44 | → | conal joins (~conal@64.71.133.70) |
| 22:02:44 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 22:02:54 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 260 seconds) |
| 22:02:56 | × | argento quits (~argent0@168.227.97.34) (Ping timeout: 240 seconds) |
| 22:05:27 | → | danso joins (~dan@23-233-104-25.cpe.pppoe.ca) |
| 22:06:10 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 22:07:41 | × | danso quits (~dan@23-233-104-25.cpe.pppoe.ca) (Client Quit) |
| 22:09:08 | <monochrom> | If you're interested: the assignment handout is at http://www.cs.utoronto.ca/~trebla/x/0J50KOV5UH/CSCC24-2020-Winter/a2/ |
| 22:09:34 | × | ke4pcx quits (~ke4pcx@024-158-093-129.res.spectrum.com) (Read error: Connection reset by peer) |
| 22:09:48 | <dolio> | The real probability monad isn't just Cont Double, though. |
| 22:09:51 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:09:53 | → | danso joins (~dan@23-233-104-25.cpe.pppoe.ca) |
| 22:10:04 | <dolio> | That's just the limit of what you can reasonably encode in Haskell. |
| 22:10:23 | → | ke4pcx joins (~ke4pcx@024-158-093-129.res.spectrum.com) |
| 22:10:54 | <monochrom> | Do you mean: We need suitable restrictions on the function space, it is not the full S->SuitableNumberType? |
| 22:11:01 | × | hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Ping timeout: 264 seconds) |
| 22:11:29 | <dolio> | Yeah, `X -> Double` should be some kind of 'guaranteed to be a probability measure' thing. |
| 22:11:53 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:11:55 | → | maxsu joins (~maxsu@ip-64-72-99-232.lasvegas.net) |
| 22:12:50 | × | knupfer quits (~Thunderbi@200116b82c62e3006c32357b74a11b0b.dip.versatel-1u1.de) (Ping timeout: 258 seconds) |
| 22:13:20 | × | boxscape quits (4ff0ba59@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.89) (Quit: Connection closed) |
| 22:14:39 | → | edge563 joins (~edge563@gateway/tor-sasl/edge563) |
| 22:15:09 | → | SrainUser joins (~Srain@216.186.218.241) |
| 22:15:15 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 22:15:19 | <dolio> | I'm not informed enough to know how it actually works. `X -> Double` might not be quite correct at all, because it's probably treating types like discrete spaces, but people studying probability want to work with measurable spaces, where you assign probabilities to subspaces, not points. |
| 22:15:56 | × | alx741 quits (~alx741@181.196.69.216) (Ping timeout: 240 seconds) |
| 22:16:16 | → | alx741 joins (~alx741@186.178.110.185) |
| 22:16:25 | <monochrom> | When X is continuous, the Double becomes probability density. And you're to do integration. Then it still works out. |
| 22:16:27 | × | SrainUser quits (~Srain@216.186.218.241) (Quit: SrainUser) |
| 22:16:55 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 22:17:10 | <dolio> | Yeah, I guess that does make sense. |
| 22:17:11 | <monochrom> | There is a paper that does all of this. Full-blown measure theory, no compromise. |
| 22:18:57 | <monochrom> | I think it's this: https://www.cs.tufts.edu/~nr/pubs/pmonad-abstract.html |
| 22:19:56 | <dolio> | Anyhow, it happens that the monad operations on Cont r stay valid when you want to consider only restricted classes of continuations. |
| 22:20:15 | → | ddere joins (uid110888@gateway/web/irccloud.com/x-qihpsouqwjjvfzge) |
| 22:22:44 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 22:23:05 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) |
| 22:24:05 | <dolio> | Or, for instance, they also work for 'free r-vector space with basis a', I believe, where the outer arrow is supposed to be linear. |
| 22:25:01 | <dolio> | But not every value of `Cont r a` makes sense as part of that vector space. |
| 22:25:24 | × | danso quits (~dan@23-233-104-25.cpe.pppoe.ca) (Quit: WeeChat 3.0) |
| 22:27:50 | × | Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
| 22:29:37 | × | ke4pcx quits (~ke4pcx@024-158-093-129.res.spectrum.com) () |
| 22:29:52 | × | dhouthoo quits (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 2.9) |
| 22:30:41 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 22:30:55 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:36:42 | × | solarliner quits (~solarline@243.81.10.109.rev.sfr.net) (Quit: solarliner) |
| 22:36:53 | → | ADG1089__ joins (~aditya@122.163.165.143) |
| 22:38:16 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
| 22:39:39 | × | chele quits (~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
| 22:39:52 | → | mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
| 22:40:34 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 22:42:34 | × | edge563 quits (~edge563@gateway/tor-sasl/edge563) (Quit: edge563) |
| 22:42:34 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 265 seconds) |
| 22:43:06 | × | chpatrick quits (sid239395@gateway/web/irccloud.com/x-okkeakcurpolpskn) () |
| 22:46:33 | × | klardotsh quits (~klardotsh@c-71-231-242-112.hsd1.wa.comcast.net) (Quit: WeeChat 2.9) |
| 22:47:00 | → | danso joins (~dan@23-233-104-25.cpe.pppoe.ca) |
| 22:50:38 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:53:48 | × | fendor quits (~fendor@77.119.128.187.wireless.dyn.drei.com) (Remote host closed the connection) |
| 22:55:41 | → | ep1ctetus joins (b8bba2a3@ip184-187-162-163.sb.sd.cox.net) |
| 22:56:36 | → | inkbottle joins (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) |
| 22:56:56 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-158-67.w86-212.abo.wanadoo.fr) (Ping timeout: 256 seconds) |
| 22:57:09 | <ep1ctetus> | idk if this is the best place to ask this, but I am having a problem with the VS Code Haskell add-in and Stack. I just get an error message that says "ghcide compiled against GHC 8.10.2 but currently using 8.8.4" |
| 22:57:24 | <ep1ctetus> | I can't use 8.10.2 on Windows because it doesn't work |
| 22:59:01 | × | heronwr quits (~heronwr@198.52.165.210) (Ping timeout: 264 seconds) |
| 22:59:11 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 23:01:31 | <sm[m]> | ep1ctetus: #haskell-ide-engine is probably the best place |
| 23:01:40 | <sm[m]> | the Haskell extension is supposed to take care of that for you |
| 23:01:48 | <ep1ctetus> | sm[m] thank you |
| 23:03:04 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 23:03:09 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Read error: Connection reset by peer) |
| 23:03:36 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 23:05:36 | × | Widget quits (~widget@213.55.241.60) (Ping timeout: 272 seconds) |
| 23:06:32 | → | Widget joins (~widget@2a04:ee41:6:7207:b1c1:81ec:60ca:398c) |
| 23:07:11 | <ij> | how can a calculation on a record cause allocations? score c = created c + (choices c) * 5 |
| 23:07:23 | × | tomboy64 quits (~tomboy64@gateway/tor-sasl/tomboy64) (Ping timeout: 240 seconds) |
| 23:08:03 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 23:08:17 | → | mikevdg joins (a30781b2@163.7.129.178) |
| 23:08:33 | × | LKoen quits (~LKoen@152.172.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.”) |
| 23:08:50 | <mikevdg> | Hi all. How do you debug stuff in Haskell? I'm getting an exception in a library, but I can't work out how to get a stack trace. |
| 23:09:02 | <mikevdg> | Links to a tutorial would be great. I'm not having much luck finding one. |
| 23:09:02 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:a978:5a86:791:f563) (Ping timeout: 264 seconds) |
| 23:09:24 | → | acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
| 23:11:33 | <sm[m]> | mikevdg: it's a bit complicated. It might involve building the profiling version of that library, and rebuilding your app in profiling mode. Often it's quicker to narrow things down with trace (Debug.Trace) |
| 23:11:51 | <sm[m]> | if you want to master it, the GHC User Guide is a good place to start |
| 23:11:58 | <monochrom> | mikevdg: I start with "printf debugging": http://www.vex.net/~trebla/haskell/tracing.html |
| 23:13:19 | <mikevdg> | I've already recompiled for profiling. |
| 23:14:21 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 23:14:37 | <monochrom> | My brief experience with "turn on profiling to get a backtrace" is that after code optimization (GHC can rewrite your code to beyond recognition) the backtrace is informationless. |
| 23:14:50 | mikevdg | finds https://downloads.haskell.org/ghc/latest/docs/html/users_guide/debug-info.html#requesting-a-stack-trace-from-haskell-code |
| 23:15:17 | <monochrom> | Not to mention that laziness is extremely jumpy. |
| 23:15:45 | <sm[m]> | well if you have a profiling build, it's no harm to try the backtrace you'll get from running with +RTS -xc (IIRC) |
| 23:16:17 | × | debclair quits (~debclair@host-181-39-120-169.netlife.ec) (Ping timeout: 256 seconds) |
| 23:16:26 | <mikevdg> | +RTC -xc don't seem to be recognised in the GHC options in package.yaml. GHC barfed at them (?!) |
| 23:17:03 | <monochrom> | My most successful debugging sessions have all been: formulate a really informative hypothesis, use "printf debugging" to accept or reject the hypothesis, repeat. |
| 23:17:18 | <sm[m]> | +RTS -xc, and these are run-time options for your program, not build time options for ghc |
| 23:18:14 | <mikevdg> | ahh. |
| 23:18:39 | <sm[m]> | they might require that you built it with the -rtsopts ghc option though |
| 23:19:18 | <monochrom> | Yeah, -rtsopts in build-time ghc-options |
| 23:19:48 | <monochrom> | This is why you have to learn how to use GHC directly, even when normally you use stack or cabal-install. |
| 23:20:05 | <monochrom> | The abstraction leaks. |
| 23:20:17 | <sm[m]> | stack hides that stuff pretty well actually. stack build --profile |
| 23:20:49 | → | tomboy64 joins (~tomboy64@gateway/tor-sasl/tomboy64) |
| 23:20:52 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:e8e1:98ae:f4d8:7ab5) |
| 23:21:54 | <monochrom> | Well, when one day you don't have to know "+RTS -xc" and you don't have to know "oh you mean give it to my exe, not to GHC", only then you can call it well-hidden. |
| 23:22:16 | → | klardotsh joins (~klardotsh@c-71-231-242-112.hsd1.wa.comcast.net) |
| 23:22:45 | × | inkbottle quits (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 23:22:49 | <monochrom> | i.e., some kind of "stack/cabal run --backtrace" and "stack/cabal run --memory-profile" and ... |
| 23:23:04 | → | inkbottle joins (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) |
| 23:23:31 | <monochrom> | I wouldn't hold my breath. |
| 23:24:49 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 23:25:49 | × | son0p quits (~son0p@181.136.122.143) (Quit: leaving) |
| 23:25:57 | → | plutoniix joins (~q@node-ufb.pool-125-24.dynamic.totinternet.net) |
| 23:26:50 | → | debclair joins (~debclair@host-181-39-120-169.netlife.ec) |
| 23:27:10 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 23:27:46 | <ij> | is it easy to make a statically linked executable? |
| 23:28:12 | <ij> | for copying onto a fresh, empty server |
| 23:28:57 | × | p3n quits (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) (Remote host closed the connection) |
| 23:30:29 | <mikevdg> | I've come to the conclusion that Haskell does not have a usable debugger. At all. Screw this. |
| 23:31:03 | <mikevdg> | I'm *trying really hard* to like this language but everything I try is far more difficult than it needs to be. |
| 23:32:22 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 23:32:45 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 23:32:59 | → | conal joins (~conal@64.71.133.70) |
| 23:34:25 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds) |
| 23:35:26 | → | heronwr joins (~heronwr@198.52.165.210) |
| 23:36:12 | × | heronwr quits (~heronwr@198.52.165.210) (Client Quit) |
| 23:36:30 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 23:36:46 | × | TheCommieDuck quits (~mark@host-78-146-136-48.as13285.net) (Quit: WeeChat 3.0) |
| 23:36:51 | → | conal_ joins (~conal@198.8.81.80) |
| 23:37:16 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds) |
| 23:37:56 | × | conal quits (~conal@64.71.133.70) (Ping timeout: 240 seconds) |
| 23:38:54 | <sm[m]> | mikevdg: it doesn't. Nobody said it did. :) |
| 23:39:13 | <sm[m]> | but there are compensating strengths. Don't give up too soon! |
| 23:39:43 | <sm[m]> | It takes longer than you expect. |
| 23:39:52 | × | acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 246 seconds) |
| 23:39:59 | × | ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 23:43:34 | <mikevdg> | What strengths? Either I'm waiting for a 6-minute compilation to finish, or I'm lost in a maze of monad transformers. |
| 23:44:00 | <mikevdg> | It's all very well that there are no side effects, but I'm having huge trouble even just getting code to run. |
| 23:45:02 | → | pavonia joins (~user@unaffiliated/siracusa) |
| 23:45:04 | <mikevdg> | In the same amount of time it took me to get haskell-language-server running, I had downloaded and learned the entire Smalltalk language. |
| 23:45:30 | × | darjeeling_ quits (~darjeelin@115.215.40.96) (Ping timeout: 272 seconds) |
| 23:46:43 | <mikevdg> | I'm trying to get Haskell to work with webdriver. I've seen bug reports of "Never mind. We switch to python and it works now." |
| 23:47:19 | <ij> | with nix it took me a minute |
| 23:47:26 | × | AWizzArd quits (~code@gehrels.uberspace.de) (Changing host) |
| 23:47:27 | → | AWizzArd joins (~code@unaffiliated/awizzard) |
| 23:48:50 | <mikevdg> | Never mind. It works now. Haskell is amazing. |
| 23:49:02 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 23:49:16 | <mikevdg> | It appears that chromedriver is broken. |
| 23:49:31 | × | loli quits (~loli@024-171-017-003.res.spectrum.com) (Read error: Connection reset by peer) |
| 23:50:07 | → | loli joins (~loli@024-171-017-003.res.spectrum.com) |
| 23:50:14 | <sm[m]> | mikevdg: https://www.foxhound.systems/blog/why-haskell-for-production/ is a nice recent description of some strengths. They are more apparent with bigger and longer-lasting projects |
| 23:50:50 | <sm[m]> | it's certainly no Smalltalk. (I'm a Squeaker) |
| 23:52:09 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 23:53:20 | × | sparsity quits (5eae2591@gateway/web/cgi-irc/kiwiirc.com/ip.94.174.37.145) (Quit: Connection closed) |
| 23:53:48 | × | tama00 quits (~tama@unaffiliated/tama00) (Quit: WeeChat 3.0) |
| 23:54:02 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
| 23:54:47 | × | aidecoe quits (~aidecoe@unaffiliated/aidecoe) (Remote host closed the connection) |
| 23:55:56 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 23:57:41 | × | debclair quits (~debclair@host-181-39-120-169.netlife.ec) (Quit: Leaving) |
| 23:59:16 | ← | ep1ctetus parts (b8bba2a3@ip184-187-162-163.sb.sd.cox.net) () |
| 23:59:51 | → | ep1ctetus joins (~luke@ip184-187-162-163.sb.sd.cox.net) |
All times are in UTC on 2021-01-11.