2024-10-06 00:02:01 +0200 | gorignak | (~gorignak@user/gorignak) (Quit: quit) |
2024-10-06 00:02:32 +0200 | gorignak | (~gorignak@user/gorignak) gorignak |
2024-10-06 00:05:06 +0200 | gvg_ | (~dcd@user/gvg) (Ping timeout: 252 seconds) |
2024-10-06 00:10:01 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 00:14:27 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 00:19:41 +0200 | fmira | (~user@user/fmira) (Quit: fmira) |
2024-10-06 00:25:29 +0200 | merijn | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 00:32:44 +0200 | son0p | (~ff@186.121.110.81) son0p |
2024-10-06 00:34:56 +0200 | EvanR_ | (~EvanR@user/evanr) EvanR |
2024-10-06 00:34:56 +0200 | EvanR | (~EvanR@user/evanr) (Remote host closed the connection) |
2024-10-06 00:40:53 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 00:41:09 +0200 | spew | (~spew@2806:2a0:1522:8662::edd7) spew |
2024-10-06 00:41:52 +0200 | andrewboltachev | (~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 +0200 | EvanR_ | EvanR |
2024-10-06 00:45:19 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 00:48:43 +0200 | supercode | (~supercode@user/supercode) supercode |
2024-10-06 00:48:59 +0200 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2024-10-06 00:56:17 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 00:58:01 +0200 | mhatta | (~mhatta@www21123ui.sakura.ne.jp) (Remote host closed the connection) |
2024-10-06 00:58:59 +0200 | fmira | (~user@user/fmira) fmira |
2024-10-06 01:00:22 +0200 | fmira | (~user@user/fmira) (Client Quit) |
2024-10-06 01:00:35 +0200 | fmira | (~user@user/fmira) fmira |
2024-10-06 01:01:17 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-10-06 01:01:59 +0200 | gvg | (~dcd@user/gvg) gvg |
2024-10-06 01:07:29 +0200 | anpad | (~pandeyan@user/anpad) (Ping timeout: 255 seconds) |
2024-10-06 01:08:41 +0200 | mhatta | (~mhatta@www21123ui.sakura.ne.jp) |
2024-10-06 01:09:17 +0200 | anpad | (~pandeyan@user/anpad) anpad |
2024-10-06 01:11:43 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 01:13:26 +0200 | mantraofpie | (~mantraofp@user/mantraofpie) (Ping timeout: 260 seconds) |
2024-10-06 01:16:08 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 01:27:08 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 01:29:24 +0200 | malte | (~malte@mal.tc) (Remote host closed the connection) |
2024-10-06 01:30:25 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
2024-10-06 01:30:38 +0200 | malte | (~malte@mal.tc) malte |
2024-10-06 01:31:31 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-10-06 01:38:25 +0200 | troojg | (~troojg@user/troojg) troojg |
2024-10-06 01:42:32 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 01:44:29 +0200 | Me-me | (~me-me@kc.randomserver.name) (Changing host) |
2024-10-06 01:44:29 +0200 | Me-me | (~me-me@user/me-me) Me-me |
2024-10-06 01:47:01 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-06 01:48:24 +0200 | raehik | (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 252 seconds) |
2024-10-06 01:52:59 +0200 | paddymahoney | (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) |
2024-10-06 01:57:33 +0200 | acidjnk | (~acidjnk@p200300d6e72cfb25cc2baddb8e5dbc54.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
2024-10-06 01:57:59 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 02:00:28 +0200 | malte | (~malte@mal.tc) (Remote host closed the connection) |
2024-10-06 02:02:29 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-10-06 02:02:47 +0200 | malte | (~malte@mal.tc) malte |
2024-10-06 02:03:18 +0200 | alp_ | (~alp@2001:861:e3d6:8f80:313e:6d49:466c:22b1) (Ping timeout: 245 seconds) |
2024-10-06 02:04:44 +0200 | weary-traveler | (~user@user/user363627) user363627 |
2024-10-06 02:11:04 +0200 | identity | (~identity@user/ZharMeny) (Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.60)) |
2024-10-06 02:13:24 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 02:17:44 +0200 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Ping timeout: 252 seconds) |
2024-10-06 02:17:53 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-10-06 02:24:55 +0200 | supercode | (~supercode@user/supercode) (Quit: Client closed) |
2024-10-06 02:28:24 +0200 | andrewboltachev | (~andrey@178.141.123.3) (Ping timeout: 246 seconds) |
2024-10-06 02:28:48 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 02:32:03 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2024-10-06 02:33:32 +0200 | califax | (~califax@user/califx) califx |
2024-10-06 02:33:34 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-10-06 02:38:33 +0200 | gorignak | (~gorignak@user/gorignak) (Quit: quit) |
2024-10-06 02:39:04 +0200 | gorignak | (~gorignak@user/gorignak) gorignak |
2024-10-06 02:44:27 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 02:48:54 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 02:54:55 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 02:59:29 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-06 03:03:50 +0200 | user_ | (~user@user/fmira) fmira |
2024-10-06 03:06:36 +0200 | fmira | (~user@user/fmira) (Ping timeout: 260 seconds) |
2024-10-06 03:10:26 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 03:14:13 +0200 | gorignak | (~gorignak@user/gorignak) (Quit: quit) |
2024-10-06 03:14:56 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 03:25:51 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 03:29:44 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2024-10-06 03:30:15 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 03:41:17 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 03:41:19 +0200 | troojg | (~troojg@user/troojg) (Ping timeout: 252 seconds) |
2024-10-06 03:45:53 +0200 | merijn | (~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 +0200 | gorignak | (~gorignak@user/gorignak) gorignak |
2024-10-06 03:56:51 +0200 | merijn | (~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 +0200 | gorignak | (~gorignak@user/gorignak) (Remote host closed the connection) |
2024-10-06 04:00:32 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2024-10-06 04:00:54 +0200 | califax | (~califax@user/califx) califx |
2024-10-06 04:01:30 +0200 | merijn | (~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 +0200 | gorignak | (~gorignak@user/gorignak) gorignak |
2024-10-06 04:05:03 +0200 | op_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 +0200 | op_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 +0200 | gorignak | (~gorignak@user/gorignak) (Remote host closed the connection) |
2024-10-06 04:10:45 +0200 | nadja | (~dequbed@banana-new.kilobyte22.de) (Ping timeout: 265 seconds) |
2024-10-06 04:10:56 +0200 | nadja | (~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 +0200 | merijn | (~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 +0200 | td_ | (~td@i53870937.versanet.de) (Ping timeout: 276 seconds) |
2024-10-06 04:18:10 +0200 | td_ | (~td@i5387093A.versanet.de) |
2024-10-06 04:19:28 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 04:19:55 +0200 | dyniec | (~dyniec@dybiec.info) (Quit: WeeChat 4.2.2) |
2024-10-06 04:32:05 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 04:35:10 +0200 | JuanDaugherty | (~juan@user/JuanDaugherty) JuanDaugherty |
2024-10-06 04:37:08 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-10-06 04:42:34 +0200 | terrorjack4 | (~terrorjac@static.48.15.202.116.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat) |
2024-10-06 04:43:44 +0200 | Cale | (~cale@2607:fea8:995f:f126:15c3:35a5:81ac:187c) (Read error: Connection reset by peer) |
2024-10-06 04:44:18 +0200 | terrorjack4 | (~terrorjac@2a01:4f8:c17:dc9f::) terrorjack |
2024-10-06 04:49:25 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 04:50:51 +0200 | athan | (~athan@syn-098-153-145-140.biz.spectrum.com) (Quit: Konversation terminated!) |
2024-10-06 04:53:56 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 05:06:08 +0200 | superstar64 | (~superstar@2600:1700:ed80:50a0:d250:99ff:fe2c:53c4) (Quit: Leaving) |
2024-10-06 05:06:15 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 05:10:54 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-10-06 05:17:35 +0200 | troojg | (~troojg@user/troojg) troojg |
2024-10-06 05:22:12 +0200 | forell_ | (~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Quit: ZNC - https://znc.in) |
2024-10-06 05:22:28 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 05:23:04 +0200 | forell | (~forell@user/forell) forell |
2024-10-06 05:27:07 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-10-06 05:28:36 +0200 | spew | (~spew@2806:2a0:1522:8662::edd7) (Quit: spew) |
2024-10-06 05:36:37 +0200 | gorignak | (~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 +0200 | user_ | (~user@user/fmira) (Quit: user_) |
2024-10-06 05:37:04 +0200 | <EvanR> | user_ error |
2024-10-06 05:37:19 +0200 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2024-10-06 05:37:24 +0200 | fmira | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 05:40:39 +0200 | gorignak | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 05:44:54 +0200 | Lord_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 +0200 | Lord_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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 05:59:11 +0200 | athan | (~athan@syn-098-153-145-140.biz.spectrum.com) athan |
2024-10-06 06:04:00 +0200 | merijn | (~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 +0200 | JuanDaugherty | (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
2024-10-06 06:15:39 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 06:20:12 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 06:26:30 +0200 | gorignak | (~gorignak@user/gorignak) gorignak |
2024-10-06 06:33:12 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 06:38:06 +0200 | youthlic | (~Thunderbi@user/youthlic) (Remote host closed the connection) |
2024-10-06 06:38:10 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-10-06 06:40:22 +0200 | youthlic | (~Thunderbi@user/youthlic) youthlic |
2024-10-06 06:42:04 +0200 | gorignak | (~gorignak@user/gorignak) (Remote host closed the connection) |
2024-10-06 06:43:49 +0200 | gorignak | (~gorignak@user/gorignak) gorignak |
2024-10-06 06:46:01 +0200 | falafel | (~falafel@198.101.119.52) falafel |
2024-10-06 06:46:33 +0200 | troojg | (~troojg@user/troojg) (Remote host closed the connection) |
2024-10-06 06:47:32 +0200 | finn_elija | (~finn_elij@user/finn-elija/x-0085643) finn_elija |
2024-10-06 06:47:32 +0200 | FinnElija | (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
2024-10-06 06:47:32 +0200 | finn_elija | FinnElija |
2024-10-06 06:49:23 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 06:52:44 +0200 | gorignak | (~gorignak@user/gorignak) (Remote host closed the connection) |
2024-10-06 06:52:53 +0200 | falafel | (~falafel@198.101.119.52) (Ping timeout: 244 seconds) |
2024-10-06 06:53:28 +0200 | gorignak | (~gorignak@user/gorignak) gorignak |
2024-10-06 06:53:50 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 07:00:34 +0200 | wanted | (~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 +0200 | gorignak | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 07:11:00 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-10-06 07:18:18 +0200 | troojg | (~troojg@user/troojg) troojg |
2024-10-06 07:23:42 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 07:25:03 +0200 | paddymahoney | (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 265 seconds) |
2024-10-06 07:25:46 +0200 | athan | (~athan@syn-098-153-145-140.biz.spectrum.com) (Quit: Konversation terminated!) |
2024-10-06 07:28:21 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-06 07:30:30 +0200 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds) |
2024-10-06 07:32:25 +0200 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2024-10-06 07:32:35 +0200 | paddymahoney | (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) |
2024-10-06 07:37:48 +0200 | spew | (~spew@201.141.99.170) spew |
2024-10-06 07:38:55 +0200 | paddymahoney | (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 252 seconds) |
2024-10-06 07:39:07 +0200 | pavonia | (~user@user/siracusa) (Quit: Bye!) |
2024-10-06 07:40:33 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 07:41:03 +0200 | wanted | (~wanted@2.219.56.221) |
2024-10-06 07:45:21 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-10-06 07:45:27 +0200 | gorignak | (~gorignak@user/gorignak) gorignak |
2024-10-06 07:51:50 +0200 | paddymahoney | (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) |
2024-10-06 07:52:59 +0200 | spew | (~spew@201.141.99.170) (Quit: spew) |
2024-10-06 07:56:04 +0200 | rosco | (~rosco@183.171.107.70) rosco |
2024-10-06 07:56:16 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 07:57:10 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2024-10-06 07:57:19 +0200 | youthlic | (~Thunderbi@user/youthlic) (Quit: youthlic) |
2024-10-06 08:05:05 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-06 08:07:54 +0200 | xff0x | (~xff0x@2405:6580:b080:900:858f:f870:90c:1b39) (Ping timeout: 246 seconds) |
2024-10-06 08:08:13 +0200 | youthlic | (~Thunderbi@user/youthlic) youthlic |
2024-10-06 08:08:13 +0200 | youthlic | (~Thunderbi@user/youthlic) (Client Quit) |
2024-10-06 08:10:21 +0200 | paddymahoney | (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 246 seconds) |
2024-10-06 08:13:45 +0200 | xff0x | (~xff0x@2405:6580:b080:900:943:dffd:9430:e374) |
2024-10-06 08:18:26 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 08:22:56 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 08:28:29 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 08:36:17 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 08:39:41 +0200 | adanwan_ | (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 260 seconds) |
2024-10-06 08:40:54 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 08:48:37 +0200 | Square | (~Square@user/square) Square |
2024-10-06 08:49:35 +0200 | Square | (~Square@user/square) (Client Quit) |
2024-10-06 08:50:42 +0200 | Square | (~Square@user/square) Square |
2024-10-06 08:54:30 +0200 | merijn | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-10-06 09:00:00 +0200 | caconym | (~caconym@user/caconym) (Quit: bye) |
2024-10-06 09:00:02 +0200 | tt123109783243 | (~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) (Quit: The Lounge - https://thelounge.chat) |
2024-10-06 09:00:35 +0200 | caconym | (~caconym@user/caconym) caconym |
2024-10-06 09:03:25 +0200 | tt123109783243 | (~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) tt1231 |
2024-10-06 09:09:40 +0200 | euphores | (~SASL_euph@user/euphores) (Quit: Leaving.) |
2024-10-06 09:12:11 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 09:12:33 +0200 | troojg | (~troojg@user/troojg) (Ping timeout: 276 seconds) |
2024-10-06 09:14:42 +0200 | econo_ | (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
2024-10-06 09:16:30 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-10-06 09:19:01 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
2024-10-06 09:22:14 +0200 | euphores | (~SASL_euph@user/euphores) euphores |
2024-10-06 09:24:07 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) wootehfoot |
2024-10-06 09:25:38 +0200 | alp_ | (~alp@2001:861:e3d6:8f80:3afa:9370:887b:74f7) |
2024-10-06 09:28:03 +0200 | merijn | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-10-06 09:33:05 +0200 | peterbecich | (~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 +0200 | hiecaq | (~hiecaq@user/hiecaq) (Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.4)) |
2024-10-06 09:38:31 +0200 | alp_ | (~alp@2001:861:e3d6:8f80:3afa:9370:887b:74f7) (Ping timeout: 264 seconds) |
2024-10-06 09:38:39 +0200 | hiecaq | (~hiecaq@user/hiecaq) hiecaq |
2024-10-06 09:40:39 +0200 | hiecaq | (~hiecaq@user/hiecaq) (Client Quit) |
2024-10-06 09:42:41 +0200 | CiaoSen | (~Jura@2a05:5800:464:f400:ca4b:d6ff:fec1:99da) CiaoSen |
2024-10-06 09:43:22 +0200 | acidjnk | (~acidjnk@p200300d6e72cfb9670d70e28f87691c4.dip0.t-ipconnect.de) acidjnk |
2024-10-06 09:44:09 +0200 | rosco | (~rosco@183.171.107.70) (Quit: Lost terminal) |
2024-10-06 09:45:10 +0200 | sawilagar | (~sawilagar@user/sawilagar) sawilagar |
2024-10-06 09:45:22 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 09:45:28 +0200 | andrewboltachev | (~andrey@178.141.123.3) andrewboltachev |
2024-10-06 09:49:45 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 09:58:02 +0200 | hiecaq | (~hiecaq@user/hiecaq) hiecaq |
2024-10-06 10:02:20 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 10:03:37 +0200 | lxsameer | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-10-06 10:13:22 +0200 | artu | (~artu@2601:600:8181:9b00::14) artu |
2024-10-06 10:18:50 +0200 | weary-traveler | (~user@user/user363627) (Remote host closed the connection) |
2024-10-06 10:19:49 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 10:24:18 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 10:24:43 +0200 | ubert | (~Thunderbi@178.165.166.66.wireless.dyn.drei.com) ubert |
2024-10-06 10:25:08 +0200 | ubert | (~Thunderbi@178.165.166.66.wireless.dyn.drei.com) (Remote host closed the connection) |
2024-10-06 10:28:42 +0200 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-10-06 10:29:09 +0200 | CiaoSen | (~Jura@2a05:5800:464:f400:ca4b:d6ff:fec1:99da) (Ping timeout: 248 seconds) |
2024-10-06 10:29:18 +0200 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
2024-10-06 10:35:31 +0200 | acidjnk | (~acidjnk@p200300d6e72cfb9670d70e28f87691c4.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
2024-10-06 10:37:20 +0200 | merijn | (~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 +0200 | acidjnk | (~acidjnk@p200300d6e72cfb9628aff41673680d4c.dip0.t-ipconnect.de) acidjnk |
2024-10-06 10:41:33 +0200 | Digitteknohippie | (~user@user/digit) Digit |
2024-10-06 10:41:49 +0200 | Digit | (~user@user/digit) (Ping timeout: 260 seconds) |
2024-10-06 10:41:54 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 10:43:30 +0200 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en) |
2024-10-06 10:44:06 +0200 | paddymahoney | (~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 +0200 | Digitteknohippie | (~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 +0200 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 276 seconds) |
2024-10-06 10:50:19 +0200 | CrunchyFlakes | (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
2024-10-06 10:50:51 +0200 | artu | (~artu@2601:600:8181:9b00::14) (Quit: WeeChat 4.4.2) |
2024-10-06 10:50:52 +0200 | Digit | (~user@user/digit) Digit |
2024-10-06 10:51:44 +0200 | sawilagar | (~sawilagar@user/sawilagar) sawilagar |
2024-10-06 10:54:40 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 10:55:55 +0200 | fmira | (~user@user/fmira) (Quit: fmira) |
2024-10-06 10:59:01 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-06 10:59:28 +0200 | CrunchyFlakes | (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) |
2024-10-06 11:01:26 +0200 | alp_ | (~alp@2001:861:e3d6:8f80:e21f:8806:679b:6ae1) |
2024-10-06 11:05:03 +0200 | andrewboltachev | (~andrey@178.141.123.3) (Quit: Leaving.) |
2024-10-06 11:07:53 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 11:12:39 +0200 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2024-10-06 11:12:42 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-10-06 11:16:27 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-10-06 11:25:19 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 11:27:21 +0200 | alp_ | (~alp@2001:861:e3d6:8f80:e21f:8806:679b:6ae1) (Ping timeout: 252 seconds) |
2024-10-06 11:27:26 +0200 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) ash3en |
2024-10-06 11:29:51 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 11:31:57 +0200 | ljdarj | (~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 +0200 | rosco | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 11:46:04 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 11:53:19 +0200 | alp_ | (~alp@2001:861:e3d6:8f80:6ee5:dea:457b:d9d9) |
2024-10-06 11:57:05 +0200 | CrunchyFlakes | (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds) |
2024-10-06 11:58:50 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 11:59:08 +0200 | xff0x | (~xff0x@2405:6580:b080:900:943:dffd:9430:e374) (Ping timeout: 245 seconds) |
2024-10-06 11:59:59 +0200 | emmanuelux | (~emmanuelu@user/emmanuelux) emmanuelux |
2024-10-06 12:00:35 +0200 | ash3en | (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Read error: Connection reset by peer) |
2024-10-06 12:01:38 +0200 | CrunchyFlakes | (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) |
2024-10-06 12:03:24 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 12:11:01 +0200 | cyphase | (~cyphase@user/cyphase) (Ping timeout: 248 seconds) |
2024-10-06 12:13:11 +0200 | alp_ | (~alp@2001:861:e3d6:8f80:6ee5:dea:457b:d9d9) (Ping timeout: 252 seconds) |
2024-10-06 12:14:39 +0200 | gmg | (~user@user/gehmehgeh) (Quit: Leaving) |
2024-10-06 12:16:54 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 12:21:16 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 12:23:10 +0200 | xff0x | (~xff0x@2405:6580:b080:900:e9cd:7fb:f9ec:b14e) |
2024-10-06 12:23:56 +0200 | Tuplanolla | (~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 +0200 | son0p | (~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 +0200 | alp_ | (~alp@2001:861:e3d6:8f80:e481:13d5:7eb4:8f9d) |
2024-10-06 12:33:01 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 12:34:03 +0200 | cyphase | (~cyphase@user/cyphase) cyphase |
2024-10-06 12:37:44 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-10-06 12:38:35 +0200 | Smiles | (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 +0200 | alp_ | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 12:48:50 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) () |
2024-10-06 12:50:30 +0200 | CiaoSen | (~Jura@2a05:5800:464:f400:ca4b:d6ff:fec1:99da) CiaoSen |
2024-10-06 12:50:48 +0200 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2024-10-06 12:53:10 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 13:03:26 +0200 | mrmr155334346318 | (~mrmr@user/mrmr) (Quit: Bye, See ya later!) |
2024-10-06 13:04:36 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 13:09:17 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-10-06 13:09:18 +0200 | rosco | (~rosco@183.171.72.164) (Ping timeout: 252 seconds) |
2024-10-06 13:18:07 +0200 | alp_ | (~alp@2001:861:e3d6:8f80:7d60:3680:b7b6:7b2d) |
2024-10-06 13:22:14 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 13:26:54 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 13:29:13 +0200 | mrmr155334346318 | (~mrmr@user/mrmr) mrmr |
2024-10-06 13:38:49 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 13:40:32 +0200 | alp_ | (~alp@2001:861:e3d6:8f80:7d60:3680:b7b6:7b2d) (Ping timeout: 272 seconds) |
2024-10-06 13:41:01 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-10-06 13:43:12 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-10-06 13:47:03 +0200 | rvalue | (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
2024-10-06 13:47:34 +0200 | rvalue | (~rvalue@user/rvalue) rvalue |
2024-10-06 13:56:38 +0200 | merijn | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 14:01:54 +0200 | CiaoSen | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 14:14:33 +0200 | xff0x | (~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 +0200 | xff0x | (~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 +0200 | merijn | (~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 +0200 | identity | (~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 +0200 | Digitteknohippie | (~user@user/digit) Digit |
2024-10-06 14:29:41 +0200 | Digit | (~user@user/digit) (Ping timeout: 248 seconds) |
2024-10-06 14:29:52 +0200 | merijn | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-10-06 14:38:50 +0200 | mantraofpie | (~mantraofp@user/mantraofpie) mantraofpie |
2024-10-06 14:45:54 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 14:47:10 +0200 | alp_ | (~alp@2001:861:e3d6:8f80:9437:9b0:9ccc:15a4) |
2024-10-06 14:47:42 +0200 | Smiles | (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2024-10-06 14:47:50 +0200 | sawilagar | (~sawilagar@user/sawilagar) (Remote host closed the connection) |
2024-10-06 14:48:15 +0200 | sawilagar | (~sawilagar@user/sawilagar) sawilagar |
2024-10-06 14:50:30 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 14:56:07 +0200 | merijn | (~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 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-10-06 15:14:00 +0200 | ljdarj | (~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 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 15:16:45 +0200 | ljdarj | (~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 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 15:19:27 +0200 | ljdarj | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 15:25:36 +0200 | Achylles | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 15:36:07 +0200 | Guest6817 | (~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 +0200 | merijn | (~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 +0200 | tromp | (~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 +0200 | merijn | (~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 +0200 | Digitteknohippie | Digit |
2024-10-06 15:55:46 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 15:59:03 +0200 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds) |
2024-10-06 16:01:06 +0200 | vanishingideal | (~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 +0200 | merijn | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-10-06 16:13:31 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 16:13:49 +0200 | Achylles | (~Achylles@45.182.57.66) (Quit: Leaving) |
2024-10-06 16:13:51 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 16:16:16 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 16:16:36 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 16:18:51 +0200 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds) |
2024-10-06 16:19:01 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 16:19:20 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 16:21:45 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 16:21:57 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 16:22:04 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 16:24:30 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 16:24:49 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 16:26:52 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-10-06 16:27:11 +0200 | Guest6817 | (~Guest6817@103.182.161.2) (Quit: Client closed) |
2024-10-06 16:27:16 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 16:27:35 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 16:27:56 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-10-06 16:30:00 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 16:30:19 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 16:31:05 +0200 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2024-10-06 16:32:43 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 16:33:03 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 16:35:27 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 16:35:47 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 16:37:23 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 16:39:04 +0200 | sawilagar | (~sawilagar@user/sawilagar) (Remote host closed the connection) |
2024-10-06 16:39:28 +0200 | sawilagar | (~sawilagar@user/sawilagar) sawilagar |
2024-10-06 16:42:06 +0200 | mantraofpie | (~mantraofp@user/mantraofpie) (Ping timeout: 260 seconds) |
2024-10-06 16:42:07 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds) |
2024-10-06 16:44:37 +0200 | alp_ | (~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 +0200 | vanishingideal | (~vanishing@user/vanishingideal) (Read error: Connection reset by peer) |
2024-10-06 16:52:56 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 16:54:14 +0200 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2024-10-06 16:57:22 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 16:59:18 +0200 | vanishingideal | (~vanishing@user/vanishingideal) (Remote host closed the connection) |
2024-10-06 16:59:35 +0200 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2024-10-06 17:08:21 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 17:12:53 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-10-06 17:13:56 +0200 | spew | (~spew@201.141.99.170) spew |
2024-10-06 17:21:24 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 17:23:01 +0200 | sawilagar | (~sawilagar@user/sawilagar) (Ping timeout: 252 seconds) |
2024-10-06 17:25:58 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 17:36:49 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 17:40:09 +0200 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds) |
2024-10-06 17:41:37 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-06 17:42:19 +0200 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2024-10-06 17:45:28 +0200 | malte | (~malte@mal.tc) (Remote host closed the connection) |
2024-10-06 17:46:32 +0200 | bwe | (~bwe@2a01:4f8:1c1c:4878::2) (Remote host closed the connection) |
2024-10-06 17:46:59 +0200 | bwe | (~bwe@2a01:4f8:1c1c:4878::2) bwe |
2024-10-06 17:48:11 +0200 | JuanDaugherty | (~juan@user/JuanDaugherty) JuanDaugherty |
2024-10-06 17:48:18 +0200 | bwe | (~bwe@2a01:4f8:1c1c:4878::2) (Remote host closed the connection) |
2024-10-06 17:50:02 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 17:50:21 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 17:52:14 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 17:52:46 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 17:53:05 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 17:53:51 +0200 | malte | (~malte@mal.tc) malte |
2024-10-06 17:55:15 +0200 | sourcetarius | (~sourcetar@user/sourcetarius) sourcetarius |
2024-10-06 17:55:34 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 17:55:53 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 17:56:12 +0200 | bwe | (~bwe@2a01:4f8:1c1c:4878::2) bwe |
2024-10-06 17:57:40 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
2024-10-06 17:58:18 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 17:58:37 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 17:58:45 +0200 | supercode | (~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 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 18:01:21 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 18:03:52 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 18:04:11 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 18:06:13 +0200 | sawilagar | (~sawilagar@user/sawilagar) sawilagar |
2024-10-06 18:06:35 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 18:06:54 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 18:07:32 +0200 | pavonia | (~user@user/siracusa) siracusa |
2024-10-06 18:07:57 +0200 | merijn | (~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 +0200 | vanishingideal | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-06 18:13:31 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 18:13:50 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 18:14:13 +0200 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2024-10-06 18:14:16 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-10-06 18:16:30 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 18:16:49 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 18:18:45 +0200 | mud | (~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 +0200 | Smiles | (uid551636@id-551636.lymington.irccloud.com) Smiles |
2024-10-06 18:22:23 +0200 | merijn | (~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 +0200 | ljdarj | (~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 +0200 | mud | (~mud@user/kadoban) kadoban |
2024-10-06 18:24:36 +0200 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds) |
2024-10-06 18:25:36 +0200 | vanishingideal | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-10-06 18:27:00 +0200 | michalz | (~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 +0200 | JuanDaugherty | (~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 +0200 | rvalue | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 18:38:02 +0200 | rvalue | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-10-06 18:42:59 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-10-06 18:43:14 +0200 | raehik | (~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 +0200 | vanishingideal | (~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 +0200 | merijn | (~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 +0200 | alp_ | (~alp@2001:861:e3d6:8f80:f5b0:cd1b:e895:cf8a) |
2024-10-06 18:58:00 +0200 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2024-10-06 18:58:00 +0200 | merijn | (~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 +0200 | raehik | (~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 +0200 | tabemann | (~tabemann@2600:1700:7990:24e0:bc5d:8bdb:179f:73b1) (Remote host closed the connection) |
2024-10-06 19:05:04 +0200 | tabemann | (~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 +0200 | merijn | (~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 +0200 | athan | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-06 19:13:48 +0200 | ash3en | (~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 +0200 | merijn | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-06 19:28:45 +0200 | athan | (~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 +0200 | lxsameer | (~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 +0200 | vanishingideal | (~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 +0200 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2024-10-06 19:36:06 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-06 19:37:02 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 19:38:41 +0200 | merijn | (~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 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Read error: Connection reset by peer) |
2024-10-06 19:43:21 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
2024-10-06 19:44:05 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-06 19:45:38 +0200 | saolsen | (sid26430@id-26430.lymington.irccloud.com) saolsen |
2024-10-06 19:46:15 +0200 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2024-10-06 19:47:16 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-10-06 19:48:10 +0200 | morb | (~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 +0200 | LukeHoersten | (~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 +0200 | merijn | (~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 +0200 | merijn | (~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 +0200 | ljdarj | (~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 +0200 | ljdarj | (~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 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 20:02:20 +0200 | ljdarj | (~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 +0200 | robertm | (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 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 20:05:08 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 20:05:34 +0200 | robertm | (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 +0200 | ljdarj | (~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 +0200 | ljdarj | (~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 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 20:10:14 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-06 20:10:21 +0200 | ljdarj | (~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 +0200 | ljdarj | (~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 +0200 | merijn | (~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 +0200 | ljdarj | (~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 +0200 | ljdarj | (~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 +0200 | tromp | (~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 +0200 | morb | (~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 +0200 | Sgeo | (~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 +0200 | morb | (~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 +0200 | merijn | (~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 +0200 | Inst | giggles |
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 +0200 | merijn | (~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 +0200 | ash3en | (~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 +0200 | morb | (~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 +0200 | morb | (~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 +0200 | morb | (~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 +0200 | merijn | (~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 +0200 | morb | (~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 +0200 | ghoulguy | (glguy@libera/staff/glguy) (Quit: Quit) |
2024-10-06 20:42:06 +0200 | glguy | (glguy@libera/staff/glguy) glguy |
2024-10-06 20:42:45 +0200 | glguy | ghoulguy |
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 +0200 | merijn | (~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 +0200 | morb | (~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 +0200 | merijn | (~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 +0200 | JuanDaugherty | (~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 +0200 | caconym | (~caconym@user/caconym) (Quit: bye) |
2024-10-06 21:00:05 +0200 | merijn | (~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 +0200 | caconym | (~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 +0200 | LukeHoersten | (~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 +0200 | LukeHoersten | (~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 +0200 | AlexNoo_ | (~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 +0200 | merijn | (~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 +0200 | AlexZenon | (~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 +0200 | AlexNoo | (~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 +0200 | tomsmeding | . 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 +0200 | JuanDaugherty | (~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 +0200 | merijn | (~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" :) |
2024-10-06 21:20:16 +0200 | mud | (~mud@user/kadoban) (Quit: quit) |
2024-10-06 21:20:30 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
2024-10-06 21:20:50 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2024-10-06 21:21:02 +0200 | Smiles | (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2024-10-06 21:21:26 +0200 | AlexZenon | (~alzenon@178.34.151.120) |
2024-10-06 21:22:40 +0200 | tzh | (~tzh@c-76-115-131-146.hsd1.or.comcast.net) tzh |
2024-10-06 21:23:41 +0200 | <haskellbridge> | <aaron> Lears: wasn't aware of that |
2024-10-06 21:23:55 +0200 | mud | (~mud@user/kadoban) kadoban |
2024-10-06 21:24:07 +0200 | califax | (~califax@user/califx) (Remote host closed the connection) |
2024-10-06 21:24:22 +0200 | califax | (~califax@user/califx) califx |
2024-10-06 21:24:22 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
2024-10-06 21:25:23 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 21:26:36 +0200 | <haskellbridge> | <aaron> tomsmeding: the issue with QuantifiedConstraints was that it didn't work with either fundeps or type families |
2024-10-06 21:29:12 +0200 | morb | (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 272 seconds) |
2024-10-06 21:29:50 +0200 | <Lears> | aaron: There's an easy workaround for type families: you just make a "newtype class" with `class TF a => C a; instance TF a => C a`. |
2024-10-06 21:30:08 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
2024-10-06 21:30:59 +0200 | <haskellbridge> | <aaron> Lears: think the issue was when a type family is an argument, e.g. "forall a. Ob (Dom f) a => Ob (Cod f) (f a)" where "Dom" and "Cod" are type families |
2024-10-06 21:31:07 +0200 | <tomsmeding> | I recall Edsko (I think) writing somewhere that he wasn't quite sure why that workaround was not built into GHC |
2024-10-06 21:31:24 +0200 | AlexNoo_ | AlexNoo |
2024-10-06 21:31:28 +0200 | <tomsmeding> | oof that looks like a tricky QC for sure |
2024-10-06 21:34:41 +0200 | <haskellbridge> | <aaron> I don't see why it shouldn't work. Type families should be allowed in the head as long as they don't reference the quantified variables (or more generally, as long as the head is injective in the quantified variables) |
2024-10-06 21:35:01 +0200 | <haskellbridge> | <aaron> but that's not what was implemented |
2024-10-06 21:36:06 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2024-10-06 21:38:22 +0200 | <Lears> | Pointless restrictions are very annoying, but you can still work around it with `class Ob (Dom f) a => ObDom f a; class Ob (Cod f) a => ObCod f a`. |
2024-10-06 21:40:24 +0200 | <haskellbridge> | <aaron> I think the solver still ends up requiring manual help when using the constraint then, which is the problem we're trying to solve. Could be wrong though, I should try it again |
2024-10-06 21:40:41 +0200 | L29Ah | (~L29Ah@wikipedia/L29Ah) L29Ah |
2024-10-06 21:40:48 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 21:42:12 +0200 | pie_ | (~pie_bnc@user/pie/x-2818909) () |
2024-10-06 21:42:26 +0200 | pie_ | (~pie_bnc@user/pie/x-2818909) __ |
2024-10-06 21:42:51 +0200 | <Inst> | once again, I'm an imbecile |
2024-10-06 21:43:11 +0200 | <Inst> | that said, there's still a lacuna |
2024-10-06 21:43:42 +0200 | <Inst> | Vector has to be O(n) cons because of immutable data, that's why AndrasKovac's library (last maintained in 2017) focuses on mutable vectors |
2024-10-06 21:43:48 +0200 | <Inst> | *Kovacs |
2024-10-06 21:43:54 +0200 | ethantwardy | (user@user/ethantwardy) (Ping timeout: 260 seconds) |
2024-10-06 21:44:49 +0200 | <monochrom> | Even with mutable arrays, that is, in C and Java etc., cons is still not great. Only amortized O(1), not worst-case O(1). |
2024-10-06 21:45:34 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-10-06 21:45:39 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
2024-10-06 21:46:07 +0200 | <monochrom> | And Python does a hybrid thing (list of arrays) to try to be the best of both worlds but you can also force it into worst of both worlds. |
2024-10-06 21:47:40 +0200 | <stefan-__> | any idea why GHC's profiling system creates weird cost centers? e.g. according to https://42dots.de/ghcprofview-01.png 53% of the individual time is spent in lines 374-391 in the module https://gist.github.com/dozed/affa3fc39410c20d13a3e466ce2795d0#file-xeno8a-hs-L374-L391 which is a let expression |
2024-10-06 21:47:46 +0200 | <monochrom> | This is why programmers can always benefit from a "theoretical" CS education. |
2024-10-06 21:48:11 +0200 | <stefan-__> | (I am using "-fprof-auto") |
2024-10-06 21:48:11 +0200 | <Inst> | I'm trying to figure out whether you can use linear functions via import without having -XLinearHaskell |
2024-10-06 21:48:29 +0200 | <Inst> | define programmer :) |
2024-10-06 21:48:48 +0200 | <Inst> | the only plus side is that no one is using %%. |
2024-10-06 21:51:06 +0200 | <Inst> | or .%% |
2024-10-06 21:52:33 +0200 | ethantwardy | (user@user/ethantwardy) ethantwardy |
2024-10-06 21:53:36 +0200 | gmg | (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
2024-10-06 21:56:14 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 21:57:43 +0200 | [exa] | (~exa@user/exa/x-3587197) (Quit: WeeChat 3.0) |
2024-10-06 21:58:54 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-10-06 22:00:15 +0200 | nckx | nckhexen |
2024-10-06 22:01:15 +0200 | euphores | (~SASL_euph@user/euphores) (Ping timeout: 246 seconds) |
2024-10-06 22:01:30 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-10-06 22:02:28 +0200 | zetef | (~quassel@5.14.128.142) zetef |
2024-10-06 22:03:01 +0200 | [exa] | (~exa@user/exa/x-3587197) [exa] |
2024-10-06 22:06:40 +0200 | target_i | (~target_i@user/target-i/x-6023099) target_i |
2024-10-06 22:07:06 +0200 | <Inst> | hmmm, that's interesting |
2024-10-06 22:07:25 +0200 | <Inst> | i can compose linear functions in haskell with just ordinary . |
2024-10-06 22:07:47 +0200 | euphores | (~SASL_euph@user/euphores) euphores |
2024-10-06 22:10:51 +0200 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2024-10-06 22:11:44 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 22:16:13 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
2024-10-06 22:17:42 +0200 | <Inst> | whoops, ghci error, running tests, this doesn't happen, score |
2024-10-06 22:24:29 +0200 | zetef | (~quassel@5.14.128.142) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
2024-10-06 22:25:07 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) justsomeguy |
2024-10-06 22:26:23 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 22:29:41 +0200 | wootehfoot | (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
2024-10-06 22:30:38 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
2024-10-06 22:33:11 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-10-06 22:34:19 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds) |
2024-10-06 22:36:28 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) justsomeguy |
2024-10-06 22:38:26 +0200 | EvanR | (~EvanR@user/evanr) (Remote host closed the connection) |
2024-10-06 22:38:29 +0200 | EvanR_ | (~EvanR@user/evanr) EvanR |
2024-10-06 22:39:02 +0200 | spew | (~spew@201.141.99.170) (Quit: spew) |
2024-10-06 22:40:40 +0200 | Square | (~Square@user/square) (Quit: Leaving) |
2024-10-06 22:41:47 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 22:42:08 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 255 seconds) |
2024-10-06 22:42:37 +0200 | michalz | (~michalz@185.246.207.200) (Remote host closed the connection) |
2024-10-06 22:43:49 +0200 | weary-traveler | (~user@user/user363627) user363627 |
2024-10-06 22:44:08 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
2024-10-06 22:46:09 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-06 22:46:30 +0200 | andrewboltachev | (~andrey@178.141.123.3) andrewboltachev |
2024-10-06 22:57:14 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 23:02:13 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
2024-10-06 23:11:09 +0200 | athan | (~athan@syn-098-153-145-140.biz.spectrum.com) athan |
2024-10-06 23:12:51 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 23:12:56 +0200 | gmg | (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
2024-10-06 23:15:00 +0200 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2024-10-06 23:18:12 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
2024-10-06 23:24:15 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) LukeHoersten |
2024-10-06 23:24:35 +0200 | tromp | (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
2024-10-06 23:25:59 +0200 | zetef | (~quassel@5.14.128.142) zetef |
2024-10-06 23:26:04 +0200 | zetef | (~quassel@5.14.128.142) (Client Quit) |
2024-10-06 23:26:34 +0200 | troojg | (~troojg@user/troojg) troojg |
2024-10-06 23:27:11 +0200 | <Inst> | hmmm, my linear haskell friend likes the idea of linear-haskell specific combinators |
2024-10-06 23:27:33 +0200 | <Inst> | so you can do linear haskell without having -XLinearTypes on, and with linearity being explicit through the use of the combinators |
2024-10-06 23:28:15 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 23:29:40 +0200 | artu | (~artu@2601:600:8181:9b00::14) artu |
2024-10-06 23:33:10 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
2024-10-06 23:33:17 +0200 | andrewboltachev | (~andrey@178.141.123.3) (Quit: Leaving.) |
2024-10-06 23:34:42 +0200 | artu | (~artu@2601:600:8181:9b00::14) (Quit: WeeChat 4.4.2) |
2024-10-06 23:34:46 +0200 | artu_ | (artu@2600:3c01::f03c:92ff:fecc:1d32) |
2024-10-06 23:35:55 +0200 | LukeHoersten | (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2024-10-06 23:39:22 +0200 | target_i | (~target_i@user/target-i/x-6023099) (Quit: leaving) |
2024-10-06 23:43:41 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |
2024-10-06 23:46:54 +0200 | neuroevolutus | (~neuroevol@146.70.211.110) neuroevolutus |
2024-10-06 23:48:02 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
2024-10-06 23:49:44 +0200 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6) |
2024-10-06 23:52:41 +0200 | artu_ | (artu@2600:3c01::f03c:92ff:fecc:1d32) (Remote host closed the connection) |
2024-10-06 23:59:07 +0200 | merijn | (~merijn@204-220-045-062.dynamic.caiway.nl) merijn |