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.