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.