Home liberachat/#haskell: Logs Calendar

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.