2026/01/05

2026-01-05 00:00:03 +0100gorignak(~gorignak@user/gorignak) (Quit: quit)
2026-01-05 00:00:42 +0100gorignak(~gorignak@user/gorignak) gorignak
2026-01-05 00:03:36 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-05 00:04:06 +0100gorignak(~gorignak@user/gorignak) (Client Quit)
2026-01-05 00:05:31 +0100gorignak(~gorignak@user/gorignak) gorignak
2026-01-05 00:05:42 +0100gorignak(~gorignak@user/gorignak) (Remote host closed the connection)
2026-01-05 00:10:05 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-01-05 00:17:16 +0100DetourNetworkUK(~DetourNet@user/DetourNetworkUK) ()
2026-01-05 00:17:16 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-05 00:17:39 +0100DetourNetworkUK(DetourNetw@user/DetourNetworkUK) DetourNetworkUK
2026-01-05 00:22:07 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-01-05 00:30:26 +0100olivial(~benjaminl@user/benjaminl) (Remote host closed the connection)
2026-01-05 00:32:10 +0100olivial(~benjaminl@user/benjaminl) benjaminl
2026-01-05 00:33:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-05 00:33:02 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2026-01-05 00:35:33 +0100mange(~mange@user/mange) mange
2026-01-05 00:36:29 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) machinedgod
2026-01-05 00:38:07 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-01-05 00:43:08 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) humasect
2026-01-05 00:47:40 +0100humasect(~humasect@dyn-192-249-132-90.nexicom.net) (Ping timeout: 246 seconds)
2026-01-05 00:49:05 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-05 00:50:27 +0100ttybitnik(~ttybitnik@user/wolper) (Quit: Fading out...)
2026-01-05 00:53:00 +0100pavonia(~user@user/siracusa) siracusa
2026-01-05 00:53:34 +0100Square3(~Square@user/square) Square
2026-01-05 00:54:06 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-01-05 01:02:59 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 260 seconds)
2026-01-05 01:04:02 +0100 <haskellbridge> <maerwald> sm: what is sad about a stable and well working GHC release?
2026-01-05 01:04:40 +0100 <haskellbridge> <maerwald> Should we switch to 9.8 which is abandoned or to 9.10 which has two minor broken releases (including the last one)?
2026-01-05 01:05:07 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-05 01:05:17 +0100 <haskellbridge> <maerwald> 'recommended' isn't for people who want to follow the latest releases.
2026-01-05 01:06:57 +0100 <haskellbridge> <maerwald> Sorry, 9.12 is the one that's broken... I'm starting to mix up all the broken releases
2026-01-05 01:10:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-01-05 01:10:11 +0100 <haskellbridge> <sm> @maerwald that's a fine thing of course. I acknowledged the no doubt excellent reasons in the linked discussion with my thumbs up. I called it sad mainly because as an experienced haskeller I expect many difficulties building current projects or using tools, and many known limitations, with those older ghc versions.
2026-01-05 01:10:15 +0100 <haskellbridge> <maerwald> 9.6 is documented as suitable for use: https://gitlab.haskell.org/ghc/ghc/-/wikis/GHC-status
2026-01-05 01:10:41 +0100 <haskellbridge> <maerwald> sm: What difficulties?
2026-01-05 01:12:15 +0100 <haskellbridge> <sm> i don't have a list handy. But in my time as a maintainer and packager I've worked around a ton of ghc version and platform specific bugs or limitations
2026-01-05 01:14:21 +0100 <haskellbridge> <maerwald> What limitations?
2026-01-05 01:14:38 +0100 <haskellbridge> <maerwald> Why is 9.6 more limited than 9.10?
2026-01-05 01:15:58 +0100 <haskellbridge> <sm> I did not prepare a list in advance of this chat have forgotten them for the moment. I could go digging in my issue tracker but it's not important
2026-01-05 01:18:15 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-05 01:19:24 +0100 <haskellbridge> <maerwald> If you make this claim then I think it's important
2026-01-05 01:20:18 +0100 <haskellbridge> <sm> I mean, I would make the effort if you are truly considering bumping the recommendation. I assume you've seen them all though and will bump when you judge best
2026-01-05 01:20:30 +0100 <haskellbridge> <maerwald> My experience in 10 years of Haskell shows that the difficulties and limitations lie within NEW GHC versions.
2026-01-05 01:20:41 +0100 <haskellbridge> <maerwald> There's a whole github repo dedicated to it
2026-01-05 01:21:07 +0100 <haskellbridge> <sm> of course those exist too
2026-01-05 01:21:23 +0100 <haskellbridge> <maerwald> https://github.com/tomjaguarpaw/tilapia
2026-01-05 01:21:34 +0100 <haskellbridge> <maerwald> And tooling works fine with 9.6
2026-01-05 01:21:46 +0100 <haskellbridge> <maerwald> It doesn't work as fine with new GHC versions
2026-01-05 01:21:50 +0100 <haskellbridge> <maerwald> That's a fact
2026-01-05 01:22:24 +0100 <haskellbridge> <maerwald> So I think your claim is wrong
2026-01-05 01:23:22 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-01-05 01:23:27 +0100 <haskellbridge> <sm> fair enough, I won't argue with you
2026-01-05 01:25:16 +0100 <haskellbridge> <sm> and as always, thank you for your work, it's appreciated
2026-01-05 01:27:36 +0100 <haskellbridge> <maerwald> But going forward, GHCup will follow GHCs official LTS releases most likely
2026-01-05 01:27:53 +0100 <haskellbridge> <maerwald> Once they've matured, that is
2026-01-05 01:28:11 +0100 <haskellbridge> <sm> that'll be great, I'm looking forward to it
2026-01-05 01:28:52 +0100 <haskellbridge> <maerwald> An LTS release is decided beforehand with no knowledge about its quality. So we'll probably wait until the micro version is at 3 or higher
2026-01-05 01:30:35 +0100 <haskellbridge> <sm> or if it's so good there's no minor release for a year, you might make an exception ?
2026-01-05 01:32:08 +0100GdeVolpiano(~GdeVolpia@user/GdeVolpiano) (Ping timeout: 260 seconds)
2026-01-05 01:32:15 +0100 <haskellbridge> <sm> rather unlikely I suppose
2026-01-05 01:32:49 +0100zlqrvx(~zlqrvx@user/zlqrvx) (Quit: connection reset by purr)
2026-01-05 01:32:57 +0100GdeVolpiano(~GdeVolpia@user/GdeVolpiano) GdeVolpiano
2026-01-05 01:33:54 +0100zlqrvx(~zlqrvx@user/zlqrvx) zlqrvx
2026-01-05 01:34:23 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-05 01:38:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-05 01:40:17 +0100spew(~spew@user/spew) (Quit: nyaa~)
2026-01-05 01:50:11 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-05 01:55:13 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-01-05 02:05:54 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-05 02:06:30 +0100omidmash1(~omidmash@user/omidmash) omidmash
2026-01-05 02:08:47 +0100omidmash(~omidmash@user/omidmash) (Ping timeout: 256 seconds)
2026-01-05 02:08:47 +0100omidmash1omidmash
2026-01-05 02:09:49 +0100jmcantrell_(~weechat@user/jmcantrell) jmcantrell
2026-01-05 02:11:02 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-01-05 02:20:10 +0100Tuplanolla(~Tuplanoll@88-114-88-95.elisa-laajakaista.fi) (Quit: Leaving.)
2026-01-05 02:20:37 +0100 <oats> why does so much code in base and ghc use `case` for binding instead of `let` or `where`? like here: https://hackage-content.haskell.org/package/ghc-internal-9.1401.0/docs/src/GHC.Internal.Arr.html#n…
2026-01-05 02:21:14 +0100 <c_wraith> let/where create a thunk when they match on a pattern. case forces evaluation.
2026-01-05 02:21:38 +0100 <c_wraith> > let Just x = Nothing in ()
2026-01-05 02:21:38 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-05 02:22:25 +0100 <c_wraith> huh. lambdabot isn't in here right now
2026-01-05 02:22:53 +0100 <EvanR> let x = whatever in y, a thunk makes sense
2026-01-05 02:23:15 +0100 <EvanR> but let Pattern x y z = hopefullyPattern in e ?
2026-01-05 02:23:30 +0100 <EvanR> doesn't immediately evaluate?
2026-01-05 02:23:32 +0100 <c_wraith> Well, anyway. (let Just x = Nothing in ()) evaluates to (). (case Nothing of Just x -> ()) is a pattern match error.
2026-01-05 02:24:09 +0100 <EvanR> % let Just x = Nothing in ()
2026-01-05 02:24:09 +0100 <yahb2> <interactive>:153:5: warning: [GHC-53633] [-Woverlapping-patterns] ; Pattern match is redundant ; In a pattern binding: Just x = ... ; ; ()
2026-01-05 02:24:21 +0100lambdabot(~lambdabot@haskell/bot/lambdabot) lambdabot
2026-01-05 02:24:21 +0100ChanServ+v lambdabot
2026-01-05 02:24:49 +0100divlamir(~divlamir@user/divlamir) (Read error: Connection reset by peer)
2026-01-05 02:24:57 +0100 <c_wraith> EvanR: Irrefutable matches just create thunks. and in a let/where, matches are irrefutable by default.
2026-01-05 02:25:00 +0100divlamir(~divlamir@user/divlamir) divlamir
2026-01-05 02:26:15 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-05 02:26:26 +0100 <EvanR> wow
2026-01-05 02:27:34 +0100 <c_wraith> > case undefined of ~(a, b) -> () -- you can use ~ to make a match in a case irrefutable
2026-01-05 02:27:35 +0100 <lambdabot> ()
2026-01-05 02:27:59 +0100jj_(~apropos@node-1w7jr9pqogh9vahu1mvneock5.ipv6.telus.net) omentic
2026-01-05 02:28:00 +0100 <oats> % case undefined of (a,b) -> ()
2026-01-05 02:28:00 +0100 <yahb2> *** Exception: Prelude.undefined ; ; HasCallStack backtrace: ; undefined, called at <interactive>:155:6 in interactive:Ghci16
2026-01-05 02:28:11 +0100 <int-e> it probably got blocked by +r
2026-01-05 02:28:39 +0100jj(~apropos@d154-20-120-135.bchsia.telus.net) (Ping timeout: 244 seconds)
2026-01-05 02:28:39 +0100jj_jj
2026-01-05 02:28:40 +0100 <int-e> (lamdbabot was perfectly alive, just not joined here)
2026-01-05 02:28:50 +0100 <c_wraith> int-e: ah, you're still running lambdabot? I wasn't sure.
2026-01-05 02:29:09 +0100 <oats> and irrefutable patterns are lazy?
2026-01-05 02:29:40 +0100 <oats> % case undefined of ~(a,b) -> b
2026-01-05 02:29:40 +0100 <yahb2> *** Exception: Prelude.undefined ; ; HasCallStack backtrace: ; undefined, called at <interactive>:157:6 in interactive:Ghci16
2026-01-05 02:29:49 +0100 <oats> t'would appear
2026-01-05 02:29:56 +0100 <c_wraith> Yeah. "irrefutable" is a slightly weird way of saying "trust the programmer, you don't need to check this immediately"
2026-01-05 02:30:33 +0100 <int-e> c_wraith: yes
2026-01-05 02:31:47 +0100 <haskellbridge> <loonycyborg> How can you make patterns in let and where refutable?
2026-01-05 02:31:49 +0100 <haskellbridge> <loonycyborg> Like you said they're irrefutable "by default"
2026-01-05 02:32:14 +0100 <c_wraith> loonycyborg: You need the BangPatterns extension, then you mark the match with !
2026-01-05 02:33:17 +0100 <haskellbridge> <loonycyborg> Ah makes sense I guess