2024/03/24

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