2024/10/06

2024-10-06 00:02:01 +0200gorignak(~gorignak@user/gorignak) (Quit: quit)
2024-10-06 00:02:32 +0200gorignak(~gorignak@user/gorignak) gorignak
2024-10-06 00:05:06 +0200gvg_(~dcd@user/gvg) (Ping timeout: 252 seconds)
2024-10-06 00:10:01 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 00:14:27 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 00:19:41 +0200fmira(~user@user/fmira) (Quit: fmira)
2024-10-06 00:25:29 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 00:26:46 +0200 <Inst> interesting, tbh, i thought tuple arguments were unidiomatic in haskell
2024-10-06 00:27:24 +0200 <Inst> but it turns out that if you're doing recursion over a function that produces a tuple, it's actually pretty ideal
2024-10-06 00:28:28 +0200 <Inst> are there any existing dynamic vector libraries built over vector?
2024-10-06 00:29:16 +0200 <Inst> https://hackage.haskell.org/package/dynamic-mvector-0.1.0.5
2024-10-06 00:29:26 +0200 <Inst> andras kovacs hasn't updated that recently
2024-10-06 00:29:56 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 00:32:44 +0200son0p(~ff@186.121.110.81) son0p
2024-10-06 00:34:56 +0200EvanR_(~EvanR@user/evanr) EvanR
2024-10-06 00:34:56 +0200EvanR(~EvanR@user/evanr) (Remote host closed the connection)
2024-10-06 00:40:53 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 00:41:09 +0200spew(~spew@2806:2a0:1522:8662::edd7) spew
2024-10-06 00:41:52 +0200andrewboltachev(~andrey@178.141.123.3) andrewboltachev
2024-10-06 00:42:23 +0200 <andrewboltachev> Hello. Does anyone have modern example for https://www.tweag.io/blog/2019-05-09-inline-js/ ? many things have changed, e.g. withJSSession -> withSession etc
2024-10-06 00:43:20 +0200EvanR_EvanR
2024-10-06 00:45:19 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 00:48:43 +0200supercode(~supercode@user/supercode) supercode
2024-10-06 00:48:59 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2024-10-06 00:56:17 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 00:58:01 +0200mhatta(~mhatta@www21123ui.sakura.ne.jp) (Remote host closed the connection)
2024-10-06 00:58:59 +0200fmira(~user@user/fmira) fmira
2024-10-06 01:00:22 +0200fmira(~user@user/fmira) (Client Quit)
2024-10-06 01:00:35 +0200fmira(~user@user/fmira) fmira
2024-10-06 01:01:17 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-10-06 01:01:59 +0200gvg(~dcd@user/gvg) gvg
2024-10-06 01:07:29 +0200anpad(~pandeyan@user/anpad) (Ping timeout: 255 seconds)
2024-10-06 01:08:41 +0200mhatta(~mhatta@www21123ui.sakura.ne.jp)
2024-10-06 01:09:17 +0200anpad(~pandeyan@user/anpad) anpad
2024-10-06 01:11:43 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 01:13:26 +0200mantraofpie(~mantraofp@user/mantraofpie) (Ping timeout: 260 seconds)
2024-10-06 01:16:08 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 01:27:08 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 01:29:24 +0200malte(~malte@mal.tc) (Remote host closed the connection)
2024-10-06 01:30:25 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds)
2024-10-06 01:30:38 +0200malte(~malte@mal.tc) malte
2024-10-06 01:31:31 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-10-06 01:38:25 +0200troojg(~troojg@user/troojg) troojg
2024-10-06 01:42:32 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 01:44:29 +0200Me-me(~me-me@kc.randomserver.name) (Changing host)
2024-10-06 01:44:29 +0200Me-me(~me-me@user/me-me) Me-me
2024-10-06 01:47:01 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-06 01:48:24 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 252 seconds)
2024-10-06 01:52:59 +0200paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com)
2024-10-06 01:57:33 +0200acidjnk(~acidjnk@p200300d6e72cfb25cc2baddb8e5dbc54.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2024-10-06 01:57:59 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 02:00:28 +0200malte(~malte@mal.tc) (Remote host closed the connection)
2024-10-06 02:02:29 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-06 02:02:47 +0200malte(~malte@mal.tc) malte
2024-10-06 02:03:18 +0200alp_(~alp@2001:861:e3d6:8f80:313e:6d49:466c:22b1) (Ping timeout: 245 seconds)
2024-10-06 02:04:44 +0200weary-traveler(~user@user/user363627) user363627
2024-10-06 02:11:04 +0200identity(~identity@user/ZharMeny) (Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.60))
2024-10-06 02:13:24 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 02:17:44 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Ping timeout: 252 seconds)
2024-10-06 02:17:53 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-10-06 02:24:55 +0200supercode(~supercode@user/supercode) (Quit: Client closed)
2024-10-06 02:28:24 +0200andrewboltachev(~andrey@178.141.123.3) (Ping timeout: 246 seconds)
2024-10-06 02:28:48 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 02:32:03 +0200califax(~califax@user/califx) (Remote host closed the connection)
2024-10-06 02:33:32 +0200califax(~califax@user/califx) califx
2024-10-06 02:33:34 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-06 02:38:33 +0200gorignak(~gorignak@user/gorignak) (Quit: quit)
2024-10-06 02:39:04 +0200gorignak(~gorignak@user/gorignak) gorignak
2024-10-06 02:44:27 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 02:48:54 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 02:54:55 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 02:59:29 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-06 03:03:50 +0200user_(~user@user/fmira) fmira
2024-10-06 03:06:36 +0200fmira(~user@user/fmira) (Ping timeout: 260 seconds)
2024-10-06 03:10:26 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 03:14:13 +0200gorignak(~gorignak@user/gorignak) (Quit: quit)
2024-10-06 03:14:56 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 03:25:51 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 03:29:44 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2024-10-06 03:30:15 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 03:41:17 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 03:41:19 +0200troojg(~troojg@user/troojg) (Ping timeout: 252 seconds)
2024-10-06 03:45:53 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
2024-10-06 03:49:34 +0200 <L29Ah> https://www.wired.com/story/neo-nazis-flee-telegram-encrypted-app-simplex/ haskell went to the masses
2024-10-06 03:55:20 +0200gorignak(~gorignak@user/gorignak) gorignak
2024-10-06 03:56:51 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 03:57:56 +0200 <EvanR> but does it use blockchain
2024-10-06 03:58:01 +0200 <EvanR> otherwise, literally unusable
2024-10-06 03:59:21 +0200gorignak(~gorignak@user/gorignak) (Remote host closed the connection)
2024-10-06 04:00:32 +0200califax(~califax@user/califx) (Remote host closed the connection)
2024-10-06 04:00:54 +0200califax(~califax@user/califx) califx
2024-10-06 04:01:30 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 04:02:13 +0200 <haskellbridge> <sm> kind of sorry I recommended simplex the other day, now
2024-10-06 04:03:34 +0200 <dmj`> so this is why we avoid success at all costs
2024-10-06 04:03:57 +0200 <haskellbridge> <sm> hopefully that person will use it for good
2024-10-06 04:04:07 +0200gorignak(~gorignak@user/gorignak) gorignak
2024-10-06 04:05:03 +0200op_4(~tslil@user/op-4/x-9116473) (Remote host closed the connection)
2024-10-06 04:05:10 +0200 <haskellbridge> <sm> these failures to avoid success seem to be getting more frequent >:/
2024-10-06 04:05:34 +0200op_4(~tslil@user/op-4/x-9116473) op_4
2024-10-06 04:06:43 +0200 <haskellbridge> <sm> now of course this can also be propaganda against untappable chat tech
2024-10-06 04:07:36 +0200 <haskellbridge> <sm> * an untappable chat app
2024-10-06 04:08:08 +0200gorignak(~gorignak@user/gorignak) (Remote host closed the connection)
2024-10-06 04:10:45 +0200nadja(~dequbed@banana-new.kilobyte22.de) (Ping timeout: 265 seconds)
2024-10-06 04:10:56 +0200nadja(~dequbed@banana-new.kilobyte22.de) dequbed
2024-10-06 04:11:33 +0200 <EvanR> I find it hard to believe it absolutely hides your identity
2024-10-06 04:12:28 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 04:13:37 +0200 <haskellbridge> <sm> considering it's so secure, wired seems to know a lot about what people are doing on SimpleX
2024-10-06 04:14:19 +0200 <haskellbridge> <sm> anyway. moving on
2024-10-06 04:16:48 +0200td_(~td@i53870937.versanet.de) (Ping timeout: 276 seconds)
2024-10-06 04:18:10 +0200td_(~td@i5387093A.versanet.de)
2024-10-06 04:19:28 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 04:19:55 +0200dyniec(~dyniec@dybiec.info) (Quit: WeeChat 4.2.2)
2024-10-06 04:32:05 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 04:35:10 +0200JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2024-10-06 04:37:08 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
2024-10-06 04:42:34 +0200terrorjack4(~terrorjac@static.48.15.202.116.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat)
2024-10-06 04:43:44 +0200Cale(~cale@2607:fea8:995f:f126:15c3:35a5:81ac:187c) (Read error: Connection reset by peer)
2024-10-06 04:44:18 +0200terrorjack4(~terrorjac@2a01:4f8:c17:dc9f::) terrorjack
2024-10-06 04:49:25 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 04:50:51 +0200athan(~athan@syn-098-153-145-140.biz.spectrum.com) (Quit: Konversation terminated!)
2024-10-06 04:53:56 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 05:06:08 +0200superstar64(~superstar@2600:1700:ed80:50a0:d250:99ff:fe2c:53c4) (Quit: Leaving)
2024-10-06 05:06:15 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 05:10:54 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-06 05:17:35 +0200troojg(~troojg@user/troojg) troojg
2024-10-06 05:22:12 +0200forell_(~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Quit: ZNC - https://znc.in)
2024-10-06 05:22:28 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 05:23:04 +0200forell(~forell@user/forell) forell
2024-10-06 05:27:07 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-10-06 05:28:36 +0200spew(~spew@2806:2a0:1522:8662::edd7) (Quit: spew)
2024-10-06 05:36:37 +0200gorignak(~gorignak@user/gorignak) gorignak
2024-10-06 05:36:38 +0200 <user_> EvanR: the protocol is pretty sane but currently theres an issue that most people just use the main simplex servers for message delivery so they can still analyze where messages go and of course even in decentralized situations there can be collusion
2024-10-06 05:36:46 +0200 <user_> wait why am i user_
2024-10-06 05:36:50 +0200 <user_> brb....
2024-10-06 05:37:03 +0200user_(~user@user/fmira) (Quit: user_)
2024-10-06 05:37:04 +0200 <EvanR> user_ error
2024-10-06 05:37:19 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2024-10-06 05:37:24 +0200fmira(~user@user/fmira) fmira
2024-10-06 05:39:22 +0200 <fmira> okay thats better, so theres still the risk of message delivery not being safe from analysis but the e2ee itself is pretty solid iirc, i think they even used dependent types to prove that the cryptography is solid iirc
2024-10-06 05:39:35 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 05:40:39 +0200gorignak(~gorignak@user/gorignak) (Remote host closed the connection)
2024-10-06 05:42:22 +0200 <EvanR> o_O
2024-10-06 05:43:15 +0200 <EvanR> sounds cool
2024-10-06 05:43:24 +0200 <EvanR> xcept for the nazis
2024-10-06 05:44:10 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 05:44:54 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2024-10-06 05:45:13 +0200 <Inst> how does simplex plan to make money?
2024-10-06 05:45:39 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2024-10-06 05:55:21 +0200 <fmira> Inst: good question honestly, theyre vc funded
2024-10-06 05:55:32 +0200 <fmira> im guessing they'll at some point enshittify the whole thing
2024-10-06 05:56:19 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 05:59:11 +0200athan(~athan@syn-098-153-145-140.biz.spectrum.com) athan
2024-10-06 06:04:00 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-06 06:06:13 +0200 <Axman6> There's no easy way to ignore shadowing warnings for one function right? I've got a do block where I want to reuse a name multiple times as the value gets 'updated' (a ghetto state monad really)
2024-10-06 06:08:17 +0200 <JuanDaugherty> racist
2024-10-06 06:13:35 +0200 <ghoulguy> Axman6: not that I know of
2024-10-06 06:13:38 +0200JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-10-06 06:15:39 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 06:20:12 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 06:26:30 +0200gorignak(~gorignak@user/gorignak) gorignak
2024-10-06 06:33:12 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 06:38:06 +0200youthlic(~Thunderbi@user/youthlic) (Remote host closed the connection)
2024-10-06 06:38:10 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-10-06 06:40:22 +0200youthlic(~Thunderbi@user/youthlic) youthlic
2024-10-06 06:42:04 +0200gorignak(~gorignak@user/gorignak) (Remote host closed the connection)
2024-10-06 06:43:49 +0200gorignak(~gorignak@user/gorignak) gorignak
2024-10-06 06:46:01 +0200falafel(~falafel@198.101.119.52) falafel
2024-10-06 06:46:33 +0200troojg(~troojg@user/troojg) (Remote host closed the connection)
2024-10-06 06:47:32 +0200finn_elija(~finn_elij@user/finn-elija/x-0085643) finn_elija
2024-10-06 06:47:32 +0200FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2024-10-06 06:47:32 +0200finn_elijaFinnElija
2024-10-06 06:49:23 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 06:52:44 +0200gorignak(~gorignak@user/gorignak) (Remote host closed the connection)
2024-10-06 06:52:53 +0200falafel(~falafel@198.101.119.52) (Ping timeout: 244 seconds)
2024-10-06 06:53:28 +0200gorignak(~gorignak@user/gorignak) gorignak
2024-10-06 06:53:50 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 07:00:34 +0200wanted(~wanted@2.219.56.221) (Ping timeout: 260 seconds)
2024-10-06 07:03:42 +0200 <Axman6> GHC needs #pragma push and #pragma pop
2024-10-06 07:04:58 +0200gorignak(~gorignak@user/gorignak) (Remote host closed the connection)
2024-10-06 07:05:22 +0200 <geekosaur> supposedly there's work to make warnings more fine-grained, but I don't know the status
2024-10-06 07:06:13 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 07:11:00 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-10-06 07:18:18 +0200troojg(~troojg@user/troojg) troojg
2024-10-06 07:23:42 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 07:25:03 +0200paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 265 seconds)
2024-10-06 07:25:46 +0200athan(~athan@syn-098-153-145-140.biz.spectrum.com) (Quit: Konversation terminated!)
2024-10-06 07:28:21 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-06 07:30:30 +0200vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)
2024-10-06 07:32:25 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-10-06 07:32:35 +0200paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com)
2024-10-06 07:37:48 +0200spew(~spew@201.141.99.170) spew
2024-10-06 07:38:55 +0200paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 252 seconds)
2024-10-06 07:39:07 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2024-10-06 07:40:33 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 07:41:03 +0200wanted(~wanted@2.219.56.221)
2024-10-06 07:45:21 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-10-06 07:45:27 +0200gorignak(~gorignak@user/gorignak) gorignak
2024-10-06 07:51:50 +0200paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com)
2024-10-06 07:52:59 +0200spew(~spew@201.141.99.170) (Quit: spew)
2024-10-06 07:56:04 +0200rosco(~rosco@183.171.107.70) rosco
2024-10-06 07:56:16 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 07:57:10 +0200takuan(~takuan@178-116-218-225.access.telenet.be)
2024-10-06 07:57:19 +0200youthlic(~Thunderbi@user/youthlic) (Quit: youthlic)
2024-10-06 08:05:05 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-06 08:07:54 +0200xff0x(~xff0x@2405:6580:b080:900:858f:f870:90c:1b39) (Ping timeout: 246 seconds)
2024-10-06 08:08:13 +0200youthlic(~Thunderbi@user/youthlic) youthlic
2024-10-06 08:08:13 +0200youthlic(~Thunderbi@user/youthlic) (Client Quit)
2024-10-06 08:10:21 +0200paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 246 seconds)
2024-10-06 08:13:45 +0200xff0x(~xff0x@2405:6580:b080:900:943:dffd:9430:e374)
2024-10-06 08:18:26 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 08:22:56 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 08:28:29 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 08:36:17 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 08:39:41 +0200adanwan_(~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 260 seconds)
2024-10-06 08:40:54 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 08:48:37 +0200Square(~Square@user/square) Square
2024-10-06 08:49:35 +0200Square(~Square@user/square) (Client Quit)
2024-10-06 08:50:42 +0200Square(~Square@user/square) Square
2024-10-06 08:54:30 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 08:55:08 +0200 <haskellbridge> <thirdofmay18081814goya> anyone got a good intro for domain-theoretic semantic of recursive types?
2024-10-06 08:58:57 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-10-06 09:00:00 +0200caconym(~caconym@user/caconym) (Quit: bye)
2024-10-06 09:00:02 +0200tt123109783243(~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) (Quit: The Lounge - https://thelounge.chat)
2024-10-06 09:00:35 +0200caconym(~caconym@user/caconym) caconym
2024-10-06 09:03:25 +0200tt123109783243(~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) tt1231
2024-10-06 09:09:40 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2024-10-06 09:12:11 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 09:12:33 +0200troojg(~troojg@user/troojg) (Ping timeout: 276 seconds)
2024-10-06 09:14:42 +0200econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2024-10-06 09:16:30 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-06 09:19:01 +0200wootehfoot(~wootehfoo@user/wootehfoot) (Quit: Leaving)
2024-10-06 09:22:14 +0200euphores(~SASL_euph@user/euphores) euphores
2024-10-06 09:24:07 +0200wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2024-10-06 09:25:38 +0200alp_(~alp@2001:861:e3d6:8f80:3afa:9370:887b:74f7)
2024-10-06 09:28:03 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 09:32:23 +0200 <Inst> axman6: why can't you just stuff ' or numbers at the end?
2024-10-06 09:32:39 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-10-06 09:33:05 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds)
2024-10-06 09:33:34 +0200 <Axman6> because that makes it much harder to see that the code is correct, there could be an error anywhere and adding something in the middle means updating everything afterwards
2024-10-06 09:36:05 +0200hiecaq(~hiecaq@user/hiecaq) (Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.4))
2024-10-06 09:38:31 +0200alp_(~alp@2001:861:e3d6:8f80:3afa:9370:887b:74f7) (Ping timeout: 264 seconds)
2024-10-06 09:38:39 +0200hiecaq(~hiecaq@user/hiecaq) hiecaq
2024-10-06 09:40:39 +0200hiecaq(~hiecaq@user/hiecaq) (Client Quit)
2024-10-06 09:42:41 +0200CiaoSen(~Jura@2a05:5800:464:f400:ca4b:d6ff:fec1:99da) CiaoSen
2024-10-06 09:43:22 +0200acidjnk(~acidjnk@p200300d6e72cfb9670d70e28f87691c4.dip0.t-ipconnect.de) acidjnk
2024-10-06 09:44:09 +0200rosco(~rosco@183.171.107.70) (Quit: Lost terminal)
2024-10-06 09:45:10 +0200sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-10-06 09:45:22 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 09:45:28 +0200andrewboltachev(~andrey@178.141.123.3) andrewboltachev
2024-10-06 09:49:45 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 09:58:02 +0200hiecaq(~hiecaq@user/hiecaq) hiecaq
2024-10-06 10:02:20 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 10:03:37 +0200lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2024-10-06 10:05:45 +0200 <jackdk> it would be neat if you didn't get shadowing warnings for bindings consumed by a linear arrow
2024-10-06 10:06:49 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-06 10:13:22 +0200artu(~artu@2601:600:8181:9b00::14) artu
2024-10-06 10:18:50 +0200weary-traveler(~user@user/user363627) (Remote host closed the connection)
2024-10-06 10:19:49 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 10:24:18 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 10:24:43 +0200ubert(~Thunderbi@178.165.166.66.wireless.dyn.drei.com) ubert
2024-10-06 10:25:08 +0200ubert(~Thunderbi@178.165.166.66.wireless.dyn.drei.com) (Remote host closed the connection)
2024-10-06 10:28:42 +0200ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-10-06 10:29:09 +0200CiaoSen(~Jura@2a05:5800:464:f400:ca4b:d6ff:fec1:99da) (Ping timeout: 248 seconds)
2024-10-06 10:29:18 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2024-10-06 10:35:31 +0200acidjnk(~acidjnk@p200300d6e72cfb9670d70e28f87691c4.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2024-10-06 10:37:20 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 10:39:20 +0200 <artu> I tried to evaluate `count :: Int` in GHCi but got an error "Variable not in scope count :: Int". I want to try out haskell's full features on the REPL without creating a file or project. Any advice on that how can I achieve this interactively?
2024-10-06 10:39:49 +0200acidjnk(~acidjnk@p200300d6e72cfb9628aff41673680d4c.dip0.t-ipconnect.de) acidjnk
2024-10-06 10:41:33 +0200Digitteknohippie(~user@user/digit) Digit
2024-10-06 10:41:49 +0200Digit(~user@user/digit) (Ping timeout: 260 seconds)
2024-10-06 10:41:54 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 10:43:30 +0200ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en)
2024-10-06 10:44:06 +0200paddymahoney(~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com)
2024-10-06 10:44:46 +0200 <haskellbridge> <Jade> did you define "count"? if not, you can't print it :P
2024-10-06 10:46:19 +0200Digitteknohippie(~user@user/digit) (Ping timeout: 260 seconds)
2024-10-06 10:47:16 +0200 <artu> doesn't this `count :: Int` claim/declare `count` as type `Int`? I'll define after the declaration. Apperantly I'm a noob here :)
2024-10-06 10:48:45 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 276 seconds)
2024-10-06 10:50:19 +0200CrunchyFlakes(~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2024-10-06 10:50:51 +0200artu(~artu@2601:600:8181:9b00::14) (Quit: WeeChat 4.4.2)
2024-10-06 10:50:52 +0200Digit(~user@user/digit) Digit
2024-10-06 10:51:44 +0200sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-10-06 10:54:40 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 10:55:55 +0200fmira(~user@user/fmira) (Quit: fmira)
2024-10-06 10:59:01 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-06 10:59:28 +0200CrunchyFlakes(~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de)
2024-10-06 11:01:26 +0200alp_(~alp@2001:861:e3d6:8f80:e21f:8806:679b:6ae1)
2024-10-06 11:05:03 +0200andrewboltachev(~andrey@178.141.123.3) (Quit: Leaving.)
2024-10-06 11:07:53 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 11:12:39 +0200takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2024-10-06 11:12:42 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-10-06 11:16:27 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-06 11:25:19 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 11:27:21 +0200alp_(~alp@2001:861:e3d6:8f80:e21f:8806:679b:6ae1) (Ping timeout: 252 seconds)
2024-10-06 11:27:26 +0200ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-10-06 11:29:51 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 11:31:57 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 246 seconds)
2024-10-06 11:32:53 +0200 <haskellbridge> <thirdofmay18081814goya> what guarantees that the least fixed point of a type-functor will produce finite data types?
2024-10-06 11:35:00 +0200 <ncf> nothing
2024-10-06 11:35:19 +0200 <Lears> thirdofmay: In Haskell, nothing. In System F, strong normalisation and program finiteness.
2024-10-06 11:35:37 +0200 <ncf> the least fixed point of Const â„• is infinite
2024-10-06 11:36:06 +0200 <ncf> or 1 + — i guess
2024-10-06 11:36:16 +0200 <haskellbridge> <thirdofmay18081814goya> hm i see
2024-10-06 11:36:22 +0200 <haskellbridge> <thirdofmay18081814goya> ty for answers
2024-10-06 11:37:54 +0200rosco(~rosco@183.171.72.164) rosco
2024-10-06 11:38:23 +0200 <Lears> To be clear, "finite" here is ambiguous. If you mean data types of finite cardinality then the answer is still nothing in e.g. System F. I took you to mean data types with values of finite size.
2024-10-06 11:39:48 +0200 <haskellbridge> <thirdofmay18081814goya> yeah, I meant values of finite size
2024-10-06 11:40:07 +0200 <haskellbridge> <thirdofmay18081814goya> data types with values of finite size
2024-10-06 11:40:22 +0200 <ncf> define size?
2024-10-06 11:41:27 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 11:46:04 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 11:53:19 +0200alp_(~alp@2001:861:e3d6:8f80:6ee5:dea:457b:d9d9)
2024-10-06 11:57:05 +0200CrunchyFlakes(~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds)
2024-10-06 11:58:50 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 11:59:08 +0200xff0x(~xff0x@2405:6580:b080:900:943:dffd:9430:e374) (Ping timeout: 245 seconds)
2024-10-06 11:59:59 +0200emmanuelux(~emmanuelu@user/emmanuelux) emmanuelux
2024-10-06 12:00:35 +0200ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Read error: Connection reset by peer)
2024-10-06 12:01:38 +0200CrunchyFlakes(~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de)
2024-10-06 12:03:24 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 12:11:01 +0200cyphase(~cyphase@user/cyphase) (Ping timeout: 248 seconds)
2024-10-06 12:13:11 +0200alp_(~alp@2001:861:e3d6:8f80:6ee5:dea:457b:d9d9) (Ping timeout: 252 seconds)
2024-10-06 12:14:39 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2024-10-06 12:16:54 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 12:21:16 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 12:23:10 +0200xff0x(~xff0x@2405:6580:b080:900:e9cd:7fb:f9ec:b14e)
2024-10-06 12:23:56 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla
2024-10-06 12:24:13 +0200 <tomsmeding> @tell artu you need :{ and :} to write multi-line definitions in ghci
2024-10-06 12:24:13 +0200 <lambdabot> Consider it noted.
2024-10-06 12:25:34 +0200son0p(~ff@186.121.110.81) (Remote host closed the connection)
2024-10-06 12:28:17 +0200__monty__(~toonn@user/toonn) toonn
2024-10-06 12:29:55 +0200alp_(~alp@2001:861:e3d6:8f80:e481:13d5:7eb4:8f9d)
2024-10-06 12:33:01 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 12:34:03 +0200cyphase(~cyphase@user/cyphase) cyphase
2024-10-06 12:37:44 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds)
2024-10-06 12:38:35 +0200Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2024-10-06 12:38:54 +0200 <lxsameer> hey folks, do you know any channel or forum dedicated to category theory and/or type theory?
2024-10-06 12:40:54 +0200alp_(~alp@2001:861:e3d6:8f80:e481:13d5:7eb4:8f9d) (Ping timeout: 246 seconds)
2024-10-06 12:43:08 +0200 <Hecate> nope sorry
2024-10-06 12:48:30 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 12:48:50 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2024-10-06 12:50:30 +0200CiaoSen(~Jura@2a05:5800:464:f400:ca4b:d6ff:fec1:99da) CiaoSen
2024-10-06 12:50:48 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2024-10-06 12:53:10 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 13:03:26 +0200mrmr155334346318(~mrmr@user/mrmr) (Quit: Bye, See ya later!)
2024-10-06 13:04:36 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 13:09:17 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds)
2024-10-06 13:09:18 +0200rosco(~rosco@183.171.72.164) (Ping timeout: 252 seconds)
2024-10-06 13:18:07 +0200alp_(~alp@2001:861:e3d6:8f80:7d60:3680:b7b6:7b2d)
2024-10-06 13:22:14 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 13:26:54 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 13:29:13 +0200mrmr155334346318(~mrmr@user/mrmr) mrmr
2024-10-06 13:38:49 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 13:40:32 +0200alp_(~alp@2001:861:e3d6:8f80:7d60:3680:b7b6:7b2d) (Ping timeout: 272 seconds)
2024-10-06 13:41:01 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-06 13:43:12 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-06 13:47:03 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2024-10-06 13:47:34 +0200rvalue(~rvalue@user/rvalue) rvalue
2024-10-06 13:56:38 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 13:58:54 +0200 <tomsmeding> lxsameer: there is ##dependent here but I'm not sure how appropriate it is
2024-10-06 13:59:14 +0200 <tomsmeding> there is also #agda
2024-10-06 14:00:59 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 14:01:54 +0200CiaoSen(~Jura@2a05:5800:464:f400:ca4b:d6ff:fec1:99da) (Ping timeout: 260 seconds)
2024-10-06 14:06:24 +0200 <ncf> and #categorytheory, to mention only IRC channels
2024-10-06 14:09:26 +0200 <haskellbridge> <eldritchcookie> is there a method to visibly quantify a class method?
2024-10-06 14:09:41 +0200 <haskellbridge> <eldritchcookie> like bitSize :: forall b -> Natural
2024-10-06 14:10:38 +0200 <haskellbridge> <eldritchcookie> this doesn't work due to the forall b -> introducing a new b and not visibly quantifiying the one already in scope
2024-10-06 14:13:14 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 14:14:33 +0200xff0x(~xff0x@2405:6580:b080:900:e9cd:7fb:f9ec:b14e) (Ping timeout: 245 seconds)
2024-10-06 14:15:47 +0200 <int-e> Not sure I understand, do you want https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/scoped_type_variables.html ?
2024-10-06 14:16:26 +0200xff0x(~xff0x@2405:6580:b080:900:16eb:2432:285b:7ea6)
2024-10-06 14:16:36 +0200 <int-e> the full type of bitSize is forall a. Bits a => a -> Int
2024-10-06 14:17:12 +0200 <int-e> and it's deprecated :P
2024-10-06 14:17:23 +0200 <tomsmeding> ScopedTypeVariables is DEPRECATED?
2024-10-06 14:17:37 +0200 <haskellbridge> <eldritchcookie> no i am making my own prelude/ standard library so my FiniteBits class has bitSize
2024-10-06 14:17:55 +0200 <tomsmeding> Proxy?
2024-10-06 14:18:02 +0200 <tomsmeding> that's the traditional method
2024-10-06 14:18:02 +0200 <int-e> tomsmeding: no, bitSize is
2024-10-06 14:18:04 +0200 <int-e> sorry
2024-10-06 14:18:06 +0200 <tomsmeding> ah I see
2024-10-06 14:18:07 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds)
2024-10-06 14:18:10 +0200 <tomsmeding> phew :p
2024-10-06 14:18:12 +0200 <int-e> > bitSize (0 :: Integer)
2024-10-06 14:18:13 +0200 <lambdabot> *Exception: Data.Bits.bitSize(Integer)
2024-10-06 14:18:14 +0200identity(~identity@user/ZharMeny) identity
2024-10-06 14:18:31 +0200 <tomsmeding> > finiteBitSize (0 :: Integer)
2024-10-06 14:18:33 +0200 <lambdabot> error:
2024-10-06 14:18:33 +0200 <lambdabot> • No instance for (FiniteBits Integer)
2024-10-06 14:18:33 +0200 <lambdabot> arising from a use of ‘finiteBitSize’
2024-10-06 14:18:38 +0200 <tomsmeding> right, that was the replacement
2024-10-06 14:19:09 +0200 <tomsmeding> to what extent is visible forall already a thing in released GHCs?
2024-10-06 14:19:41 +0200 <tomsmeding> :set -XRequiredTypeArguments
2024-10-06 14:19:43 +0200 <tomsmeding> % :set -XRequiredTypeArguments
2024-10-06 14:19:43 +0200 <yahb2> <no output>
2024-10-06 14:19:51 +0200 <tomsmeding> % f :: forall a -> a -> a ; f t x = x
2024-10-06 14:19:51 +0200 <yahb2> <no output>
2024-10-06 14:19:54 +0200 <tomsmeding> % :t f Int
2024-10-06 14:19:54 +0200 <yahb2> f Int :: Int -> Int
2024-10-06 14:19:56 +0200 <tomsmeding> % :t f Bool
2024-10-06 14:19:57 +0200 <yahb2> f Bool :: Bool -> Bool
2024-10-06 14:20:02 +0200 <tomsmeding> eldritchcookie ^
2024-10-06 14:20:18 +0200 <tomsmeding> ghc >= 9.10 though
2024-10-06 14:20:53 +0200 <haskellbridge> <eldritchcookie> yes but naively trying this on a class method doesn't work
2024-10-06 14:21:10 +0200 <tomsmeding> I see
2024-10-06 14:21:20 +0200 <tomsmeding> hm, lemme try
2024-10-06 14:21:27 +0200 <haskellbridge> <eldritchcookie> src/Qon/Bits.hs:25:3: error: [GHC-39999]
2024-10-06 14:21:27 +0200 <haskellbridge> ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/PkaCnRCyIJXsiIbMXlrywuss/bOMDyOoAcr8 (22 lines)
2024-10-06 14:22:13 +0200 <int-e> heh, heisenbridge?
2024-10-06 14:23:12 +0200 <tomsmeding> eldritchcookie: https://play.haskell.org/saved/6TcPRARS
2024-10-06 14:23:27 +0200 <tomsmeding> admittedly it's a bit of a hack
2024-10-06 14:24:18 +0200 <int-e> oh *that* was the question
2024-10-06 14:27:38 +0200 <haskellbridge> <eldritchcookie> yes its a hack but hopefully it is forward compatible what we wil do
2024-10-06 14:29:36 +0200Digitteknohippie(~user@user/digit) Digit
2024-10-06 14:29:41 +0200Digit(~user@user/digit) (Ping timeout: 248 seconds)
2024-10-06 14:29:52 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 14:30:51 +0200 <tomsmeding> I mean, something that doesn't require 9.10 is -XAllowAmbiguousTypes and require a type application
2024-10-06 14:31:07 +0200 <tomsmeding> but with the downside that an unsuspecting user who forgets the type application will get ambiguous types
2024-10-06 14:35:00 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
2024-10-06 14:38:50 +0200mantraofpie(~mantraofp@user/mantraofpie) mantraofpie
2024-10-06 14:45:54 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 14:47:10 +0200alp_(~alp@2001:861:e3d6:8f80:9437:9b0:9ccc:15a4)
2024-10-06 14:47:42 +0200Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2024-10-06 14:47:50 +0200sawilagar(~sawilagar@user/sawilagar) (Remote host closed the connection)
2024-10-06 14:48:15 +0200sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-10-06 14:50:30 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 14:56:07 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 14:58:39 +0200 <haskellbridge> <thirdofmay18081814goya> ncf: types i'm interested in are well-founded ones
2024-10-06 15:13:41 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-06 15:14:00 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 15:15:28 +0200 <haskellbridge> <Bowuigi> thirdofmay18081814goya you might want to look at well-founded trees, AKA W types
2024-10-06 15:16:15 +0200 <haskellbridge> <thirdofmay18081814goya> Bowuigi: yeah those are what i'm thinking about
2024-10-06 15:16:24 +0200 <haskellbridge> <Bowuigi> They are mostly present in dependent stuff so I don't know how useful they are in a practical sense
2024-10-06 15:16:27 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 15:16:45 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 15:17:13 +0200 <haskellbridge> <thirdofmay18081814goya> e.g. what sort of constraints do we need on the domain to guarantee a functor provides a w-type
2024-10-06 15:18:42 +0200 <haskellbridge> <Bowuigi> Termination and a size
2024-10-06 15:19:10 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 15:19:27 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 15:20:14 +0200 <haskellbridge> <Bowuigi> You can also get sized types using Nat recursion over the type level, but unless you use singletons you can't iterate on that type
2024-10-06 15:20:44 +0200 <ncf> W-types are initial algebras for polynomial endofunctors
2024-10-06 15:21:25 +0200 <haskellbridge> <thirdofmay18081814goya> ncf: is this true over Cpo?
2024-10-06 15:23:44 +0200 <ncf> it is how they're defined. whether what you get is a "well-founded" object or not probably depends on the category and what you mean by that
2024-10-06 15:23:51 +0200 <ncf> you should probably read the references at https://ncatlab.org/nlab/show/W-type#CategoricalSemanticsOfWTypesReferences
2024-10-06 15:24:36 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 15:25:36 +0200Achylles(~Achylles@45.182.57.66) Achylles
2024-10-06 15:26:15 +0200 <haskellbridge> <thirdofmay18081814goya> i don't think they are w-types if they are not well-founded
2024-10-06 15:26:20 +0200 <haskellbridge> <thirdofmay18081814goya> will check the references ty
2024-10-06 15:35:31 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 15:36:07 +0200Guest6817(~Guest6817@103.182.161.2)
2024-10-06 15:36:11 +0200 <Guest6817> This has probably been asked a thousand times and I'm sorry for asking it again, but is Haskell still relevant to be used in today's time considering some of the competition right now? I code mostly for fun and would like to know if Haskell still holds its ground with a decent ecosystem to go with it, like how's the library support compared some
2024-10-06 15:36:12 +0200 <Guest6817> other languages at the moment?
2024-10-06 15:36:31 +0200 <haskellbridge> <thirdofmay18081814goya> literally the best production lang
2024-10-06 15:36:36 +0200 <haskellbridge> <thirdofmay18081814goya> no competition
2024-10-06 15:36:54 +0200 <haskellbridge> <thirdofmay18081814goya> competitors are dependently-typed langs
2024-10-06 15:38:34 +0200 <Guest6817> So considering one spends enough time learning it, the major shift in paradigm to a function style won't hamper me as compared to a more traditional language like C or Rust?
2024-10-06 15:39:19 +0200 <haskellbridge> <thirdofmay18081814goya> you need to ask a single question to yourself: do you want to be able to reason about your programs
2024-10-06 15:39:24 +0200 <haskellbridge> <thirdofmay18081814goya> do you want to understand what it is you work with
2024-10-06 15:39:39 +0200 <haskellbridge> <thirdofmay18081814goya> are you tired of not knowing why you fix bugs, why you make programs that work and you can't tell why
2024-10-06 15:39:57 +0200 <haskellbridge> <thirdofmay18081814goya> constantly living in a state of alienation from the very thing you spent hours working on
2024-10-06 15:40:06 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-06 15:40:41 +0200 <haskellbridge> <thirdofmay18081814goya> gaze at the masses of programmers, typing away. one asks: how can they be so close to this thing that they call their life's work, yet at the same time be so far from it?
2024-10-06 15:40:42 +0200 <Guest6817> 'Alienation' is actually a great term to describe how I feel looking at some of the past codes I've written
2024-10-06 15:40:58 +0200 <Lears> Guest6817: Learning a new language (Haskell) as opposed to another dialect of a language you already know (C, Rust, etc) will be a lot harder. It will also be much more fun and rewarding.
2024-10-06 15:43:11 +0200 <Guest6817> The only concern I had till now is whether any part of the Haskell (the immutability, everything as functions, the arcane things called 'monads' or whatever they're called) will hinder me in working on a problem where a imperative language wouldn't?
2024-10-06 15:43:31 +0200 <yushyin> rust has some influences from haskell and other funcprog languages, so you might even recognize some parts of that while learning haskell
2024-10-06 15:44:59 +0200 <haskellbridge> <thirdofmay18081814goya> haskell will fix your marriage
2024-10-06 15:45:53 +0200 <identity> Guest6817: haskell-specific parts will only hinder you while you are unfamiliar with them
2024-10-06 15:46:18 +0200 <identity> any tool will hinder you if you don't know which way to hold it
2024-10-06 15:46:58 +0200 <Guest6817> So all in all, other than the scary learning cliff that Haskell has, nothing should bother me if I actually learn it well
2024-10-06 15:48:45 +0200 <Guest6817> How's the Haskell external library support? Good enough for (most) random things I wanna do with Haskell?
2024-10-06 15:50:20 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-06 15:50:47 +0200 <lxsameer> tomsmeding: cheers
2024-10-06 15:50:56 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 15:54:19 +0200 <yushyin> Guest6817: maybe a bit outdated overview, but might give you an overall impression https://github.com/Gabriella439/post-rfc/blob/main/sotu.md
2024-10-06 15:55:18 +0200DigitteknohippieDigit
2024-10-06 15:55:46 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 15:59:03 +0200vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)
2024-10-06 16:01:06 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-10-06 16:04:27 +0200 <geekosaur> practically? it certainly is used, although it's no JS in terms of popularity
2024-10-06 16:05:15 +0200 <geekosaur> but popularity and even direct usage don't tell the whole story. secretly, haskell's conquests are from within: more and more languages are sprouting things taken from it
2024-10-06 16:06:33 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 16:09:57 +0200 <tomsmeding> Guest6817: the paradigm shift is the thing that will _help_ you -- as in, learning to program in this different paradigm will make you a better programmer even in other languages
2024-10-06 16:10:06 +0200 <tomsmeding> just for having more ways of looking at a problem
2024-10-06 16:10:50 +0200 <tomsmeding> for programming in haskell specifically, apart from enjoyment: haskell is better at some tasks, Rust is better at others, C++ even has some tasks it's better at (if only for library suppor)
2024-10-06 16:10:54 +0200 <tomsmeding> *-t
2024-10-06 16:11:01 +0200 <tomsmeding> depends on the application
2024-10-06 16:11:48 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-10-06 16:13:31 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 16:13:49 +0200Achylles(~Achylles@45.182.57.66) (Quit: Leaving)
2024-10-06 16:13:51 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 16:16:16 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 16:16:36 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 16:18:51 +0200vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)
2024-10-06 16:19:01 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 16:19:20 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 16:21:45 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 16:21:57 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 16:22:04 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 16:24:30 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 16:24:49 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 16:26:52 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-10-06 16:27:11 +0200Guest6817(~Guest6817@103.182.161.2) (Quit: Client closed)
2024-10-06 16:27:16 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 16:27:35 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 16:27:56 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-06 16:30:00 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 16:30:19 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 16:31:05 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-10-06 16:32:43 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 16:33:03 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 16:35:27 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 16:35:47 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 16:37:23 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 16:39:04 +0200sawilagar(~sawilagar@user/sawilagar) (Remote host closed the connection)
2024-10-06 16:39:28 +0200sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-10-06 16:42:06 +0200mantraofpie(~mantraofp@user/mantraofpie) (Ping timeout: 260 seconds)
2024-10-06 16:42:07 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds)
2024-10-06 16:44:37 +0200alp_(~alp@2001:861:e3d6:8f80:9437:9b0:9ccc:15a4) (Ping timeout: 248 seconds)
2024-10-06 16:48:53 +0200 <Inst> artu is gone
2024-10-06 16:49:35 +0200 <Inst> otherwise would tell him that GHCi (monochhrom, you want me to stop with the negativity and whining, right?) requires :{ to put in a multiline declaration and type signatures can't stand alone
2024-10-06 16:50:42 +0200vanishingideal(~vanishing@user/vanishingideal) (Read error: Connection reset by peer)
2024-10-06 16:52:56 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 16:54:14 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-10-06 16:57:22 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 16:59:18 +0200vanishingideal(~vanishing@user/vanishingideal) (Remote host closed the connection)
2024-10-06 16:59:35 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-10-06 17:08:21 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 17:12:53 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-10-06 17:13:56 +0200spew(~spew@201.141.99.170) spew
2024-10-06 17:21:24 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 17:23:01 +0200sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 252 seconds)
2024-10-06 17:25:58 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 17:36:49 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 17:40:09 +0200vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 246 seconds)
2024-10-06 17:41:37 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-06 17:42:19 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-10-06 17:45:28 +0200malte(~malte@mal.tc) (Remote host closed the connection)
2024-10-06 17:46:32 +0200bwe(~bwe@2a01:4f8:1c1c:4878::2) (Remote host closed the connection)
2024-10-06 17:46:59 +0200bwe(~bwe@2a01:4f8:1c1c:4878::2) bwe
2024-10-06 17:48:11 +0200JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2024-10-06 17:48:18 +0200bwe(~bwe@2a01:4f8:1c1c:4878::2) (Remote host closed the connection)
2024-10-06 17:50:02 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 17:50:21 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 17:52:14 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 17:52:46 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 17:53:05 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 17:53:51 +0200malte(~malte@mal.tc) malte
2024-10-06 17:55:15 +0200sourcetarius(~sourcetar@user/sourcetarius) sourcetarius
2024-10-06 17:55:34 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 17:55:53 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 17:56:12 +0200bwe(~bwe@2a01:4f8:1c1c:4878::2) bwe
2024-10-06 17:57:40 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
2024-10-06 17:58:18 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 17:58:37 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 17:58:45 +0200supercode(~supercode@user/supercode) supercode
2024-10-06 17:58:56 +0200 <tomsmeding> Inst: https://ircbrowse.tomsmeding.com/day/lchaskell/2024/10/06?id=1374003#trid1374003
2024-10-06 17:58:59 +0200 <monochrom> I thought I was the one with negativity and whining. :)
2024-10-06 18:00:04 +0200 <monochrom> I am pretty negative about doing anything non-trivial on the REPL. play.haskell.org is the best option when one wants to be lazy.
2024-10-06 18:00:36 +0200 <tomsmeding> I have a test.hs in my home directory that is my go-to for essentially a local playground
2024-10-06 18:01:02 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 18:01:21 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 18:03:52 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 18:04:11 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 18:06:13 +0200sawilagar(~sawilagar@user/sawilagar) sawilagar
2024-10-06 18:06:35 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 18:06:54 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 18:07:32 +0200pavonia(~user@user/siracusa) siracusa
2024-10-06 18:07:57 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 18:09:16 +0200 <Lears> Yeah, my home folder is a junk heap with years of stray .hs files I haven't gotten around to cleaning up. `wc` says 11k lines! Yikes.
2024-10-06 18:11:48 +0200vanishingideal(~vanishing@user/vanishingideal) (Read error: Connection reset by peer)
2024-10-06 18:11:53 +0200 <geekosaur> I compulsively clean my homedir regularly… but there's still some buildup because of things I'm not sure what to do with
2024-10-06 18:12:37 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-06 18:13:31 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 18:13:50 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 18:14:13 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-10-06 18:14:16 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-06 18:16:30 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 18:16:49 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 18:18:45 +0200mud(~mud@user/kadoban) (Quit: quit)
2024-10-06 18:18:52 +0200 <dminuoso> tomsmeding: I keep wondering whether calling a language good at task X because of an ecosystem is a sensible thing.
2024-10-06 18:19:34 +0200 <Rembane> dminuoso: Is Python or Clojure doing its thing again?
2024-10-06 18:19:45 +0200 <dminuoso> It feels like a misattribution that leads to to bad comparisons.
2024-10-06 18:20:11 +0200 <dminuoso> Well, it suggests that having access to a library in itself improves the language itself.
2024-10-06 18:20:17 +0200 <monochrom> I don't like it, but people have already merged "language" and "ecosystem" into one single thing and called it "the language".
2024-10-06 18:20:32 +0200 <geekosaur> every time someone asks that question I wonder who's being so insecure about big scary Haskell again
2024-10-06 18:20:42 +0200 <geekosaur> and why
2024-10-06 18:20:47 +0200 <JuanDaugherty> equivocation on lang
2024-10-06 18:20:56 +0200 <monochrom> In fact, even more extreme, I even reject calling a language good at task X at all.
2024-10-06 18:21:56 +0200 <dminuoso> Philosophically there's some merit, after all the langauge itself doesn't do anything. The actual result (AMD64 machine code) is definitely good at solving a particular numerical task.
2024-10-06 18:21:58 +0200Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2024-10-06 18:22:23 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 18:22:41 +0200 <JuanDaugherty> all instances of which are ammenable to substition with an appropriate np, "speced lang", "lang as delivered", etc
2024-10-06 18:23:17 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds)
2024-10-06 18:23:46 +0200 <dminuoso> monochrom: On the other hand, from a management perspective when asked "what language should we use", I'm not sure whether differentiating between language and ecosyste, is relevant.
2024-10-06 18:23:59 +0200 <dminuoso> The ecosystem does add to the usefulness of a language.
2024-10-06 18:24:02 +0200mud(~mud@user/kadoban) kadoban
2024-10-06 18:24:36 +0200vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 246 seconds)
2024-10-06 18:25:36 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-10-06 18:25:47 +0200 <monochrom> Hot take: "good at task X" is a social construct. >:)
2024-10-06 18:26:38 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-10-06 18:27:00 +0200michalz(~michalz@185.246.207.200)
2024-10-06 18:27:26 +0200 <monochrom> More seriously, the status quo is always changeable. Nothing blocks adding a task X library to any ecosystem.
2024-10-06 18:28:49 +0200 <monochrom> It's why I don't put any weight on that notion unless in the context of "we need to get it done yesterday".
2024-10-06 18:30:18 +0200JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-10-06 18:30:34 +0200 <monochrom> But people wouldn't like that, eh? People are more comfortable with camps, paradigms, stereotypes, stigmas, over-simplifications.
2024-10-06 18:31:00 +0200 <Rembane> That's how brains work to use very little glucose
2024-10-06 18:32:03 +0200 <Franciman> monochrom: the status quo of what?
2024-10-06 18:32:33 +0200 <Franciman> the status quo of a society is very difficult to change, because of what you said
2024-10-06 18:32:49 +0200 <Franciman> the status quo of physics laws is impossible to change
2024-10-06 18:34:53 +0200rvalue(~rvalue@user/rvalue) (Ping timeout: 252 seconds)
2024-10-06 18:35:22 +0200 <Franciman> i'm not sure it's easy to change the status quo of a GCed lang like haskell
2024-10-06 18:35:40 +0200 <Franciman> can haskell do real time programming?
2024-10-06 18:36:15 +0200 <davean> Franciman: Sure. Particularly tight realtime its not great at. Soft is pretty easy with the realtime GC though.
2024-10-06 18:37:10 +0200 <davean> I wouldn't call it great at it thoguh.
2024-10-06 18:37:35 +0200 <Franciman> nice
2024-10-06 18:37:47 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 18:38:02 +0200rvalue(~rvalue@user/rvalue) rvalue
2024-10-06 18:38:36 +0200 <davean> There have been a few OS projects in Haskell, while they've managed, I tihnk they've all ended with "This is way harder than we like"
2024-10-06 18:38:56 +0200 <Rembane> davean: Way harder because of Haskell or because of the domain?
2024-10-06 18:39:29 +0200 <davean> Rembane: I mean ... its always the product of the two that sets how rthi
2024-10-06 18:39:32 +0200 <davean> hard sometihng is
2024-10-06 18:39:47 +0200 <Rembane> davean: That's true.
2024-10-06 18:42:41 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-10-06 18:42:59 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-06 18:43:14 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) raehik
2024-10-06 18:43:41 +0200 <davean> Franciman: https://metasepi.org/en/posts/2014-09-04-haskell-symposium.html sound drivers are soft realtime. (I remembered this existed, I don't remember the contense at all)
2024-10-06 18:44:43 +0200 <geekosaur> IIRC House specifically did sound drivers in Haskell
2024-10-06 18:45:29 +0200 <Franciman> cool
2024-10-06 18:45:39 +0200 <Franciman> ty
2024-10-06 18:46:00 +0200vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)
2024-10-06 18:46:15 +0200 <davean> This predates the non-moving GC
2024-10-06 18:47:01 +0200 <davean> That has limited pause time though
2024-10-06 18:48:26 +0200 <davean> Franciman: Honestly though, this is a problem I think Haskell makes legitimately harder than other languages do though.
2024-10-06 18:48:42 +0200 <davean> There *are* ways to deal with it, but you have to deal with a lot of things you don't in others.
2024-10-06 18:48:45 +0200 <Inst> thanks tomsmeding, and thanks for being unerringly helpful and a strong contributor to the community
2024-10-06 18:49:02 +0200 <Inst> monochrom: the reason I worry about >>= leaking when it's explicitly used is because I love >>=
2024-10-06 18:49:54 +0200 <Inst> if you're not reusing the term, why bother with do; bar <- foo; baz bar when you can just foo >>= baz and be done with it?
2024-10-06 18:50:20 +0200 <Inst> there's a trade-off in expressivity for familiarity, there's tons of cases where using >>= directly can be more expressive
2024-10-06 18:51:15 +0200 <davean> I find I do both, depending on the details
2024-10-06 18:51:59 +0200 <Inst> there's folks on discourse who are fundamentalist in "fake python" style
2024-10-06 18:52:31 +0200 <Rembane> Inst: Are they all in on do-notation?
2024-10-06 18:52:49 +0200 <Inst> yeah
2024-10-06 18:53:19 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 18:53:20 +0200 <Inst> i'm more foo >>= bar when it's simpler, or foo; >>= bar; >>= baz when it better expresses the flow of your computation / program structure
2024-10-06 18:53:34 +0200 <Rembane> That seems reasonable
2024-10-06 18:53:42 +0200 <Rembane> I'm quite fond of (>=>)
2024-10-06 18:53:48 +0200 <Rembane> :t (>=>)
2024-10-06 18:53:49 +0200 <lambdabot> Monad m => (a -> m b) -> (b -> m c) -> a -> m c
2024-10-06 18:56:27 +0200 <Inst> that said (,,) <$> foo <*> bar <*> baz >>= qux probably goes too far
2024-10-06 18:56:59 +0200alp_(~alp@2001:861:e3d6:8f80:f5b0:cd1b:e895:cf8a)
2024-10-06 18:58:00 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-10-06 18:58:00 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 18:58:11 +0200 <davean> Inst: I'm confused on what a fundimentalist in fake python style means
2024-10-06 18:58:33 +0200 <dolio> What is the problem with real time stuff being difficult in Haskell, though? Not every tool has to be perfect for every job.
2024-10-06 18:58:40 +0200 <davean> Inst: >>= and <- says something different about programmer intent.
2024-10-06 18:58:48 +0200 <dolio> It's okay to use more than one language.
2024-10-06 18:58:51 +0200 <davean> dolio: who said there was a problem?
2024-10-06 18:58:56 +0200 <Inst> <- allows you to reuse the value
2024-10-06 18:59:12 +0200 <davean> Inst: says your thinking about that value specificly, not the computation at the very least.
2024-10-06 18:59:22 +0200 <dolio> Typically stuff like this is presented as a problem.
2024-10-06 18:59:37 +0200 <davean> dolio: I didn't think it was in this case ...
2024-10-06 18:59:39 +0200 <Inst> how is linear haskell working for people?
2024-10-06 18:59:48 +0200 <davean> people were talking about problem domains and ecosystem vs. language
2024-10-06 18:59:52 +0200 <davean> Inst: horrid
2024-10-06 18:59:56 +0200 <davean> for me at least
2024-10-06 19:00:15 +0200 <davean> I've never heard of anyone having successes with it.
2024-10-06 19:00:19 +0200 <Inst> Anduril's recent job posting is either them being exciting about a mundane job, moving to hardkill jammers, or actually working on linear accelerators (railguns)
2024-10-06 19:00:34 +0200raehik(~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 265 seconds)
2024-10-06 19:00:48 +0200 <Inst> for the last task you'd imagine they'd move to linear haskell to precisely control timings
2024-10-06 19:01:09 +0200 <davean> Inst: ... yah I think you're very wrong.
2024-10-06 19:01:37 +0200 <davean> having tried to use it, it doesn't touch the IO domain at all really. Never solved any of the problems required
2024-10-06 19:02:17 +0200 <Inst> that's a lot of haskell, no? Begging for someone to submit a pull request on Github
2024-10-06 19:03:21 +0200 <Inst> fundamentalist in fake python: simple haskell advocate who wants to get rid of explicit >>= and >> usage to make the codebase easier to approach
2024-10-06 19:03:26 +0200 <davean> I was really disapointed in the Linear Haskell stuff, these questions were brought up before merge, they dogged constantly and claimed they answered them while refusing to. Quite sad.
2024-10-06 19:03:46 +0200 <Inst> once again, it's that Haskell needs more funding and resources
2024-10-06 19:04:20 +0200 <davean> No, no, nothing requires refusing to answer a question and claiming you did
2024-10-06 19:04:34 +0200 <davean> You can for example, admit you don't have an answer yet
2024-10-06 19:04:51 +0200tabemann(~tabemann@2600:1700:7990:24e0:bc5d:8bdb:179f:73b1) (Remote host closed the connection)
2024-10-06 19:05:04 +0200tabemann(~tabemann@2600:1700:7990:24e0:8858:4365:4e70:4256)
2024-10-06 19:05:26 +0200 <Inst> ehhh, could be a cultural issue for where they're coming from?
2024-10-06 19:05:45 +0200 <Inst> like, they're desperate to get it merged, but definitely don't have the resources to develop properly, etc?
2024-10-06 19:06:12 +0200 <Inst> but they'd rather dodge rather than say: 'hi, if you're competent for working on GHC, plz halp"
2024-10-06 19:08:22 +0200 <Rembane> Did it result in any good papers?
2024-10-06 19:08:51 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 19:09:40 +0200 <Inst> from what I hear of the linear Haskell people
2024-10-06 19:09:53 +0200 <Inst> they're essentially: "we built stuff into GHc, everything else is the problem of the library makers"
2024-10-06 19:10:17 +0200athan(~athan@syn-098-153-145-140.biz.spectrum.com) athan
2024-10-06 19:10:19 +0200 <davean> You know ... except libraries can't patch theory
2024-10-06 19:10:45 +0200 <Rembane> Are we back in the libraries + language again?
2024-10-06 19:11:09 +0200 <Rembane> davean: Do you imply that the theory is broken? Or have I misunderstood you?
2024-10-06 19:11:39 +0200 <davean> Rembane: broken? No. The source of the issues using it? Yes
2024-10-06 19:12:49 +0200 <Rembane> davean: Got it!
2024-10-06 19:13:07 +0200 <dolio> I haven't looked closely, but the problem seems to be that it wasn't designed to address the usual, known uses of linear types.
2024-10-06 19:13:21 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-06 19:13:48 +0200ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en
2024-10-06 19:18:21 +0200 <davean> Rembane: Try writing like just a merge step of a merge sort with liner types, consider the edge cases.
2024-10-06 19:18:23 +0200 <davean> HAVE FUN!
2024-10-06 19:18:23 +0200 <dolio> So, like, maybe you could use linear types to design some methodology of using unsafe operations, and very carefully implement something on top of the unsafe operations that provided some kind of typical performance increase. But the linearity stuff is not inherently doing the things that perform better in known ways.
2024-10-06 19:18:48 +0200 <Rembane> davean: ^^
2024-10-06 19:18:57 +0200 <davean> Rembane: Some of the best Haskellers I know tries that, and as a team failed.
2024-10-06 19:19:09 +0200 <Rembane> davean: Oh. That sounds way too hard.
2024-10-06 19:20:24 +0200 <Inst> btw, why doesn't Haskell have dynamic vectors?
2024-10-06 19:20:43 +0200 <Inst> iirc the newbie rule of thumb is "prefer vectors unless you need laziness", but vector doesn't have O(1) cons
2024-10-06 19:20:54 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 19:21:06 +0200 <davean> ... you can't have O(1) cons
2024-10-06 19:21:09 +0200 <Rembane> Inst: Are you thinking of Data.Vector?
2024-10-06 19:21:35 +0200 <davean> You can sorta get close amortised, but that requires reusing memory
2024-10-06 19:21:48 +0200 <Inst> davean: you can define a bidirectional dynamic vector, amortized O(1) cons
2024-10-06 19:21:59 +0200 <int-e> Data.Seq is a thing too
2024-10-06 19:22:10 +0200 <Inst> yeah but iirc it's not based on bytearray, right?
2024-10-06 19:24:21 +0200 <int-e> of course not
2024-10-06 19:25:06 +0200 <Inst> Sequence is built on fingertrees
2024-10-06 19:25:55 +0200 <int-e> (Even when you consider amortized cost, persistence is a big obstacle to combining arrays and mutation. Okasaki-like tricks will work.)
2024-10-06 19:27:45 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-06 19:28:45 +0200athan(~athan@syn-098-153-145-140.biz.spectrum.com) (Quit: Konversation terminated!)
2024-10-06 19:28:49 +0200 <Inst> hmmm, you can just newtype vector for dynamic vectors, you don't need any additional information in order to implement a dynamic vector
2024-10-06 19:28:52 +0200 <davean> Sequence is WAY off vector performance.
2024-10-06 19:30:10 +0200 <int-e> right. vector is far worse for mutations :P
2024-10-06 19:30:36 +0200 <davean> not mutable vector, which is the only thing we have thats vector like.
2024-10-06 19:32:24 +0200 <int-e> But that's the thing... we want stay outside of IO/ST for as much as possible. And we have all these fusion frameworks which let us work with things like lists-as-mutable-vectors and often get good performance because they never actually materialize.
2024-10-06 19:32:54 +0200 <int-e> And this sidesteps many of the usual uses of dynamic vectors.
2024-10-06 19:33:01 +0200 <Inst> i'm curious, even JS has O(n) on shift
2024-10-06 19:33:15 +0200 <Inst> what's the tradeoff of bidirectional vs unidirectional dynamic arrays / lists / vectors?
2024-10-06 19:33:18 +0200lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 272 seconds)
2024-10-06 19:33:22 +0200 <Franciman> what is JS, Inst ?
2024-10-06 19:33:28 +0200 <int-e> ECMAScript
2024-10-06 19:33:28 +0200 <Inst> Javascript
2024-10-06 19:33:34 +0200 <Inst> EczemaScript ;)
2024-10-06 19:33:36 +0200 <Franciman> i don't know it
2024-10-06 19:33:45 +0200 <Inst> Python seems to have that as well
2024-10-06 19:33:55 +0200vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 252 seconds)
2024-10-06 19:34:02 +0200 <Franciman> davean: i see many thanks
2024-10-06 19:34:07 +0200 <Inst> you'd imagine they'd just use a bidirectional dynamic vector to appeal to their userbase
2024-10-06 19:35:41 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-10-06 19:36:06 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-06 19:37:02 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 19:38:41 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 19:40:13 +0200 <int-e> well, vector has O(1) uncons :P
2024-10-06 19:40:16 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Read error: Connection reset by peer)
2024-10-06 19:43:21 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-06 19:44:05 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-06 19:45:38 +0200saolsen(sid26430@id-26430.lymington.irccloud.com) saolsen
2024-10-06 19:46:15 +0200gmg(~user@user/gehmehgeh) gehmehgeh
2024-10-06 19:47:16 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2024-10-06 19:48:10 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection)
2024-10-06 19:50:19 +0200 <Inst> i'm really sick, like, my heart is failing, maybe just trying to rework the container system in Haskell is a good swansong
2024-10-06 19:50:29 +0200 <Inst> it actually seems pretty easy
2024-10-06 19:51:20 +0200 <Inst> you don't even need to "fix" foldable / traversable etc, just rename them
2024-10-06 19:51:34 +0200 <Inst> reduceL / reduceR instead of foldl / foldr, etc
2024-10-06 19:51:45 +0200LukeHoersten(~LukeHoers@user/lukehoersten) LukeHoersten
2024-10-06 19:52:00 +0200 <Inst> also unify the freaking maps over Set etc
2024-10-06 19:52:50 +0200 <geekosaur> have you ever looked at EdisonCore?
2024-10-06 19:53:42 +0200 <monochrom> foldl and foldr are already established names. LIke, even Scala goes with those names. If you change that, then you're just changing for the sake of changing.
2024-10-06 19:53:48 +0200 <davean> Oh I have looked at Edison :)
2024-10-06 19:54:16 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 19:54:21 +0200 <monochrom> You could argue over less widespread things like Foldable.
2024-10-06 19:54:43 +0200 <tomsmeding> dminuoso: fair :)
2024-10-06 19:57:43 +0200 <monochrom> If you're like "flatMap is a good name because that's what C# LINQ calls it", I can actually get on board with that. But in this case it is because Bart Jacobs already calls join "flat" so of course I support that. >:)
2024-10-06 19:58:45 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds)
2024-10-06 19:58:59 +0200 <Inst> monochrom: iirc Haskell's container story is a mess with overlapping names and the legendary >> length (undefined,undefined)
2024-10-06 19:59:17 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 19:59:21 +0200 <Inst> the idea of coming up with new names is that, if you want to rework Foldable etc, you don't create a new FAM problem
2024-10-06 19:59:36 +0200 <Inst> that said:
2024-10-06 19:59:36 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 20:01:09 +0200 <monochrom> The overlapping names are intentional. It's by design. The idea is if you switch from "import Data.MapBasedOnBST" to "import Data.MapBasedOnBPlusTree", say, then that's the only change you need, because both exports "lookup" and they mean the same thing.
2024-10-06 20:02:01 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 20:02:20 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 20:02:34 +0200 <Inst> Vector at least has a length :: Vector a -> Int that ummm, creates name clashes with Prelude.length
2024-10-06 20:03:01 +0200 <monochrom> Vector was just before Foldable came along.
2024-10-06 20:03:09 +0200robertm(robertm@lattice.rojoma.com) (Quit: WeeChat 3.8)
2024-10-06 20:03:36 +0200 <Inst> and iirc most of the containers are intended to be imported qualified
2024-10-06 20:03:52 +0200 <monochrom> Yes because of the reason I said.
2024-10-06 20:04:01 +0200 <Inst> bleh, I'll just while away the time trying to replicate the Vector interface with a Dynamic vector
2024-10-06 20:04:11 +0200 <Inst> maybe someday people will do an API change and people will CRYYYYYY
2024-10-06 20:04:16 +0200 <Inst> and we won't have that problem
2024-10-06 20:04:30 +0200 <davean> I think you're the only one that sees it as a problem
2024-10-06 20:04:45 +0200 <int-e> well evidently it's not rising to the level of a problem
2024-10-06 20:04:49 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 20:05:08 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 20:05:34 +0200robertm(robertm@lattice.rojoma.com) robertm
2024-10-06 20:05:50 +0200 <int-e> "Why doesn't Haskell have XXX" usually comes down to three things. 1) it's too hard, or 2) it's not in desparate demand, or 3) there are viable alternatives that are good enough
2024-10-06 20:05:50 +0200 <Inst> fff, is hoogle down again?
2024-10-06 20:06:14 +0200 <monochrom> Personally I find "Map.insert" and "V.insert" very clarifying.
2024-10-06 20:06:46 +0200 <Inst> and the Python guys are happy with their NotAsBadAsJuliaSinceTheresMillionsOfEyeballs.len() functions
2024-10-06 20:06:53 +0200 <int-e> I guess there's 4) it's not a great fit for a lazy functional programming language
2024-10-06 20:06:58 +0200 <int-e> this one is a mix of 3 and 4.
2024-10-06 20:07:10 +0200 <monochrom> Two lines of "import X qualified; import X (X)" is annoying. But it's also only 1% of my time.
2024-10-06 20:07:17 +0200 <Inst> iirc people complain about polymorphic do as well
2024-10-06 20:07:33 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 20:07:37 +0200 <Inst> especially since it's a pain in the ass to provide a proper type annotation to it
2024-10-06 20:07:37 +0200 <int-e> "people"
2024-10-06 20:07:39 +0200 <davean> what is polymorphic do?
2024-10-06 20:07:52 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 20:07:58 +0200 <Inst> do is polymorphic over monads and applicatives (with -XApplicativeDo)
2024-10-06 20:08:02 +0200 <Inst> you can't see the type of the do block
2024-10-06 20:08:17 +0200 <davean> there is no type of a do block ... its syntax ...
2024-10-06 20:08:35 +0200 <davean> thats like asking what the type of whitespace is
2024-10-06 20:08:58 +0200 <int-e> davean: well that's a very important question when you overload it Stroustrup style
2024-10-06 20:09:02 +0200 <monochrom> I thought people complained not having ApplicativeDo when it was not available.
2024-10-06 20:09:04 +0200 <Inst> actually, do blocks don't even require monads or applicatives
2024-10-06 20:09:15 +0200 <Inst> see the do bulleting fanclub
2024-10-06 20:09:27 +0200 <davean> right, its *syntax*
2024-10-06 20:09:30 +0200 <Inst> do pi is valid
2024-10-06 20:09:45 +0200 <geekosaur> why does this bother you?
2024-10-06 20:09:51 +0200 <Inst> no, but some people apparently inline do blocks without type annotations and then complain that it's unreadable
2024-10-06 20:09:51 +0200 <int-e> we can still shoot programmers who, err, do that.
2024-10-06 20:09:51 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 20:10:14 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-06 20:10:21 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 20:10:39 +0200 <Inst> i'm just saying that it's related to me complaining about how you don't have container polymorphism due to all the annotations required to use functions from different container libraries / modules
2024-10-06 20:10:40 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 20:10:49 +0200 <Inst> in the sense that having too much polymorphism can be a bad thing
2024-10-06 20:11:05 +0200 <davean> there is no polymorphism here.
2024-10-06 20:11:14 +0200 <davean> do doesn't have type stuff, its syntax ...
2024-10-06 20:11:56 +0200 <Inst> well, the point is, you can insert do within the definition of an IO value that's actually a Maybe computation and it gets confusing
2024-10-06 20:12:26 +0200 <monochrom> I do that. But I also add a comment "this is in Maybe".
2024-10-06 20:12:27 +0200 <davean> You can do any sort of calculation in IO, so?
2024-10-06 20:12:32 +0200 <Inst> abc <- pure $ do ...
2024-10-06 20:13:01 +0200 <monochrom> I also expect educated people to see what I'm doing, even without that comment.
2024-10-06 20:13:08 +0200 <int-e> there's also this... and you can argue at length whether it's a use or an abuse: https://paste.tomsmeding.com/eLPAX2o3
2024-10-06 20:13:45 +0200 <davean> I don't see the use there, but theres nothing special going on?
2024-10-06 20:13:56 +0200 <monochrom> I am wary of harping over "unreadable" as if it's an political ideological religious slogan. (un)readable to which target audience?
2024-10-06 20:14:08 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds)
2024-10-06 20:14:22 +0200 <int-e> or maybe more to the point, https://paste.tomsmeding.com/EkhhpQ4l
2024-10-06 20:14:26 +0200 <monochrom> If I'm writing Haskell code I'm not obliged to make it comprehensible to Python people. Or vice versa.
2024-10-06 20:14:53 +0200 <monochrom> I'm only obliged to write Haskell code for Haskell people, Python code for Python people.
2024-10-06 20:15:11 +0200ljdarj(~Thunderbi@user/ljdarj) (Remote host closed the connection)
2024-10-06 20:15:23 +0200 <Inst> so what's wrong with having a single cMap that does a fmap-like action over any container?
2024-10-06 20:15:30 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2024-10-06 20:15:38 +0200 <Franciman> haskell people come in various levels...
2024-10-06 20:15:45 +0200 <Franciman> of expertise
2024-10-06 20:15:47 +0200 <monochrom> Even COBOL requires English education to read.
2024-10-06 20:15:54 +0200 <geekosaur> Inst, that's where FOldable and Traversable come in
2024-10-06 20:16:14 +0200 <Inst> wait, does foldable now come with a fmap like action?
2024-10-06 20:16:15 +0200 <tomsmeding> Inst: what would its type be?
2024-10-06 20:16:16 +0200 <int-e> don't say "unreadable" when you mean "ugly"
2024-10-06 20:16:33 +0200 <geekosaur> (f)map is Traversable
2024-10-06 20:16:36 +0200 <tomsmeding> note that Functor (with fmap) is a superclass of Traversable
2024-10-06 20:16:42 +0200 <Inst> Container c => (a -> b) -> c a -> c b
2024-10-06 20:16:47 +0200 <tomsmeding> :t fmap
2024-10-06 20:16:48 +0200 <lambdabot> Functor f => (a -> b) -> f a -> f b
2024-10-06 20:17:14 +0200 <tomsmeding> % :i Traversable
2024-10-06 20:17:14 +0200 <yahb2> type Traversable :: (* -> *) -> Constraint ; class (Functor t, Foldable t) => Traversable t where ; traverse :: Applicative f => (a -> f b) -> t a -> f (t b) ; sequenceA :: Applicative f => t (...
2024-10-06 20:17:14 +0200 <Inst> ehhh, honestly, probably just traverse f . toList solves all the problems I'm whining about
2024-10-06 20:17:23 +0200 <geekosaur> honestly, all I am seeing here is "it's not done the way I prefer from other languages, this!must!be!fixed!!"
2024-10-06 20:17:28 +0200 <tomsmeding> the toList is pointless in that expression
2024-10-06 20:17:35 +0200 <tomsmeding> unless what you want out is indeed a list :p
2024-10-06 20:17:37 +0200 <Inst> tomsmeding: Set a
2024-10-06 20:17:45 +0200 <tomsmeding> oh I see
2024-10-06 20:17:48 +0200 <tomsmeding> well, then I guess that, yes
2024-10-06 20:17:57 +0200 <Inst> Set isn't a functor, can't be made into a functor
2024-10-06 20:18:15 +0200 <tomsmeding> there have been proposals for a modified Functor class that admits additional constraints on fmap
2024-10-06 20:18:18 +0200tromp(~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
2024-10-06 20:18:26 +0200 <monochrom> For that, you can go back to: <geekosaur> have you ever looked at EdisonCore?
2024-10-06 20:18:33 +0200 <tomsmeding> but it's generally considered not worth it for the sheer carnage of backwards incompatibility it would incur
2024-10-06 20:18:53 +0200 <geekosaur> it's on Hackage but unlikely to make base
2024-10-06 20:19:12 +0200 <geekosaur> (look for "indexed functors"/"indexed monads"/etc.)
2024-10-06 20:19:22 +0200 <monochrom> probably also unmaintained.
2024-10-06 20:19:44 +0200 <monochrom> And that actually tells you a lot about the economics of how many people actually care.
2024-10-06 20:19:50 +0200 <tomsmeding> geekosaur: if you mean this https://hackage.haskell.org/package/indexed-0.1.3/docs/Data-Functor-Indexed.html , that's not quite the same, is it?
2024-10-06 20:20:26 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection)
2024-10-06 20:20:27 +0200 <geekosaur> iirc it is
2024-10-06 20:20:42 +0200 <monochrom> Oh let me just tell you jokes about reviews that roast, in closing.
2024-10-06 20:21:04 +0200 <tomsmeding> I was thinking of class Functor' f where { type FConstr f ; fmap' :: (FConstr a, FConstr b) => (a -> b) -> f a -> f b }
2024-10-06 20:21:18 +0200 <Inst> monochrom: survivorship bias?
2024-10-06 20:21:19 +0200 <monochrom> If you want to politely write a negative book review, you can write "this book fills a much needed gap". I think someone actually did that.
2024-10-06 20:21:24 +0200 <tomsmeding> or any of the zillion variations on this idea, without a clearly most-general option that is workable p
2024-10-06 20:21:26 +0200 <tomsmeding> * :p
2024-10-06 20:21:46 +0200 <monochrom> Likewise for polite negative thesis/paper review. "solves a much needed problem".
2024-10-06 20:22:09 +0200 <monochrom> or "solution in want of a problem"
2024-10-06 20:22:22 +0200 <Inst> monochrom: how often do people parse those phrases incorrectly?
2024-10-06 20:22:31 +0200 <int-e> monochrom: "smells like blockchain"
2024-10-06 20:22:33 +0200Sgeo(~Sgeo@user/sgeo) Sgeo
2024-10-06 20:22:38 +0200 <tomsmeding> "solution in want of a problem" is multiple times more explicit and clear than those other phrases :p
2024-10-06 20:23:20 +0200 <monochrom> Oh let me also tell you about a book I read about writing recommendation letters when you don't want to.
2024-10-06 20:23:48 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-06 20:24:08 +0200 <monochrom> If an ex-convict asks you for a recommendation letter, and you must not refuse because like they're gangsters, you can write "this is person with a strong conviction"
2024-10-06 20:24:22 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 20:24:49 +0200 <geekosaur> iirc indexed typeclasses solve a more general problem, which makes them a little cumbersome compared to just letting you have a Functor-like class over Set
2024-10-06 20:25:16 +0200 <monochrom> In another circumstance, if it's a coworker who has had affairs with most people in the office, you can write "they know everyone here well" ("know" in the Bible sense haha)
2024-10-06 20:25:18 +0200Instgiggles
2024-10-06 20:25:28 +0200 <Inst> to the first claim
2024-10-06 20:25:32 +0200 <Inst> not the second
2024-10-06 20:26:01 +0200 <monochrom> There are a lot more I don't remember. Basically jokes on how to write impossible recommendations.
2024-10-06 20:26:12 +0200 <tomsmeding> geekosaur: looking at that IxFunctor, I really don't see how adding more type variables to f makes Set any more likely to be an instance of this class :p
2024-10-06 20:26:24 +0200 <tomsmeding> 'f j k' being preserved by the imap method
2024-10-06 20:26:50 +0200 <tomsmeding> this kind of indexing seems to be for monads where the bind operation changes the monad type
2024-10-06 20:27:26 +0200 <tomsmeding> which is also a useful generalisation of the FAM typeclasses, but an orthogonal one
2024-10-06 20:27:30 +0200 <Inst> i guess the reason i'm moaning about containesr tbh is that it feels like something interesting, intellectual, and within my ability to make a contribution, as you've said, a solution in search of a (social) problem, as opposed to an individual one
2024-10-06 20:27:41 +0200 <tomsmeding> geekosaur: https://hackage.haskell.org/package/indexed-0.1.3/docs/Control-Monad-Indexed.html#t:IxMonad
2024-10-06 20:28:43 +0200 <geekosaur> mm, this is a bit beyond my CT knowledge but my understanding, to the extent that I have it, is that if you can derive a "pseudonatural transformation" for e.g. Functor+Ord, you can e.g. make an indexed Functor of it
2024-10-06 20:29:01 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-10-06 20:29:20 +0200 <tomsmeding> I don't know the CT either; I just see that that IxFunctor class simply adds two unused 'j' and 'k' parameters to 'f'
2024-10-06 20:29:28 +0200 <geekosaur> changing type is another kind of pseudonatural transformation you can use
2024-10-06 20:29:32 +0200 <tomsmeding> (ignoring all the other classes in the package)
2024-10-06 20:30:00 +0200 <geekosaur> unfortunately that package didn't bother to document its IxFunctor, so who even knows what that's supposed to mean
2024-10-06 20:30:18 +0200ash3en(~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en)
2024-10-06 20:30:23 +0200 <tomsmeding> well, my point is that whatever it's supposed to mean, it _cannot_ express my Functor' :p
2024-10-06 20:31:05 +0200 <tomsmeding> because there are no constraints on 'a' and 'b'
2024-10-06 20:31:32 +0200 <geekosaur> I think in the case of Set (or Ord constraint) it captures the input and output types so they don't have to obey "doesn't alter structure" except in an abstract sense (hence "pseudonatural transformation"); but you'd need to ask a CT wonk to be certain
2024-10-06 20:31:39 +0200 <tomsmeding> (and I do have a vague suspicion of what it's supposed to mean, by looking at IxMonad, but that's beside the point in this case)
2024-10-06 20:32:16 +0200 <tomsmeding> just to be certain we're talking about the same thing: class IxFunctor f where imap :: (a -> b) -> f j k a -> f j k b
2024-10-06 20:32:36 +0200 <davean> tomsmeding: They're not unused.
2024-10-06 20:32:38 +0200 <tomsmeding> the input and output type _of this fmap-like operation_ are just a and b
2024-10-06 20:32:43 +0200 <monochrom> My perspective is you need a theorem-stating language. fmap_Set :: (Ord a, Ord b) => (a -> b) -> (assurance that that function is monotonic) -> Set a -> Set b should be fine. Alternatively, (Ord a, Ord b) => (MonotonicFunction a b) -> Set a -> Set b
2024-10-06 20:32:50 +0200 <tomsmeding> davean: they are kept constant, which is indeed a use I guess
2024-10-06 20:33:12 +0200 <tomsmeding> monochrom: that's just if you want the fmap to be linear time :p
2024-10-06 20:33:16 +0200 <davean> tomsmeding: yes, EXACTLY
2024-10-06 20:33:27 +0200 <davean> Consider vs. Monad
2024-10-06 20:33:32 +0200 <tomsmeding> I know, I saw IxMonad
2024-10-06 20:33:39 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection)
2024-10-06 20:33:43 +0200 <tomsmeding> but how does keeping j and k constant help in implementing my Functor' from above?
2024-10-06 20:33:53 +0200 <tomsmeding> i.e. the "Set should be an instance of this class somehow"
2024-10-06 20:34:11 +0200 <davean> it doesn't it shows why said is impossible.
2024-10-06 20:34:11 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-06 20:34:22 +0200 <tomsmeding> which is what I was trying to argue to geekosaur?
2024-10-06 20:34:24 +0200 <davean> Set *can't* be a member of functor, and thats the proof why
2024-10-06 20:34:43 +0200 <davean> Set specificly violates what a functor is
2024-10-06 20:34:49 +0200 <tomsmeding> I was trying to argue that this IxFunctor extends Functor in an orthogonal way that doesn't solve the "Set can't be an instance of this class" 'problem'
2024-10-06 20:35:13 +0200 <tomsmeding> and geekosaur was claiming that it does, hedged in uncertainty that I fully respect
2024-10-06 20:35:48 +0200 <tomsmeding> (i.e. I'm not trying to prove geekosaur wrong, I'm trying to make sure that I'm not wrong by investigating the incompatibility between my mental model and what geekosaur writes)
2024-10-06 20:37:32 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection)
2024-10-06 20:37:48 +0200 <geekosaur> remembering that what I wrote may be not merely out in left field, but somewhere in the parking lot, because I barely understand half the stuff involved
2024-10-06 20:37:55 +0200 <tomsmeding> of course :p
2024-10-06 20:38:03 +0200 <tomsmeding> it's not like I understand the CT
2024-10-06 20:38:22 +0200 <geekosaur> but as I said, I think it enables you to replace "must preserve order" to "must preserve `Ord` constraint"
2024-10-06 20:38:44 +0200 <tomsmeding> but then there should be a constraint somewhere in the type, right? A constraint on a and/or b, at the very least
2024-10-06 20:38:51 +0200 <geekosaur> I'm not quite sure how, but that's usually true when CT is involved 😛
2024-10-06 20:38:52 +0200 <tomsmeding> regardless of where that constraint comes from
2024-10-06 20:38:54 +0200 <tomsmeding> and there is none :p
2024-10-06 20:39:35 +0200 <tomsmeding> oh, I realise that I am making one assumption about the "intended meaning" of this IxFunctor class: that 'a' and 'b' are element types of the container thing
2024-10-06 20:39:49 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 20:39:55 +0200 <tomsmeding> but I guess that's a reasonable one
2024-10-06 20:40:36 +0200 <tomsmeding> especially when comparing this indexed FAM hierarchy with the normal hierarchy, and noting that they are equivalent if you forget the j/k type indices everywhere
2024-10-06 20:40:51 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net)
2024-10-06 20:41:04 +0200 <tomsmeding> i/j/k, I guess
2024-10-06 20:41:05 +0200ghoulguy(glguy@libera/staff/glguy) (Quit: Quit)
2024-10-06 20:42:06 +0200glguy(glguy@libera/staff/glguy) glguy
2024-10-06 20:42:45 +0200glguyghoulguy
2024-10-06 20:43:18 +0200 <tomsmeding> under that assumption: the only additional information IxFunctor has about f over Functor, is that f apparently has two additional type arguments, called j and k here. IxFunctor's imap keeps j and k constant, and doesn't use them in some other way, so even if j and k encode some info about Ord somehow, it's unused
2024-10-06 20:44:03 +0200 <tomsmeding> now I guess you could encode the Ord requirement by putting it in the element types: something like: data WithOrd a = Ord a => WithOrd a
2024-10-06 20:44:19 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 20:44:20 +0200 <monochrom> Is it related to this? size :: Set a -> Int (with or without Ord a) fails to be a natural transformation: size . fmap_Set (const ()) ≠ size
2024-10-06 20:44:34 +0200 <tomsmeding> hm, I guess that still doesn't really help, because b is fully polymorphic
2024-10-06 20:44:46 +0200 <geekosaur> right, the only thing I'm coming up with is that Haskell can't express it properly given the constraint, so you need to pass in the types for some reason
2024-10-06 20:45:01 +0200 <geekosaur> because when it comes down to it, Haskell isn't good at CT
2024-10-06 20:45:02 +0200 <monochrom> To be sure, I don't know how to argue why it's a problem. :)
2024-10-06 20:45:16 +0200 <tomsmeding> monochrom: Set is not a Functor, for sure, but there is a Functor-like class (that does not correspond to what CT calls a "functor") that Set can implement; it's the Functor' that I gave before
2024-10-06 20:45:56 +0200 <tomsmeding> let me pull up my Functor' suggestion again for reference: class Functor' f where { type FConstr f ; fmap' :: (FConstr a, FConstr b) => (a -> b) -> f a -> f b }
2024-10-06 20:46:08 +0200 <tomsmeding> this _can_ be implemented for Set by setting FConstr Set = Ord
2024-10-06 20:46:26 +0200morb(~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection)
2024-10-06 20:46:53 +0200 <tomsmeding> of course this is very unsatisfyingly not-the-most-general-in-this-direction, so theoretically-minded haskellers will balk at this
2024-10-06 20:55:00 +0200 <haskellbridge> <aaron> tomsmeding: The argument function needs to be a monotonic or it violates the functor laws
2024-10-06 20:55:15 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 20:55:29 +0200 <tomsmeding> aaron: not if the implementation of this fmap' re-sorts the input using the Ord b dictionary
2024-10-06 20:55:39 +0200 <tomsmeding> not wanting that is an efficiency concern :p
2024-10-06 20:55:49 +0200 <haskellbridge> <aaron> If it removes duplicates based on that "Ord" then it does violate the laws
2024-10-06 20:56:14 +0200 <tomsmeding> right, so this Functor' would have less laws than normal Functor
2024-10-06 20:56:18 +0200JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2024-10-06 20:56:23 +0200 <tomsmeding> so it does not represent a category-theoretical functor
2024-10-06 20:56:24 +0200 <haskellbridge> <aaron> What laws would it have
2024-10-06 20:56:38 +0200 <tomsmeding> good question :D
2024-10-06 20:56:47 +0200 <tomsmeding> I guess identity, and nothing else
2024-10-06 20:57:04 +0200 <haskellbridge> <aaron> Sounds pretty useless then
2024-10-06 20:57:09 +0200 <tomsmeding> I'm not saying we should have this Functor'
2024-10-06 20:57:13 +0200 <haskellbridge> <aaron> The functor composition law is pretty important :)
2024-10-06 20:57:42 +0200 <tomsmeding> it was a vehicle in two arguments: 1. suggestions exist for generalising Functor in a way that Set can be an instance, but no spectacularly good ideas have been offered, and 2. IxFunctor cannot do this
2024-10-06 20:57:50 +0200 <tomsmeding> I agree
2024-10-06 20:58:07 +0200 <tomsmeding> and I didn't even realise now that it loses the composition law
2024-10-06 20:59:32 +0200 <haskellbridge> <aaron> You can generalize functor to work with arbitrary categories, and then Set can be a functor from the category of ordered types (where the arrows are monotonic functions)
2024-10-06 21:00:00 +0200caconym(~caconym@user/caconym) (Quit: bye)
2024-10-06 21:00:05 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds)
2024-10-06 21:00:17 +0200 <tomsmeding> right, but I imagine it will be quite cumbersome to express the idea of a "monotonic function" in haskell
2024-10-06 21:00:38 +0200caconym(~caconym@user/caconym) caconym
2024-10-06 21:00:48 +0200 <tomsmeding> (impracticality is one of the ways in which a suggestion for a generalisation of Functor can fail to catch on)
2024-10-06 21:01:00 +0200 <haskellbridge> <aaron> Best you can do is use a newtype and promise not to make any invalid values of it
2024-10-06 21:01:06 +0200 <tomsmeding> ew
2024-10-06 21:01:20 +0200_d0t(~{-d0t-}@user/-d0t-/x-7915216) (Ping timeout: 272 seconds)
2024-10-06 21:01:45 +0200 <haskellbridge> <aaron> The problem with generalizing functor more has to do with polykinds
2024-10-06 21:02:23 +0200 <haskellbridge> <aaron> It's painful to try to define things like the identity functor "Identity :: k -> k" in haskell
2024-10-06 21:03:19 +0200 <tomsmeding> because the "result kind" of the kind of a data constructor must be Type (or more precisely TYPE r for some RuntimeRep r)?
2024-10-06 21:03:41 +0200LukeHoersten(~LukeHoers@user/lukehoersten) (Read error: Connection reset by peer)
2024-10-06 21:04:00 +0200 <haskellbridge> <aaron> Right, you can't define "Identity :: k -> k" as a newtype. There are ways to work around this, but they're not pretty
2024-10-06 21:04:00 +0200 <tomsmeding> er, s/data constructor/type constructor of a data type/
2024-10-06 21:04:23 +0200LukeHoersten(~LukeHoers@user/lukehoersten) LukeHoersten
2024-10-06 21:06:03 +0200 <monochrom> newtype MonotonicFunction a b = It'sMonotonicIPromise (a -> b)
2024-10-06 21:06:04 +0200_d0t(~{-d0t-}@user/-d0t-/x-7915216) {-d0t-}
2024-10-06 21:06:27 +0200 <tomsmeding> acme-dont vibes
2024-10-06 21:06:47 +0200 <haskellbridge> <aaron> Also functor requires a quantified constraint "forall a. Ob a => Ob (f a)", and you end up needing to manually help the constraint solver
2024-10-06 21:07:16 +0200 <tomsmeding> aaron: in the generalisation to arbitrary categories, you mean?
2024-10-06 21:07:42 +0200 <haskellbridge> <aaron> yes
2024-10-06 21:08:07 +0200 <haskellbridge> <aaron> In theory QuantifiedConstraints would solve that, but last I checked it had various limitations/bugs which made it not good enough for this
2024-10-06 21:08:25 +0200AlexNoo_(~AlexNoo@178.34.151.120)
2024-10-06 21:08:38 +0200 <tomsmeding> I can imagine, iirc the language that QuantifiedConstraints creates cannot be fully inferred decidably
2024-10-06 21:08:48 +0200 <tomsmeding> (but I may be wrong there)
2024-10-06 21:09:38 +0200 <haskellbridge> <aaron> I think you may be wrong, but idk
2024-10-06 21:09:43 +0200 <tomsmeding> probably :p
2024-10-06 21:09:51 +0200 <tomsmeding> at the very least it's not easy
2024-10-06 21:10:31 +0200 <Lears> aaron: Can you demonstrate composition breaking for `Functor' Set`?
2024-10-06 21:10:44 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) merijn
2024-10-06 21:11:03 +0200 <tomsmeding> Lears: I guess (==) does not imply actual equality?
2024-10-06 21:11:04 +0200AlexZenon(~alzenon@178.34.162.53) (Ping timeout: 265 seconds)
2024-10-06 21:11:28 +0200 <haskellbridge> <aaron> Lears: what tomsmeding said. "(==)" is only equivalence
2024-10-06 21:11:41 +0200AlexNoo(~AlexNoo@178.34.162.53) (Ping timeout: 255 seconds)
2024-10-06 21:11:44 +0200 <tomsmeding> so the fmapped function may distinguish between elements in the "in-between" state that Set cannot distinguish between, and thus eliminates
2024-10-06 21:12:37 +0200 <haskellbridge> <aaron> So really the function doesn't need to be monotonic, it just needs to respect "(==)"
2024-10-06 21:12:42 +0200tomsmeding. o O ( https://hackage.haskell.org/package/base-4.14.1.0/docs/src/Data.Semigroup.html#line-298 )
2024-10-06 21:13:14 +0200 <Lears> aaron: `Eq` has extensionality.
2024-10-06 21:13:50 +0200 <tomsmeding> Arg is a data type in base whose Eq instance ignores a significant amount of information
2024-10-06 21:14:05 +0200 <tomsmeding> if base can do this without a big warning, then surely it's valid?
2024-10-06 21:14:24 +0200 <Lears> No, `Arg` is just a lawless convenience.
2024-10-06 21:14:54 +0200 <tomsmeding> oh hah, yes, the extensionality law
2024-10-06 21:15:08 +0200JuanDaugherty(~juan@user/JuanDaugherty) (Quit: JuanDaugherty)
2024-10-06 21:15:11 +0200 <tomsmeding> "instances are _encouraged_ to follow these properties:"
2024-10-06 21:15:17 +0200 <tomsmeding> does that make it a law?
2024-10-06 21:15:29 +0200 <Lears> cowardly words
2024-10-06 21:15:36 +0200 <tomsmeding> :D
2024-10-06 21:15:36 +0200merijn(~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-10-06 21:15:49 +0200 <monochrom> I think of Arg as a very practical tool that breaks some laws but has just cause. In theoretical discussions, we should count it as non-instances.
2024-10-06 21:17:17 +0200 <tomsmeding> but yes, assuming extensionality is a law of Eq, then an O(n log n) fmap' for Set would satisfy the functor composition law
2024-10-06 21:17:43 +0200 <geekosaur> I'm tempted to say the real instances are Min (Arg …) and the like; Arg itself is just a helper that's incomplete by itself?
2024-10-06 21:17:45 +0200 <tomsmeding> (well, assuming all of the "encouraged properties" of Eq are indeed laws
2024-10-06 21:17:56 +0200 <tomsmeding> )
2024-10-06 21:18:51 +0200 <monochrom> Yeah I'm speaking imprecisely such as "(->) is a monad" :)