Home liberachat/#haskell: Logs Calendar

Logs on 2024-03-24 (liberachat/#haskell)

00:03:43 bilegeek joins (~bilegeek@2600:1008:b019:e8f5:2f79:4b0:5511:ae46)
00:11:24 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
00:16:20 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
00:16:48 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
00:17:02 <Inst> monochrom: honestly, different paradigms seem to work better for different texts; it's all von neumann machines / harvard architecture underneath at the end
00:17:08 <Inst> we still can't escape procedural for IO
00:17:34 sadie_ joins (~sadie@c-76-155-235-153.hsd1.co.comcast.net)
00:17:48 <Inst> pure, lazy, FP just seems a reasonable default for non-effecting calculations
00:18:43 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
00:23:21 × myxos quits (~myxos@065-028-251-121.inf.spectrum.com) (Remote host closed the connection)
00:24:04 myxos joins (~myxos@065-028-251-121.inf.spectrum.com)
00:24:26 × todi quits (~todi@p57803331.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in)
00:24:40 todi joins (~todi@p57803331.dip0.t-ipconnect.de)
00:25:03 × lbseale quits (~quassel@user/ep1ctetus) (Remote host closed the connection)
00:26:18 lbseale joins (~quassel@user/ep1ctetus)
00:27:37 <Inst> still, haskell has a role as an experimental and research language; part of the point is to see how far pure FP can go, and see if the pursuit of pure FP can deliver interesting techniques or concepts
00:32:17 × sadie_ quits (~sadie@c-76-155-235-153.hsd1.co.comcast.net) (Remote host closed the connection)
00:41:35 y04nn joins (~username@2a03:1b20:4:f011::999e)
00:54:20 × Benzi-Junior quits (~BenziJuni@232-148-209-31.dynamic.hringdu.is) (Quit: ZNC 1.8.2 - https://znc.in)
00:57:01 Benzi-Junior joins (~BenziJuni@232-148-209-31.dynamic.hringdu.is)
00:58:25 lvdv joins (~lvdv@203.7.118.37)
00:59:41 × y04nn quits (~username@2a03:1b20:4:f011::999e) (Ping timeout: 268 seconds)
01:00:34 iris_67 joins (~iris_67@2804:d45:9cea:6100:226b:ab6e:4303:eab1)
01:01:31 zer0bitz_ joins (~zer0bitz@user/zer0bitz)
01:04:38 × zer0bitz quits (~zer0bitz@user/zer0bitz) (Ping timeout: 264 seconds)
01:05:04 × iris_67 quits (~iris_67@2804:d45:9cea:6100:226b:ab6e:4303:eab1) (Client Quit)
01:05:20 iris_67 joins (~iris_67@2804:d45:9cea:6100:226b:ab6e:4303:eab1)
01:06:21 × iris_67 quits (~iris_67@2804:d45:9cea:6100:226b:ab6e:4303:eab1) (Client Quit)
01:12:18 dsrt^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net)
01:12:27 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 255 seconds)
01:14:09 euleritian joins (~euleritia@dynamic-046-114-095-014.46.114.pool.telefonica.de)
01:26:18 × euleritian quits (~euleritia@dynamic-046-114-095-014.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
01:26:36 euleritian joins (~euleritia@77.22.252.56)
01:29:59 × mechap quits (~mechap@user/mechap) (Ping timeout: 264 seconds)
01:39:46 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
01:59:05 × marinelli quits (~weechat@gateway/tor-sasl/marinelli) (Remote host closed the connection)
01:59:36 marinelli joins (~weechat@gateway/tor-sasl/marinelli)
02:01:59 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
02:02:38 ec joins (~ec@gateway/tor-sasl/ec)
02:04:42 <EvanR> I think there's been plenty of stuff experiment past the point of haskell since haskell came out
02:04:49 <EvanR> experimenting
02:07:00 <EvanR> though ghc is still a grand experiment in compiling
02:08:16 × mima quits (~mmh@aftr-62-216-211-106.dynamic.mnet-online.de) (Ping timeout: 255 seconds)
02:09:10 <geekosaur> ghc is a grand experiment in… something
02:09:21 <geekosaur> not sure it's an experiment in haskell any more
02:09:47 <geekosaur> apparently I'm not the only one… https://github.com/augustss/MicroHs
02:10:09 <geekosaur> the great reboot?
02:11:25 <Clint> extended subset
02:16:07 × Daxson quits (~Daxson@176.254.244.83) (Quit: Connection error?!)
02:19:18 × migas97 quits (~migas@static.140.65.63.178.clients.your-server.de) (Quit: The Lounge - https://thelounge.github.io)
02:20:04 migas97 joins (~migas@static.140.65.63.178.clients.your-server.de)
02:25:51 × otto_s quits (~user@p5b04451e.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
02:27:30 otto_s joins (~user@p5de2f3cc.dip0.t-ipconnect.de)
02:38:54 pavonia joins (~user@user/siracusa)
02:43:21 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds)
03:05:03 × op_4 quits (~tslil@user/op-4/x-9116473) (Remote host closed the connection)
03:05:31 × sgarcia quits (sgarcia@swarm.znchost.com) (Quit: Hosted by www.ZNCHost.com)
03:05:33 op_4 joins (~tslil@user/op-4/x-9116473)
03:08:48 crook1389 joins (uid581388@id-581388.ilkley.irccloud.com)
03:10:30 motherfsck joins (~motherfsc@user/motherfsck)
03:14:24 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
03:17:08 sgarcia joins (sgarcia@swarm.znchost.com)
03:26:06 × mulk quits (~mulk@p5b2dc71d.dip0.t-ipconnect.de) (Ping timeout: 255 seconds)
03:27:38 mulk joins (~mulk@p5b2dc2aa.dip0.t-ipconnect.de)
03:34:28 Rodney_ joins (~Rodney@176.254.244.83)
03:42:26 × td_ quits (~td@i53870906.versanet.de) (Ping timeout: 245 seconds)
03:42:58 Guest92 joins (~Guest92@97-120-7-219.ptld.qwest.net)
03:44:26 td_ joins (~td@i53870928.versanet.de)
03:58:19 igemnace joins (~ian@user/igemnace)
03:58:45 × rvalue quits (~rvalue@user/rvalue) (Read error: Connection reset by peer)
03:59:10 rvalue joins (~rvalue@user/rvalue)
04:01:59 × alexherbo2 quits (~alexherbo@2a02-8440-3441-13b3-f842-e4eb-f5b3-2e87.rev.sfr.net) (Remote host closed the connection)
04:03:12 alexherbo2 joins (~alexherbo@2a02-8440-3441-13b3-98ea-4818-341c-534e.rev.sfr.net)
04:06:28 aforemny joins (~aforemny@2001:9e8:6cef:a200:5c66:7868:1cde:e3b5)
04:06:42 × alexherbo2 quits (~alexherbo@2a02-8440-3441-13b3-98ea-4818-341c-534e.rev.sfr.net) (Remote host closed the connection)
04:07:47 × aforemny_ quits (~aforemny@i59F516EB.versanet.de) (Ping timeout: 264 seconds)
04:12:28 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
04:40:50 × Tuplanolla quits (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
04:43:30 sadie_ joins (~sadie@c-76-155-235-153.hsd1.co.comcast.net)
04:43:32 × lvdv quits (~lvdv@203.7.118.37) (Ping timeout: 268 seconds)
04:55:07 × statusbot5 quits (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com) (Remote host closed the connection)
04:55:22 statusbot joins (~statusbot@ec2-34-198-122-184.compute-1.amazonaws.com)
05:08:59 × Square quits (~Square@user/square) (Ping timeout: 264 seconds)
05:10:14 × Guest92 quits (~Guest92@97-120-7-219.ptld.qwest.net) (Ping timeout: 250 seconds)
05:17:38 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
05:24:51 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 268 seconds)
05:32:02 × igemnace quits (~ian@user/igemnace) (Quit: WeeChat 4.2.1)
05:38:27 falafel joins (~falafel@2607:fb91:8aa:877b:2df1:c884:ed4e:30d9)
05:39:36 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
05:40:15 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Client Quit)
05:58:49 × califax quits (~califax@user/califx) (Remote host closed the connection)
05:58:55 califax_ joins (~califax@user/califx)
06:00:10 califax_ is now known as califax
06:04:24 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 252 seconds)
06:06:53 × Natch quits (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) (Remote host closed the connection)
06:11:33 rvalue joins (~rvalue@user/rvalue)
06:12:11 Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se)
06:20:58 × Guest52 quits (~Guest52@185.57.29.142) (Quit: Ping timeout (120 seconds))
06:25:21 × falafel quits (~falafel@2607:fb91:8aa:877b:2df1:c884:ed4e:30d9) (Ping timeout: 245 seconds)
06:56:14 Guest52 joins (~Guest52@185.57.29.142)
06:56:16 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
06:59:05 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
07:00:07 × tt1231 quits (~tt1231@075-185-104-199.res.spectrum.com) (Quit: The Lounge - https://thelounge.chat)
07:00:37 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
07:02:30 tt12310 joins (~tt1231@2603-6010-8700-4a81-219f-50d3-618a-a6ee.res6.spectrum.com)
07:08:58 × Guest52 quits (~Guest52@185.57.29.142) (Ping timeout: 250 seconds)
07:14:26 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
07:36:37 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:37:44 wootehfoot joins (~wootehfoo@user/wootehfoot)
07:46:39 takuan joins (~takuan@178-116-218-225.access.telenet.be)
07:47:41 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 256 seconds)
07:49:02 Lycurgus joins (~georg@user/Lycurgus)
07:52:06 acidjnk joins (~acidjnk@p200300d6e72b6a8560cb954dffdecc30.dip0.t-ipconnect.de)
07:56:17 × berberman quits (~berberman@user/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
07:56:41 berberman joins (~berberman@user/berberman)
07:57:19 × berberman quits (~berberman@user/berberman) (Remote host closed the connection)
07:58:14 berberman joins (~berberman@user/berberman)
08:05:41 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:07:48 × bilegeek quits (~bilegeek@2600:1008:b019:e8f5:2f79:4b0:5511:ae46) (Quit: Leaving)
08:11:42 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
08:15:40 × Rodney_ quits (~Rodney@176.254.244.83) (Ping timeout: 268 seconds)
08:16:06 × tzh quits (~tzh@c-73-164-206-160.hsd1.or.comcast.net) (Quit: zzz)
08:21:22 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:27:36 × dcoutts_ quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 255 seconds)
08:31:27 Rodney_ joins (~Rodney@176.254.244.83)
08:32:51 haskell_ joins (~haskell@75-164-217-161.ptld.qwest.net)
08:38:57 × haskell_ quits (~haskell@75-164-217-161.ptld.qwest.net) (Remote host closed the connection)
08:50:41 <tomsmeding> > with the notable exception that Foldable and Traversable are not part of the Prelude.
08:50:45 <tomsmeding> sounds like someone had an opinion
09:02:53 <sadie_> where's that from?
09:06:29 <tomsmeding> sadie_: the MicroHs link that geekosaur shared
09:06:44 <tomsmeding> https://ircbrowse.tomsmeding.com/browse/lchaskell?id=1238213#trid1238213
09:28:18 × marinelli quits (~weechat@gateway/tor-sasl/marinelli) (Ping timeout: 260 seconds)
09:29:00 marinelli joins (~weechat@gateway/tor-sasl/marinelli)
09:31:29 <sadie_> aha
09:35:24 kuribas joins (~user@ptr-17d51eofujeriaat5yx.18120a2.ip6.access.telenet.be)
09:36:29 × sprout quits (~quassel@84-80-106-227.fixed.kpn.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
09:37:21 × Lycurgus quits (~georg@user/Lycurgus) (Quit: leaving)
09:46:30 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds)
09:47:09 sprout joins (~quassel@2a02-a448-3a80-0-355e-e5b2-f32d-a9c5.fixed6.kpn.net)
09:49:02 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
09:49:19 sayola joins (~sayola@ip-109-42-242-200.web.vodafone.de)
09:50:59 × sayola1 quits (~sayola@ip-109-42-242-92.web.vodafone.de) (Ping timeout: 252 seconds)
09:53:44 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 252 seconds)
10:00:44 zetef joins (~quassel@2a02:2f00:500b:ce00:aba1:3782:4e7c:41a)
10:00:50 × zetef quits (~quassel@2a02:2f00:500b:ce00:aba1:3782:4e7c:41a) (Remote host closed the connection)
10:01:18 zetef joins (~quassel@2a02:2f00:500b:ce00:aba1:3782:4e7c:41a)
10:01:59 L29Ah joins (~L29Ah@wikipedia/L29Ah)
10:05:57 × wagle quits (~wagle@quassel.wagle.io) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
10:06:13 wagle joins (~wagle@quassel.wagle.io)
10:06:21 × wagle quits (~wagle@quassel.wagle.io) (Client Quit)
10:07:10 wagle joins (~wagle@quassel.wagle.io)
10:15:49 gmg joins (~user@user/gehmehgeh)
10:19:42 Tuplanolla joins (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi)
10:22:39 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
10:23:04 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
10:23:14 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds)
10:23:16 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
10:24:25 Lord_of_Life_ is now known as Lord_of_Life
10:33:30 igemnace joins (~ian@user/igemnace)
10:46:57 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
10:47:15 <tomsmeding> why oh why does the package that fixes the Monoid instance of Map (monoidal-containers) depend on aeson
10:47:22 <tomsmeding> oh _and lens_!
10:47:30 wootehfoot joins (~wootehfoo@user/wootehfoot)
10:47:58 mima joins (~mmh@aftr-62-216-211-109.dynamic.mnet-online.de)
10:48:46 <tomsmeding> why must I increase the transitive dependency set by like a factor 20 or so just to have a Map with an accumulative Monoid instance
10:49:03 tomsmeding will reimplement the thing myself
10:52:33 <probie> probably to avoid orphan instances from things like ToJSON/FromJSON and At/Ixed
10:52:42 <tomsmeding> oh for sure
10:52:56 <tomsmeding> it's a pity "we" haven't found a proper solution for that yet
11:01:01 × mrmr155334 quits (~mrmr@user/mrmr) (Quit: Bye, See ya later!)
11:05:54 mrmr155334 joins (~mrmr@user/mrmr)
11:09:52 × zetef quits (~quassel@2a02:2f00:500b:ce00:aba1:3782:4e7c:41a) (Ping timeout: 246 seconds)
11:12:34 <kuribas> Why does a web library like spock include database parameters?
11:13:03 <kuribas> Should databases be part of the application state, and no concern of the web library?
11:16:11 <Rembane> If they go full on Rails it needs everything, but Spock is just web right? If so, then they shouldn't care about databases.
11:16:15 <Rembane> ...IMHO.
11:19:07 <kuribas> oh, maybe it is for session management...
11:19:26 <kuribas> It would need a DB for storing the session.
11:19:54 × sayola quits (~sayola@ip-109-42-242-200.web.vodafone.de) (Quit: Leaving.)
11:19:56 <tomsmeding> can websites please not track sessions?
11:19:57 <kuribas> Though I think using sessions is outdated.
11:20:05 <kuribas> tomsmeding: yeah :)
11:20:15 zetef joins (~quassel@2a02:2f00:500b:ce00:aba1:3782:4e7c:41a)
11:20:53 <tomsmeding> it has all the properties I don't want
11:21:24 <Rembane> tomsmeding: What's your biggest gripe with sessions?
11:21:42 <tomsmeding> they're gone when you close the tab
11:22:05 <tomsmeding> a session, in my mind, outlives a single browser tab, and furthermore can be shared over multiple browser tabs
11:22:23 × todi quits (~todi@p57803331.dip0.t-ipconnect.de) (Quit: ZNC - https://znc.in)
11:22:31 <tomsmeding> if you want session tracking without an account system, use LocalStorage or a cookie
11:22:52 <Rembane> Got it! I think I have mixed up the idea of cookies and sessions. I blame PHP!
11:23:12 <tomsmeding> I mean, sessions are typically _implemented_ using cookies that expire when you close the tab, I think
11:23:16 <kuribas> Or add user management.
11:23:25 CiaoSen joins (~Jura@2a05:5800:2bf:a100:e6b9:7aff:fe80:3d03)
11:23:27 <tomsmeding> > without an account system
11:23:48 <tomsmeding> of course if it makes sense to have an account system, then do that and store the state there so that a user can even migrate to another device
11:24:39 <tomsmeding> php-style sessions are kind of like using http basic auth for authentication
11:24:55 <tomsmeding> it kinda works if you're lazy enough to not care for a better solution, but only if the user is in on it
11:25:18 tomsmeding uses http basic auth on stuff where I'm the only user
11:26:19 <Rembane> We've used it at work for way too long.
11:27:03 <tomsmeding> maybe http basic auth is the less-bad one, because if you really want you can even automate it using a password manager
11:27:06 <mauke> <tomsmeding> they're gone when you close the tab <- ???
11:27:07 <tomsmeding> and then it works fine
11:27:27 <tomsmeding> mauke: am I remembering sessions wrong?
11:27:32 <mauke> yes
11:27:39 <tomsmeding> enlighten me
11:27:50 <mauke> you can set an arbitrary expiration date on your cookies
11:27:56 <tomsmeding> I know _that_
11:28:12 <tomsmeding> but is that also how sessions work in php / web frameworks that copied php
11:28:27 <mauke> lol who cares about php
11:28:46 <tomsmeding> well Spock, apparently, if I'm to believe kuribas that it does something with a thing called "sessions"
11:28:57 <Hecate> Rembane: yeah tell me about it…
11:29:00 <mauke> wat
11:29:27 <tomsmeding> disclaimer I have opened 0 documentation while ranting here
11:29:28 <kuribas> tomsmeding: https://hackage.haskell.org/package/Spock-0.14.0.0/docs/Web-Spock-SessionActions.html
11:29:36 <mauke> sessions are just server-side state with a client-stored identifier/key
11:29:39 <Rembane> Hecate: It's way too powerful and quick
11:30:08 <Rembane> Hecate: And it's just to put the encrypted keys in the git repo
11:30:09 <mauke> sessions go away when the server destroys its state or when the client loses the key
11:31:03 <tomsmeding> ah so this does less than php does (php also did the cookie stuff for you)
11:31:15 <mauke> so if you don't delete your state and don't use cookies that go away when the browser is closed, your session should remain forever
11:31:17 <tomsmeding> meaning that this is just supporting functionality for an account system, basically
11:32:29 <tomsmeding> mauke: the context was "why does spock want to know database info"
11:32:38 <tomsmeding> seems it's _not_ sessions?
11:33:58 <tomsmeding> kuribas: maybe it's just that it handles database connection pooling for you, because "you always need a DB when writing a web app, right?"
11:34:23 <tomsmeding> Rembane: turns out spock sessions != php sessions
11:35:19 <mauke> https://hackage.haskell.org/package/Spock-0.14.0.0/docs/Web-Spock-Config.html#t:SessionCfg
11:35:36 <Rembane> tomsmeding: Good stuff!
11:35:39 <mauke> it does manage session cookies automatically
11:36:33 <tomsmeding> I see
11:36:50 <mauke> hah, https://hackage.haskell.org/package/Spock-core-0.14.0.0/docs/Web-Spock-Internal-Cookies.html#t:CookieEOL is a bit misleading
11:36:58 <tomsmeding> well unless you newStmSessionStore
11:37:06 × fedorafan quits (~fedorafan@user/fedorafan) (Quit: Textual IRC Client: www.textualapp.com)
11:37:21 <tomsmeding> what does "browser session" mean
11:37:25 <mauke> defaultCookieSettings has CookieValidForSession, but defaultSessionCfg does not use defaultCookieSettings
11:38:04 <mauke> depends on how your HTTP client implements the Web Cookie spec
11:38:14 <mauke> but IIRC browsers treat it as "until the application is closed"
11:38:33 <tomsmeding> okay that's slightly better than "just one tab"
11:38:38 × mei quits (~mei@user/mei) (Remote host closed the connection)
11:38:49 <tomsmeding> but seems that that's the thing I was remembering
11:39:00 <tomsmeding> why should my state be gone if my browser crashes?
11:39:05 <tomsmeding> or if my battery dies?
11:39:13 <tomsmeding> use a normal cookie or whatever
11:39:20 <mauke> because the typical flow used to be "oh, I need information from the WWW -> open web browser -> browse pages -> close browser"
11:39:29 <probie> remember that most of this behaviour was originally defined in the days before browsers had tabs
11:39:30 <mauke> before we had tabs and stuff
11:39:39 <mauke> and always-open browser windows
11:39:58 <tomsmeding> saying "this is of before tabs" just removes my point that this is _better_ than I thought lol
11:40:04 mei joins (~mei@user/mei)
11:40:15 fedorafan joins (~fedorafan@user/fedorafan)
11:40:39 <tomsmeding> anyway I guess my point reduces to "please don't use CookieValidForSession, I think it's annoying"
11:40:49 <mauke> also, IIRC "web cookies" were a netscape invention
11:41:01 <mauke> the original HTTP spec didn't have this kind of state
11:42:04 <tomsmeding> I'm not complaining about the design decisions for exactly how those features work -- I'm talking about the experience of using websites today with a modern browser :)
11:42:05 <Rembane> Then they got some RFCs, where RFC 6265 is the latest which I suppose means they are for real now.
11:42:17 <mauke> https://en.wikipedia.org/wiki/Magic_cookie
11:42:28 <tomsmeding> I would have made far more mistakes in designing all this if I was there a few decades ago (I wasn't)
11:42:38 <tomsmeding> but that doesn't mean that we can now decide to not use certain things
11:42:43 <tomsmeding> *can't
11:42:48 <tomsmeding> sorry for the triple negative
11:43:00 <mauke> yeah, I don't think I use any current website that uses "session cookies" for its user sessions
11:43:07 <tomsmeding> fortunately
11:43:48 <mauke> it's always "[x] remember me on this device" and then you get an expiration date that's months or years in the future
11:43:53 <tomsmeding> mauke: I like how that "Usage" section has a ratio of 0.75 [citation needed] labels per sentence
11:44:51 <mauke> a special shoutout to google.com, which even in 2001 silently set tracking cookies with an epiration date of January 2038
11:45:27 <tomsmeding> lol
11:50:30 <int-e> mauke: and then when you delete cookies they say nonsense like "log in from a new device/location"
11:51:11 <tomsmeding> that's actually a security benefit for the majority of people
11:52:49 <int-e> thee must be a better way to phrase this
11:52:53 <int-e> +r
11:53:21 dcoutts_ joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
11:58:38 noumenon joins (~noumenon@113.51-175-156.customer.lyse.net)
12:01:42 mc47 joins (~mc47@xmonad/TheMC47)
12:07:05 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
12:08:00 gmg joins (~user@user/gehmehgeh)
12:12:09 × sadie_ quits (~sadie@c-76-155-235-153.hsd1.co.comcast.net) (Remote host closed the connection)
12:17:14 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 260 seconds)
12:17:20 × euleritian quits (~euleritia@77.22.252.56) (Read error: Connection reset by peer)
12:18:12 euleritian joins (~euleritia@77.22.252.56)
12:20:00 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
12:22:02 <Inst> wait, curious
12:22:25 <Inst> can i use lenses to compensate for the fact that set, hashmaps, etc aren't functors?
12:24:24 <Inst> "That feel when you realize that Haskell isn't complete without some rinky-dink Lens or Optics library"
12:24:26 Inst sighs
12:26:33 <int-e> You can bundle together a container type like Set a with a function a -> b to encode what would be a Set b, but there's a cost: You don't get cheap membership test.
12:27:01 <int-e> (heck, b may not even have an Eq instance at all)
12:27:51 infinity0 is now known as Guest1172
12:27:51 × Guest1172 quits (~infinity0@pwned.gg) (Killed (iridium.libera.chat (Nickname regained by services)))
12:28:00 infinity0 joins (~infinity0@pwned.gg)
12:29:52 <kuribas> Inst: just use the included map function?
12:38:59 ht_ joins (~Thunderbi@194.110.115.57)
12:39:02 a51 joins (a51@gateway/vpn/protonvpn/a51)
12:40:23 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Ping timeout: 252 seconds)
12:40:24 ht_ is now known as _ht
12:43:02 × euleritian quits (~euleritia@77.22.252.56) (Ping timeout: 264 seconds)
12:44:09 euleritian joins (~euleritia@dynamic-046-114-094-041.46.114.pool.telefonica.de)
12:46:27 <Inst> no, but you lose the polymorphism
12:46:57 <Rembane> Why do you need the polymorphism?
12:47:20 <Inst> why do you need typeclasses?
12:47:25 <kuribas> https://hackage.haskell.org/package/unordered-containers-0.2.20/docs/Data-HashSet.html#v:map
12:47:30 <kuribas> Looks polymorphic to me.
12:48:57 <[exa]> Inst: set and hash structure functionality imposes constraints that are not compatible with requirements on functoriality. We could go YOLO there (and you're welcome to do so in your code) but rule of least surprise applies.
12:51:19 <Inst> yeah i'm aware that set and derivatives of sets aren't functors
12:51:26 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
12:51:38 <Inst> i was thinking pseudomap or mappable as a typeclass for a while, then i realized, you can just go to lens and forget about it all
12:51:52 <Inst> except:
12:51:53 <Inst> foo :: Set Int
12:51:53 <Inst> ghci| foo = fromList [1,2,3,4,0]
12:52:05 <Inst> ghci> foo ^. at 1
12:52:05 <Inst> Just ()
12:54:06 <ncf> Set is a functor, but not an (endo)Functor. those are sometimes called exofunctors
12:54:27 <[exa]> there was a class for that btw, something near Witherable but not exactly that
12:54:35 <Inst> iirc, from category of Eq to Eq
12:54:55 <Inst> this sucks, why am I getting Just ()?
12:55:03 <ncf> what did you expect?
12:55:35 <ncf> remember Set a ≃ Map a ()
12:57:22 <Inst> so how do I use map operations... oh crap, I need to figure out which lens operator gets keys
12:58:10 <ncf> are you looking for setmapped? https://hackage.haskell.org/package/lens-5.2.3/docs/Data-Set-Lens.html
12:58:16 × zetef quits (~quassel@2a02:2f00:500b:ce00:aba1:3782:4e7c:41a) (Remote host closed the connection)
12:58:34 <ncf> note this is just `setting Set.map`
13:00:46 mechap joins (~mechap@user/mechap)
13:07:19 <Inst> thanks ;_;
13:07:58 × CiaoSen quits (~Jura@2a05:5800:2bf:a100:e6b9:7aff:fe80:3d03) (Ping timeout: 268 seconds)
13:09:33 × tomku|two quits (~tomku@user/tomku) (Ping timeout: 252 seconds)
13:10:08 × igemnace quits (~ian@user/igemnace) (Quit: WeeChat 4.2.1)
13:14:30 × dsrt^ quits (~cd@c-98-242-74-66.hsd1.ga.comcast.net) (Ping timeout: 252 seconds)
13:20:29 × harveypwca quits (~harveypwc@2601:246:c200:2740:15b6:f225:14ff:9821) (Quit: Leaving)
13:21:53 <Inst> actually, here's an issue with traverse, i think
13:21:57 <Inst> traverse can't break, foldr can
13:22:01 <Inst> well, at least on lazy lists
13:22:11 <janus> i've gotten an tcp echo server running on microHs :D
13:23:30 <janus> i've heard people say one of the the greatest things about ghc is the runtime
13:23:39 oo_miguel joins (~Thunderbi@78-11-181-16.static.ip.netia.com.pl)
13:23:49 <janus> but people always talk about the type system, and it seems that most research is also about type systems
13:23:56 <janus> would be cool if the runtime was standardized too
13:25:39 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
13:27:59 × gmg quits (~user@user/gehmehgeh) (Remote host closed the connection)
13:29:02 gmg joins (~user@user/gehmehgeh)
13:29:05 zetef joins (~quassel@2a02:2f00:500b:ce00:aba1:3782:4e7c:41a)
13:31:52 CiaoSen joins (~Jura@2a05:5800:2bf:a100:e6b9:7aff:fe80:3d03)
13:36:53 wootehfoot joins (~wootehfoo@user/wootehfoot)
13:41:05 × zetef quits (~quassel@2a02:2f00:500b:ce00:aba1:3782:4e7c:41a) (Remote host closed the connection)
13:42:38 <Inst> congrats on great work with MicroHS
13:57:19 target_i joins (~target_i@user/target-i/x-6023099)
13:57:46 alexherbo2 joins (~alexherbo@2a02-8440-3140-66f9-3d68-2bb9-a4a5-c3c4.rev.sfr.net)
14:04:11 wkdiwks joins (~wkdiwiks2@123.63.203.210)
14:12:06 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
14:13:41 L29Ah joins (~L29Ah@wikipedia/L29Ah)
14:21:11 dsrt^ joins (~cd@c-98-242-74-66.hsd1.ga.comcast.net)
14:23:02 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
14:27:10 × a51 quits (a51@gateway/vpn/protonvpn/a51) (Quit: WeeChat 4.2.1)
14:31:49 × alexherbo2 quits (~alexherbo@2a02-8440-3140-66f9-3d68-2bb9-a4a5-c3c4.rev.sfr.net) (Remote host closed the connection)
14:32:11 alexherbo2 joins (~alexherbo@2a02-8440-3140-66f9-3d68-2bb9-a4a5-c3c4.rev.sfr.net)
14:32:40 × alexherbo2 quits (~alexherbo@2a02-8440-3140-66f9-3d68-2bb9-a4a5-c3c4.rev.sfr.net) (Remote host closed the connection)
14:33:45 alexherbo2 joins (~alexherbo@2a02-8440-3140-66f9-3d68-2bb9-a4a5-c3c4.rev.sfr.net)
14:38:32 wkdiwks3r joins (~wkdiwiks2@212-8-253-140.hosted-by-worldstream.net)
14:42:00 × wkdiwks quits (~wkdiwiks2@123.63.203.210) (Ping timeout: 255 seconds)
14:46:38 × wkdiwks3r quits (~wkdiwiks2@212-8-253-140.hosted-by-worldstream.net) (Ping timeout: 268 seconds)
14:49:36 wootehfoot joins (~wootehfoo@user/wootehfoot)
14:52:05 AlexNoo_ joins (~AlexNoo@94.233.241.36)
14:53:59 × AlexZenon quits (~alzenon@178.34.161.9) (Ping timeout: 264 seconds)
14:54:02 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
14:55:38 × AlexNoo quits (~AlexNoo@178.34.161.9) (Ping timeout: 264 seconds)
14:58:36 AlexZenon joins (~alzenon@94.233.241.36)
15:06:11 tomku joins (~tomku@user/tomku)
15:10:27 wkdiwks3r joins (~wkdiwiks2@212-8-253-140.hosted-by-worldstream.net)
15:12:42 wootehfoot joins (~wootehfoo@user/wootehfoot)
15:13:52 × trev quits (~trev@user/trev) (Quit: trev)
15:14:10 trev joins (~trev@user/trev)
15:18:45 Lycurgus joins (~georg@user/Lycurgus)
15:19:43 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
15:26:37 AlexNoo joins (~AlexNoo@178.34.163.255)
15:28:16 × AlexZenon quits (~alzenon@94.233.241.36) (Ping timeout: 268 seconds)
15:29:14 × AlexNoo_ quits (~AlexNoo@94.233.241.36) (Ping timeout: 264 seconds)
15:36:15 × wkdiwks3r quits (~wkdiwiks2@212-8-253-140.hosted-by-worldstream.net) (Quit: Leaving)
15:38:15 kupi joins (uid212005@id-212005.hampstead.irccloud.com)
15:43:05 Square2 joins (~Square4@user/square)
15:43:26 × euleritian quits (~euleritia@dynamic-046-114-094-041.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
15:43:44 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
15:44:32 × CiaoSen quits (~Jura@2a05:5800:2bf:a100:e6b9:7aff:fe80:3d03) (Ping timeout: 260 seconds)
15:46:54 × Square2 quits (~Square4@user/square) (Remote host closed the connection)
15:52:06 Square joins (~Square@user/square)
16:02:51 igemnace joins (~ian@user/igemnace)
16:02:59 × euleritian quits (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
16:03:08 euleritian joins (~euleritia@dynamic-046-114-094-041.46.114.pool.telefonica.de)
16:08:29 × crook1389 quits (uid581388@id-581388.ilkley.irccloud.com) (Quit: Connection closed for inactivity)
16:09:07 × euleritian quits (~euleritia@dynamic-046-114-094-041.46.114.pool.telefonica.de) (Read error: Connection reset by peer)
16:09:23 euleritian joins (~euleritia@ip4d16fc38.dynamic.kabel-deutschland.de)
16:10:05 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
16:21:57 AlexZenon joins (~alzenon@178.34.163.255)
16:25:51 × machinedgod quits (~machinedg@d173-183-246-216.abhsia.telus.net) (Ping timeout: 260 seconds)
16:28:42 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:33:44 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
16:36:06 leon_on9527 joins (~yoyofreem@38.180.62.249)
16:36:15 × leon_on9527 quits (~yoyofreem@38.180.62.249) (Max SendQ exceeded)
16:36:59 leon_on9527 joins (~yoyofreem@38.180.62.249)
16:39:39 × igemnace quits (~ian@user/igemnace) (Quit: WeeChat 4.2.1)
16:52:41 × alexherbo2 quits (~alexherbo@2a02-8440-3140-66f9-3d68-2bb9-a4a5-c3c4.rev.sfr.net) (Remote host closed the connection)
17:01:13 tzh joins (~tzh@c-73-164-206-160.hsd1.or.comcast.net)
17:01:55 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
17:03:10 adanwan_ joins (~adanwan@gateway/tor-sasl/adanwan)
17:03:50 × adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
17:08:00 falafel joins (~falafel@2607:fb91:8aa:877b:6056:2f11:46f2:4ba2)
17:09:19 fmd joins (~fmd@user/framend)
17:16:02 ht_ joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
17:17:35 × _ht quits (~Thunderbi@194.110.115.57) (Ping timeout: 252 seconds)
17:17:36 ht_ is now known as _ht
17:19:18 <Inst> huh, Data.Vector.foldr acts as though it's lazy? I guess it stream fuses Vecs
17:19:58 Sgeo joins (~Sgeo@user/sgeo)
17:22:17 × noumenon quits (~noumenon@113.51-175-156.customer.lyse.net) (Quit: Leaving)
17:25:38 × kuribas quits (~user@ptr-17d51eofujeriaat5yx.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 27.1))
17:36:34 leon_on9527 parts (~yoyofreem@38.180.62.249) (Leaving)
17:36:50 × falafel quits (~falafel@2607:fb91:8aa:877b:6056:2f11:46f2:4ba2) (Ping timeout: 268 seconds)
17:45:42 alexherbo2 joins (~alexherbo@2a02-8440-3141-4956-88db-6233-762e-794e.rev.sfr.net)
17:46:50 × YoungFrog quits (~youngfrog@2a02:a03f:c9db:fc00:f708:1cd6:a732:30b) (Quit: ZNC 1.7.x-git-3-96481995 - https://znc.in)
17:47:11 YoungFrog joins (~youngfrog@2a02:a03f:c9db:fc00:dc64:8456:22b9:2c5f)
17:48:02 × alexherbo2 quits (~alexherbo@2a02-8440-3141-4956-88db-6233-762e-794e.rev.sfr.net) (Remote host closed the connection)
17:48:08 kuribas joins (~user@ptr-17d51eofujeriaat5yx.18120a2.ip6.access.telenet.be)
17:48:25 alexherbo2 joins (~alexherbo@2a02-8440-3141-4956-88db-6233-762e-794e.rev.sfr.net)
17:54:30 × ystael_ quits (~ystael@user/ystael) (Ping timeout: 256 seconds)
17:54:50 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:55:41 <kuribas> I get an error about dependencies in flycheck, even though they are installed using cabal. I am using haskell-ghc checker, not stack.
17:56:12 <geekosaur> did you use cabal exec to run it, so it has access to the store?
17:56:31 <geekosaur> oh, that might be hard for flycheck, whoops
17:56:50 <kuribas> I ran cabal build
17:58:50 <kuribas> hmm, my flycheck version is rather old.
17:59:12 × kuribas quits (~user@ptr-17d51eofujeriaat5yx.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
17:59:18 <geekosaur> "cabal build" doesn't matter. if flycheck is not run with … dammit
17:59:35 kuribas joins (~user@ptr-17d51eofujeriaat5yx.18120a2.ip6.access.telenet.be)
18:02:28 × TonyStone quits (~TonyStone@074-076-057-186.res.spectrum.com) (Read error: Connection reset by peer)
18:02:34 todi joins (~todi@p57803331.dip0.t-ipconnect.de)
18:02:46 TonyStone joins (~TonyStone@074-076-057-186.res.spectrum.com)
18:07:12 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 255 seconds)
18:13:46 sadie_ joins (~sadie@c-76-155-235-153.hsd1.co.comcast.net)
18:14:16 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
18:18:23 × marinelli quits (~weechat@gateway/tor-sasl/marinelli) (Quit: marinelli)
18:18:49 rvalue joins (~rvalue@user/rvalue)
18:21:40 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:29:38 Silver_X joins (~Silver_X@182.178.250.244)
18:32:07 billchenchina joins (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe)
18:33:16 robobub joins (uid248673@id-248673.uxbridge.irccloud.com)
18:33:53 rvalue- joins (~rvalue@user/rvalue)
18:34:48 × rvalue quits (~rvalue@user/rvalue) (Ping timeout: 268 seconds)
18:35:33 × kuribas quits (~user@ptr-17d51eofujeriaat5yx.18120a2.ip6.access.telenet.be) (Remote host closed the connection)
18:37:48 rvalue- is now known as rvalue
18:39:15 × billchenchina quits (~billchenc@2a0d:2580:ff0c:1:e3c9:c52b:a429:5bfe) (Remote host closed the connection)
18:41:27 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:44:53 × dcoutts_ quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 240 seconds)
18:45:00 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:08:01 × kupi quits (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
19:10:11 hammond_ joins (proscan@user/hammond2)
19:10:24 <hammond_> how do I get ghc to recompile all the files?
19:10:35 <hammond_> instead of the ones it thinks are updated.
19:10:52 <geekosaur> -fforce-recomp
19:12:36 <hammond_> ok thx
19:15:00 × [Leary] quits (~Leary]@user/Leary/x-0910699) (Ping timeout: 260 seconds)
19:22:23 <janus> hammond_: if you upgrade to ghc 9.4 the check gets more reliable
19:32:21 target_i joins (~target_i@user/target-i/x-6023099)
19:41:34 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
19:42:58 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:44:12 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
19:47:04 × Silver_X quits (~Silver_X@182.178.250.244) (Quit: Leaving)
19:56:17 Guest52 joins (~Guest52@185.57.29.142)
19:57:43 imdoor joins (~imdoor@balticom-142-78-50.balticom.lv)
19:59:04 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
20:00:09 <imdoor> heya, ghc docs on unboxed types say that "You cannot bind a variable with an unboxed type in a top-level binding." what is a top-level binding exactlyu
20:00:55 <geekosaur> anything outside a function
20:01:36 <imdoor> ok, so this doesn't apply to anything within a function (where ..., let ...) right?
20:01:47 <geekosaur> right
20:02:03 <geekosaur> https://github.com/geekosaur/xmonad.hs/blob/hilfy-2023/xmonad.hs#L62-L82 these are top level bindings
20:04:03 <imdoor> ty. i was trying to figure out why ghc gives me "You can't mix polymorphic and unlifted bindings" and thought that it might be related to that sentence in the docs, but aparently it's not the case :/ do you by any chance also know what that error means?
20:06:12 <geekosaur> an unlifted binding is a value, as opposed to a pointer to a value. in particular, it has a particular size and behavior, so it can only be described by a single type
20:06:26 <geekosaur> polymorphism requires pointers, since they're always the same size
20:10:41 <geekosaur> (if you care about the internals, see https://hackage.haskell.org/package/ghc-prim-0.11.0/docs/GHC-Types.html#t:RuntimeRep)
20:12:13 <imdoor> hmm, by what you're saying I can infer that you can't pass unlifted stuff to polymorphic functions. is the error saying that that's what I'm doing or is it something more intricate?
20:12:46 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 260 seconds)
20:12:53 <tomsmeding> a normal type variable 'a' cannot be instantiated to an unlifted type
20:13:18 <geekosaur> ^
20:13:24 <tomsmeding> because it is of kind Type, a.k.a. *, i.e. TYPE LiftedRep
20:13:50 <tomsmeding> whereas unlifted types are of kind TYPE UnliftedRep, if I'm not mistaken
20:13:53 <tomsmeding> hence it doesn't kind-check
20:14:12 <tomsmeding> (just like '1 :: Maybe' doesn't even get to type-checking because it doesn't even kind-check)
20:14:43 <tomsmeding> but if this was the problem I'd expect GHC to just report that the kinds do not match, not to give a user-friendly error like that
20:15:00 <geekosaur> @where paste
20:15:00 <lambdabot> Help us help you: please paste full code, input and/or output at e.g. https://paste.tomsmeding.com
20:15:06 tomsmeding was going to say just that
20:15:12 <geekosaur> can you show us the code it's complaining about?
20:15:21 <tomsmeding> if you post the entire error we can be more concrete
20:15:45 <tomsmeding> geekosaur: aren't you confusing liftedness with boxedness, though?
20:15:46 machinedgod joins (~machinedg@d173-183-246-216.abhsia.telus.net)
20:16:09 <tomsmeding> seeing as:
20:16:14 <tomsmeding> % :i GHC.Exts.UnliftedRep
20:16:14 <yahb2> type GHC.Types.UnliftedRep :: GHC.Types.RuntimeRep ; type GHC.Types.UnliftedRep = ; 'GHC.Types.BoxedRep 'GHC.Types.Unlifted :: GHC.Types.RuntimeRep ; -- Defined in ‘GHC.Types’
20:16:19 <tomsmeding> unlifted types are boxed
20:17:11 <tomsmeding> iirc boxedness was about whether it's a pointer or a plain value, and liftedness was about whether it admitted bottoms or not -- but I may well misremember
20:17:17 <geekosaur> mm, aren't unboxed types also necessarily unlifted, and there's only one case where a type is both boxed and unlifted?
20:17:36 <tomsmeding> unboxed would imply unlifted, yes
20:17:38 <geekosaur> (one of the primitive array types iirc)
20:18:18 <tomsmeding> geekosaur: https://downloads.haskell.org/ghc/latest/docs/users_guide/exts/primitives.html#extension-UnliftedDatatypes
20:18:28 <geekosaur> which means UnliftedRep is something of a lie, because e.g. IntRep is also an unlifted rep
20:19:05 <geekosaur> whereas UnliftedRep is BoxedRep 'Unlifted
20:19:45 <tomsmeding> isn't the idea that all `RuntimeRep`s are unboxed except BoxedRep?
20:19:59 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
20:20:01 <tomsmeding> and unboxed => unlifted, but boxed =/=> lifted
20:20:19 tomsmeding is yolo'ing on half-knowledge here, apologies if I'm way off
20:20:44 <tomsmeding> % :i GHC.Exts.RuntimeRep
20:20:44 <yahb2> type GHC.Types.RuntimeRep :: * ; data GHC.Types.RuntimeRep ; = GHC.Types.VecRep GHC.Types.VecCount GHC.Types.VecElem ; | GHC.Types.TupleRep [GHC.Types.RuntimeRep] ; | GHC.Types.SumRep [GHC.Ty...
20:20:48 <tomsmeding> meh
20:20:55 <tomsmeding> % import GHC.Exts
20:20:55 <yahb2> <no output>
20:20:57 <tomsmeding> % :i RuntimeRep
20:20:58 <yahb2> type RuntimeRep :: * ; data RuntimeRep ; = VecRep VecCount VecElem ; | TupleRep [RuntimeRep] ; | SumRep [RuntimeRep] ; | BoxedRep Levity ; | IntRep ; | Int8Rep ; | Int16Rep ; | Int3...
20:21:25 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
20:22:50 <imdoor> geekosaur: here's the code https://paste.tomsmeding.com/5grR9p9V but the erorrs below are what HLS is showing me. cabal build gives me only a single error "Couldn't match expected type ‘p1’ ..."
20:23:23 <tomsmeding> you can probably make ghc give the same errors as HLS by passing -fdefer-type-errors
20:25:53 <imdoor> yup, that gave me the same errors
20:26:08 <tomsmeding> what is unST, is that `unST (ST f) = f`?
20:26:54 <imdoor> unST is defined on line 34 – unST (GHCST.ST f) = f
20:27:03 tomsmeding is blind
20:27:09 <tomsmeding> thx
20:27:42 <tomsmeding> what happens if you rewrite f in sealST2 to read `f env = case unST action env of (# env', Stream step state #) -> ...`
20:27:59 <geekosaur> right, you have an unboxed tuple with a forall-ed type variable "a" in its type (I assume ScopedTypeVariables is in play or that has even bigger problems), and similarly for "r" in the second one
20:28:11 <tomsmeding> you'll need to put step' in a let binding inside that case clause or give it 'step' as an additional parameter
20:28:24 <imdoor> scoped type variables are indeed enabled
20:30:02 <tomsmeding> I like the borked formatting of that "No skolem info" error
20:31:56 ph88 joins (~ph88@2a02:8109:9e26:c800:a348:5b9b:d1d8:430e)
20:32:28 <tomsmeding> geekosaur: I'm wondering why that would be a problem, if that's it
20:33:02 <ph88> When i have a function like newtype Foo a = Foo {getFoo :: ((Boolean GHC.Generics.:+: Integer) a)} what does that mean with the :+: ?
20:33:23 <geekosaur> Actually I was wondering wouldn't that imply boxed and therefore pointers
20:33:36 <geekosaur> So yeah I'm kind of confused too
20:33:56 <tomsmeding> ph88: data (f :+: g) p = L1 (f p) | R1 (g p)
20:33:59 <geekosaur> But I'm not noticing anything else that would trigger it
20:34:10 <tomsmeding> it's the same as Data.Functor.Sum.Sum
20:34:38 <imdoor> oh, wow, that `f env = case unST action ...` worked, thanks! now i only have to wrap my head around why
20:34:50 <imdoor> it compiles now without issue
20:34:55 <tomsmeding> geekosaur: exactly, but even more, Stream is a normal data type (presumably) and is itself hence a pointer
20:34:56 zetef joins (~quassel@5.2.182.98)
20:35:07 <tomsmeding> so the 'a' is inside a heap-allocated thing to which the unboxed tuple only contains a pointer!
20:35:14 <tomsmeding> why would it care about what's in there?
20:35:24 <tomsmeding> imdoor: nice!
20:35:25 <ph88> tomsmeding, what is this used for? or what is Data.Functor.Sum.Sum used for? when do you want to use such code ?
20:36:10 <tomsmeding> imdoor: I'm not sure either, but experience tells me that in general, if you're dealing with "special" things (i.e. not normal boxed-lifted things, but unlifted things, or unboxed things, etc.), 'case' works as expected and let/where are sometimes weird
20:36:36 <tomsmeding> the same holds for LinearTypes, but there I have something of an idea of why
20:36:47 JackM joins (~JackM@2601:203:4301:ef30:b53d:4e54:709a:73cb)
20:37:09 <tomsmeding> ph88: when you want Either but of things that take another type parameter :p
20:37:21 <tomsmeding> and for some reason you don't want to just create a small data type for it
20:37:57 <tomsmeding> the use in GHC.Generics is weird, see the docs, I'm not sure the p parameter is ever even used
20:38:13 <tomsmeding> but in general Sum (also Data.Functor.Product.Product) can be helpful
20:38:45 <tomsmeding> it's most useful when you need to pass something of kind (* -> *) as a type argument to something else
20:39:18 <tomsmeding> but you want that thing to be a sum of two other things, and you can't write `\t -> Either (F t) (G t)` because type-level lambdas aren't a thing in haskell
20:39:22 <tomsmeding> but `Sum F G` is
20:40:38 × zetef quits (~quassel@5.2.182.98) (Ping timeout: 264 seconds)
20:40:41 × son0p quits (~ff@152.203.80.45) (Quit: Bye)
20:42:43 <imdoor> tomsmeding: good to know. I tend to stick to the "normal" stuff but needing to get rid of that ST s in the Stream type had me digging under the hood a bit more than usually :D
20:44:30 <tomsmeding> imdoor: in general, 'let' (/where) is lazy: it only becomes strict if you combine it with BangPatterns. That has something to do with it. 'case' is strict because it has to be; you can make it lazy using "irrefutable" patterns (using ~).
20:45:03 <tomsmeding> are you liking your #? :p
20:47:49 × sadie_ quits (~sadie@c-76-155-235-153.hsd1.co.comcast.net) (Remote host closed the connection)
20:50:22 × JackM quits (~JackM@2601:203:4301:ef30:b53d:4e54:709a:73cb) (Quit: Client closed)
20:54:24 <janus> are there any packages that can help me schedule continuations without using green threading?
21:00:24 <dolio> case isn't actually strict in general (unless you're talking about core). Like, evaluating `case expr of x -> 5` does not evaluate `expr`.
21:02:45 <imdoor> tomsmeding: yea, had to first google wth those # actually even mean :D
21:07:43 × fmd quits (~fmd@user/framend) (Ping timeout: 260 seconds)
21:16:08 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
21:19:58 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
21:21:33 <tomsmeding> dolio: that's true
21:21:52 <tomsmeding> but if you `case expr of A -> 5` then that's strict in 'expr', whereas `let A = expr in 5` is not
21:22:18 <tomsmeding> I'm not sure this has very much to do with it -- it is what leads to 'case' working much better with LinearTypes
21:28:38 <ph88> tomsmeding, thanks for the explanation i'll make a note
21:33:34 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:35:52 dcoutts_ joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
21:39:06 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 260 seconds)
21:39:47 chexum joins (~quassel@gateway/tor-sasl/chexum)
21:45:30 <edmundnoble_> I've just noticed that setting the `--builddir` cabal option results in a rebuild unconditionally because this counts as a "configuration change" for my packages. Is there any way to circumvent that? I'm trying to implement a layer of build dir caching for a VCS.
21:46:04 son0p joins (~ff@152.203.80.45)
21:47:15 <edmundnoble_> Seems completely broken to me
21:48:54 <tomsmeding> edmundnoble_: isn't that the directory where the cached files ought to be put in the first place?
21:49:16 <tomsmeding> or are you saying that if you `cabal build --builddir` twice then the second time doesn't use the artifacts from the first time?
21:49:50 <tomsmeding> if so that sounds like a bug
21:50:54 <c_wraith> possibly saying that if they build packages A and B from source, and B depends on A, then changing only --builddir on A causes B to rebuild?
21:51:07 <edmundnoble_> I'm saying that if I change --builddir from the last time I ran cabal, I get a rebuild
21:51:15 <c_wraith> oh. well what else could it do?
21:51:18 <edmundnoble_> It doesn't matter if the place I've set --builddir to happens to contain cached files
21:51:36 <edmundnoble_> What I would assume is that if I already have a builddir that contains the entire built project, there would be no rebuild
21:51:51 <geekosaur> it has no way of knowing if those cached files correspond to the current sources
21:52:00 tomsmeding wonders where "the current" builddir is stored
21:52:07 <edmundnoble_> I'd assume it would check in the exact same way it checks ordinarily
21:52:08 <geekosaur> and it could only find out by rebuilding them anyway
21:52:23 <edmundnoble_> Why does it matter if I've changed --builddir? Either way cabal has to determine what to rebuild
21:52:24 <tomsmeding> doesn't cabal store hashes of source files it has compiled
21:52:56 <tomsmeding> otherwise how can it not do anything if I re-write a file without changing the content
21:53:52 <edmundnoble_> Exactly
21:55:40 <geekosaur> it does, but the hash includes the builddir
21:56:34 <edmundnoble_> It does? Why?
21:56:44 <edmundnoble_> Well that puts a wrench in my plans...
21:57:25 <geekosaur> I _think_ because there are situations (TH?) where it can end up embedded, but I'm not sure
21:57:32 <geekosaur> probably best to ask in #hackage
21:57:44 <edmundnoble_> Alright thanks, I'll check it out
21:58:12 <geekosaur> might also get involved in Pathds_pkgname but that's a trainwreck anyway
21:58:25 <geekosaur> Paths_pkgname
21:59:23 <c_wraith> edmundnoble_: fwiw, I can't repro
21:59:27 <geekosaur> (getting it to behave sensibly with both "cabal build"ed and installed packages is … a pain
21:59:41 <edmundnoble_> Oh fuck is this because I'm using build-type custom
21:59:43 <edmundnoble_> Rip...
22:01:02 <tomsmeding> oh, it may well be
22:01:40 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds)
22:01:49 <c_wraith> I'm definitely seeing that it's happy to re-use build products in different builddirs with build-type Simple
22:03:19 <edmundnoble_> Hm, that's not what I see, even if I use Simple...
22:03:33 <edmundnoble_> Hm
22:03:35 <geekosaur> what versions of cabal-install for both of you?
22:03:43 <c_wraith> 3.10.3.0
22:03:55 <edmundnoble_> 3.10.1.0
22:04:24 <edmundnoble_> Actually I'm mistaken. It's fine with doing that. What it's not fine with is me hardlinking all of the files in the builddir into a new builddir, and using those files
22:04:42 <tomsmeding> is it fine if you copy them instead of hardlinking?
22:04:43 <edmundnoble_> So it sounds like the hash does include the builddir as geekosaur said
22:04:47 <edmundnoble_> I can try that
22:04:59 <tomsmeding> (unlikely)
22:05:11 <edmundnoble_> Nah same thing
22:05:15 <c_wraith> hardlinking creates new metadata, right?
22:05:16 <edmundnoble_> Yeah it was a long shot
22:05:22 <c_wraith> if it's looking at modification times...
22:05:27 <geekosaur> I'm running HEAD as of yesterday, just copied dist-newstyle to dist-hack and used n--builddir=dist-hack, it's rebuilding everything with [Flags changed]
22:05:30 <edmundnoble_> It's complaining "configuration changed"
22:05:48 <edmundnoble_> Yeah it really does seem like the builddir path is in the artifacts
22:06:09 <c_wraith> It's possible you've got something more complex going on than my test case.
22:06:26 <c_wraith> are you using a Paths_ module to access data files?
22:06:42 <edmundnoble_> There is a Paths_ module yes
22:06:55 <c_wraith> that does get hardcoded to the build dir.
22:07:05 <c_wraith> (it can be overridden, but the default has to be hardcoded in)
22:07:36 <edmundnoble_> What exactly is your test again? If your test has been "switching between builddirs doesn't trigger rebuilds" then I can see that too, yes.
22:08:01 <c_wraith> yeah, I started as simple as I could
22:08:17 <geekosaur> hmmm… this isn't cabal's fault I think
22:08:27 <geekosaur> it's ghc that is complaining that things changed
22:08:34 <geekosaur> in my test
22:09:18 <mauke> hardlinking = creating new names for existing files
22:09:34 <geekosaur> although the first package is build-type Configure and that got re-run, so cabal may still be instigating it
22:09:49 <mauke> in fact, a "hard link" is just another name for a name
22:10:26 <edmundnoble_> I do see "flags changed" but only after cabal already said "configuration changed"
22:10:31 <shapr> @quote
22:10:32 <lambdabot> stepcut says: how can you possibly implement business logic without knowing about Schonfinkel!?
22:11:14 <monochrom> haha
22:13:00 CiaoSen joins (~Jura@2a05:5800:2bf:a100:e6b9:7aff:fe80:3d03)
22:14:35 <edmundnoble_> I'm starting to think you're right geekosaur, "configuration changed" isn't sufficient to just ignore the cached build artifacts, based on the earlier test c_wraith and I did
22:22:20 mmhat joins (~mmh@p200300f1c706a252ee086bfffe095315.dip0.t-ipconnect.de)
22:30:34 baghead joins (~baghead@cpc91312-watf11-2-0-cust1213.15-2.cable.virginm.net)
22:35:03 <edmundnoble_> There's an -optP argument set to a location in the builddir, for cabal_macros.h, and an -I argument for the autogen dir in the builddir. Those are enough to be a problem, per the GHC docs saying that they're used to compute whether to rebuild.
22:35:13 <edmundnoble_> I see that the package-db flag is set to be in the builddir too, idk if that's an issue, less likely I think
22:39:53 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
22:40:44 × imdoor quits (~imdoor@balticom-142-78-50.balticom.lv) (Quit: imdoor)
22:50:54 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
22:53:39 <edmundnoble_> I don't see a way to disable cabal_macros.h or the autogen folder, am I missing it? I tried build-type: Simple and build-type: Configure
22:53:58 a51 joins (a51@gateway/vpn/protonvpn/a51)
22:55:27 <geekosaur> it's triggered by use of autogen-modules:
22:56:15 <geekosaur> hm, cabal-macros.h may always be on though, since cabal would have to inspect all the source files for CPP to know if it's needed
22:57:11 <geekosaur> (cabal-macros.h contains the definitions of the MIN_VERSION_package macros for all dependencies of the current package)
22:58:06 <edmundnoble_> Yeah I deleted autogen-modules and it stuck around
22:59:06 <edmundnoble_> Looks like a https://github.com/haskell/cabal/blob/23a684098e1f013ab72372f26f38ed9d298ce563/Cabal/src/Distribution/Simple/GHC/Internal.hs#L358 thing
22:59:48 × TonyStone quits (~TonyStone@074-076-057-186.res.spectrum.com) (Remote host closed the connection)
23:00:10 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:00:26 <edmundnoble_> I'm probably pointing to the wrong one of these top level definitions, point is all of them have both the include paths in the builddir and cabal_macros.h
23:01:43 <edmundnoble_> Unconditionally
23:17:17 <baghead> can ghci run threaded on linux using "ghci -fobject-code +RTS -N14" for 14 cores?
23:17:39 <geekosaur> ghci always runs -threaded unless the platform doesn't support -threaded at all
23:18:12 sadie_ joins (~sadie@c-76-155-235-153.hsd1.co.comcast.net)
23:18:17 <geekosaur> the +RTS option should work, yes
23:18:50 <baghead> i guess i mean the code that you invoke from ghci rather than ghci itself
23:19:14 <Axman6> the code should be able to use threads just fine I believe
23:19:16 × dolio quits (~dolio@130.44.134.54) (Quit: ZNC 1.8.2 - https://znc.in)
23:19:22 <geekosaur> there's no real difference
23:19:22 × ec quits (~ec@gateway/tor-sasl/ec) (Remote host closed the connection)
23:19:47 ec joins (~ec@gateway/tor-sasl/ec)
23:22:30 <baghead> linux only has processes trees tho, not actual threads right?
23:22:43 <geekosaur> that changed several years back
23:22:47 dolio joins (~dolio@130.44.134.54)
23:22:52 <baghead> oh ok
23:22:57 <geekosaur> LinuxThreads proved incapable of emulating POSIX threads properly
23:25:45 <geekosaur> (that said, they were in fact real threads, not just processes)
23:26:39 <geekosaur> Linux's processes can share a lot of state that processes on other unixlikes can't. but all the POSIX threads edge cases didn't quite work right
23:28:17 × sadie_ quits (~sadie@c-76-155-235-153.hsd1.co.comcast.net) (Remote host closed the connection)
23:28:38 <ph88> Do these extensions have to be enabled separately? https://gitlab.haskell.org/ghc/ghc/-/wikis/records/overloaded-record-fields
23:29:32 <geekosaur> yes, but you don't necessarily need all of them
23:31:15 <geekosaur> in particular, it makes no sense to turn on both OverloadedLabels and OverloadedRecordDot
23:31:57 <geekosaur> and DuplicateRecordFields can be used without the others as long as all duplicate fields have the same type
23:33:08 <geekosaur> (iirc)
23:34:35 <ph88> what's a good set of extensions to enable to make use of the new record abilities ?
23:35:24 <geekosaur> I'm not the person to ask about that since I think OverloadedRecordDot was a mistake
23:37:05 <sm> ph88: yesterday you were asking about rebuilding with stack - in addition to ghcid there stack CMD --file-watch (eg stack build --fast --file-watch). And for special cases those don't handle you can fall back on watchexec.
23:37:41 <geekosaur> ah, that's what I was trying to remember
23:38:26 × CiaoSen quits (~Jura@2a05:5800:2bf:a100:e6b9:7aff:fe80:3d03) (Ping timeout: 255 seconds)
23:39:55 <ph88> sm, ye --file-watch doesn't work with run unfortunately :( watchexec i used for another language but it's a bit buggy sometimes
23:41:38 bilegeek joins (~bilegeek@2600:1008:b04a:9621:d0c1:8618:fbe8:cc7b)
23:43:18 <sm> oh.. I haven't found any watchexec bugs, but it's true it can't detect changes by default in all cases - when I'm saving from VS code / working in a vs code terminal seems to be a notable one. It has some other detection methods but I haven't given them a good try.
23:43:41 <sm> I'm sure it varies by platform too
23:45:11 shapr` joins (~user@c-24-218-186-89.hsd1.ma.comcast.net)
23:46:36 × shapr quits (~user@c-24-218-186-89.hsd1.ma.comcast.net) (Ping timeout: 245 seconds)

All times are in UTC on 2024-03-24.