Home liberachat/#haskell: Logs Calendar

Logs on 2022-12-18 (liberachat/#haskell)

00:00:14 ksqsf joins (~user@134.209.106.31)
00:02:32 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
00:06:13 fizbin joins (~fizbin@user/fizbin)
00:06:15 × Topsi quits (~Topsi@dyndsl-095-033-228-128.ewe-ip-backbone.de) (Ping timeout: 255 seconds)
00:07:53 <geekosaur> you may be thinking of -fbytecode vs. -fobject-code, but someone could run ghci with -fobject-code
00:08:06 pavonia joins (~user@user/siracusa)
00:08:18 <geekosaur> and no, there is no CPP specific to ghci
00:09:10 <glguy> alexfmpe[m]: In the past when I had features that didn't work in GHCi, I added a flag to my package that would set a define and then would cpp ifdef that code that shouldn't appear in the ghci case
00:09:13 <geekosaur> sorry, -fbyte-code
00:09:58 <glguy> In my particular case it was to hide some foreign exports
00:10:03 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
00:10:21 beefbambi joins (~beefbambi@183.82.27.160)
00:10:33 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
00:14:14 paulpaul1076 joins (~textual@95-29-5-111.broadband.corbina.ru)
00:16:51 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 268 seconds)
00:21:53 × biberu quits (~biberu@user/biberu) (Read error: Connection reset by peer)
00:23:55 beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
00:27:44 biberu joins (~biberu@user/biberu)
00:31:02 × ksqsf quits (~user@134.209.106.31) (Remote host closed the connection)
00:37:50 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100)
00:43:50 <alexfmpe[m]> I see thanks. Turns out for my use-case this might not actually be necessary (though it would be sufficient). The flag idea would probably work for the "debug version" scenario
00:45:13 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
00:51:12 <DigitalKiwi> glguy: were you exporting cryptography
00:51:24 × beefbambi quits (~beefbambi@183.82.27.160) (Read error: Connection reset by peer)
00:51:42 <DigitalKiwi> naughty naughty
00:52:01 beefbambi joins (~beefbambi@183.82.27.160)
00:56:13 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:56:13 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:56:13 wroathe joins (~wroathe@user/wroathe)
00:57:06 × kenaryn quits (~aurele@89-88-44-27.abo.bbox.fr) (Quit: leaving)
01:00:34 <sm> omg finally things are getting easy ? https://gilmi.me/blog/post/2022/12/17/sqlite-easy
01:10:39 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:13:54 × j4cc3b quits (~jeffreybe@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 272 seconds)
01:14:42 × fizbin quits (~fizbin@user/fizbin) (Ping timeout: 252 seconds)
01:16:47 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:16:53 fizbin joins (~fizbin@user/fizbin)
01:24:17 ksqsf joins (~user@134.209.106.31)
01:30:50 × fizbin quits (~fizbin@user/fizbin) (Ping timeout: 252 seconds)
01:32:02 × ksqsf quits (~user@134.209.106.31) (Remote host closed the connection)
01:37:09 <glguy> Is easy easier than simple? Is it as light as lite?
01:41:06 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
01:42:48 <EvanR> diet sqlite easy simple no problem edition
01:47:54 <dsal> Who names their database "somethingdb.bin"?
01:51:49 ksqsf joins (~user@134.209.106.31)
01:55:14 <monochrom> I named my databases "something.db2" :)
02:10:44 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
02:10:53 ddellacosta joins (~ddellacos@143.244.47.75)
02:11:02 <ddellacosta> maralorn: thanks, will check it out!
02:11:45 × Inst quits (~Inst@2601:6c4:4081:54f0:8d82:4e66:2137:ab94) (Read error: Connection reset by peer)
02:12:00 × jero98772 quits (~jero98772@2800:484:1d80:d8ce:3490:26c5:1782:da8c) (Ping timeout: 265 seconds)
02:15:13 × [Leary] quits (~Leary]@user/Leary/x-0910699) (Remote host closed the connection)
02:15:52 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
02:19:46 [Leary] joins (~Leary]@user/Leary/x-0910699)
02:23:37 jero98772 joins (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff)
02:26:21 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 268 seconds)
02:28:59 × beteigeuze quits (~Thunderbi@bl14-81-220.dsl.telepac.pt) (Ping timeout: 260 seconds)
02:32:27 × xacktm quits (~xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com)
02:32:40 × andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com)
02:34:47 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Quit: So long and thanks for all the fish)
02:35:30 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
02:45:43 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) (Remote host closed the connection)
02:51:18 ksqsf joins (~user@134.209.106.31)
02:52:43 × ksqsf quits (~user@134.209.106.31) (Remote host closed the connection)
02:59:00 xacktm joins (~xacktm@user/xacktm)
03:01:04 andreas303 joins (andreas303@ip227.orange.bnc4free.com)
03:03:37 × wroathe quits (~wroathe@user/wroathe) (Quit: Lost terminal)
03:10:59 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 260 seconds)
03:11:28 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
03:11:28 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
03:11:28 wroathe joins (~wroathe@user/wroathe)
03:11:37 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
03:16:26 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 252 seconds)
03:24:27 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:24:27 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:24:27 finn_elija is now known as FinnElija
03:24:43 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100)
03:32:57 × td_ quits (~td@83.135.9.26) (Ping timeout: 268 seconds)
03:34:43 td_ joins (~td@83.135.9.47)
03:36:08 × wroathe quits (~wroathe@user/wroathe) (Quit: Lost terminal)
03:37:13 fizbin joins (~fizbin@user/fizbin)
03:45:16 ksqsf joins (~user@134.209.106.31)
03:48:38 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
03:48:40 × son0p quits (~ff@2604:3d08:5b7f:5540::417e) (Ping timeout: 260 seconds)
03:49:41 son0p joins (~ff@2604:3d08:5b7f:5540::417e)
03:50:13 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 268 seconds)
03:50:59 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
03:51:16 jargon joins (~jargon@174-22-192-24.phnx.qwest.net)
03:52:44 × jero98772 quits (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff) (Remote host closed the connection)
03:53:36 × xacktm quits (~xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com)
03:53:38 × andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com)
04:01:41 tvandinther joins (~tvandinth@101.98.118.246)
04:02:58 <tvandinther> Does anyone have tips for setting up auto-styling/formatting for source code files on save in VSCode?
04:03:22 ksqsf joins (~user@134.209.106.31)
04:04:53 brettgilio joins (~brettgili@x-irc.gq)
04:10:15 × iqubic quits (~avi@2601:601:1100:edd0:8902:307c:9a5f:dd30) (Ping timeout: 260 seconds)
04:16:18 Inst joins (~Inst@2601:6c4:4081:54f0:f11e:46df:c907:e40e)
04:16:35 <Inst> erm, when it comes to testing a nested definition, there's no way to do so, right?
04:17:00 <Inst> I was wondering if there was some template Haskell metaprogramming way to access a definition within a definition
04:17:44 <glguy> It wouldn't make sense to access it in general as it might mention variables from the parent scope
04:21:26 <Inst> there's a pragmatic need, though
04:21:33 <Inst> if you're using where clausing to hide api
04:21:42 <Inst> i suppose you could do the same with modules, but that creates annoyances
04:23:22 <EvanR> you can define a piece of API that accesses the internal state, basically OOP
04:23:27 xacktm joins (~xacktm@user/xacktm)
04:24:14 <EvanR> but it's not something you could just do against uncooperative code
04:25:20 iqubic joins (~avi@2601:601:1100:edd0:4992:623a:6d6:39c5)
04:27:19 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
04:27:56 andreas303 joins (andreas303@ip227.orange.bnc4free.com)
04:28:15 × tvandinther quits (~tvandinth@101.98.118.246) (Quit: Client closed)
04:29:09 × ddellacosta quits (~ddellacos@143.244.47.75) (Ping timeout: 260 seconds)
04:30:05 × iqubic quits (~avi@2601:601:1100:edd0:4992:623a:6d6:39c5) (Ping timeout: 260 seconds)
04:36:31 <glguy> Is there a way to get haskell-language-server to show haddocks for stuff in my local cabal.project workspace?
04:36:52 <glguy> I only seem to get type signatures
04:37:10 × pflanze quits (~pflanze@159.100.249.232) (Read error: Connection reset by peer)
04:38:28 pflanze joins (~pflanze@159.100.249.232)
04:39:18 ksqsf` joins (~user@134.209.106.31)
04:40:41 × ksqsf` quits (~user@134.209.106.31) (Remote host closed the connection)
04:40:57 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
04:43:20 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 252 seconds)
04:45:47 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
04:45:47 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
04:45:47 wroathe joins (~wroathe@user/wroathe)
05:03:32 × fr33domlover quits (~fr33domlo@towards.vision) (Quit: The Lounge - https://thelounge.chat)
05:06:15 fr33domlover joins (~fr33domlo@towards.vision)
05:15:19 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
05:15:35 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
05:19:46 iqubic joins (~avi@2601:601:1100:edd0:23b0:d602:1b3e:8cff)
05:22:10 × wroathe quits (~wroathe@user/wroathe) (Quit: Lost terminal)
05:22:16 ksqsf` joins (~user@134.209.106.31)
05:25:17 rnat joins (uid73555@id-73555.lymington.irccloud.com)
05:31:41 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
05:31:41 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
05:31:41 wroathe joins (~wroathe@user/wroathe)
05:42:45 money_ joins (~money@2607:fb91:bd3c:6437:70a6:5c6e:bbfe:7955)
05:44:00 × money_ quits (~money@2607:fb91:bd3c:6437:70a6:5c6e:bbfe:7955) (Client Quit)
05:53:22 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
06:00:58 ksqsf`` joins (~user@134.209.106.31)
06:05:14 × ksqsf` quits (~user@134.209.106.31) (Ping timeout: 272 seconds)
06:11:49 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
06:20:20 razetime joins (~quassel@49.207.230.181)
06:21:11 ksqsf`` is now known as ksqsf
06:22:45 × EvanR quits (~EvanR@user/evanr) (Remote host closed the connection)
06:23:05 EvanR joins (~EvanR@user/evanr)
06:28:30 × son0p quits (~ff@2604:3d08:5b7f:5540::417e) (Ping timeout: 260 seconds)
06:31:07 Wolfram-Sigma joins (~Wolfram-S@216-131-109-245.prg.as62651.net)
06:46:24 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
06:54:56 × wroathe quits (~wroathe@user/wroathe) (Quit: Lost terminal)
07:03:34 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
07:09:51 × dsrt^ quits (~dsrt@76.145.185.103) (Remote host closed the connection)
07:10:30 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Ping timeout: 260 seconds)
07:10:38 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 268 seconds)
07:12:44 ksqsf joins (~user@134.209.106.31)
07:13:59 × ksqsf quits (~user@134.209.106.31) (Remote host closed the connection)
07:21:09 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
07:26:38 ksqsf joins (~user@134.209.106.31)
07:28:15 × ksqsf quits (~user@134.209.106.31) (Remote host closed the connection)
07:28:40 ksqsf joins (~user@134.209.106.31)
07:30:34 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 260 seconds)
07:34:35 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:b575:bbf6:df74:2100) (Remote host closed the connection)
07:36:26 × beefbambi quits (~beefbambi@183.82.27.160) (Ping timeout: 272 seconds)
07:37:23 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
07:39:41 freeside joins (~mengwong@213.86.11.74)
07:42:42 merijn joins (~merijn@86.86.29.250)
07:47:05 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
07:47:37 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
07:47:54 beefbambi joins (~beefbambi@183.82.204.70)
07:49:58 × beefbambi quits (~beefbambi@183.82.204.70) (Read error: Connection reset by peer)
07:50:32 beefbambi joins (~beefbambi@183.82.204.70)
07:50:53 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:51:23 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
07:58:56 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
08:03:56 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 256 seconds)
08:04:19 geekosaur joins (~geekosaur@xmonad/geekosaur)
08:04:37 takuan joins (~takuan@178-116-218-225.access.telenet.be)
08:08:36 × freeside quits (~mengwong@213.86.11.74) (Ping timeout: 268 seconds)
08:14:46 × rnat quits (uid73555@id-73555.lymington.irccloud.com) (Quit: Connection closed for inactivity)
08:17:14 × merijn quits (~merijn@86.86.29.250) (Ping timeout: 268 seconds)
08:17:49 Tuplanolla joins (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi)
08:26:25 × califax quits (~califax@user/califx) (Remote host closed the connection)
08:27:59 califax joins (~califax@user/califx)
08:35:05 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
08:35:33 trev joins (~trev@user/trev)
08:36:25 johnw joins (~johnw@2600:1700:cf00:db0:6524:1c2a:8eda:bee4)
08:39:46 son0p joins (~ff@2604:3d08:5b7f:5540::417e)
08:40:35 jakalx parts (~jakalx@base.jakalx.net) ()
08:40:55 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 260 seconds)
08:49:55 × beefbambi quits (~beefbambi@183.82.204.70) (Read error: Connection reset by peer)
08:50:42 beefbambi joins (~beefbambi@183.82.204.70)
08:54:15 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
09:00:05 × ted[m] quits (~tedmatrix@2001:470:69fc:105::2:bf60) (Quit: You have been kicked for being idle)
09:01:02 × beefbambi quits (~beefbambi@183.82.204.70) (Read error: Connection reset by peer)
09:06:13 beefbambi joins (~beefbambi@183.82.204.70)
09:09:02 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 268 seconds)
09:24:19 gmg joins (~user@user/gehmehgeh)
09:25:29 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 260 seconds)
09:28:24 × beefbambi quits (~beefbambi@183.82.204.70) (Ping timeout: 260 seconds)
09:28:49 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
09:36:37 jakalx joins (~jakalx@base.jakalx.net)
09:41:00 danza joins (~francesco@4.red-79-153-154.dynamicip.rima-tde.net)
09:44:06 × xacktm quits (~xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com)
09:47:05 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
09:47:18 × andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Ping timeout: 252 seconds)
09:51:31 ksqsf joins (~user@134.209.106.31)
09:53:29 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 255 seconds)
09:54:42 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
09:54:59 beefbambi joins (~beefbambi@183.82.204.70)
09:58:22 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
10:03:04 × beefbambi quits (~beefbambi@183.82.204.70) (Ping timeout: 252 seconds)
10:03:39 beefbambi joins (~beefbambi@183.82.204.70)
10:22:42 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
10:23:06 kenaryn joins (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr)
10:24:17 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 268 seconds)
10:24:31 × danza quits (~francesco@4.red-79-153-154.dynamicip.rima-tde.net) (Ping timeout: 265 seconds)
10:25:05 × Wolfram-Sigma quits (~Wolfram-S@216-131-109-245.prg.as62651.net) (Quit: Client closed)
10:25:26 Lord_of_Life_ is now known as Lord_of_Life
10:35:36 geekosaur joins (~geekosaur@xmonad/geekosaur)
10:48:05 allbery_b joins (~geekosaur@xmonad/geekosaur)
10:48:05 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
10:48:08 allbery_b is now known as geekosaur
10:50:39 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
10:50:42 WarzoneCommand is now known as Noinia
10:53:51 × gawen_ quits (~gawen@user/gawen) (Quit: cya)
10:54:31 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
10:55:06 × Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 268 seconds)
10:56:33 xacktm joins (~xacktm@user/xacktm)
10:58:25 andreas303 joins (andreas303@ip227.orange.bnc4free.com)
10:59:00 gawen joins (~gawen@user/gawen)
10:59:06 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
11:02:56 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
11:04:05 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
11:04:37 × kenaryn quits (~aurele@cre71-h03-89-88-44-27.dsl.sta.abo.bbox.fr) (Quit: leaving)
11:06:59 × Me-me quits (~Me-me@user/me-me) (Quit: Going offline, see ya! (www.adiirc.com))
11:10:15 × kritzefitz quits (~kritzefit@debian/kritzefitz) (Remote host closed the connection)
11:13:40 × beefbambi quits (~beefbambi@183.82.204.70) (Read error: Connection reset by peer)
11:13:53 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
11:14:30 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
11:14:41 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
11:14:45 crazazy joins (~user@130.89.171.62)
11:15:16 Kaiepi joins (~Kaiepi@108.175.84.104)
11:15:27 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
11:15:45 beefbambi joins (~beefbambi@183.82.204.70)
11:17:56 × beefbambi quits (~beefbambi@183.82.204.70) (Read error: Connection reset by peer)
11:18:21 beefbambi joins (~beefbambi@183.82.204.70)
11:21:14 jakalx parts (~jakalx@base.jakalx.net) ()
11:21:40 jakalx joins (~jakalx@base.jakalx.net)
11:22:29 × beefbambi quits (~beefbambi@183.82.204.70) (Read error: Connection reset by peer)
11:23:19 × ezzieyguywuf quits (~Unknown@user/ezzieyguywuf) (Ping timeout: 260 seconds)
11:24:07 ezzieyguywuf joins (~Unknown@user/ezzieyguywuf)
11:28:52 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
11:30:51 × haskl quits (~haskl@user/haskl) (Read error: Connection reset by peer)
11:30:57 kenaryn joins (~aurele@89-88-44-27.abo.bbox.fr)
11:33:03 haskl joins (~haskl@user/haskl)
11:38:23 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
11:39:37 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
11:39:55 oopzzozzo joins (~Thunderbi@user/oopzzozzo)
11:42:47 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 260 seconds)
11:44:12 beefbambi joins (~beefbambi@183.82.204.70)
11:47:08 kritzefitz joins (~kritzefit@debian/kritzefitz)
11:47:58 beteigeuze joins (~Thunderbi@bl14-81-220.dsl.telepac.pt)
11:52:37 × kritzefitz quits (~kritzefit@debian/kritzefitz) (Remote host closed the connection)
11:59:32 kritzefitz joins (~kritzefit@debian/kritzefitz)
12:10:19 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
12:13:58 × [Leary] quits (~Leary]@user/Leary/x-0910699) (Remote host closed the connection)
12:19:11 × oopzzozzo quits (~Thunderbi@user/oopzzozzo) (Ping timeout: 260 seconds)
12:25:04 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
12:26:30 × beefbambi quits (~beefbambi@183.82.204.70) (Read error: Connection reset by peer)
12:26:40 beefbambi joins (~beefbambi@183.82.204.70)
12:29:05 [Leary] joins (~Leary]@user/Leary/x-0910699)
12:30:04 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds)
12:30:48 gurkenglas joins (~gurkengla@p548ac72e.dip0.t-ipconnect.de)
12:30:53 <Jade[m]> @pl f s = g s >> h
12:30:53 <lambdabot> f = (>> h) . g
12:38:10 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 252 seconds)
12:38:32 brandonh joins (brandonh@gateway/vpn/protonvpn/brandonh)
12:46:03 <sayola> whats ^>= in cabal deps?
12:46:48 × brandonh quits (brandonh@gateway/vpn/protonvpn/brandonh) (Quit: brandonh)
12:47:31 × hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
12:47:50 hrberg joins (~quassel@171.79-160-161.customer.lyse.net)
12:47:52 × jinsun quits (~jinsun@user/jinsun) (Quit: No Ping reply in 180 seconds.)
12:48:19 <Jade[m]> not bigger than or equal to?
12:48:20 <Jade[m]> not sure
12:53:14 <geekosaur> >= but obeying PVP bounds
12:54:05 jinsun joins (~jinsun@user/jinsun)
12:54:46 <geekosaur> so there's an implicit <= based on the appropriate PVP bound for the specified version
12:54:48 <sayola> so, thats the last two numbers of pvp then?
12:54:56 <geekosaur> usually
12:55:02 <sayola> which can change
12:55:05 <sayola> ok
12:55:38 × xff0x quits (~xff0x@ai071162.d.east.v6connect.net) (Ping timeout: 272 seconds)
12:59:40 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 265 seconds)
12:59:41 × beefbambi quits (~beefbambi@183.82.204.70) (Read error: Connection reset by peer)
13:00:32 beefbambi joins (~beefbambi@183.82.204.70)
13:01:00 instantaphex joins (~jb@c-73-171-252-84.hsd1.fl.comcast.net)
13:01:52 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 252 seconds)
13:02:56 acidjnk joins (~acidjnk@p200300d6e7137a3900a43338f23333fb.dip0.t-ipconnect.de)
13:03:36 Topsi joins (~Topsi@dialin-80-228-141-093.ewe-ip-backbone.de)
13:05:46 × instantaphex quits (~jb@c-73-171-252-84.hsd1.fl.comcast.net) (Ping timeout: 272 seconds)
13:07:19 v0id_ptr joins (~adrift@user/ptr-frac7al/x-0038398)
13:09:04 Sciencentistguy joins (~sciencent@hacksoc/ordinary-member)
13:09:27 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
13:14:57 × kritzefitz quits (~kritzefit@debian/kritzefitz) (Remote host closed the connection)
13:16:56 × v0id_ptr quits (~adrift@user/ptr-frac7al/x-0038398) (Ping timeout: 268 seconds)
13:17:21 jakalx joins (~jakalx@base.jakalx.net)
13:18:28 xff0x joins (~xff0x@ai071162.d.east.v6connect.net)
13:18:51 kritzefitz joins (~kritzefit@debian/kritzefitz)
13:22:23 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
13:22:48 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
13:23:30 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Ping timeout: 272 seconds)
13:30:25 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
13:32:48 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Ping timeout: 252 seconds)
13:34:20 <Inst> curious
13:34:25 × kenaryn quits (~aurele@89-88-44-27.abo.bbox.fr) (Quit: leaving)
13:34:37 <Inst> would it be a good or a bad thing if OverloadedTypeclasses were a thing?
13:35:26 × beefbambi quits (~beefbambi@183.82.204.70) (Ping timeout: 268 seconds)
13:35:34 <geekosaur> meaning what?
13:36:13 Sciencentistguy joins (~sciencent@hacksoc/ordinary-member)
13:36:15 <Inst> say, I don't like Num, I want to inject a new num in without dropping the default prelude, etc
13:36:41 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
13:36:55 <trev> isn't that called "specialization"?
13:37:55 <Inst> just playing around with Julia a very little bit, and I'm thinking about limitations of Num, etc
13:37:56 <geekosaur> no, specialization is pregenerating code for a particular type, and applies to polymorphic code not to typeclasses
13:38:32 <Inst> is there something fundamentally preventing the overloading of typeclasses?
13:38:48 <Inst> (+) :: Num a => a -> a -> a
13:38:54 <geekosaur> as to your proposed overloading semantics, remember that values in Haskell are not objects and don't have vtables. so how does code in another module or library know about your overload?
13:39:25 <Inst> does code in another module or library need to know about my overload?
13:39:47 <geekosaur> right now they know because instances are global symbols and it can simply refer to $fNumType
13:39:59 <geekosaur> if you want that code to actually use it, yes
13:40:20 <Inst> How about, no?
13:40:37 <Inst> The idea is that I can get safe transition toward new Num typeclasses etc
13:40:53 <geekosaur> then whaqt's the point of the overload? and what happens when code using it encounters code that doesn't?
13:41:29 <Inst> the code that doesn't shouldn't interact with the code that does overload
13:41:38 <Inst> or if it does, it can't see the overloaded typeclasses
13:41:43 <Inst> unless the pragma is on in the module
13:41:55 <geekosaur> also I suspect you'd be fairly upset if something like `sum` doesn't use your overloaded (+)
13:42:22 × razetime quits (~quassel@49.207.230.181) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
13:42:38 <Inst> that's fine, what I'm more thinking of is figuring out how to syntactically enable typesafe (and possibly dependently typed) matrix multiplication with *
13:43:12 <Inst> since, well, by default, a matrix multiplication is not going to follow a -> a -> a, no?
13:43:34 <Inst> a -> b -> c
13:43:48 <geekosaur> that's going to require rather more than just overloading Num
13:44:06 <Inst> yeah, tbh, it's a complex matter
13:44:39 × phma quits (phma@2001:5b0:211f:d528:ab67:ad29:6dde:4757) (Read error: Connection reset by peer)
13:44:44 <geekosaur> and yes, aiui it would have to be dependently typed, or at minimum size information at type level
13:44:55 <hpc> if you don't use Num, there's some other fun alternatives you might consider
13:44:59 <geekosaur> which in Haskell is a PITA
13:45:07 <hpc> for example, matrix multiplication is function composition of linear functions
13:45:22 tok joins (~user@mobile-access-d98cd1-96.dhcp.inet.fi)
13:45:30 phma joins (~phma@host-67-44-208-107.hnremote.net)
13:45:30 <hpc> and if you use data M w h, you can even get a type that looks like (.)
13:45:40 <Inst> and overloading a typeclass is still a bit of a headache either way; I don't think I've fully thought of the implications of such
13:45:53 <hpc> M a b -> M b c -> M a c
13:46:31 <Inst> I just want the ability to share the basic numeric operator symbols with a replacement, eventually a replacement that gets backed by GHC committees and phased in
13:48:28 <geekosaur> this would require more than just overloading Num; it requires splitting Num up
13:48:53 <Inst> well, yeah, that's what most plans for replacing Num look like, no?
13:49:00 <geekosaur> I mean Num itself
13:49:00 <Inst> get it to properly map a ring or something
13:49:10 <sayola> at the very least reimplementing Num that is then based on a more generic class for these ops
13:49:20 <geekosaur> (+) and (*) can no longer be part of the same typeclass
13:49:28 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 272 seconds)
13:49:43 <Inst> which means dumping various Num methods elsewhere
13:50:11 <Inst> come to think of it, why wasn't this considered during FAM transition?
13:50:56 <sayola> i think its not that important, since you can still make more operators that are just one or two symbols longer, that do what you want.
13:51:00 razetime joins (~quassel@49.207.230.181)
13:51:06 <Inst> operators are a mess, though
13:51:16 <Inst> newbies get pissed off at all the $, <$>, >>=, etc
13:51:31 <hpc> sayola: like (++) and (**), brilliant! :D
13:51:47 oopzzozzo joins (~Thunderbi@user/oopzzozzo)
13:51:55 <Inst> which is the real argument for overloaded typeclasses, no? save the precious operator namespace
13:53:13 <geekosaur[m]> I think newbies have bigger problems than you're suggesting with the various operators
13:53:27 <sayola> tbh talking about new user experience, its probably better if Num and the ops stay as limited. its fairly complicated as is. generalizing makes it only worse.
13:53:32 <geekosaur[m]> Specifically that it's not what they already know. They have to learn new stuff
13:54:01 <Inst> I'm still not sure whether user-defined operators were a mistake
13:54:41 <hpc> Inst: having the option to make my own is worth it imo
13:54:41 <sayola> code would be a lot more verbose without them. i think that would be worse for understanding code.
13:54:51 <Inst> shouldn't overloaded typeclasses have been discussed before?
13:55:04 <Inst> tbh I sort of see operators as part of Haskell style
13:55:06 <hpc> plenty of other languages have made much pettier features that are dependent on discipline for readability
13:55:13 × acidjnk quits (~acidjnk@p200300d6e7137a3900a43338f23333fb.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
13:55:22 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
13:55:23 <Inst> the language would be more lisp-like, not necessarily a good thing
13:55:32 <Inst> without all the operators hanging around
13:55:54 <hpc> i had a lisp class in college that broke the 9 key on my keyboard, never doing that again
13:58:48 unit73e joins (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36)
13:59:25 × son0p quits (~ff@2604:3d08:5b7f:5540::417e) (Ping timeout: 260 seconds)
13:59:26 kenaryn joins (~aurele@89-88-44-27.abo.bbox.fr)
14:02:04 <Inst> ahhh, is this the problem? I'm reading on Quora
14:02:10 <Inst> or rather stack exchange
14:02:24 <albet70> I have a cabal project, but I'd like to run two different files as Main.hs, how I set 'main-is' in my.cabal?
14:02:26 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
14:02:45 <Inst> C++-style overloading results in exponential time or undecidable type inference :(
14:03:14 __monty__ joins (~toonn@user/toonn)
14:03:21 <hpc> albet70: you can define multiple executables
14:03:24 <geekosaur> albet70, that usually means you want two executable sections, each with its own main-is:
14:04:08 × xacktm quits (~xacktm@user/xacktm) (Ping timeout: 255 seconds)
14:05:23 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
14:05:48 × andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Ping timeout: 252 seconds)
14:06:13 <albet70> hpc, geekosaur, but I run it with 'cabal v2-run my-project' which there is my-project/my-project.cabal, two sections in one cabal file, how I call it?
14:07:27 <geekosaur> generally you just name the exe. if it's not enough, myproject:exe:sectionname
14:09:53 brandonh joins (brandonh@gateway/vpn/protonvpn/brandonh)
14:10:25 <unit73e> cabal is often better understood by example imo
14:10:44 <unit73e> I don't have a multi module multi exe lying around though
14:12:41 <unit73e> wait, I actually do: https://gitlab.com/unit73e/sdl2-examples
14:12:47 <unit73e> forgot I was working on this
14:12:49 <unit73e> a long time ago
14:13:09 <unit73e> albet70, in that example you would run 'cabal run <executable>'
14:13:37 <albet70> unit73e , you're right, I just tested it
14:14:44 × brandonh quits (brandonh@gateway/vpn/protonvpn/brandonh) (Client Quit)
14:17:47 brandonh joins (brandonh@gateway/vpn/protonvpn/brandonh)
14:19:21 × brandonh quits (brandonh@gateway/vpn/protonvpn/brandonh) (Client Quit)
14:22:51 × unit73e quits (~emanuel@2001:818:e8dd:7c00:656:e5ff:fe72:9d36) (Ping timeout: 260 seconds)
14:27:45 × jinsun quits (~jinsun@user/jinsun) (Quit: No Ping reply in 180 seconds.)
14:28:47 freeside joins (~mengwong@213.86.11.74)
14:29:42 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
14:33:21 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
14:33:29 andreas303 joins (andreas303@ip227.orange.bnc4free.com)
14:34:02 jinsun joins (~jinsun@user/jinsun)
14:36:04 <Inst> nice
14:36:05 <Inst> https://www.reddit.com/r/haskell/comments/znzat4/type_class_subsets/
14:41:23 pagnol joins (~user@213-205-209-87.ftth.glasoperator.nl)
14:42:49 xacktm joins (~xacktm@user/xacktm)
14:42:52 × burakcank quits (burakcank@has.arrived.and.is.ready-to.party) (Ping timeout: 256 seconds)
14:47:08 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 260 seconds)
14:57:14 × tok quits (~user@mobile-access-d98cd1-96.dhcp.inet.fi) (Ping timeout: 272 seconds)
14:57:57 tok joins (~user@mobile-access-d98cd1-96.dhcp.inet.fi)
14:57:58 acidjnk joins (~acidjnk@p200300d6e7137a39551177756a27c5e3.dip0.t-ipconnect.de)
14:58:46 <pagnol> why do I get a syntax error if when I try to import Debug.Trace?
14:59:43 <geekosaur[m]> Where did you put the import?
15:01:29 × oopzzozzo quits (~Thunderbi@user/oopzzozzo) (Ping timeout: 260 seconds)
15:02:04 <pagnol> among the other imports
15:02:25 <pagnol> above the others and below the others with the same outcome
15:02:50 <pagnol> weird, now it compiles
15:04:13 × crazazy quits (~user@130.89.171.62) (Remote host closed the connection)
15:04:26 crazazy joins (~user@130.89.171.62)
15:08:14 × __xor quits (~xor@74.215.182.83) (Read error: Connection reset by peer)
15:09:02 waleee joins (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340)
15:09:32 burakcank joins (burakcank@has.arrived.and.is.ready-to.party)
15:17:00 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Ping timeout: 260 seconds)
15:17:38 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
15:20:30 × andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com)
15:21:36 jero98772 joins (~jero98772@2800:484:1d80:d8ce:efcc:cbb3:7f2a:6dff)
15:21:49 × xacktm quits (~xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com)
15:23:04 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
15:25:35 × Inst quits (~Inst@2601:6c4:4081:54f0:f11e:46df:c907:e40e) (Ping timeout: 255 seconds)
15:25:53 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
15:31:22 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
15:35:16 __xor joins (~xor@74.215.182.83)
15:41:55 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
15:44:04 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 260 seconds)
15:44:19 × Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 268 seconds)
15:46:10 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 260 seconds)
15:46:39 × malte quits (~malte@mal.tc) (Remote host closed the connection)
15:47:41 malte joins (~malte@mal.tc)
15:57:19 × jinsun quits (~jinsun@user/jinsun) (Ping timeout: 252 seconds)
15:57:36 jinsun joins (~jinsun@user/jinsun)
15:57:56 Kaiepi joins (~Kaiepi@108.175.84.104)
15:59:50 × Red_Swan quits (~jared@174-23-134-43.slkc.qwest.net) (Ping timeout: 252 seconds)
16:00:55 rnat joins (uid73555@id-73555.lymington.irccloud.com)
16:01:36 × malte quits (~malte@mal.tc) (Remote host closed the connection)
16:02:31 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
16:02:40 malte joins (~malte@mal.tc)
16:07:32 × waleee quits (~waleee@2001:9b0:213:7200:cc36:a556:b1e8:b340) (Ping timeout: 252 seconds)
16:07:35 son0p joins (~ff@2604:3d08:5b7f:5540:98a9:2169:15a1:4c7f)
16:16:32 sayola1 joins (~sayola@dslb-088-064-186-217.088.064.pools.vodafone-ip.de)
16:18:56 × sayola quits (~sayola@dslb-088-064-186-217.088.064.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
16:24:08 ddellacosta joins (~ddellacos@143.244.47.88)
16:27:49 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
16:27:49 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
16:27:49 wroathe joins (~wroathe@user/wroathe)
16:28:38 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
16:34:16 andreas303 joins (andreas303@ip227.orange.bnc4free.com)
16:37:05 xacktm joins (~xacktm@user/xacktm)
16:37:16 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
16:42:56 fserucas joins (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7)
16:45:22 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
16:45:40 × son0p quits (~ff@2604:3d08:5b7f:5540:98a9:2169:15a1:4c7f) (Ping timeout: 252 seconds)
16:47:35 × acidjnk quits (~acidjnk@p200300d6e7137a39551177756a27c5e3.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
16:48:04 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 272 seconds)
16:49:47 aeroplane joins (~user@user/aeroplane)
16:58:54 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Quit: No Ping reply in 180 seconds.)
17:00:30 chexum joins (~quassel@gateway/tor-sasl/chexum)
17:01:22 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 272 seconds)
17:02:20 × Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 255 seconds)
17:03:13 takuan joins (~takuan@178-116-218-225.access.telenet.be)
17:05:52 × razetime quits (~quassel@49.207.230.181) (Remote host closed the connection)
17:09:46 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
17:19:33 × wroathe quits (~wroathe@user/wroathe) (Quit: Lost terminal)
17:33:17 morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
17:34:15 nek0 joins (~nek0@2a01:4f8:222:2b41::12)
17:34:26 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
17:36:40 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
17:37:27 × ddellacosta quits (~ddellacos@143.244.47.88) (Ping timeout: 260 seconds)
17:37:47 × freeside quits (~mengwong@213.86.11.74) (Ping timeout: 256 seconds)
17:40:45 yuribarros joins (~yuribarro@2804:14c:65e4:865c::1000)
17:45:43 × morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
17:47:20 × pie__ quits (~pie_bnc@user/pie/x-2818909) ()
17:47:47 pie_ joins (~pie_bnc@user/pie/x-2818909)
17:48:34 × pie_ quits (~pie_bnc@user/pie/x-2818909) (Client Quit)
17:51:55 econo joins (uid147250@user/econo)
17:55:06 pie_ joins (~pie_bnc@user/pie/x-2818909)
17:56:08 Kaiepi joins (~Kaiepi@108.175.84.104)
17:56:52 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:57:29 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
17:57:52 ddellacosta joins (~ddellacos@86.106.143.155)
18:01:08 tok parts (~user@mobile-access-d98cd1-96.dhcp.inet.fi) (ERC 5.4 (IRC client for GNU Emacs 28.2))
18:01:53 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:02:19 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
18:02:58 Everything joins (~Everythin@37.115.210.35)
18:13:58 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:15:02 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
18:15:41 × califax quits (~califax@user/califx) (Remote host closed the connection)
18:16:47 califax joins (~califax@user/califx)
18:23:18 × andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com)
18:23:18 × xacktm quits (~xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com)
18:26:07 dfip^ joins (~dfip@76.145.185.103)
18:32:07 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:34:57 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
18:37:42 × AkechiShiro quits (~licht@user/akechishiro) (Quit: WeeChat 3.7.1)
18:39:34 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Ping timeout: 252 seconds)
18:39:43 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
18:44:58 wootehfoot joins (~wootehfoo@user/wootehfoot)
18:47:22 × phma quits (~phma@host-67-44-208-107.hnremote.net) (Read error: Connection reset by peer)
18:48:17 phma joins (phma@2001:5b0:212a:e338:ae0d:e356:1f10:5820)
18:55:48 son0p joins (~ff@2604:3d08:5b7f:5540::417e)
18:58:00 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
19:03:23 × ddellacosta quits (~ddellacos@86.106.143.155) (Ping timeout: 255 seconds)
19:05:12 ddellacosta joins (~ddellacos@143.244.47.88)
19:06:10 crazazy` joins (~user@130.89.173.127)
19:07:37 × Luj3 quits (~Luj@2a01:e0a:5f9:9681:5880:c9ff:fe9f:3dfb) (Ping timeout: 252 seconds)
19:08:26 × crazazy quits (~user@130.89.171.62) (Ping timeout: 268 seconds)
19:09:48 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:10:19 × son0p quits (~ff@2604:3d08:5b7f:5540::417e) (Ping timeout: 260 seconds)
19:10:49 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
19:10:58 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
19:11:31 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (Ping timeout: 268 seconds)
19:15:02 jakalx parts (~jakalx@base.jakalx.net) ()
19:16:54 jakalx joins (~jakalx@base.jakalx.net)
19:20:50 crazazy`` joins (~user@130.89.171.62)
19:22:44 × crazazy` quits (~user@130.89.173.127) (Ping timeout: 255 seconds)
19:25:19 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:29:28 × aeroplane quits (~user@user/aeroplane) (Ping timeout: 260 seconds)
19:30:06 × iqubic quits (~avi@2601:601:1100:edd0:23b0:d602:1b3e:8cff) (Remote host closed the connection)
19:32:02 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
19:32:29 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 268 seconds)
19:39:36 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:40:32 Me-me joins (~Me-me@146.102.215.218.dyn.iprimus.net.au)
19:48:12 Sgeo joins (~Sgeo@user/sgeo)
19:49:45 × pagnol quits (~user@213-205-209-87.ftth.glasoperator.nl) (Ping timeout: 255 seconds)
19:55:29 buzzzzie joins (~buzzzzie@ip-217-103-153-253.ip.prioritytelecom.net)
19:58:21 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:00:34 morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
20:01:47 wroathe joins (~wroathe@50.205.197.50)
20:01:47 × wroathe quits (~wroathe@50.205.197.50) (Changing host)
20:01:47 wroathe joins (~wroathe@user/wroathe)
20:04:18 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
20:04:33 × buzzzzie quits (~buzzzzie@ip-217-103-153-253.ip.prioritytelecom.net) (Quit: Client closed)
20:07:42 × fizbin quits (~fizbin@user/fizbin) (Ping timeout: 252 seconds)
20:10:56 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:16:08 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
20:16:25 beefbambi joins (~beefbambi@183.82.30.144)
20:19:29 × rnat quits (uid73555@id-73555.lymington.irccloud.com) (Quit: Connection closed for inactivity)
20:22:15 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:24:16 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
20:26:33 <sayola1> what type do you guys use for a Writer monad, typically?
20:28:33 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
20:32:20 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
20:33:48 <EvanR> other than Writer?
20:35:32 <monochrom> Perhaps you mean in "Writer Foo" what we use for Foo.
20:35:54 <sayola1> yep. i mean what type that is a monoid for w in WriterT w m a
20:36:03 <monochrom> When I'm lazy and it's unimportant I use a list. When it gets more serious I use Endo.
20:36:35 <monochrom> Or any data type that has efficient append-one-element.
20:37:17 <monochrom> Data.Sequence may be OK.
20:37:22 <sayola1> yeah was wondering what would fit and is simple.
20:37:28 <EvanR> it depends what you're trying to do, monochrom is answering what to use for logging it sounds like
20:37:37 <EvanR> which Writer sucks at
20:37:46 <sayola1> it sucks?
20:37:51 andreas303 joins (andreas303@ip227.orange.bnc4free.com)
20:38:05 <c_wraith> sort of, yeah. a good logger gets things onto disk as fast as possible
20:38:26 <c_wraith> Writer accumulates things and completes (or fails) the whole computation before logging anything
20:38:27 <sayola1> i just thought about using RWST for a thing and thought i should probably log anything too, without knowing yet whether and how much i need to
20:38:42 <EvanR> I discovered the XY problem! xD
20:38:48 <int-e> Endo [a] is convenient enough for me. (You can use dlist if you don't like the `tell (Endo (x:))` syntax.)
20:39:04 xacktm joins (~xacktm@user/xacktm)
20:39:16 <c_wraith> RST would be a lot more useful than RWST is
20:39:36 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:39:59 <int-e> Ah. Picking between Writer / RWST... well, it depends on whether I think I'll need the reader or state components.
20:40:32 <int-e> I do prefer RWST over stacking more than one of Reader, Writer, or State.
20:41:00 <int-e> (err, ReaderT, WriterT, or StateT)
20:42:24 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 272 seconds)
20:42:28 <sayola1> i only learned yesterday about Endo as a type, ironically.
20:43:52 × trev quits (~trev@user/trev) (Remote host closed the connection)
20:43:54 gabiruh_ is now known as gabiruh
20:45:18 wroathe joins (~wroathe@50.205.197.50)
20:45:18 × wroathe quits (~wroathe@50.205.197.50) (Changing host)
20:45:18 wroathe joins (~wroathe@user/wroathe)
20:47:24 <int-e> c_wraith: FWIW, I've used the W component quite a bit in a couple of assembly-like DSLs; in that design, the reader is usually unused, the state tracks labels, and the writer collects generated code. And there's an mfix somewhere to tie the labels into a know so that they can be used before the label's declaration.
20:47:45 <int-e> know -> knot
20:49:02 <int-e> and EDSL, more specifically
20:50:48 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 268 seconds)
20:52:20 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
20:52:59 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
20:53:42 <EvanR> yeah [(Int,String)] merging monoid
20:54:47 acarrico joins (~acarrico@dhcp-68-142-49-34.greenmountainaccess.net)
20:54:50 × morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
20:55:19 × dfip^ quits (~dfip@76.145.185.103) (Remote host closed the connection)
20:55:35 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
20:56:17 morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
20:57:38 × beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
20:58:12 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
21:00:09 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
21:00:26 beefbambi joins (~beefbambi@183.82.30.144)
21:01:59 × lottaquestions quits (~nick@2607:fa49:503e:7100:83b1:b98a:c83f:3b94) (Remote host closed the connection)
21:02:26 lottaquestions joins (~nick@2607:fa49:503e:7100:3634:992e:e32f:8e6c)
21:03:09 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
21:03:26 × morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
21:03:53 × beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
21:04:37 beefbambi joins (~beefbambi@183.82.30.144)
21:06:32 dsrt^ joins (~dsrt@76.145.185.103)
21:06:33 × beefbambi quits (~beefbambi@183.82.30.144) (Read error: Connection reset by peer)
21:06:53 beefbambi joins (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377)
21:09:41 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:11:31 Inst joins (~Inst@2601:6c4:4081:54f0:38bc:71f6:776d:9675)
21:16:49 × beefbambi quits (~beefbambi@2401:4900:230d:f57c:538c:d7cc:50c0:e377) (Read error: Connection reset by peer)
21:17:13 beefbambi joins (~beefbambi@183.82.30.144)
21:18:03 acidjnk joins (~acidjnk@p200300d6e7137a394052686d931fefc2.dip0.t-ipconnect.de)
21:18:50 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
21:19:58 son0p joins (~ff@2604:3d08:5b7f:5540::417e)
21:23:14 × Everything quits (~Everythin@37.115.210.35) (Quit: leaving)
21:23:22 <sayola1> hmh i compared list vs endo in a simple test in performance and endo was not faster.
21:26:08 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
21:26:12 morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
21:30:13 Luj3 joins (~Luj@2a01:e0a:5f9:9681:3ebd:6349:a3e:563d)
21:31:50 ardell joins (~ardell@user/ardell)
21:32:09 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:38:26 × ardell quits (~ardell@user/ardell) (Quit: Konversation terminated!)
21:39:46 <EvanR> for repeatedly appending to the end of a list and finally processing from the beginning, I haven't been able to get an argument for why Endo (or diff list) would be much better (at all better?)
21:40:19 <EvanR> diff list seems to win if you are combining strings in random ways like document formatting
21:41:25 × Patternmaster quits (~georg@user/Patternmaster) (Ping timeout: 260 seconds)
21:43:52 × bjobjo quits (~bjobjo@user/bjobjo) (Quit: leaving)
21:43:53 <EvanR> cons cons cons finally reverse, vs ([x] ++) . ([x] ++) . ([x] ++) and finally apply []. Both build up N somethings until you're ready to consume the stream
21:44:23 <sayola1> i fail to reason how ghc optimizes things. imo Endo would be faster, but ghc does things and then a list is just good enough.
21:44:40 <EvanR> why would Endo be faster?
21:46:09 <sayola1> endo isnt appending like ++ to an end, but maintains an incomplete list ending to which to append in O(1) afaik.
21:46:19 <EvanR> oh definitely don't do xs ++ [x]
21:46:53 fizbin joins (~fizbin@user/fizbin)
21:47:21 <EvanR> yeah f . ([x] ++) is O(1). But converting the chain of . into a normal list is not
21:49:32 <geekosaur> but if it can avoid repeatedly re-traversing then it's O(n) instead of O(n*m) where m is the number of segments
21:49:47 <geekosaur> sadly I'n to tired to figure if it actually does that
21:49:53 <geekosaur> *I'm
21:49:55 <EvanR> yes xs ++ [x] is extra bad
21:50:08 × johnw quits (~johnw@2600:1700:cf00:db0:6524:1c2a:8eda:bee4) (Quit: ZNC - http://znc.in)
21:50:12 <EvanR> but O(n) results in a tie with "just reverse a backward list in the end"
21:50:28 <sayola1> solving the chain is optimized by ghc it seems
21:51:16 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
21:51:16 <EvanR> stories we tell ourselves xD
21:53:19 × morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
21:54:13 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
21:54:26 <sayola1> i suck at testing, but thats what worked for me yesterday. i compared `f . (x:)` append vs front add and reverse.
21:55:21 <EvanR> sayola1, I support your first observation. I've compared just cons to a backward list and reverse at the end, vs endo list builder (for this specific purpose only, not stuff like blaze), and the dumb backward list was faster
21:57:06 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
21:57:40 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Quit: Lost terminal)
21:57:53 morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
21:59:03 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
22:00:40 <sayola1> welp
22:01:59 j4cc3b joins (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net)
22:03:15 × morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
22:06:15 morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
22:06:43 <j4cc3b> I have been using advent of code to learn haskell. I am hard stuck on Day 7. I have parsed the input into a list of different options, but do not know of a haskell way to proceed.
22:07:17 <j4cc3b> In another language, i would make a loop and keep the complete path string in a local variable to the loop that i could adjust when the dir is changed, or files are listed
22:07:42 <j4cc3b> any pointers or concepts I should look into?
22:08:07 <j4cc3b> my (limited) intuition tells me I should make some sort of function that I can fold over my list of parsed inputs
22:08:33 <j4cc3b> but i dont know how to do that with stateful things, like the current path name and size of the directories
22:09:11 <EvanR> I just made a Map of path to contents
22:09:25 × goober quits (~goober@90-231-13-185-no3430.tbcn.telia.com) (Remote host closed the connection)
22:09:48 <EvanR> you could also iteratively build a filesystem tree procedurally using a zipper, if you wanna get fancy
22:09:52 <j4cc3b> I haven't used map yet in haskell. How did you build a map out of the parsed inputs? just a self made recursive function?
22:10:08 <sayola1> i used a recursive function with the current path state as a function argument
22:10:25 <j4cc3b> i should be clearer. I haven't used Data.Map yet, not to be confused with regular map
22:10:45 <j4cc3b> okay. I'll try reading into Data.Map more. Thanks!
22:10:54 <dsal> I made a foldable structure `data Tree a = Tree { files :: a, subs :: Map String (Tree a) }` and then parsed it into a `Tree (Sum Int)`
22:10:57 × morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
22:11:05 <EvanR> I foldl' over the commands
22:11:24 <EvanR> the path base and the Map are in the accumulator
22:12:42 <j4cc3b> wait, how did you place both the path and the whole Map into the accumulator?
22:12:54 <sayola1> two accumulators
22:12:57 <EvanR> a tuple with 2 components
22:13:02 <j4cc3b> OH SHIT
22:13:18 <j4cc3b> I never considered tuples as an accumulator
22:13:21 <j4cc3b> this is life changing
22:13:24 <EvanR> ikr
22:14:02 × blades quits (~blades@204.48.29.163) (Quit: bye)
22:14:08 <j4cc3b> similar thinking: I can use a tuple anywhere a type signature has a generic like `a` or `b`?
22:14:35 <EvanR> implicitly, a or b is "any type"
22:14:42 <EvanR> and if c, d are types, (c,d) is a type
22:14:56 <j4cc3b> but a could be (c,d), right?
22:14:59 <dsal> :t id
22:15:00 <lambdabot> a -> a
22:15:01 <EvanR> yeah
22:15:04 <dsal> > id (1,2)
22:15:06 <lambdabot> (1,2)
22:15:08 <j4cc3b> i've never made this connection before. Wow, thanks a lot
22:18:59 × dixie quits (~dixie@real.wilbury.sk) (Ping timeout: 260 seconds)
22:19:34 × TonyStone quits (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) (Ping timeout: 252 seconds)
22:22:19 TonyStone joins (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com)
22:22:32 <dsal> j4cc3b: in the example above, `a -> a` means there's no type the function can refuse. But also, there's not much it can do.
22:22:42 bjobjo joins (~bjobjo@user/bjobjo)
22:23:18 × j4cc3b quits (~j4cc3b@pool-74-105-2-138.nwrknj.fios.verizon.net) (Ping timeout: 260 seconds)
22:32:13 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
22:33:19 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 260 seconds)
22:34:50 × yuribarros quits (~yuribarro@2804:14c:65e4:865c::1000) (Ping timeout: 265 seconds)
22:35:16 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
22:36:24 bontaq joins (~user@ool-45779fe5.dyn.optonline.net)
22:38:06 × paulpaul1076 quits (~textual@95-29-5-111.broadband.corbina.ru) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:38:56 yuribarros joins (~yuribarro@2804:14c:65e4:865c::1000)
22:39:17 <EvanR> I'm here to make you a type that you can't refuse
22:39:27 × TonyStone quits (~TonyStone@cpe-74-76-57-186.nycap.res.rr.com) (Quit: Leaving)
22:39:51 morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
22:40:04 paulpaul1076 joins (~textual@95-29-5-111.broadband.corbina.ru)
22:42:18 <geekosaur> isn't that more like `undefined :: a`?
22:42:19 × fizbin quits (~fizbin@user/fizbin) (Ping timeout: 260 seconds)
22:42:44 × adium quits (adium@user/adium) (Ping timeout: 272 seconds)
22:44:38 × morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Ping timeout: 272 seconds)
22:44:55 × paulpaul1076 quits (~textual@95-29-5-111.broadband.corbina.ru) (Ping timeout: 256 seconds)
22:46:05 adium joins (adium@user/adium)
22:46:16 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.7.1)
22:47:02 Patternmaster joins (~georg@user/Patternmaster)
22:47:16 <Inst> can someone explain endofunctors to me in the legendary / infamous "Monads are just a monoid in the category of monads?"
22:47:39 <Inst> erm, category of endofunctors, not category of monads
22:47:45 <EvanR> do you know what a regular functor is, between two categories C -> D
22:47:55 <Inst> what is the category being discussed?
22:48:04 <EvanR> C and D are any two categories
22:48:05 <Inst> I have a working understanding of monads, i.e, they're eta and mu
22:48:12 <Inst> endofunctor is C -> C
22:48:17 <EvanR> there you go
22:48:26 <Inst> but what's C?
22:48:50 <Inst> it's considered a monoid because eta / mu, or join / pure form a monad by cancelling each other out to form an identity element
22:48:56 <Inst> and join is associative
22:49:03 <EvanR> it could be anything, e.g. Hask
22:49:13 <Inst> in a Haskell context, it's hask
22:49:24 <Inst> I've had people tell me Hask is not a category due to the presence of undefined / bottom
22:49:31 <EvanR> it's fine
22:49:44 <Inst> and other people tell me that the Hask is not a category folks are wrong
22:50:14 <EvanR> the quote you gave doesn't have much to do with haskell
22:50:26 <EvanR> so you don't even have to figure that part out xD
22:50:32 <Inst> also, the problem with monads is that we are unclear as to what we're referring to when we say monads, i.e, monadic patterned programming, monadic types, monad typeclass, cat theory monads
22:50:39 <Inst> also leibniz and greeks
22:51:05 <EvanR> also there's a cosmic entity in D&D called the monad or something
22:51:31 × perrierjouet quits (~perrier-j@modemcable048.127-56-74.mc.videotron.ca) (Quit: WeeChat 3.7.1)
22:51:32 <Inst> for instance, if we say, promises are a monad (iirc, do they fail left identity or right identity), we seem to be discussing monadic patterened programming, but not a monadic type
22:51:33 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
22:51:44 <Inst> as well as cat theory monads, afaik
22:51:49 <EvanR> "whatever is a monad" in haskell means it satisfies the Monad class and the laws
22:52:04 <Inst> yeah, the most common reference is "monadic datatype"
22:52:22 <EvanR> capital M Monad class helps avoid confusion
22:52:59 <Inst> https://hasura.io/blog/parser-combinators-walkthrough/#fn1
22:53:14 <Inst> i'm oriented toward this guy's hill
22:54:27 <EvanR> sounds like you're well equipped to spot and autocorrect any lousy usage of monadic jargon
22:55:22 <Inst> functor / covariant functors seems confusing, though, as in
22:55:35 <Inst> a functor is supposed to lift a category in such a way that it's structure-preserving
22:55:47 <Inst> but obv, Proxy is a functor, but it seems to destroy structure
22:55:48 <EvanR> a functor lifts morphisms
22:55:48 <geekosaur> "endo" means within. so an endofunctor is a functor within a category
22:55:53 <Inst> ah
22:56:12 <geekosaur> C -> C as opposed to C -> D or C -> Foo or whatever
22:57:01 <EvanR> functors can e.g. map all objects to 1 thing and all morphisms to id : that -> that, not a problem
22:57:09 bitdex_ joins (~bitdex@gateway/tor-sasl/bitdex)
22:57:15 <EvanR> category theory people love that kind of thing
22:58:15 <Inst> TBH, I had an interesting talk with a Lisper
22:58:40 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:58:41 <Inst> Haskell is interesting and distinct from, say, Lisp, because it really privileges composition as a mode of programming
22:58:45 <Inst> true / false?
22:59:52 <Inst> probably false, since both Haskell and Lisp are based on lambda calculus, which is highly compositional
22:59:53 <EvanR> it privileges coding without 10,000 parentheses per page
23:00:04 <geekosaur> I'd say true because that even permeates the compiler, which tries to rewrite things into compositions and then rearranges those
23:00:18 <geekosaur> Lisp is also based on lambda callculus, but privileges a different aspect of it
23:00:24 <Inst> but haskell at least has ridiculous favoritism to composition as a mode of thinking etc within the compiler
23:00:38 × xacktm quits (~xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com)
23:00:45 × andreas303 quits (andreas303@ip227.orange.bnc4free.com) (Quit: fBNC - https://bnc4free.com)
23:01:18 <Inst> I'm only trivially familiar with Lisp, I'm thinking about picking up Racket just to get a hold of meta-programming, and because Haskell is hard when you want to do IO, to make productive, non-trivial programs
23:01:26 <EvanR> fusion basically requires thinking of stuff as compositions
23:01:59 <EvanR> the IO type is great
23:02:17 <EvanR> stash it in a data structure, send one through a channel, lol
23:02:23 <Inst> it's not, one, IO is not trivially decomposable, no?
23:02:24 <geekosaur> I don't find Haskell that hard. phrasing something well for the Haskell view of IO is hard, but usually worth it because it helps you separate concerns
23:02:38 <Inst> More specifically, I'm comfortable with readFile / writeFile
23:02:38 <geekosaur> you could sort of think of it as MVC taken to its limit
23:02:47 <Inst> but you need to understand IO libs
23:02:57 <Inst> then there's a preference for streaming IO over lazy IO / strict IO
23:03:19 <EvanR> isn't there a preference of streaming everywhere?
23:03:34 <geekosaur> and even more than composition, Haskell privileges continuations
23:03:44 <Inst> continuations I don't get, unfortunately
23:04:05 <Inst> Cont monad, I'm aware of, but don't really understand, nor do I understand how to program in CPS style
23:04:25 <Inst> especially since, afaik, CPS doesn't present substantial performance benefits in Haskell
23:04:34 <geekosaur> don't worry, almost nobody understands Cont 🙂
23:04:40 <Inst> "mother of all monads"
23:04:45 <Inst> i.e, all monads can be generated from Contd
23:04:52 <Inst> ContT
23:04:52 <EvanR> CPS versions of many libs exist for performance basically
23:05:20 <EvanR> there's a CPS Writer monad
23:05:22 <geekosaur> and the compiler rewrites everything it can to CPS
23:05:33 <Inst> but the IO complaint basically comes down to, beyond IO readFile / writeFile, most IO is unergonomic / requires libraries to be ergonomic
23:05:43 <Inst> is CPS writer monad cancer?
23:05:46 <Inst> I'm told WriterT is cancer
23:06:02 <Inst> as of 2020, still space-leaking like a universe
23:06:12 <geekosaur> that's because of the limitations of WriterT
23:06:12 <EvanR> I/O is unergonomic, that's not haskell's fault xD
23:06:43 <EvanR> Writer is fine, but maybe the naming is to evocative
23:06:46 <Inst> but the reason I'm headed to Racket next is because most IO things you want to do are handled by IO libs
23:07:07 <Inst> and I find it very hard to "get" or master IO libs, in part because IO layer seems substantially harder to train / practice than pure layer
23:07:14 <geekosaur> and there's not a lot of pressure to fix it because nobody to speak of uses it, because of its limitations (which have less to do with space leaks than with an earlier discussion you missed)
23:07:33 <geekosaur> [18 20:38:05] <c_wraith> sort of, yeah. a good logger gets things onto disk as fast as possible
23:07:33 <geekosaur> [18 20:38:26] <c_wraith> Writer accumulates things and completes (or fails) the whole computation before logging anything
23:07:37 <Inst> I'm on Windows, and IIRc Hecate's working on GUI lib
23:07:54 <Inst> I honestly dislike Monads and would prefer a different effect system if possible, tbh
23:08:02 <geekosaur> but Writer looks like something for logging
23:08:13 × shailangsa quits (~shailangs@host217-39-45-196.range217-39.btcentralplus.com) ()
23:08:21 <Inst> whereas Writer keeps a log within pure code
23:08:32 <EvanR> no, it's not good for logging period
23:08:42 <Inst> then provides a dump of it on request
23:08:55 <geekosaur> you've come to an odd place if you dislike monads
23:08:57 <EvanR> you can't even do that with Writer xD
23:09:09 <Hecate> I am nowhere near completion wrt to ghcup's GTK interface
23:09:15 <Hecate> (help very much welcome btw)
23:09:21 <Hecate> (GTK is kicking my ass)
23:09:23 <geekosaur> and may be in trouble as the concept, if not the implementation, is making inroads in a number of languages
23:09:24 <Inst> wish I could help you
23:09:32 <monochrom> At this point I'm convinced that everyone disagree on what "logging" means.
23:09:32 <dibblego> I don't even know what it means to dislike monads
23:09:53 <Inst> dibblego: understanding / misunderstanding papers talking about limitations of monads
23:10:06 <Hecate> The Applicative zealots are back at it again
23:10:21 <Inst> the anti-monad argument comes as "monads are a transitional form of effect systems and there has to be a better way to do algebraic effects than with monads"
23:10:48 <geekosaur> sadly, nobody's actually found one yet
23:10:49 <dibblego> that argument is more to do with "effects" than monads
23:10:52 <Inst> I'd think it's just rare to hate monads for other reasons than "monads are hard"
23:10:59 <Inst> also, pure code isn't really pure ;)
23:11:03 <Inst> because they side effect space and time
23:11:10 <EvanR> monads aren't effect systems so that's an issue right there
23:11:15 <Inst> which is where mtl etc, barris alexis king's efforts, suck
23:11:18 <dibblego> "hate monads" invokes the same feeling as "hating the number 3"
23:11:25 <Inst> I love the number 9
23:11:32 <dibblego> I don't, because it's not 8
23:11:32 <Inst> because it's the first number in the multiplication table my mother taught me
23:11:57 <monochrom> 6 is very afraid.
23:12:16 <EvanR> (:[]) 6
23:12:17 Lycurgus joins (~juan@user/Lycurgus)
23:12:19 <Inst> i wonder if people are, erm, what's the term?
23:12:26 <dibblego> one of the biggest limitations of 6 is that you cannot use it as an odd number
23:12:34 <Inst> synaesthetic with numbers
23:12:35 <Lycurgus> all good things are 3, monads, meh
23:12:37 <dibblego> gotta be a better way
23:13:04 <Inst> well, you can, by stapling it into a multiplication with an odd number, no?
23:13:27 <dibblego> yeah that's the 6 hack
23:14:04 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d) (Remote host closed the connection)
23:14:56 <geekosaur> are we recapitulating that argument the other day which ended with "all primes are odd except 2, which makes it the oddest prime"?
23:15:10 <dibblego> haha I missed that
23:16:01 <Inst> the sad thing is, the many of the useful properties associated with the number 9 revolve around it being the largest single-digit number in base 10
23:16:16 LemanR joins (~LemanR@2607:fb90:54b0:6e01:9403:ba62:4ea3:9eb9)
23:16:27 perrierjouet joins (~perrier-j@modemcable048.127-56-74.mc.videotron.ca)
23:17:32 <Inst> btw, since people seem to be active
23:17:38 <Inst> if i have code embedded into a closure
23:17:51 <Inst> or rather, a definition within a definition as with where or let
23:17:58 <Inst> there is no way to access the code, right?
23:18:11 <Inst> since I tend to stuff crap into nested definitions these days
23:20:46 xacktm joins (~xacktm@user/xacktm)
23:20:48 <dsal> You're being a bit loose with terminology. What do you mean "to access the code" ?
23:21:46 <Inst> say, I have code nested within code to indicated organization
23:21:50 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
23:22:01 <Inst> or to present an abstract interface denying access to the internals
23:22:13 <Inst> how do I access the internals, then, for testing purposes?
23:22:27 <glguy> You don't
23:22:33 <Inst> a particularly egregious example would be the time I built a closure to prevent passing around a 33 mb Map around
23:22:45 <Inst> can't you do something with template Haskell to take it out?
23:22:49 <glguy> nope
23:23:46 morb joins (~morb@pool-72-80-94-112.nycmny.fios.verizon.net)
23:24:05 <EvanR> you can nest functions in a where clause that are then packed into a record that gets returned for poor man's OOP
23:24:48 <EvanR> if you don't actually want that but still want organization use modules
23:25:45 oopzzozzo joins (~Thunderbi@user/oopzzozzo)
23:27:02 × fserucas quits (~fserucas@2001:818:e376:a400:fb92:70c1:dd88:c7d7) (Ping timeout: 246 seconds)
23:28:24 × Tuplanolla quits (~Tuplanoll@91-159-68-152.elisa-laajakaista.fi) (Ping timeout: 260 seconds)
23:28:46 <Inst> yeah but closures, i.e, being able to refer to parameters given on higher level
23:29:05 <dsal> They can reach up, but you can't reach down.
23:29:18 <Inst> i was just wondering why no one has considered that because nesting etc, or at least sub-modules, enhances code organization and also hides APIs
23:29:36 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
23:29:59 <Inst> since it is a complaint with FP that there are too many functions, some of them are useful in a modularized state
23:30:08 <Inst> some of them are merely convenience to enhance readability
23:30:14 <dsal> Who's complained that there are too many functions?
23:30:28 <Inst> people coming into FP from IP / mainstream programming
23:31:18 × oopzzozzo quits (~Thunderbi@user/oopzzozzo) (Quit: oopzzozzo)
23:31:23 andreas303 joins (andreas303@ip227.orange.bnc4free.com)
23:31:31 oopzzozzo joins (~Thunderbi@user/oopzzozzo)
23:31:39 <dsal> I guess I've not seen that one. Mostly in other languages I see too many things that could be functions, but aren't so you have to learn some different behavior.
23:32:25 <Inst> https://chrisdone.com/posts/haskell-lisp-philosophy-difference/
23:32:28 <Inst> which he's retracted
23:34:12 × LemanR quits (~LemanR@2607:fb90:54b0:6e01:9403:ba62:4ea3:9eb9) (Quit: Client closed)
23:35:10 <EvanR> I think mainstream programming doesn't have enough functions
23:35:14 <Inst> w/e, i'll get off venting about Haskell for a day
23:35:25 <Inst> okay, maybe not
23:35:27 slack1256 joins (~slack1256@186.11.29.60)
23:36:15 <Inst> there are two cons of a FP approach (or, for that matter, a Lisp-like minimum syntax)
23:36:22 <Inst> first, too many functions lying around that you have to learn and memorize
23:36:25 <EvanR> for example, elixir has a function that maps a Map but only bringing the key along. Nothing built in to like fmap
23:36:44 LemanR joins (~LemanR@2607:fb90:54b0:6e01:9403:ba62:4ea3:9eb9)
23:36:51 <Inst> no typeclasses in Elixir, right?
23:37:06 <EvanR> you don't have to learn any functions, you can paste the code from those functions everywhere they would be used
23:37:38 <EvanR> that that just works is another benefit of functional programming
23:37:38 <Inst> which is less convenient than reading stuff, and arguably makes for less readable code
23:37:41 <Inst> it creates a scalability issue
23:38:15 <Inst> you can implement a MSP / IP-type minimum API with definition nesting, or for that matter, modules, but my experiment with modular layout was that there were too many modules
23:38:38 <Inst> definition nesting creates the issue that subfunctions are hard to test
23:38:54 <EvanR> yeah so why would you do it
23:39:06 × kenaryn quits (~aurele@89-88-44-27.abo.bbox.fr) (Quit: leaving)
23:39:07 <EvanR> that's a problem in every language that has inner functions
23:39:41 <Inst> organization, i.e, i don't want a given function to be exposed to the public namespace
23:39:51 <Inst> but the problem with not being exposed to the public namespace is, well, can't test
23:40:12 <EvanR> namespace management is something you do at the module level
23:40:20 <EvanR> not inside a function
23:40:42 <EvanR> export or not what you want exported, or not
23:41:12 <Inst> but with single-file modules, you end up with problems
23:41:18 <Inst> from a UI perspective
23:41:24 <Inst> having to switch screens, create more tabs, so on so forth
23:41:53 <EvanR> I use bookmarks to go between parts of the same file or different files, seems the same
23:42:01 <Inst> i guess for *nixers, you have grep, so not being able to ctrl f isn't that much of a deal
23:42:26 <Inst> also, afaik, multi-modules, while supported in OCaml, aren't much used there
23:42:56 <Inst> easiest way, tbh, might be to have a different export syntax
23:43:02 <EvanR> probably because they actually want to be organized xD
23:43:49 <Inst> to access let expressions and where clauses
23:44:13 <dsal> I don't think I understand the problem. I use Haskell mostly because I find it easier to understand and refactor code vs. other stuff I've used.
23:44:24 <EvanR> 100%
23:44:44 × Kaiepi quits (~Kaiepi@108.175.84.104) (Ping timeout: 260 seconds)
23:44:47 <Inst> i guess, for the time being, i've evolved toward a style that's way too dependent on nested definitions
23:45:04 <EvanR> yeah style takes time to figure out
23:45:07 <Inst> which is one way to express code organization, and i've stated the drawbacks of other ways to do so
23:45:26 <Inst> still, it's funny making 100 line functions in Haskell
23:45:37 <EvanR> that sounds awful
23:45:38 <dsal> It's not clear what it would even mean to "access a where" clause. My where clauses often close on values other where clauses defined from each other and params. In order to access one, you'd have to push a ton of state down.
23:45:53 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
23:45:53 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
23:45:53 wroathe joins (~wroathe@user/wroathe)
23:45:53 × morb quits (~morb@pool-72-80-94-112.nycmny.fios.verizon.net) (Remote host closed the connection)
23:46:03 <EvanR> maybe they want dynamic scoping xD
23:46:05 <Inst> dsal: the main drawback of abusing nesting is weak testing
23:46:10 <Inst> what is dynamic scoping?
23:46:30 <EvanR> it's the opposite of lexical scoping
23:46:32 <dsal> We've got things nearly that long in some work code, but that's because people mix in all kinds of tracing and logging and stuff.
23:46:47 <EvanR> i.e. impossible to understand
23:47:12 <dsal> Inst: One of the schools of testing argues that you should only test the API you present.
23:47:13 <Inst> this would be an example
23:47:14 <Inst> https://github.com/liamzee/Dicewarist/blob/master/app/Dicewarist.hs
23:47:47 <geekosaur> lexical scoping means you can access bindings you are nested within. dynamic scoping means you can access bindings you were called from
23:47:50 fizbin joins (~fizbin@user/fizbin)
23:48:28 <geekosaur> lexical scoping is therefore clean and easy to figure out, whereas dynamic scoping could lead to nasty surprises because it's all controlled by your caller(s)
23:48:34 <EvanR> imagine if you could "access" equations in a where clause, but the free variables suddenly point somewhere else xD
23:48:49 <EvanR> very "handy"
23:48:50 <dsal> I like that it imports `OK (OK)`
23:48:50 <Inst> the idea is that you're not actually supposed to program with it
23:50:13 <dsal> Inst: Is there something in here you're wanting to fix?
23:50:34 <dsal> My general approach is to write the tests I think I need and then look at a coverage report.
23:51:12 Kaiepi joins (~Kaiepi@108.175.84.104)
23:51:32 <Inst> i mean wouldn't it be standard Haskell style to take out some of the where clausing?
23:51:56 <dsal> For what reason?
23:52:16 <Inst> because the where clausing isn't necessary
23:52:19 <Inst> it improves readability
23:52:33 <dsal> I find this super readable, so I need you to walk me a little bit.
23:52:55 <dsal> "get rid of where clause" isn't helpful to me. Which ones? Why?
23:53:41 <Inst> well, at least, expose functions to testing
23:54:00 <Inst> this whole whereclausing thing, tbh, is a miracle
23:54:40 <dsal> It's super hard to understand where you're coming from. I don't like naming things because naming things is hard, but why is naming things inherently a problem?
23:56:42 <Inst> that's more like an aside, i.e, where clausing in Haskell is a key advantage of haskell code over other languages code
23:56:57 <Inst> but it has the drawback that stuff defined within where clauses is not accessible to testing, but that's about it
23:57:21 <Inst> i guess in another language, wherein larger and less modularized functions is a norm, there's no real trade-off, so the idea wouldn't be apparent
23:57:27 <Inst> because you can't modularize in this way in other languages
23:57:36 <dsal> "where clausing" sounds really bizarre. nobody says that. Just say "naming things"
23:57:37 <Inst> it's inconvenient to do so
23:57:54 <dsal> You can name things in most languages.
23:57:56 <Inst> where makes it more specific to the where syntactical sugar
23:58:09 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:6111:8f0f:4f2:4e8d)
23:58:37 <Inst> w/e, i don't want to cause frustration, and it's getting late
23:58:41 <Inst> thanks for humoring me
23:58:53 × crazazy`` quits (~user@130.89.171.62) (Ping timeout: 268 seconds)
23:58:55 <dsal> Heh. Sure. That particular example can be written in almost any language.

All times are in UTC on 2022-12-18.