Home freenode/#haskell: Logs Calendar

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.