Logs on 2024-10-06 (liberachat/#haskell)
| 00:00:28 | × | malte quits (~malte@mal.tc) (Remote host closed the connection) |
| 00:02:29 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 00:02:47 | → | malte joins (~malte@mal.tc) |
| 00:03:18 | × | alp_ quits (~alp@2001:861:e3d6:8f80:313e:6d49:466c:22b1) (Ping timeout: 245 seconds) |
| 00:04:44 | → | weary-traveler joins (~user@user/user363627) |
| 00:11:04 | × | identity quits (~identity@user/ZharMeny) (Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.60)) |
| 00:13:24 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 00:17:44 | × | Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Ping timeout: 252 seconds) |
| 00:17:53 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
| 00:24:55 | × | supercode quits (~supercode@user/supercode) (Quit: Client closed) |
| 00:28:24 | × | andrewboltachev quits (~andrey@178.141.123.3) (Ping timeout: 246 seconds) |
| 00:28:48 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 00:32:03 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 00:33:32 | → | califax joins (~califax@user/califx) |
| 00:33:34 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 00:38:33 | × | gorignak quits (~gorignak@user/gorignak) (Quit: quit) |
| 00:39:04 | → | gorignak joins (~gorignak@user/gorignak) |
| 00:44:27 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 00:48:54 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 00:54:55 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 00:59:29 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 01:03:50 | → | user_ joins (~user@user/fmira) |
| 01:06:36 | × | fmira quits (~user@user/fmira) (Ping timeout: 260 seconds) |
| 01:10:26 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 01:14:13 | × | gorignak quits (~gorignak@user/gorignak) (Quit: quit) |
| 01:14:56 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 01:25:51 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 01:29:44 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 01:30:15 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 01:41:17 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 01:41:19 | × | troojg quits (~troojg@user/troojg) (Ping timeout: 252 seconds) |
| 01:45:53 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
| 01:49:34 | <L29Ah> | https://www.wired.com/story/neo-nazis-flee-telegram-encrypted-app-simplex/ haskell went to the masses |
| 01:55:20 | → | gorignak joins (~gorignak@user/gorignak) |
| 01:56:51 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 01:57:56 | <EvanR> | but does it use blockchain |
| 01:58:01 | <EvanR> | otherwise, literally unusable |
| 01:59:21 | × | gorignak quits (~gorignak@user/gorignak) (Remote host closed the connection) |
| 02:00:32 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 02:00:54 | → | califax joins (~califax@user/califx) |
| 02:01:30 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 02:02:13 | <haskellbridge> | <sm> kind of sorry I recommended simplex the other day, now |
| 02:03:34 | <dmj`> | so this is why we avoid success at all costs |
| 02:03:57 | <haskellbridge> | <sm> hopefully that person will use it for good |
| 02:04:07 | → | gorignak joins (~gorignak@user/gorignak) |
| 02:05:03 | × | op_4 quits (~tslil@user/op-4/x-9116473) (Remote host closed the connection) |
| 02:05:10 | <haskellbridge> | <sm> these failures to avoid success seem to be getting more frequent >:/ |
| 02:05:34 | → | op_4 joins (~tslil@user/op-4/x-9116473) |
| 02:06:43 | <haskellbridge> | <sm> now of course this can also be propaganda against untappable chat tech |
| 02:07:36 | <haskellbridge> | <sm> * an untappable chat app |
| 02:08:08 | × | gorignak quits (~gorignak@user/gorignak) (Remote host closed the connection) |
| 02:10:45 | × | nadja quits (~dequbed@banana-new.kilobyte22.de) (Ping timeout: 265 seconds) |
| 02:10:56 | → | nadja joins (~dequbed@banana-new.kilobyte22.de) |
| 02:11:33 | <EvanR> | I find it hard to believe it absolutely hides your identity |
| 02:12:28 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 02:13:37 | <haskellbridge> | <sm> considering it's so secure, wired seems to know a lot about what people are doing on SimpleX |
| 02:14:19 | <haskellbridge> | <sm> anyway. moving on |
| 02:16:48 | × | td_ quits (~td@i53870937.versanet.de) (Ping timeout: 276 seconds) |
| 02:18:10 | → | td_ joins (~td@i5387093A.versanet.de) |
| 02:19:28 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 02:19:55 | × | dyniec quits (~dyniec@dybiec.info) (Quit: WeeChat 4.2.2) |
| 02:32:05 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 02:35:10 | → | JuanDaugherty joins (~juan@user/JuanDaugherty) |
| 02:37:08 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
| 02:42:34 | × | terrorjack4 quits (~terrorjac@static.48.15.202.116.clients.your-server.de) (Quit: The Lounge - https://thelounge.chat) |
| 02:43:44 | × | Cale quits (~cale@2607:fea8:995f:f126:15c3:35a5:81ac:187c) (Read error: Connection reset by peer) |
| 02:44:18 | → | terrorjack4 joins (~terrorjac@2a01:4f8:c17:dc9f::) |
| 02:49:25 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 02:50:51 | × | athan quits (~athan@syn-098-153-145-140.biz.spectrum.com) (Quit: Konversation terminated!) |
| 02:53:56 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 03:06:08 | × | superstar64 quits (~superstar@2600:1700:ed80:50a0:d250:99ff:fe2c:53c4) (Quit: Leaving) |
| 03:06:15 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 03:10:54 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 03:17:35 | → | troojg joins (~troojg@user/troojg) |
| 03:22:12 | × | forell_ quits (~forell@host-178-216-90-220.sta.tvknaszapraca.pl) (Quit: ZNC - https://znc.in) |
| 03:22:28 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 03:23:04 | → | forell joins (~forell@user/forell) |
| 03:27:07 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 03:28:36 | × | spew quits (~spew@2806:2a0:1522:8662::edd7) (Quit: spew) |
| 03:36:37 | → | gorignak joins (~gorignak@user/gorignak) |
| 03:36:38 | <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 |
| 03:36:46 | <user_> | wait why am i user_ |
| 03:36:50 | <user_> | brb.... |
| 03:37:03 | × | user_ quits (~user@user/fmira) (Quit: user_) |
| 03:37:04 | <EvanR> | user_ error |
| 03:37:19 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 03:37:24 | → | fmira joins (~user@user/fmira) |
| 03:39:22 | <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 |
| 03:39:35 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 03:40:39 | × | gorignak quits (~gorignak@user/gorignak) (Remote host closed the connection) |
| 03:42:22 | <EvanR> | o_O |
| 03:43:15 | <EvanR> | sounds cool |
| 03:43:24 | <EvanR> | xcept for the nazis |
| 03:44:10 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 03:44:54 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
| 03:45:13 | <Inst> | how does simplex plan to make money? |
| 03:45:39 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 03:55:21 | <fmira> | Inst: good question honestly, theyre vc funded |
| 03:55:32 | <fmira> | im guessing they'll at some point enshittify the whole thing |
| 03:56:19 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 03:59:11 | → | athan joins (~athan@syn-098-153-145-140.biz.spectrum.com) |
| 04:04:00 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 04:06:13 | <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) |
| 04:08:17 | <JuanDaugherty> | racist |
| 04:13:35 | <ghoulguy> | Axman6: not that I know of |
| 04:13:38 | × | JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
| 04:15:39 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 04:20:12 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 04:26:30 | → | gorignak joins (~gorignak@user/gorignak) |
| 04:33:12 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 04:38:06 | × | youthlic quits (~Thunderbi@user/youthlic) (Remote host closed the connection) |
| 04:38:10 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 04:40:22 | → | youthlic joins (~Thunderbi@user/youthlic) |
| 04:42:04 | × | gorignak quits (~gorignak@user/gorignak) (Remote host closed the connection) |
| 04:43:49 | → | gorignak joins (~gorignak@user/gorignak) |
| 04:46:01 | → | falafel joins (~falafel@198.101.119.52) |
| 04:46:33 | × | troojg quits (~troojg@user/troojg) (Remote host closed the connection) |
| 04:47:32 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 04:47:32 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 04:47:32 | finn_elija | is now known as FinnElija |
| 04:49:23 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 04:52:44 | × | gorignak quits (~gorignak@user/gorignak) (Remote host closed the connection) |
| 04:52:53 | × | falafel quits (~falafel@198.101.119.52) (Ping timeout: 244 seconds) |
| 04:53:28 | → | gorignak joins (~gorignak@user/gorignak) |
| 04:53:50 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 05:00:34 | × | wanted quits (~wanted@2.219.56.221) (Ping timeout: 260 seconds) |
| 05:03:42 | <Axman6> | GHC needs #pragma push and #pragma pop |
| 05:04:58 | × | gorignak quits (~gorignak@user/gorignak) (Remote host closed the connection) |
| 05:05:22 | <geekosaur> | supposedly there's work to make warnings more fine-grained, but I don't know the status |
| 05:06:13 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 05:11:00 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
| 05:18:18 | → | troojg joins (~troojg@user/troojg) |
| 05:23:42 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 05:25:03 | × | paddymahoney quits (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 265 seconds) |
| 05:25:46 | × | athan quits (~athan@syn-098-153-145-140.biz.spectrum.com) (Quit: Konversation terminated!) |
| 05:28:21 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 05:30:30 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds) |
| 05:32:25 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 05:32:35 | → | paddymahoney joins (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) |
| 05:37:48 | → | spew joins (~spew@201.141.99.170) |
| 05:38:55 | × | paddymahoney quits (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 252 seconds) |
| 05:39:07 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 05:40:33 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 05:41:03 | → | wanted joins (~wanted@2.219.56.221) |
| 05:45:21 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 05:45:27 | → | gorignak joins (~gorignak@user/gorignak) |
| 05:51:50 | → | paddymahoney joins (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) |
| 05:52:59 | × | spew quits (~spew@201.141.99.170) (Quit: spew) |
| 05:56:04 | → | rosco joins (~rosco@183.171.107.70) |
| 05:56:16 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 05:57:10 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:57:19 | × | youthlic quits (~Thunderbi@user/youthlic) (Quit: youthlic) |
| 06:05:05 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 06:07:54 | × | xff0x quits (~xff0x@2405:6580:b080:900:858f:f870:90c:1b39) (Ping timeout: 246 seconds) |
| 06:08:13 | → | youthlic joins (~Thunderbi@user/youthlic) |
| 06:08:13 | × | youthlic quits (~Thunderbi@user/youthlic) (Client Quit) |
| 06:10:21 | × | paddymahoney quits (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) (Ping timeout: 246 seconds) |
| 06:13:45 | → | xff0x joins (~xff0x@2405:6580:b080:900:943:dffd:9430:e374) |
| 06:18:26 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 06:22:56 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 06:28:29 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 06:36:17 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 06:39:41 | × | adanwan_ quits (~adanwan@gateway/tor-sasl/adanwan) (Ping timeout: 260 seconds) |
| 06:40:54 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 06:48:37 | → | Square joins (~Square@user/square) |
| 06:49:35 | × | Square quits (~Square@user/square) (Client Quit) |
| 06:50:42 | → | Square joins (~Square@user/square) |
| 06:54:30 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 06:55:08 | <haskellbridge> | <thirdofmay18081814goya> anyone got a good intro for domain-theoretic semantic of recursive types? |
| 06:58:57 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 07:00:00 | × | caconym quits (~caconym@user/caconym) (Quit: bye) |
| 07:00:02 | × | tt123109783243 quits (~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) (Quit: The Lounge - https://thelounge.chat) |
| 07:00:35 | → | caconym joins (~caconym@user/caconym) |
| 07:03:25 | → | tt123109783243 joins (~tt1231@2603:6010:8700:4a81:219f:50d3:618a:a6ee) |
| 07:09:40 | × | euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 07:12:11 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 07:12:33 | × | troojg quits (~troojg@user/troojg) (Ping timeout: 276 seconds) |
| 07:14:42 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 07:16:30 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 07:19:01 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving) |
| 07:22:14 | → | euphores joins (~SASL_euph@user/euphores) |
| 07:24:07 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 07:25:38 | → | alp_ joins (~alp@2001:861:e3d6:8f80:3afa:9370:887b:74f7) |
| 07:28:03 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 07:32:23 | <Inst> | axman6: why can't you just stuff ' or numbers at the end? |
| 07:32:39 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 07:33:05 | × | peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds) |
| 07:33:34 | <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 |
| 07:36:05 | × | hiecaq quits (~hiecaq@user/hiecaq) (Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.4)) |
| 07:38:31 | × | alp_ quits (~alp@2001:861:e3d6:8f80:3afa:9370:887b:74f7) (Ping timeout: 264 seconds) |
| 07:38:39 | → | hiecaq joins (~hiecaq@user/hiecaq) |
| 07:40:39 | × | hiecaq quits (~hiecaq@user/hiecaq) (Client Quit) |
| 07:42:41 | → | CiaoSen joins (~Jura@2a05:5800:464:f400:ca4b:d6ff:fec1:99da) |
| 07:43:22 | → | acidjnk joins (~acidjnk@p200300d6e72cfb9670d70e28f87691c4.dip0.t-ipconnect.de) |
| 07:44:09 | × | rosco quits (~rosco@183.171.107.70) (Quit: Lost terminal) |
| 07:45:10 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 07:45:22 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 07:45:28 | → | andrewboltachev joins (~andrey@178.141.123.3) |
| 07:49:45 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 07:58:02 | → | hiecaq joins (~hiecaq@user/hiecaq) |
| 08:02:20 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 08:03:37 | → | lxsameer joins (~lxsameer@Serene/lxsameer) |
| 08:05:45 | <jackdk> | it would be neat if you didn't get shadowing warnings for bindings consumed by a linear arrow |
| 08:06:49 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 08:13:22 | → | artu joins (~artu@2601:600:8181:9b00::14) |
| 08:18:50 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 08:19:49 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 08:24:18 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 08:24:43 | → | ubert joins (~Thunderbi@178.165.166.66.wireless.dyn.drei.com) |
| 08:25:08 | × | ubert quits (~Thunderbi@178.165.166.66.wireless.dyn.drei.com) (Remote host closed the connection) |
| 08:28:42 | → | ash3en joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) |
| 08:29:09 | × | CiaoSen quits (~Jura@2a05:5800:464:f400:ca4b:d6ff:fec1:99da) (Ping timeout: 248 seconds) |
| 08:29:18 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 08:35:31 | × | acidjnk quits (~acidjnk@p200300d6e72cfb9670d70e28f87691c4.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
| 08:37:20 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 08:39:20 | <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? |
| 08:39:49 | → | acidjnk joins (~acidjnk@p200300d6e72cfb9628aff41673680d4c.dip0.t-ipconnect.de) |
| 08:41:33 | → | Digitteknohippie joins (~user@user/digit) |
| 08:41:49 | × | Digit quits (~user@user/digit) (Ping timeout: 260 seconds) |
| 08:41:54 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 08:43:30 | × | ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en) |
| 08:44:06 | → | paddymahoney joins (~paddymaho@pool-99-250-10-137.cpe.net.cable.rogers.com) |
| 08:44:46 | <haskellbridge> | <Jade> did you define "count"? if not, you can't print it :P |
| 08:46:19 | × | Digitteknohippie quits (~user@user/digit) (Ping timeout: 260 seconds) |
| 08:47:16 | <artu> | doesn't this `count :: Int` claim/declare `count` as type `Int`? I'll define after the declaration. Apperantly I'm a noob here :) |
| 08:48:45 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 276 seconds) |
| 08:50:19 | × | CrunchyFlakes quits (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
| 08:50:51 | × | artu quits (~artu@2601:600:8181:9b00::14) (Quit: WeeChat 4.4.2) |
| 08:50:52 | → | Digit joins (~user@user/digit) |
| 08:51:44 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 08:54:40 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 08:55:55 | × | fmira quits (~user@user/fmira) (Quit: fmira) |
| 08:59:01 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 08:59:28 | → | CrunchyFlakes joins (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) |
| 09:01:26 | → | alp_ joins (~alp@2001:861:e3d6:8f80:e21f:8806:679b:6ae1) |
| 09:05:03 | × | andrewboltachev quits (~andrey@178.141.123.3) (Quit: Leaving.) |
| 09:07:53 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 09:12:39 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 09:12:42 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 09:16:27 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 09:25:19 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 09:27:21 | × | alp_ quits (~alp@2001:861:e3d6:8f80:e21f:8806:679b:6ae1) (Ping timeout: 252 seconds) |
| 09:27:26 | → | ash3en joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) |
| 09:29:51 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 09:31:57 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 246 seconds) |
| 09:32:53 | <haskellbridge> | <thirdofmay18081814goya> what guarantees that the least fixed point of a type-functor will produce finite data types? |
| 09:35:00 | <ncf> | nothing |
| 09:35:19 | <Lears> | thirdofmay: In Haskell, nothing. In System F, strong normalisation and program finiteness. |
| 09:35:37 | <ncf> | the least fixed point of Const ℕ is infinite |
| 09:36:06 | <ncf> | or 1 + — i guess |
| 09:36:16 | <haskellbridge> | <thirdofmay18081814goya> hm i see |
| 09:36:22 | <haskellbridge> | <thirdofmay18081814goya> ty for answers |
| 09:37:54 | → | rosco joins (~rosco@183.171.72.164) |
| 09:38:23 | <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. |
| 09:39:48 | <haskellbridge> | <thirdofmay18081814goya> yeah, I meant values of finite size |
| 09:40:07 | <haskellbridge> | <thirdofmay18081814goya> data types with values of finite size |
| 09:40:22 | <ncf> | define size? |
| 09:41:27 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 09:46:04 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 09:53:19 | → | alp_ joins (~alp@2001:861:e3d6:8f80:6ee5:dea:457b:d9d9) |
| 09:57:05 | × | CrunchyFlakes quits (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) (Ping timeout: 248 seconds) |
| 09:58:50 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 09:59:08 | × | xff0x quits (~xff0x@2405:6580:b080:900:943:dffd:9430:e374) (Ping timeout: 245 seconds) |
| 09:59:59 | → | emmanuelux joins (~emmanuelu@user/emmanuelux) |
| 10:00:35 | × | ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Read error: Connection reset by peer) |
| 10:01:38 | → | CrunchyFlakes joins (~CrunchyFl@ip1f13e94e.dynamic.kabel-deutschland.de) |
| 10:03:24 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 10:11:01 | × | cyphase quits (~cyphase@user/cyphase) (Ping timeout: 248 seconds) |
| 10:13:11 | × | alp_ quits (~alp@2001:861:e3d6:8f80:6ee5:dea:457b:d9d9) (Ping timeout: 252 seconds) |
| 10:14:39 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 10:16:54 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 10:21:16 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 10:23:10 | → | xff0x joins (~xff0x@2405:6580:b080:900:e9cd:7fb:f9ec:b14e) |
| 10:23:56 | → | Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) |
| 10:24:13 | <tomsmeding> | @tell artu you need :{ and :} to write multi-line definitions in ghci |
| 10:24:13 | <lambdabot> | Consider it noted. |
| 10:25:34 | × | son0p quits (~ff@186.121.110.81) (Remote host closed the connection) |
| 10:28:17 | → | __monty__ joins (~toonn@user/toonn) |
| 10:29:55 | → | alp_ joins (~alp@2001:861:e3d6:8f80:e481:13d5:7eb4:8f9d) |
| 10:33:01 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 10:34:03 | → | cyphase joins (~cyphase@user/cyphase) |
| 10:37:44 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 10:38:35 | → | Smiles joins (uid551636@id-551636.lymington.irccloud.com) |
| 10:38:54 | <lxsameer> | hey folks, do you know any channel or forum dedicated to category theory and/or type theory? |
| 10:40:54 | × | alp_ quits (~alp@2001:861:e3d6:8f80:e481:13d5:7eb4:8f9d) (Ping timeout: 246 seconds) |
| 10:43:08 | <Hecate> | nope sorry |
| 10:48:30 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 10:48:50 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 10:50:30 | → | CiaoSen joins (~Jura@2a05:5800:464:f400:ca4b:d6ff:fec1:99da) |
| 10:50:48 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 10:53:10 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 11:03:26 | × | mrmr155334346318 quits (~mrmr@user/mrmr) (Quit: Bye, See ya later!) |
| 11:04:36 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 11:09:17 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
| 11:09:18 | × | rosco quits (~rosco@183.171.72.164) (Ping timeout: 252 seconds) |
| 11:18:07 | → | alp_ joins (~alp@2001:861:e3d6:8f80:7d60:3680:b7b6:7b2d) |
| 11:22:14 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 11:26:54 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 11:29:13 | → | mrmr155334346318 joins (~mrmr@user/mrmr) |
| 11:38:49 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 11:40:32 | × | alp_ quits (~alp@2001:861:e3d6:8f80:7d60:3680:b7b6:7b2d) (Ping timeout: 272 seconds) |
| 11:41:01 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:43:12 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 11:47:03 | × | rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer) |
| 11:47:34 | → | rvalue joins (~rvalue@user/rvalue) |
| 11:56:38 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 11:58:54 | <tomsmeding> | lxsameer: there is ##dependent here but I'm not sure how appropriate it is |
| 11:59:14 | <tomsmeding> | there is also #agda |
| 12:00:59 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 12:01:54 | × | CiaoSen quits (~Jura@2a05:5800:464:f400:ca4b:d6ff:fec1:99da) (Ping timeout: 260 seconds) |
| 12:06:24 | <ncf> | and #categorytheory, to mention only IRC channels |
| 12:09:26 | <haskellbridge> | <eldritchcookie> is there a method to visibly quantify a class method? |
| 12:09:41 | <haskellbridge> | <eldritchcookie> like bitSize :: forall b -> Natural |
| 12:10:38 | <haskellbridge> | <eldritchcookie> this doesn't work due to the forall b -> introducing a new b and not visibly quantifiying the one already in scope |
| 12:13:14 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 12:14:33 | × | xff0x quits (~xff0x@2405:6580:b080:900:e9cd:7fb:f9ec:b14e) (Ping timeout: 245 seconds) |
| 12:15:47 | <int-e> | Not sure I understand, do you want https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/scoped_type_variables.html ? |
| 12:16:26 | → | xff0x joins (~xff0x@2405:6580:b080:900:16eb:2432:285b:7ea6) |
| 12:16:36 | <int-e> | the full type of bitSize is forall a. Bits a => a -> Int |
| 12:17:12 | <int-e> | and it's deprecated :P |
| 12:17:23 | <tomsmeding> | ScopedTypeVariables is DEPRECATED? |
| 12:17:37 | <haskellbridge> | <eldritchcookie> no i am making my own prelude/ standard library so my FiniteBits class has bitSize |
| 12:17:55 | <tomsmeding> | Proxy? |
| 12:18:02 | <tomsmeding> | that's the traditional method |
| 12:18:02 | <int-e> | tomsmeding: no, bitSize is |
| 12:18:04 | <int-e> | sorry |
| 12:18:06 | <tomsmeding> | ah I see |
| 12:18:07 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds) |
| 12:18:10 | <tomsmeding> | phew :p |
| 12:18:12 | <int-e> | > bitSize (0 :: Integer) |
| 12:18:13 | <lambdabot> | *Exception: Data.Bits.bitSize(Integer) |
| 12:18:14 | → | identity joins (~identity@user/ZharMeny) |
| 12:18:31 | <tomsmeding> | > finiteBitSize (0 :: Integer) |
| 12:18:33 | <lambdabot> | error: |
| 12:18:33 | <lambdabot> | • No instance for (FiniteBits Integer) |
| 12:18:33 | <lambdabot> | arising from a use of ‘finiteBitSize’ |
| 12:18:38 | <tomsmeding> | right, that was the replacement |
| 12:19:09 | <tomsmeding> | to what extent is visible forall already a thing in released GHCs? |
| 12:19:41 | <tomsmeding> | :set -XRequiredTypeArguments |
| 12:19:43 | <tomsmeding> | % :set -XRequiredTypeArguments |
| 12:19:43 | <yahb2> | <no output> |
| 12:19:51 | <tomsmeding> | % f :: forall a -> a -> a ; f t x = x |
| 12:19:51 | <yahb2> | <no output> |
| 12:19:54 | <tomsmeding> | % :t f Int |
| 12:19:54 | <yahb2> | f Int :: Int -> Int |
| 12:19:56 | <tomsmeding> | % :t f Bool |
| 12:19:57 | <yahb2> | f Bool :: Bool -> Bool |
| 12:20:02 | <tomsmeding> | eldritchcookie ^ |
| 12:20:18 | <tomsmeding> | ghc >= 9.10 though |
| 12:20:53 | <haskellbridge> | <eldritchcookie> yes but naively trying this on a class method doesn't work |
| 12:21:10 | <tomsmeding> | I see |
| 12:21:20 | <tomsmeding> | hm, lemme try |
| 12:21:27 | <haskellbridge> | <eldritchcookie> src/Qon/Bits.hs:25:3: error: [GHC-39999] |
| 12:21:27 | <haskellbridge> | ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/PkaCnRCyIJXsiIbMXlrywuss/bOMDyOoAcr8 (22 lines) |
| 12:22:13 | <int-e> | heh, heisenbridge? |
| 12:23:12 | <tomsmeding> | eldritchcookie: https://play.haskell.org/saved/6TcPRARS |
| 12:23:27 | <tomsmeding> | admittedly it's a bit of a hack |
| 12:24:18 | <int-e> | oh *that* was the question |
| 12:27:38 | <haskellbridge> | <eldritchcookie> yes its a hack but hopefully it is forward compatible what we wil do |
| 12:29:36 | → | Digitteknohippie joins (~user@user/digit) |
| 12:29:41 | × | Digit quits (~user@user/digit) (Ping timeout: 248 seconds) |
| 12:29:52 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 12:30:51 | <tomsmeding> | I mean, something that doesn't require 9.10 is -XAllowAmbiguousTypes and require a type application |
| 12:31:07 | <tomsmeding> | but with the downside that an unsuspecting user who forgets the type application will get ambiguous types |
| 12:35:00 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
| 12:38:50 | → | mantraofpie joins (~mantraofp@user/mantraofpie) |
| 12:45:54 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 12:47:10 | → | alp_ joins (~alp@2001:861:e3d6:8f80:9437:9b0:9ccc:15a4) |
| 12:47:42 | × | Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 12:47:50 | × | sawilagar quits (~sawilagar@user/sawilagar) (Remote host closed the connection) |
| 12:48:15 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 12:50:30 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 12:56:07 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 12:58:39 | <haskellbridge> | <thirdofmay18081814goya> ncf: types i'm interested in are well-founded ones |
| 13:13:41 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 13:14:00 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 13:15:28 | <haskellbridge> | <Bowuigi> thirdofmay18081814goya you might want to look at well-founded trees, AKA W types |
| 13:16:15 | <haskellbridge> | <thirdofmay18081814goya> Bowuigi: yeah those are what i'm thinking about |
| 13:16:24 | <haskellbridge> | <Bowuigi> They are mostly present in dependent stuff so I don't know how useful they are in a practical sense |
| 13:16:27 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 13:16:45 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 13:17:13 | <haskellbridge> | <thirdofmay18081814goya> e.g. what sort of constraints do we need on the domain to guarantee a functor provides a w-type |
| 13:18:42 | <haskellbridge> | <Bowuigi> Termination and a size |
| 13:19:10 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 13:19:27 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 13:20:14 | <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 |
| 13:20:44 | <ncf> | W-types are initial algebras for polynomial endofunctors |
| 13:21:25 | <haskellbridge> | <thirdofmay18081814goya> ncf: is this true over Cpo? |
| 13:23:44 | <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 |
| 13:23:51 | <ncf> | you should probably read the references at https://ncatlab.org/nlab/show/W-type#CategoricalSemanticsOfWTypesReferences |
| 13:24:36 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 13:25:36 | → | Achylles joins (~Achylles@45.182.57.66) |
| 13:26:15 | <haskellbridge> | <thirdofmay18081814goya> i don't think they are w-types if they are not well-founded |
| 13:26:20 | <haskellbridge> | <thirdofmay18081814goya> will check the references ty |
| 13:35:31 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 13:36:07 | → | Guest6817 joins (~Guest6817@103.182.161.2) |
| 13:36:11 | <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 |
| 13:36:12 | <Guest6817> | other languages at the moment? |
| 13:36:31 | <haskellbridge> | <thirdofmay18081814goya> literally the best production lang |
| 13:36:36 | <haskellbridge> | <thirdofmay18081814goya> no competition |
| 13:36:54 | <haskellbridge> | <thirdofmay18081814goya> competitors are dependently-typed langs |
| 13:38:34 | <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? |
| 13:39:19 | <haskellbridge> | <thirdofmay18081814goya> you need to ask a single question to yourself: do you want to be able to reason about your programs |
| 13:39:24 | <haskellbridge> | <thirdofmay18081814goya> do you want to understand what it is you work with |
| 13:39:39 | <haskellbridge> | <thirdofmay18081814goya> are you tired of not knowing why you fix bugs, why you make programs that work and you can't tell why |
| 13:39:57 | <haskellbridge> | <thirdofmay18081814goya> constantly living in a state of alienation from the very thing you spent hours working on |
| 13:40:06 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 13:40:41 | <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? |
| 13:40:42 | <Guest6817> | 'Alienation' is actually a great term to describe how I feel looking at some of the past codes I've written |
| 13:40:58 | <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. |
| 13:43:11 | <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? |
| 13:43:31 | <yushyin> | rust has some influences from haskell and other funcprog languages, so you might even recognize some parts of that while learning haskell |
| 13:44:59 | <haskellbridge> | <thirdofmay18081814goya> haskell will fix your marriage |
| 13:45:53 | <identity> | Guest6817: haskell-specific parts will only hinder you while you are unfamiliar with them |
| 13:46:18 | <identity> | any tool will hinder you if you don't know which way to hold it |
| 13:46:58 | <Guest6817> | So all in all, other than the scary learning cliff that Haskell has, nothing should bother me if I actually learn it well |
| 13:48:45 | <Guest6817> | How's the Haskell external library support? Good enough for (most) random things I wanna do with Haskell? |
| 13:50:20 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:50:47 | <lxsameer> | tomsmeding: cheers |
| 13:50:56 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 13:54:19 | <yushyin> | Guest6817: maybe a bit outdated overview, but might give you an overall impression https://github.com/Gabriella439/post-rfc/blob/main/sotu.md |
| 13:55:18 | Digitteknohippie | is now known as Digit |
| 13:55:46 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 13:59:03 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds) |
| 14:01:06 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 14:04:27 | <geekosaur> | practically? it certainly is used, although it's no JS in terms of popularity |
| 14:05:15 | <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 |
| 14:06:33 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 14:09:57 | <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 |
| 14:10:06 | <tomsmeding> | just for having more ways of looking at a problem |
| 14:10:50 | <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) |
| 14:10:54 | <tomsmeding> | *-t |
| 14:11:01 | <tomsmeding> | depends on the application |
| 14:11:48 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
| 14:13:31 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 14:13:49 | × | Achylles quits (~Achylles@45.182.57.66) (Quit: Leaving) |
| 14:13:51 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 14:16:16 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 14:16:36 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 14:18:51 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds) |
| 14:19:01 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 14:19:20 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 14:21:45 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 14:21:57 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 14:22:04 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 14:24:30 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 14:24:49 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 14:26:52 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 14:27:11 | × | Guest6817 quits (~Guest6817@103.182.161.2) (Quit: Client closed) |
| 14:27:16 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 14:27:35 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 14:27:56 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 14:30:00 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 14:30:19 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 14:31:05 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 14:32:43 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 14:33:03 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 14:35:27 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 14:35:47 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 14:37:23 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 14:39:04 | × | sawilagar quits (~sawilagar@user/sawilagar) (Remote host closed the connection) |
| 14:39:28 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 14:42:06 | × | mantraofpie quits (~mantraofp@user/mantraofpie) (Ping timeout: 260 seconds) |
| 14:42:07 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 264 seconds) |
| 14:44:37 | × | alp_ quits (~alp@2001:861:e3d6:8f80:9437:9b0:9ccc:15a4) (Ping timeout: 248 seconds) |
| 14:48:53 | <Inst> | artu is gone |
| 14:49:35 | <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 |
| 14:50:42 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Read error: Connection reset by peer) |
| 14:52:56 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 14:54:14 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 14:57:22 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 14:59:18 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Remote host closed the connection) |
| 14:59:35 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 15:08:21 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 15:12:53 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 15:13:56 | → | spew joins (~spew@201.141.99.170) |
| 15:21:24 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 15:23:01 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 252 seconds) |
| 15:25:58 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 15:36:49 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 15:40:09 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds) |
| 15:41:37 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 15:42:19 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 15:45:28 | × | malte quits (~malte@mal.tc) (Remote host closed the connection) |
| 15:46:32 | × | bwe quits (~bwe@2a01:4f8:1c1c:4878::2) (Remote host closed the connection) |
| 15:46:59 | → | bwe joins (~bwe@2a01:4f8:1c1c:4878::2) |
| 15:48:11 | → | JuanDaugherty joins (~juan@user/JuanDaugherty) |
| 15:48:18 | × | bwe quits (~bwe@2a01:4f8:1c1c:4878::2) (Remote host closed the connection) |
| 15:50:02 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 15:50:21 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 15:52:14 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 15:52:46 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 15:53:05 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 15:53:51 | → | malte joins (~malte@mal.tc) |
| 15:55:15 | → | sourcetarius joins (~sourcetar@user/sourcetarius) |
| 15:55:34 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 15:55:53 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 15:56:12 | → | bwe joins (~bwe@2a01:4f8:1c1c:4878::2) |
| 15:57:40 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds) |
| 15:58:18 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 15:58:37 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 15:58:45 | → | supercode joins (~supercode@user/supercode) |
| 15:58:56 | <tomsmeding> | Inst: https://ircbrowse.tomsmeding.com/day/lchaskell/2024/10/06?id=1374003#trid1374003 |
| 15:58:59 | <monochrom> | I thought I was the one with negativity and whining. :) |
| 16:00:04 | <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. |
| 16:00:36 | <tomsmeding> | I have a test.hs in my home directory that is my go-to for essentially a local playground |
| 16:01:02 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 16:01:21 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 16:03:52 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 16:04:11 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 16:06:13 | → | sawilagar joins (~sawilagar@user/sawilagar) |
| 16:06:35 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 16:06:54 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 16:07:32 | → | pavonia joins (~user@user/siracusa) |
| 16:07:57 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 16:09:16 | <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. |
| 16:11:48 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Read error: Connection reset by peer) |
| 16:11:53 | <geekosaur> | I compulsively clean my homedir regularly… but there's still some buildup because of things I'm not sure what to do with |
| 16:12:37 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 16:13:31 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 16:13:50 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 16:14:13 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 16:14:16 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 16:16:30 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 16:16:49 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 16:18:45 | × | mud quits (~mud@user/kadoban) (Quit: quit) |
| 16:18:52 | <dminuoso> | tomsmeding: I keep wondering whether calling a language good at task X because of an ecosystem is a sensible thing. |
| 16:19:34 | <Rembane> | dminuoso: Is Python or Clojure doing its thing again? |
| 16:19:45 | <dminuoso> | It feels like a misattribution that leads to to bad comparisons. |
| 16:20:11 | <dminuoso> | Well, it suggests that having access to a library in itself improves the language itself. |
| 16:20:17 | <monochrom> | I don't like it, but people have already merged "language" and "ecosystem" into one single thing and called it "the language". |
| 16:20:32 | <geekosaur> | every time someone asks that question I wonder who's being so insecure about big scary Haskell again |
| 16:20:42 | <geekosaur> | and why |
| 16:20:47 | <JuanDaugherty> | equivocation on lang |
| 16:20:56 | <monochrom> | In fact, even more extreme, I even reject calling a language good at task X at all. |
| 16:21:56 | <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. |
| 16:21:58 | → | Smiles joins (uid551636@id-551636.lymington.irccloud.com) |
| 16:22:23 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 16:22:41 | <JuanDaugherty> | all instances of which are ammenable to substition with an appropriate np, "speced lang", "lang as delivered", etc |
| 16:23:17 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds) |
| 16:23:46 | <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. |
| 16:23:59 | <dminuoso> | The ecosystem does add to the usefulness of a language. |
| 16:24:02 | → | mud joins (~mud@user/kadoban) |
| 16:24:36 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 246 seconds) |
| 16:25:36 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 16:25:47 | <monochrom> | Hot take: "good at task X" is a social construct. >:) |
| 16:26:38 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
| 16:27:00 | → | michalz joins (~michalz@185.246.207.200) |
| 16:27:26 | <monochrom> | More seriously, the status quo is always changeable. Nothing blocks adding a task X library to any ecosystem. |
| 16:28:49 | <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". |
| 16:30:18 | × | JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
| 16:30:34 | <monochrom> | But people wouldn't like that, eh? People are more comfortable with camps, paradigms, stereotypes, stigmas, over-simplifications. |
| 16:31:00 | <Rembane> | That's how brains work to use very little glucose |
| 16:32:03 | <Franciman> | monochrom: the status quo of what? |
| 16:32:33 | <Franciman> | the status quo of a society is very difficult to change, because of what you said |
| 16:32:49 | <Franciman> | the status quo of physics laws is impossible to change |
| 16:34:53 | × | rvalue quits (~rvalue@user/rvalue) (Ping timeout: 252 seconds) |
| 16:35:22 | <Franciman> | i'm not sure it's easy to change the status quo of a GCed lang like haskell |
| 16:35:40 | <Franciman> | can haskell do real time programming? |
| 16:36:15 | <davean> | Franciman: Sure. Particularly tight realtime its not great at. Soft is pretty easy with the realtime GC though. |
| 16:37:10 | <davean> | I wouldn't call it great at it thoguh. |
| 16:37:35 | <Franciman> | nice |
| 16:37:47 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 16:38:02 | → | rvalue joins (~rvalue@user/rvalue) |
| 16:38:36 | <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" |
| 16:38:56 | <Rembane> | davean: Way harder because of Haskell or because of the domain? |
| 16:39:29 | <davean> | Rembane: I mean ... its always the product of the two that sets how rthi |
| 16:39:32 | <davean> | hard sometihng is |
| 16:39:47 | <Rembane> | davean: That's true. |
| 16:42:41 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 16:42:59 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 16:43:14 | → | raehik joins (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) |
| 16:43:41 | <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) |
| 16:44:43 | <geekosaur> | IIRC House specifically did sound drivers in Haskell |
| 16:45:29 | <Franciman> | cool |
| 16:45:39 | <Franciman> | ty |
| 16:46:00 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds) |
| 16:46:15 | <davean> | This predates the non-moving GC |
| 16:47:01 | <davean> | That has limited pause time though |
| 16:48:26 | <davean> | Franciman: Honestly though, this is a problem I think Haskell makes legitimately harder than other languages do though. |
| 16:48:42 | <davean> | There *are* ways to deal with it, but you have to deal with a lot of things you don't in others. |
| 16:48:45 | <Inst> | thanks tomsmeding, and thanks for being unerringly helpful and a strong contributor to the community |
| 16:49:02 | <Inst> | monochrom: the reason I worry about >>= leaking when it's explicitly used is because I love >>= |
| 16:49:54 | <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? |
| 16:50:20 | <Inst> | there's a trade-off in expressivity for familiarity, there's tons of cases where using >>= directly can be more expressive |
| 16:51:15 | <davean> | I find I do both, depending on the details |
| 16:51:59 | <Inst> | there's folks on discourse who are fundamentalist in "fake python" style |
| 16:52:31 | <Rembane> | Inst: Are they all in on do-notation? |
| 16:52:49 | <Inst> | yeah |
| 16:53:19 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 16:53:20 | <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 |
| 16:53:34 | <Rembane> | That seems reasonable |
| 16:53:42 | <Rembane> | I'm quite fond of (>=>) |
| 16:53:48 | <Rembane> | :t (>=>) |
| 16:53:49 | <lambdabot> | Monad m => (a -> m b) -> (b -> m c) -> a -> m c |
| 16:56:27 | <Inst> | that said (,,) <$> foo <*> bar <*> baz >>= qux probably goes too far |
| 16:56:59 | → | alp_ joins (~alp@2001:861:e3d6:8f80:f5b0:cd1b:e895:cf8a) |
| 16:58:00 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 16:58:00 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 16:58:11 | <davean> | Inst: I'm confused on what a fundimentalist in fake python style means |
| 16:58:33 | <dolio> | What is the problem with real time stuff being difficult in Haskell, though? Not every tool has to be perfect for every job. |
| 16:58:40 | <davean> | Inst: >>= and <- says something different about programmer intent. |
| 16:58:48 | <dolio> | It's okay to use more than one language. |
| 16:58:51 | <davean> | dolio: who said there was a problem? |
| 16:58:56 | <Inst> | <- allows you to reuse the value |
| 16:59:12 | <davean> | Inst: says your thinking about that value specificly, not the computation at the very least. |
| 16:59:22 | <dolio> | Typically stuff like this is presented as a problem. |
| 16:59:37 | <davean> | dolio: I didn't think it was in this case ... |
| 16:59:39 | <Inst> | how is linear haskell working for people? |
| 16:59:48 | <davean> | people were talking about problem domains and ecosystem vs. language |
| 16:59:52 | <davean> | Inst: horrid |
| 16:59:56 | <davean> | for me at least |
| 17:00:15 | <davean> | I've never heard of anyone having successes with it. |
| 17:00:19 | <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) |
| 17:00:34 | × | raehik quits (~raehik@rdng-25-b2-v4wan-169990-cust1344.vm39.cable.virginm.net) (Ping timeout: 265 seconds) |
| 17:00:48 | <Inst> | for the last task you'd imagine they'd move to linear haskell to precisely control timings |
| 17:01:09 | <davean> | Inst: ... yah I think you're very wrong. |
| 17:01:37 | <davean> | having tried to use it, it doesn't touch the IO domain at all really. Never solved any of the problems required |
| 17:02:17 | <Inst> | that's a lot of haskell, no? Begging for someone to submit a pull request on Github |
| 17:03:21 | <Inst> | fundamentalist in fake python: simple haskell advocate who wants to get rid of explicit >>= and >> usage to make the codebase easier to approach |
| 17:03:26 | <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. |
| 17:03:46 | <Inst> | once again, it's that Haskell needs more funding and resources |
| 17:04:20 | <davean> | No, no, nothing requires refusing to answer a question and claiming you did |
| 17:04:34 | <davean> | You can for example, admit you don't have an answer yet |
| 17:04:51 | × | tabemann quits (~tabemann@2600:1700:7990:24e0:bc5d:8bdb:179f:73b1) (Remote host closed the connection) |
| 17:05:04 | → | tabemann joins (~tabemann@2600:1700:7990:24e0:8858:4365:4e70:4256) |
| 17:05:26 | <Inst> | ehhh, could be a cultural issue for where they're coming from? |
| 17:05:45 | <Inst> | like, they're desperate to get it merged, but definitely don't have the resources to develop properly, etc? |
| 17:06:12 | <Inst> | but they'd rather dodge rather than say: 'hi, if you're competent for working on GHC, plz halp" |
| 17:08:22 | <Rembane> | Did it result in any good papers? |
| 17:08:51 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 17:09:40 | <Inst> | from what I hear of the linear Haskell people |
| 17:09:53 | <Inst> | they're essentially: "we built stuff into GHc, everything else is the problem of the library makers" |
| 17:10:17 | → | athan joins (~athan@syn-098-153-145-140.biz.spectrum.com) |
| 17:10:19 | <davean> | You know ... except libraries can't patch theory |
| 17:10:45 | <Rembane> | Are we back in the libraries + language again? |
| 17:11:09 | <Rembane> | davean: Do you imply that the theory is broken? Or have I misunderstood you? |
| 17:11:39 | <davean> | Rembane: broken? No. The source of the issues using it? Yes |
| 17:12:49 | <Rembane> | davean: Got it! |
| 17:13:07 | <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. |
| 17:13:21 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 17:13:48 | → | ash3en joins (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) |
| 17:18:21 | <davean> | Rembane: Try writing like just a merge step of a merge sort with liner types, consider the edge cases. |
| 17:18:23 | <davean> | HAVE FUN! |
| 17:18:23 | <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. |
| 17:18:48 | <Rembane> | davean: ^^ |
| 17:18:57 | <davean> | Rembane: Some of the best Haskellers I know tries that, and as a team failed. |
| 17:19:09 | <Rembane> | davean: Oh. That sounds way too hard. |
| 17:20:24 | <Inst> | btw, why doesn't Haskell have dynamic vectors? |
| 17:20:43 | <Inst> | iirc the newbie rule of thumb is "prefer vectors unless you need laziness", but vector doesn't have O(1) cons |
| 17:20:54 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 17:21:06 | <davean> | ... you can't have O(1) cons |
| 17:21:09 | <Rembane> | Inst: Are you thinking of Data.Vector? |
| 17:21:35 | <davean> | You can sorta get close amortised, but that requires reusing memory |
| 17:21:48 | <Inst> | davean: you can define a bidirectional dynamic vector, amortized O(1) cons |
| 17:21:59 | <int-e> | Data.Seq is a thing too |
| 17:22:10 | <Inst> | yeah but iirc it's not based on bytearray, right? |
| 17:24:21 | <int-e> | of course not |
| 17:25:06 | <Inst> | Sequence is built on fingertrees |
| 17:25:55 | <int-e> | (Even when you consider amortized cost, persistence is a big obstacle to combining arrays and mutation. Okasaki-like tricks will work.) |
| 17:27:45 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 17:28:45 | × | athan quits (~athan@syn-098-153-145-140.biz.spectrum.com) (Quit: Konversation terminated!) |
| 17:28:49 | <Inst> | hmmm, you can just newtype vector for dynamic vectors, you don't need any additional information in order to implement a dynamic vector |
| 17:28:52 | <davean> | Sequence is WAY off vector performance. |
| 17:30:10 | <int-e> | right. vector is far worse for mutations :P |
| 17:30:36 | <davean> | not mutable vector, which is the only thing we have thats vector like. |
| 17:32:24 | <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. |
| 17:32:54 | <int-e> | And this sidesteps many of the usual uses of dynamic vectors. |
| 17:33:01 | <Inst> | i'm curious, even JS has O(n) on shift |
| 17:33:15 | <Inst> | what's the tradeoff of bidirectional vs unidirectional dynamic arrays / lists / vectors? |
| 17:33:18 | × | lxsameer quits (~lxsameer@Serene/lxsameer) (Ping timeout: 272 seconds) |
| 17:33:22 | <Franciman> | what is JS, Inst ? |
| 17:33:28 | <int-e> | ECMAScript |
| 17:33:28 | <Inst> | Javascript |
| 17:33:34 | <Inst> | EczemaScript ;) |
| 17:33:36 | <Franciman> | i don't know it |
| 17:33:45 | <Inst> | Python seems to have that as well |
| 17:33:55 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds) |
| 17:34:02 | <Franciman> | davean: i see many thanks |
| 17:34:07 | <Inst> | you'd imagine they'd just use a bidirectional dynamic vector to appeal to their userbase |
| 17:35:41 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 17:36:06 | → | morb joins (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
| 17:37:02 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 17:38:41 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 17:40:13 | <int-e> | well, vector has O(1) uncons :P |
| 17:40:16 | × | morb quits (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Read error: Connection reset by peer) |
| 17:43:21 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 17:44:05 | → | morb joins (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
| 17:45:38 | → | saolsen joins (sid26430@id-26430.lymington.irccloud.com) |
| 17:46:15 | → | gmg joins (~user@user/gehmehgeh) |
| 17:47:16 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:48:10 | × | morb quits (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection) |
| 17:50:19 | <Inst> | i'm really sick, like, my heart is failing, maybe just trying to rework the container system in Haskell is a good swansong |
| 17:50:29 | <Inst> | it actually seems pretty easy |
| 17:51:20 | <Inst> | you don't even need to "fix" foldable / traversable etc, just rename them |
| 17:51:34 | <Inst> | reduceL / reduceR instead of foldl / foldr, etc |
| 17:51:45 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 17:52:00 | <Inst> | also unify the freaking maps over Set etc |
| 17:52:50 | <geekosaur> | have you ever looked at EdisonCore? |
| 17:53:42 | <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. |
| 17:53:48 | <davean> | Oh I have looked at Edison :) |
| 17:54:16 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 17:54:21 | <monochrom> | You could argue over less widespread things like Foldable. |
| 17:54:43 | <tomsmeding> | dminuoso: fair :) |
| 17:57:43 | <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. >:) |
| 17:58:45 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 246 seconds) |
| 17:58:59 | <Inst> | monochrom: iirc Haskell's container story is a mess with overlapping names and the legendary >> length (undefined,undefined) |
| 17:59:17 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 17:59:21 | <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 |
| 17:59:36 | <Inst> | that said: |
| 17:59:36 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 18:01:09 | <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. |
| 18:02:01 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 18:02:20 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 18:02:34 | <Inst> | Vector at least has a length :: Vector a -> Int that ummm, creates name clashes with Prelude.length |
| 18:03:01 | <monochrom> | Vector was just before Foldable came along. |
| 18:03:09 | × | robertm quits (robertm@lattice.rojoma.com) (Quit: WeeChat 3.8) |
| 18:03:36 | <Inst> | and iirc most of the containers are intended to be imported qualified |
| 18:03:52 | <monochrom> | Yes because of the reason I said. |
| 18:04:01 | <Inst> | bleh, I'll just while away the time trying to replicate the Vector interface with a Dynamic vector |
| 18:04:11 | <Inst> | maybe someday people will do an API change and people will CRYYYYYY |
| 18:04:16 | <Inst> | and we won't have that problem |
| 18:04:30 | <davean> | I think you're the only one that sees it as a problem |
| 18:04:45 | <int-e> | well evidently it's not rising to the level of a problem |
| 18:04:49 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 18:05:08 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 18:05:34 | → | robertm joins (robertm@lattice.rojoma.com) |
| 18:05:50 | <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 |
| 18:05:50 | <Inst> | fff, is hoogle down again? |
| 18:06:14 | <monochrom> | Personally I find "Map.insert" and "V.insert" very clarifying. |
| 18:06:46 | <Inst> | and the Python guys are happy with their NotAsBadAsJuliaSinceTheresMillionsOfEyeballs.len() functions |
| 18:06:53 | <int-e> | I guess there's 4) it's not a great fit for a lazy functional programming language |
| 18:06:58 | <int-e> | this one is a mix of 3 and 4. |
| 18:07:10 | <monochrom> | Two lines of "import X qualified; import X (X)" is annoying. But it's also only 1% of my time. |
| 18:07:17 | <Inst> | iirc people complain about polymorphic do as well |
| 18:07:33 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 18:07:37 | <Inst> | especially since it's a pain in the ass to provide a proper type annotation to it |
| 18:07:37 | <int-e> | "people" |
| 18:07:39 | <davean> | what is polymorphic do? |
| 18:07:52 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 18:07:58 | <Inst> | do is polymorphic over monads and applicatives (with -XApplicativeDo) |
| 18:08:02 | <Inst> | you can't see the type of the do block |
| 18:08:17 | <davean> | there is no type of a do block ... its syntax ... |
| 18:08:35 | <davean> | thats like asking what the type of whitespace is |
| 18:08:58 | <int-e> | davean: well that's a very important question when you overload it Stroustrup style |
| 18:09:02 | <monochrom> | I thought people complained not having ApplicativeDo when it was not available. |
| 18:09:04 | <Inst> | actually, do blocks don't even require monads or applicatives |
| 18:09:15 | <Inst> | see the do bulleting fanclub |
| 18:09:27 | <davean> | right, its *syntax* |
| 18:09:30 | <Inst> | do pi is valid |
| 18:09:45 | <geekosaur> | why does this bother you? |
| 18:09:51 | <Inst> | no, but some people apparently inline do blocks without type annotations and then complain that it's unreadable |
| 18:09:51 | <int-e> | we can still shoot programmers who, err, do that. |
| 18:09:51 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 18:10:14 | → | morb joins (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
| 18:10:21 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 18:10:39 | <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 |
| 18:10:40 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 18:10:49 | <Inst> | in the sense that having too much polymorphism can be a bad thing |
| 18:11:05 | <davean> | there is no polymorphism here. |
| 18:11:14 | <davean> | do doesn't have type stuff, its syntax ... |
| 18:11:56 | <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 |
| 18:12:26 | <monochrom> | I do that. But I also add a comment "this is in Maybe". |
| 18:12:27 | <davean> | You can do any sort of calculation in IO, so? |
| 18:12:32 | <Inst> | abc <- pure $ do ... |
| 18:13:01 | <monochrom> | I also expect educated people to see what I'm doing, even without that comment. |
| 18:13:08 | <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 |
| 18:13:45 | <davean> | I don't see the use there, but theres nothing special going on? |
| 18:13:56 | <monochrom> | I am wary of harping over "unreadable" as if it's an political ideological religious slogan. (un)readable to which target audience? |
| 18:14:08 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
| 18:14:22 | <int-e> | or maybe more to the point, https://paste.tomsmeding.com/EkhhpQ4l |
| 18:14:26 | <monochrom> | If I'm writing Haskell code I'm not obliged to make it comprehensible to Python people. Or vice versa. |
| 18:14:53 | <monochrom> | I'm only obliged to write Haskell code for Haskell people, Python code for Python people. |
| 18:15:11 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 18:15:23 | <Inst> | so what's wrong with having a single cMap that does a fmap-like action over any container? |
| 18:15:30 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 18:15:38 | <Franciman> | haskell people come in various levels... |
| 18:15:45 | <Franciman> | of expertise |
| 18:15:47 | <monochrom> | Even COBOL requires English education to read. |
| 18:15:54 | <geekosaur> | Inst, that's where FOldable and Traversable come in |
| 18:16:14 | <Inst> | wait, does foldable now come with a fmap like action? |
| 18:16:15 | <tomsmeding> | Inst: what would its type be? |
| 18:16:16 | <int-e> | don't say "unreadable" when you mean "ugly" |
| 18:16:33 | <geekosaur> | (f)map is Traversable |
| 18:16:36 | <tomsmeding> | note that Functor (with fmap) is a superclass of Traversable |
| 18:16:42 | <Inst> | Container c => (a -> b) -> c a -> c b |
| 18:16:47 | <tomsmeding> | :t fmap |
| 18:16:48 | <lambdabot> | Functor f => (a -> b) -> f a -> f b |
| 18:17:14 | <tomsmeding> | % :i Traversable |
| 18:17:14 | <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 (... |
| 18:17:14 | <Inst> | ehhh, honestly, probably just traverse f . toList solves all the problems I'm whining about |
| 18:17:23 | <geekosaur> | honestly, all I am seeing here is "it's not done the way I prefer from other languages, this!must!be!fixed!!" |
| 18:17:28 | <tomsmeding> | the toList is pointless in that expression |
| 18:17:35 | <tomsmeding> | unless what you want out is indeed a list :p |
| 18:17:37 | <Inst> | tomsmeding: Set a |
| 18:17:45 | <tomsmeding> | oh I see |
| 18:17:48 | <tomsmeding> | well, then I guess that, yes |
| 18:17:57 | <Inst> | Set isn't a functor, can't be made into a functor |
| 18:18:15 | <tomsmeding> | there have been proposals for a modified Functor class that admits additional constraints on fmap |
| 18:18:18 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:18:26 | <monochrom> | For that, you can go back to: <geekosaur> have you ever looked at EdisonCore? |
| 18:18:33 | <tomsmeding> | but it's generally considered not worth it for the sheer carnage of backwards incompatibility it would incur |
| 18:18:53 | <geekosaur> | it's on Hackage but unlikely to make base |
| 18:19:12 | <geekosaur> | (look for "indexed functors"/"indexed monads"/etc.) |
| 18:19:22 | <monochrom> | probably also unmaintained. |
| 18:19:44 | <monochrom> | And that actually tells you a lot about the economics of how many people actually care. |
| 18:19:50 | <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? |
| 18:20:26 | × | morb quits (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection) |
| 18:20:27 | <geekosaur> | iirc it is |
| 18:20:42 | <monochrom> | Oh let me just tell you jokes about reviews that roast, in closing. |
| 18:21:04 | <tomsmeding> | I was thinking of class Functor' f where { type FConstr f ; fmap' :: (FConstr a, FConstr b) => (a -> b) -> f a -> f b } |
| 18:21:18 | <Inst> | monochrom: survivorship bias? |
| 18:21:19 | <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. |
| 18:21:24 | <tomsmeding> | or any of the zillion variations on this idea, without a clearly most-general option that is workable p |
| 18:21:26 | <tomsmeding> | * :p |
| 18:21:46 | <monochrom> | Likewise for polite negative thesis/paper review. "solves a much needed problem". |
| 18:22:09 | <monochrom> | or "solution in want of a problem" |
| 18:22:22 | <Inst> | monochrom: how often do people parse those phrases incorrectly? |
| 18:22:31 | <int-e> | monochrom: "smells like blockchain" |
| 18:22:33 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 18:22:38 | <tomsmeding> | "solution in want of a problem" is multiple times more explicit and clear than those other phrases :p |
| 18:23:20 | <monochrom> | Oh let me also tell you about a book I read about writing recommendation letters when you don't want to. |
| 18:23:48 | → | morb joins (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
| 18:24:08 | <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" |
| 18:24:22 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 18:24:49 | <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 |
| 18:25:16 | <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) |
| 18:25:18 | Inst | giggles |
| 18:25:28 | <Inst> | to the first claim |
| 18:25:32 | <Inst> | not the second |
| 18:26:01 | <monochrom> | There are a lot more I don't remember. Basically jokes on how to write impossible recommendations. |
| 18:26:12 | <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 |
| 18:26:24 | <tomsmeding> | 'f j k' being preserved by the imap method |
| 18:26:50 | <tomsmeding> | this kind of indexing seems to be for monads where the bind operation changes the monad type |
| 18:27:26 | <tomsmeding> | which is also a useful generalisation of the FAM typeclasses, but an orthogonal one |
| 18:27:30 | <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 |
| 18:27:41 | <tomsmeding> | geekosaur: https://hackage.haskell.org/package/indexed-0.1.3/docs/Control-Monad-Indexed.html#t:IxMonad |
| 18:28:43 | <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 |
| 18:29:01 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 18:29:20 | <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' |
| 18:29:28 | <geekosaur> | changing type is another kind of pseudonatural transformation you can use |
| 18:29:32 | <tomsmeding> | (ignoring all the other classes in the package) |
| 18:30:00 | <geekosaur> | unfortunately that package didn't bother to document its IxFunctor, so who even knows what that's supposed to mean |
| 18:30:18 | × | ash3en quits (~Thunderbi@2a03:7846:b6eb:101:93ac:a90a:da67:f207) (Quit: ash3en) |
| 18:30:23 | <tomsmeding> | well, my point is that whatever it's supposed to mean, it _cannot_ express my Functor' :p |
| 18:31:05 | <tomsmeding> | because there are no constraints on 'a' and 'b' |
| 18:31:32 | <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 |
| 18:31:39 | <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) |
| 18:32:16 | <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 |
| 18:32:36 | <davean> | tomsmeding: They're not unused. |
| 18:32:38 | <tomsmeding> | the input and output type _of this fmap-like operation_ are just a and b |
| 18:32:43 | <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 |
| 18:32:50 | <tomsmeding> | davean: they are kept constant, which is indeed a use I guess |
| 18:33:12 | <tomsmeding> | monochrom: that's just if you want the fmap to be linear time :p |
| 18:33:16 | <davean> | tomsmeding: yes, EXACTLY |
| 18:33:27 | <davean> | Consider vs. Monad |
| 18:33:32 | <tomsmeding> | I know, I saw IxMonad |
| 18:33:39 | × | morb quits (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection) |
| 18:33:43 | <tomsmeding> | but how does keeping j and k constant help in implementing my Functor' from above? |
| 18:33:53 | <tomsmeding> | i.e. the "Set should be an instance of this class somehow" |
| 18:34:11 | <davean> | it doesn't it shows why said is impossible. |
| 18:34:11 | → | morb joins (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
| 18:34:22 | <tomsmeding> | which is what I was trying to argue to geekosaur? |
| 18:34:24 | <davean> | Set *can't* be a member of functor, and thats the proof why |
| 18:34:43 | <davean> | Set specificly violates what a functor is |
| 18:34:49 | <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' |
| 18:35:13 | <tomsmeding> | and geekosaur was claiming that it does, hedged in uncertainty that I fully respect |
| 18:35:48 | <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) |
| 18:37:32 | × | morb quits (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection) |
| 18:37:48 | <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 |
| 18:37:55 | <tomsmeding> | of course :p |
| 18:38:03 | <tomsmeding> | it's not like I understand the CT |
| 18:38:22 | <geekosaur> | but as I said, I think it enables you to replace "must preserve order" to "must preserve `Ord` constraint" |
| 18:38:44 | <tomsmeding> | but then there should be a constraint somewhere in the type, right? A constraint on a and/or b, at the very least |
| 18:38:51 | <geekosaur> | I'm not quite sure how, but that's usually true when CT is involved 😛 |
| 18:38:52 | <tomsmeding> | regardless of where that constraint comes from |
| 18:38:54 | <tomsmeding> | and there is none :p |
| 18:39:35 | <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 |
| 18:39:49 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 18:39:55 | <tomsmeding> | but I guess that's a reasonable one |
| 18:40:36 | <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 |
| 18:40:51 | → | morb joins (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
| 18:41:04 | <tomsmeding> | i/j/k, I guess |
| 18:41:05 | × | ghoulguy quits (glguy@libera/staff/glguy) (Quit: Quit) |
| 18:42:06 | → | glguy joins (glguy@libera/staff/glguy) |
| 18:42:45 | glguy | is now known as ghoulguy |
| 18:43:18 | <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 |
| 18:44:03 | <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 |
| 18:44:19 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 18:44:20 | <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 |
| 18:44:34 | <tomsmeding> | hm, I guess that still doesn't really help, because b is fully polymorphic |
| 18:44:46 | <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 |
| 18:45:01 | <geekosaur> | because when it comes down to it, Haskell isn't good at CT |
| 18:45:02 | <monochrom> | To be sure, I don't know how to argue why it's a problem. :) |
| 18:45:16 | <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 |
| 18:45:56 | <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 } |
| 18:46:08 | <tomsmeding> | this _can_ be implemented for Set by setting FConstr Set = Ord |
| 18:46:26 | × | morb quits (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Remote host closed the connection) |
| 18:46:53 | <tomsmeding> | of course this is very unsatisfyingly not-the-most-general-in-this-direction, so theoretically-minded haskellers will balk at this |
| 18:55:00 | <haskellbridge> | <aaron> tomsmeding: The argument function needs to be a monotonic or it violates the functor laws |
| 18:55:15 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 18:55:29 | <tomsmeding> | aaron: not if the implementation of this fmap' re-sorts the input using the Ord b dictionary |
| 18:55:39 | <tomsmeding> | not wanting that is an efficiency concern :p |
| 18:55:49 | <haskellbridge> | <aaron> If it removes duplicates based on that "Ord" then it does violate the laws |
| 18:56:14 | <tomsmeding> | right, so this Functor' would have less laws than normal Functor |
| 18:56:18 | → | JuanDaugherty joins (~juan@user/JuanDaugherty) |
| 18:56:23 | <tomsmeding> | so it does not represent a category-theoretical functor |
| 18:56:24 | <haskellbridge> | <aaron> What laws would it have |
| 18:56:38 | <tomsmeding> | good question :D |
| 18:56:47 | <tomsmeding> | I guess identity, and nothing else |
| 18:57:04 | <haskellbridge> | <aaron> Sounds pretty useless then |
| 18:57:09 | <tomsmeding> | I'm not saying we should have this Functor' |
| 18:57:13 | <haskellbridge> | <aaron> The functor composition law is pretty important :) |
| 18:57:42 | <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 |
| 18:57:50 | <tomsmeding> | I agree |
| 18:58:07 | <tomsmeding> | and I didn't even realise now that it loses the composition law |
| 18:59:32 | <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) |
| 19:00:00 | × | caconym quits (~caconym@user/caconym) (Quit: bye) |
| 19:00:05 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 19:00:17 | <tomsmeding> | right, but I imagine it will be quite cumbersome to express the idea of a "monotonic function" in haskell |
| 19:00:38 | → | caconym joins (~caconym@user/caconym) |
| 19:00:48 | <tomsmeding> | (impracticality is one of the ways in which a suggestion for a generalisation of Functor can fail to catch on) |
| 19:01:00 | <haskellbridge> | <aaron> Best you can do is use a newtype and promise not to make any invalid values of it |
| 19:01:06 | <tomsmeding> | ew |
| 19:01:20 | × | _d0t quits (~{-d0t-}@user/-d0t-/x-7915216) (Ping timeout: 272 seconds) |
| 19:01:45 | <haskellbridge> | <aaron> The problem with generalizing functor more has to do with polykinds |
| 19:02:23 | <haskellbridge> | <aaron> It's painful to try to define things like the identity functor "Identity :: k -> k" in haskell |
| 19:03:19 | <tomsmeding> | because the "result kind" of the kind of a data constructor must be Type (or more precisely TYPE r for some RuntimeRep r)? |
| 19:03:41 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Read error: Connection reset by peer) |
| 19:04:00 | <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 |
| 19:04:00 | <tomsmeding> | er, s/data constructor/type constructor of a data type/ |
| 19:04:23 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 19:06:03 | <monochrom> | newtype MonotonicFunction a b = It'sMonotonicIPromise (a -> b) |
| 19:06:04 | → | _d0t joins (~{-d0t-}@user/-d0t-/x-7915216) |
| 19:06:27 | <tomsmeding> | acme-dont vibes |
| 19:06:47 | <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 |
| 19:07:16 | <tomsmeding> | aaron: in the generalisation to arbitrary categories, you mean? |
| 19:07:42 | <haskellbridge> | <aaron> yes |
| 19:08:07 | <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 |
| 19:08:25 | → | AlexNoo_ joins (~AlexNoo@178.34.151.120) |
| 19:08:38 | <tomsmeding> | I can imagine, iirc the language that QuantifiedConstraints creates cannot be fully inferred decidably |
| 19:08:48 | <tomsmeding> | (but I may be wrong there) |
| 19:09:38 | <haskellbridge> | <aaron> I think you may be wrong, but idk |
| 19:09:43 | <tomsmeding> | probably :p |
| 19:09:51 | <tomsmeding> | at the very least it's not easy |
| 19:10:31 | <Lears> | aaron: Can you demonstrate composition breaking for `Functor' Set`? |
| 19:10:44 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 19:11:03 | <tomsmeding> | Lears: I guess (==) does not imply actual equality? |
| 19:11:04 | × | AlexZenon quits (~alzenon@178.34.162.53) (Ping timeout: 265 seconds) |
| 19:11:28 | <haskellbridge> | <aaron> Lears: what tomsmeding said. "(==)" is only equivalence |
| 19:11:41 | × | AlexNoo quits (~AlexNoo@178.34.162.53) (Ping timeout: 255 seconds) |
| 19:11:44 | <tomsmeding> | so the fmapped function may distinguish between elements in the "in-between" state that Set cannot distinguish between, and thus eliminates |
| 19:12:37 | <haskellbridge> | <aaron> So really the function doesn't need to be monotonic, it just needs to respect "(==)" |
| 19:12:42 | tomsmeding | . o O ( https://hackage.haskell.org/package/base-4.14.1.0/docs/src/Data.Semigroup.html#line-298 ) |
| 19:13:14 | <Lears> | aaron: `Eq` has extensionality. |
| 19:13:50 | <tomsmeding> | Arg is a data type in base whose Eq instance ignores a significant amount of information |
| 19:14:05 | <tomsmeding> | if base can do this without a big warning, then surely it's valid? |
| 19:14:24 | <Lears> | No, `Arg` is just a lawless convenience. |
| 19:14:54 | <tomsmeding> | oh hah, yes, the extensionality law |
| 19:15:08 | × | JuanDaugherty quits (~juan@user/JuanDaugherty) (Quit: JuanDaugherty) |
| 19:15:11 | <tomsmeding> | "instances are _encouraged_ to follow these properties:" |
| 19:15:17 | <tomsmeding> | does that make it a law? |
| 19:15:29 | <Lears> | cowardly words |
| 19:15:36 | <tomsmeding> | :D |
| 19:15:36 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 19:15:49 | <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. |
| 19:17:17 | <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 |
| 19:17:43 | <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? |
| 19:17:45 | <tomsmeding> | (well, assuming all of the "encouraged properties" of Eq are indeed laws |
| 19:17:56 | <tomsmeding> | ) |
| 19:18:51 | <monochrom> | Yeah I'm speaking imprecisely such as "(->) is a monad" :) |
| 19:20:16 | × | mud quits (~mud@user/kadoban) (Quit: quit) |
| 19:20:30 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Remote host closed the connection) |
| 19:20:50 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 19:21:02 | × | Smiles quits (uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 19:21:26 | → | AlexZenon joins (~alzenon@178.34.151.120) |
| 19:22:40 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 19:23:41 | <haskellbridge> | <aaron> Lears: wasn't aware of that |
| 19:23:55 | → | mud joins (~mud@user/kadoban) |
| 19:24:07 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 19:24:22 | → | califax joins (~califax@user/califx) |
| 19:24:22 | → | morb joins (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) |
| 19:25:23 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 19:26:36 | <haskellbridge> | <aaron> tomsmeding: the issue with QuantifiedConstraints was that it didn't work with either fundeps or type families |
| 19:29:12 | × | morb quits (~morb@pool-108-41-100-120.nycmny.fios.verizon.net) (Ping timeout: 272 seconds) |
| 19:29:50 | <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`. |
| 19:30:08 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
| 19:30:59 | <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 |
| 19:31:07 | <tomsmeding> | I recall Edsko (I think) writing somewhere that he wasn't quite sure why that workaround was not built into GHC |
| 19:31:24 | AlexNoo_ | is now known as AlexNoo |
| 19:31:28 | <tomsmeding> | oof that looks like a tricky QC for sure |
| 19:34:41 | <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) |
| 19:35:01 | <haskellbridge> | <aaron> but that's not what was implemented |
| 19:36:06 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 19:38:22 | <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`. |
| 19:40:24 | <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 |
| 19:40:41 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 19:40:48 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 19:42:12 | × | pie_ quits (~pie_bnc@user/pie/x-2818909) () |
| 19:42:26 | → | pie_ joins (~pie_bnc@user/pie/x-2818909) |
| 19:42:51 | <Inst> | once again, I'm an imbecile |
| 19:43:11 | <Inst> | that said, there's still a lacuna |
| 19:43:42 | <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 |
| 19:43:48 | <Inst> | *Kovacs |
| 19:43:54 | × | ethantwardy quits (user@user/ethantwardy) (Ping timeout: 260 seconds) |
| 19:44:49 | <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). |
| 19:45:34 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:45:39 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 19:46:07 | <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. |
| 19:47:40 | <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 |
| 19:47:46 | <monochrom> | This is why programmers can always benefit from a "theoretical" CS education. |
| 19:48:11 | <stefan-__> | (I am using "-fprof-auto") |
| 19:48:11 | <Inst> | I'm trying to figure out whether you can use linear functions via import without having -XLinearHaskell |
| 19:48:29 | <Inst> | define programmer :) |
| 19:48:48 | <Inst> | the only plus side is that no one is using %%. |
| 19:51:06 | <Inst> | or .%% |
| 19:52:33 | → | ethantwardy joins (user@user/ethantwardy) |
| 19:53:36 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
| 19:56:14 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 19:57:43 | × | [exa] quits (~exa@user/exa/x-3587197) (Quit: WeeChat 3.0) |
| 19:58:54 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:00:15 | nckx | is now known as nckhexen |
| 20:01:15 | × | euphores quits (~SASL_euph@user/euphores) (Ping timeout: 246 seconds) |
| 20:01:30 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
| 20:02:28 | → | zetef joins (~quassel@5.14.128.142) |
| 20:03:01 | → | [exa] joins (~exa@user/exa/x-3587197) |
| 20:06:40 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 20:07:06 | <Inst> | hmmm, that's interesting |
| 20:07:25 | <Inst> | i can compose linear functions in haskell with just ordinary . |
| 20:07:47 | → | euphores joins (~SASL_euph@user/euphores) |
| 20:10:51 | → | gmg joins (~user@user/gehmehgeh) |
| 20:11:44 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 20:16:13 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 245 seconds) |
| 20:17:42 | <Inst> | whoops, ghci error, running tests, this doesn't happen, score |
| 20:24:29 | × | zetef quits (~quassel@5.14.128.142) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 20:25:07 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 20:26:23 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 20:29:41 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 20:30:38 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds) |
| 20:33:11 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:34:19 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds) |
| 20:36:28 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 20:38:26 | × | EvanR quits (~EvanR@user/evanr) (Remote host closed the connection) |
| 20:38:29 | → | EvanR_ joins (~EvanR@user/evanr) |
| 20:39:02 | × | spew quits (~spew@201.141.99.170) (Quit: spew) |
| 20:40:40 | × | Square quits (~Square@user/square) (Quit: Leaving) |
| 20:41:47 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 20:42:08 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 255 seconds) |
| 20:42:37 | × | michalz quits (~michalz@185.246.207.200) (Remote host closed the connection) |
| 20:43:49 | → | weary-traveler joins (~user@user/user363627) |
| 20:44:08 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:46:09 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 20:46:30 | → | andrewboltachev joins (~andrey@178.141.123.3) |
| 20:57:14 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 21:02:13 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 21:11:09 | → | athan joins (~athan@syn-098-153-145-140.biz.spectrum.com) |
| 21:12:51 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 21:12:56 | × | gmg quits (~user@user/gehmehgeh) (Ping timeout: 260 seconds) |
| 21:15:00 | → | gmg joins (~user@user/gehmehgeh) |
| 21:18:12 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds) |
| 21:24:15 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 21:24:35 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 21:25:59 | → | zetef joins (~quassel@5.14.128.142) |
| 21:26:04 | × | zetef quits (~quassel@5.14.128.142) (Client Quit) |
| 21:26:34 | → | troojg joins (~troojg@user/troojg) |
| 21:27:11 | <Inst> | hmmm, my linear haskell friend likes the idea of linear-haskell specific combinators |
| 21:27:33 | <Inst> | so you can do linear haskell without having -XLinearTypes on, and with linearity being explicit through the use of the combinators |
| 21:28:15 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 21:29:40 | → | artu joins (~artu@2601:600:8181:9b00::14) |
| 21:33:10 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 21:33:17 | × | andrewboltachev quits (~andrey@178.141.123.3) (Quit: Leaving.) |
| 21:34:42 | × | artu quits (~artu@2601:600:8181:9b00::14) (Quit: WeeChat 4.4.2) |
| 21:34:46 | → | artu_ joins (artu@2600:3c01::f03c:92ff:fecc:1d32) |
| 21:35:55 | × | LukeHoersten quits (~LukeHoers@user/lukehoersten) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 21:39:22 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 21:43:41 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 21:46:54 | → | neuroevolutus joins (~neuroevol@146.70.211.110) |
| 21:48:02 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 21:49:44 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6) |
| 21:52:41 | × | artu_ quits (artu@2600:3c01::f03c:92ff:fecc:1d32) (Remote host closed the connection) |
| 21:59:07 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 22:04:06 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds) |
| 22:05:13 | → | artu joins (artu@2600:3c01::f03c:92ff:fecc:1d32) |
| 22:06:03 | × | gawen quits (~gawen@user/gawen) (Quit: cya) |
| 22:08:51 | × | neuroevolutus quits (~neuroevol@146.70.211.110) (Ping timeout: 256 seconds) |
| 22:10:35 | × | artu quits (artu@2600:3c01::f03c:92ff:fecc:1d32) (Quit: ZNC 1.7.2+deb3 - https://znc.in) |
| 22:14:40 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 22:18:43 | → | artu joins (artu@2600:3c01::f03c:92ff:fecc:1d32) |
| 22:19:12 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 22:30:06 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 22:33:04 | × | troojg quits (~troojg@user/troojg) (Ping timeout: 260 seconds) |
| 22:34:58 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 22:37:29 | → | peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com) |
| 22:41:30 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 22:45:43 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 22:46:12 | × | artu quits (artu@2600:3c01::f03c:92ff:fecc:1d32) (Remote host closed the connection) |
| 22:47:04 | → | artu joins (artu@2600:3c01::f03c:92ff:fecc:1d32) |
| 22:50:24 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 260 seconds) |
| 22:51:49 | × | acidjnk quits (~acidjnk@p200300d6e72cfb9628aff41673680d4c.dip0.t-ipconnect.de) (Ping timeout: 252 seconds) |
| 23:01:09 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 23:03:33 | × | sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 252 seconds) |
| 23:05:46 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 23:12:30 | × | euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.) |
| 23:16:34 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 23:17:27 | → | euphores joins (~SASL_euph@user/euphores) |
| 23:21:27 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 23:24:28 | → | LukeHoersten joins (~LukeHoers@user/lukehoersten) |
| 23:27:09 | <L29Ah> | are there weights-available LLMs that can do haskell programming? |
| 23:30:05 | × | myxokephale quits (~myxos@syn-065-028-251-121.res.spectrum.com) (Quit: myxokephale) |
| 23:32:00 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 23:32:08 | <Inst> | afaik ChatGPT haskell programming is primitive, and apparently studies show that AI-assisted programming is net negative for productivity as of now |
| 23:34:09 | <monochrom> | You can raise or lower the bar on "can". >:) |
| 23:34:33 | <monochrom> | But public LLMs are going to be a bit better than most beginners. |
| 23:35:06 | <monochrom> | That just relies on the definition of "beginner" cf. the Dunning-Kruger effect. |
| 23:36:44 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 255 seconds) |
| 23:43:35 | <L29Ah> | Inst: yeah i know, i was mildly curious on whether one can make it produce complete (a little over ACME quality) libraries with cabal packages with some scripting and prompting |
| 23:44:06 | <Inst> | why would it be more likely to be able to do this for Haskell than it would be able to do this for Rust, C+=, or for that matter, Python? |
| 23:44:48 | <L29Ah> | it's not about likelyhood, it's about my desire to do haskell things instead of the sloppy languages |
| 23:45:08 | L29Ah | hides |
| 23:46:59 | <L29Ah> | with haskell there can be a more sensible generate-compile-run-prompt loop as it's harder to produce running-yet-broken code |
| 23:47:15 | <Inst> | also type information, and iirc work on Agda2hs program derivation |
| 23:47:27 | <L29Ah> | and one can pester llm to produce test cases too to catch all the stupid errors programmatically |
| 23:47:37 | → | merijn joins (~merijn@204-220-045-062.dynamic.caiway.nl) |
| 23:48:03 | <Inst> | i'm wondering if LLM would have an easier time converting a domain into Agda types, then using Agda facilities to pound out a Haskell program |
| 23:48:11 | <Inst> | but afaik Haskell generated by Agda is unreadable |
| 23:48:12 | <L29Ah> | so ideally one converts a PC into a heater that hopefully produces working libraries once in a while :> |
| 23:48:38 | <L29Ah> | true programming laziness |
| 23:49:17 | <L29Ah> | implying llms can utilize boring things like file format specs |
| 23:51:57 | × | merijn quits (~merijn@204-220-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds) |
| 23:57:51 | → | myxos joins (~myxos@syn-065-028-251-121.res.spectrum.com) |
All times are in UTC on 2024-10-06.