Home liberachat/#haskell: Logs Calendar

Logs on 2025-12-28 (liberachat/#haskell)

00:01:15 × hsw quits (~hsw@112-104-86-252.adsl.dynamic.seed.net.tw) (Ping timeout: 240 seconds)
00:06:26 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
00:11:25 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
00:11:34 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 246 seconds)
00:19:01 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
00:24:01 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
00:33:04 <haskellbridge> <Liamzee> apparently apple silicon (and psosibly modern ARM in general) is designed to be very resistant to segfaults; double free would throw an error, but not a segfault
00:33:29 <haskellbridge> <Liamzee> we ended up having to point a pointer at kernel memory just to trigger a segfault
00:34:28 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
00:37:06 × mhatta quits (~mhatta@www21123ui.sakura.ne.jp) (Quit: ZNC 1.10.1+deb1 - https://znc.in)
00:39:21 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
00:50:16 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
00:54:55 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
00:58:18 × collide2954 quits (~collide29@user/collide2954) (Quit: The Lounge - https://thelounge.chat)
01:02:08 <geekosaur> there are malloc libraries which do that (it's not up to the hardware)
01:03:06 <geekosaur> which doesn't mean you can't segfault on them, just that common errors like double free, use after free, and overreading/writing a block are detected and reported instead of corrupting memory or crashing
01:04:57 <geekosaur> they're really nice in conjunction with debuggers because you can break on the error entry point and catch things like that immediately instead of after something reveals memory corruption
01:06:04 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
01:07:05 <geekosaur> (that said, I think memcheck has superseded all of them…)
01:10:21 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
01:11:58 <int-e> presumably this is about ARM's "pointer authentication" feature
01:12:50 × Hafydd quits (~Hafydd@user/hafydd) (Quit: WeeChat 4.8.1)
01:14:10 jmcantrell joins (~weechat@user/jmcantrell)
01:15:46 omidmash2 joins (~omidmash@user/omidmash)
01:16:19 collide2954 joins (~collide29@user/collide2954)
01:17:35 × omidmash quits (~omidmash@user/omidmash) (Ping timeout: 244 seconds)
01:17:35 omidmash2 is now known as omidmash
01:18:55 hsw joins (~hsw@112-104-86-252.adsl.dynamic.seed.net.tw)
01:19:21 hsw_ joins (~hsw@112-104-86-252.adsl.dynamic.seed.net.tw)
01:19:36 × hsw_ quits (~hsw@112-104-86-252.adsl.dynamic.seed.net.tw) (Remote host closed the connection)
01:21:29 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
01:24:44 × divlamir quits (~divlamir@user/divlamir) (Read error: Connection reset by peer)
01:24:56 divlamir joins (~divlamir@user/divlamir)
01:28:13 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
01:31:49 × jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 264 seconds)
01:33:34 jmcantrell joins (~weechat@user/jmcantrell)
01:38:57 Hafydd joins (~Hafydd@user/hafydd)
01:39:32 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
01:40:22 × Hafydd quits (~Hafydd@user/hafydd) (Read error: Connection reset by peer)
01:40:28 Hafydd_ joins (~Hafydd@user/hafydd)
01:43:55 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
01:45:14 × Tuplanolla quits (~Tuplanoll@88-114-88-95.elisa-laajakaista.fi) (Quit: Leaving.)
01:49:35 × annamalai quits (~annamalai@157.32.142.174) (Ping timeout: 240 seconds)
01:55:00 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
02:00:03 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
02:10:48 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
02:14:10 × Hafydd_ quits (~Hafydd@user/hafydd) (Quit: WeeChat 4.8.1)
02:15:35 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
02:22:05 Hafydd joins (~Hafydd@user/hafydd)
02:26:50 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
02:27:49 annamalai joins (~annamalai@157.33.228.123)
02:31:28 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
02:42:36 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
02:47:43 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
02:53:47 × acidjnk quits (~acidjnk@p200300d6e7171962095fe0be59254d80.dip0.t-ipconnect.de) (Ping timeout: 244 seconds)
02:58:23 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
03:03:25 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
03:05:02 × op_4 quits (~tslil@user/op-4/x-9116473) (Remote host closed the connection)
03:05:39 op_4 joins (~tslil@user/op-4/x-9116473)
03:14:10 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
03:18:55 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
03:22:03 × ttybitnik quits (~ttybitnik@user/wolper) (Quit: Fading out...)
03:29:57 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
03:35:01 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
03:40:15 <Leary> "variance introduced by outliers: -9223372036854775808% (severely inflated)"
03:40:19 <Leary> Thanks, criterion.
03:45:46 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
03:50:15 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
03:50:46 × Hafydd quits (~Hafydd@user/hafydd) (Quit: WeeChat 4.8.1)
04:01:32 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
04:04:27 <monochrom> That number looks awfully familar.
04:06:11 <monochrom> > 2^63
04:06:12 <lambdabot> 9223372036854775808
04:06:16 <monochrom> That. :)
04:06:29 <Leary> > minBound :: Int
04:06:30 <lambdabot> -9223372036854775808
04:06:37 <Leary> Or that.
04:07:52 <monochrom> But if variance is negative, that's severely deflated or imploded, not inflated. >:)
04:08:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
04:14:21 <Leary> (turns out I'd forgotten to wait on forked threads, so criterion was measuring a load of nonsense)
04:15:25 <monochrom> oh heh
04:19:35 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
04:24:15 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
04:28:25 Hafydd joins (~Hafydd@user/hafydd)
04:35:22 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
04:40:07 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
04:49:31 × Pozyomka quits (~pyon@user/pyon) (Quit: bbl)
04:51:08 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
04:55:39 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
05:01:16 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
05:01:20 iqubic joins (~sophia@2601:602:9203:1660:c40f:f996:91cc:d34)
05:03:27 <iqubic> I have a Haskell design question. How do I decide if I should make a typeclass to describe a particular constraint or just use and pass around a record of functions.
05:05:55 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
05:29:23 <haskellbridge> <slack1256> Iqubic: the standard answer some years ago was that if you could give "algebraic laws" relating the operations between themselves or super classes you were in the right path
05:29:31 × spew quits (~spew@user/spew) (Quit: nyaa~)
05:30:52 <haskellbridge> <slack1256> The second case was that the class admitted obvious instances. For example show and read. Foldable was obvious even if kind of adhoc because `toList` was the only real method and everything else was a more efficient way to avoid the conversion to lists.
05:31:18 <ski> does the type determine a canonical instance ? or would it make sense to want to pass different records, at different times, for the same type ?
05:31:31 <haskellbridge> <slack1256> In summary, you had abstraction power via laws or you had a simple model ln the instances
05:32:22 <ski> yea, you also most likely should not be making a type class, unless you already have at least two different instances in mind
05:32:32 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
05:36:37 <iqubic> In the thing that I'm modelling, the same type could very easily have different implementations. And I don't want to jump through newtype wrappers like Sum and Product for the two different Monoids over integers.
05:36:56 <iqubic> The more I actually think about this, the more it makes sense to use a record of functions.
05:37:15 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
05:37:35 <haskellbridge> <slack1256> Record of functions can be used everywhere else. Most importantly where the provenance is a deciding factor on what the functions should do, not just the type. This is a fine concept, these records of functions are modules as ocaml sense
05:39:17 <iqubic> Essentially, I'm trying to model simple combinatorial games like "nim" where I can write a function like "nextMoves :: a -> [a]", but then I realized that different games might have the type for the state variable.
05:39:28 <ski> yea, sounds like record of operations is more sensible, then
05:40:43 × rekahsoft quits (~rekahsoft@70.51.99.245) (Remote host closed the connection)
05:40:46 <ski> btw, sometimes it makes sense to make a function from a record-of-operations, to another (possibly existential) record-of-operations. this being one way to do something similar to the parameterized modules in the module system of the MLs (SML,OCaml) (cf. Backpack)
05:41:11 <iqubic> Yeah, I get what you mean.
05:41:16 rekahsoft joins (~rekahsoft@70.51.99.245)
05:41:29 <haskellbridge> <slack1256> I liked backpack...
05:42:16 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
05:42:45 <ski> you'd open the returned record in a scope, bringing the skolem into scope, and then use the operations directly. this is a way to do Abstract Data Types
05:43:03 <iqubic> In the basic game of "nim" you have a bunch of distinct piles, and each pile has a bunch of objects. Players take turns removing any amount of objects from a single pile. The winner is the player to make the last valid move. In other words, if you can't make a move, you lose.
05:43:34 <ski> (unlike doing OO via existentials, where you'd open the record, apply an operation to the current state, and then rewrap new state with the operations again, every time)
05:44:52 <iqubic> I can model this as with a state of [Int]. But if I want a similar game, but with the constraint of "after each move, the piles must all have a coprime number of objects", that's also a state of type "[Int]" but a different "nextMoves :: a -> [a]" function.
05:45:16 <iqubic> BTW, Conway et al. call that version "prim", I think.
05:45:41 <haskellbridge> <slack1256> These combinatorial games are not related in anyway right? They just happen to implement a nextMoves function, the lack of laws pushes you to record of functions
05:46:55 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
05:46:56 <iqubic> Yeah, correct.
05:47:12 <iqubic> It's mainly just the "nextMoves" function that relates them.
05:47:24 <iqubic> And I have no laws, because I have just the one function.
05:47:42 <haskellbridge> <slack1256> Right, which is also a non obvious function
05:48:54 <ski> presumably iterating `nextMoves' is meant to lead to a tree where no path is infinite ?
05:49:23 <iqubic> Correct. I'm only interested in finite games here.
05:49:33 <ski> some kind of well-founded order thing
05:51:06 <haskellbridge> <slack1256> Multiple implementations for that in no way related to the days structure to give an instance
05:51:12 <ski> all the outputs of `nextMoves' are presumably strictly less than the input
05:51:17 <iqubic> Basically, I've been reading the book "Winning Ways For Your Mathematical Plays" by Berlekamp, Guy, and Conway, and I want to implement some of these things in Haskell.
05:51:17 <haskellbridge> <slack1256> Data*
05:51:33 <iqubic> ski: For some definition of "strictly less", yeah.
05:52:02 <ski> yea, some arbitrary partial order
05:52:30 <ski> (that is well-founded)
05:52:47 <iqubic> But my main question was "Do I model this as a typeclass with one function or a record of one function"?
05:53:12 <ski> yep. the latter seems more reasonable
05:53:45 <ski> (you could put the order relation as a second operation in the record .. but perhaps you have no use for it, at all, at run-time)
05:54:08 <iqubic> I agree. Because different games with completely different rules might want to use similar state representations.
05:54:30 <iqubic> ski: Currently my planned API doesn't need a way to tell which states are smaller.
05:55:01 <ski> in any case, even without an explicit order relation (computationally irrelevant or not), you should still be able to express a well-foundedness law for `nextMoves'
05:55:20 <ski> (iow, you don't need more than one operation, to be able to have a law)
05:55:43 <iqubic> What do you mean by well-foundedness?
05:58:01 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
05:58:38 <ski> for a strict order relation `<', a property like `forall P. (forall x. (forall y. y < x -> P y) -> P x) -> forall x. P x'. if we were talking about natural numbers, this would be called "strong induction" : you can prove a property `P' holds for all `x', if you can prove it holds for all `x', under the assumption it holds for all `y' that are strictly less than `x'
05:59:14 <iqubic> Right I see.
06:00:53 <ski> in terms of `nextMoves', instead of `forall y. y < x -> P y', we'd say `forall y. elem y (nextMoves x) = True -> P y'. iow, assuming that it holds for all the possible next states, it should be able to show it holds for the current state
06:02:25 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
06:02:39 <iqubic> forall a. let a' = nextMoves a in all [ length (nextMoves opt) < length a' | opt <- nextMoves a]
06:02:51 <iqubic> Or something like that.
06:03:27 <iqubic> Basically, if you keep iterating nextMoves function, you should keep getting less and less options.
06:03:55 × jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 244 seconds)
06:07:06 <ski> not necessarily
06:08:21 peterbecich joins (~Thunderbi@71.84.33.135)
06:08:22 <ski> a tree that at each node at depth `n' has either zero or `n' branches of that node could still be well-founded
06:09:17 <ski> the important part is that each state is getting closer to a minimal element (a leaf, one which has zero successors), on each step
06:09:53 <ski> you could have the branching explode, and still have finite depth for every path
06:10:16 <iqubic> Yeah. But in my case, I want you to always have strictly less moves as you go along. That's the main case I'm interested in exploring.
06:10:47 <ski> (there's not even a need for the branching to be finite, it could still be well-founded. although, possibly, in your case, you're only interested in finite branching)
06:11:02 <ski> ah, okay
06:13:25 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
06:18:24 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
06:29:12 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
06:34:07 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
06:35:20 × synchromesh quits (~john@2406:5a00:2412:2c00:7842:6802:4767:2e5b) (Read error: Connection reset by peer)
06:36:46 synchromesh joins (~john@2406:5a00:2412:2c00:7842:6802:4767:2e5b)
06:40:06 <iqubic> Essentially, if a level of my tree has N members, then all children there should have strictly less than N descendants, except for the root.
06:40:54 <iqubic> Except, it's more like a DAG, because there might be multiple possible ways to get from the current state to some future state.
06:42:24 <iqubic> But this mathematical theory has little to do with Haskell at this point and I have gotten my orginal design question answered already.
06:45:19 <hololeap> are there any language extensions now days that can let you write a Functor instance for Set? some way to inject a constraint requirement into an existing function, or something?
07:02:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
07:06:57 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
07:13:20 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
07:18:05 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
07:23:15 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
07:29:18 euphores joins (~SASL_euph@user/euphores)
07:31:12 × sroso quits (~sroso@user/SrOso) (Quit: Leaving :))
07:33:52 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
07:38:22 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
07:45:32 <[exa]> hololeap: you can wrap the set in a newtype that imposes the constraint, with similar tradeoffs like with other newtype wraps (inconvenient but coerces well) and typeclass constraints on data types (generally hated)
07:49:00 <[exa]> iqubic: people usually have these "operation records" for various backend implementations for whatever, e.g. here: https://hackage-content.haskell.org/package/tls-2.1.13/docs/Network-TLS.html#t:Backend or here: https://hackage.haskell.org/package/selda-0.5.2.0/docs/Database-Selda-Backend.html#t:SeldaBackend . TBH quite easy to go that way, and very easy to slap on a typeclass later, in case you
07:49:02 <[exa]> decide you want to infer which backend to use where.
07:49:15 <hololeap> hm, ok. I was looking into a different instance of Apply for Map (different than the one defined in semigroupoids) and ultimately it requires (Ord k, Semigroup a) => Map k a
07:49:19 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
07:50:04 <hololeap> but Apply is a class for Type -> Type
07:50:19 <[exa]> hololeap: why though (kinda curious, and also usually this has been a common instance of xyz issues)
07:51:15 <hololeap> mostly just out of curiosity. the current Apply instance feels very niche since it uses Map.intersectionWith under the hood
07:53:26 <hololeap> I was looking into an instance that would use something like Map.unionWith (<>)
07:53:39 <hololeap> though not exactly that
07:53:47 <Leary> That sounds like `Semigroup` instance instead.
07:53:58 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
07:54:39 × ystael quits (~ystael@user/ystael) (Ping timeout: 260 seconds)
07:55:04 <[exa]> hololeap: that can't do applicative though, right? (you'd need a default function and default parameter)
07:55:26 <hololeap> right, Apply is Applicative sans `pure`,
07:55:30 <[exa]> so yeah that would be a (specialized) semigroup
07:55:47 <hololeap> just the <*> part of Applicative
07:55:50 <[exa]> no in this case even `ap` would require the defaults
07:56:47 ystael joins (~ystael@user/ystael)
07:57:06 <hololeap> anyway, this wasn't really a problem I needed to solve, just an exploration of ideas
07:58:58 <hololeap> @hackage quickcheck-classes -- makes it easy to verify the Apply laws
07:58:58 <lambdabot> https://hackage.haskell.org/package/quickcheck-classes -- makes it easy to verify the Apply laws
08:00:01 × tt1231607 quits (~tt1231@75.185.104.199) (Quit: The Lounge - https://thelounge.chat)
08:03:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
08:05:33 tt1231607 joins (~tt1231@75.185.104.199)
08:08:07 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
08:19:04 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
08:25:49 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
08:37:04 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
08:41:24 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
08:50:49 <[exa]> hololeap: kinda wondering if there could be a monoid adaptor for this case, like we have with Sum... could be Keyed or so
08:52:14 <hololeap> there's some in the monoidal-containers package if you mean making (<>) = Map.unionWith (<>)
08:52:32 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
08:52:41 <[exa]> still that ain't gonna typecheck the functions there for Apply
08:52:55 <[exa]> I'll think about it. :D
08:57:38 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
09:02:39 × califax quits (~califax@user/califx) (Remote host closed the connection)
09:03:36 califax joins (~califax@user/califx)
09:03:44 CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db)
09:04:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
09:08:53 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
09:10:06 × CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 256 seconds)
09:20:03 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
09:23:27 <hololeap> I get fleetwood mac songs stuck in my head a lot, even though I only really hear them on the radio in stores and such
09:24:49 <hololeap> oops, wrong channel :p
09:24:55 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
09:35:51 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
09:36:53 <Hecate> hololeap: no you're right, let's talk about the things that matter. I love The Chain :D
09:38:02 <hololeap> I agree
09:39:45 <hololeap> really, that whole album is epic. stevie nicks has an incredible unique voice
09:40:47 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
09:48:00 itaipu joins (~itaipu@168.121.98.38)
09:48:35 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 240 seconds)
09:51:38 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
09:57:01 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
09:59:00 acidjnk joins (~acidjnk@p200300d6e7171990e8909c854c213001.dip0.t-ipconnect.de)
10:02:56 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
10:03:08 × itaipu quits (~itaipu@168.121.98.38) (Ping timeout: 244 seconds)
10:05:58 × califax quits (~califax@user/califx) (Remote host closed the connection)
10:06:30 Tuplanolla joins (~Tuplanoll@88-114-88-95.elisa-laajakaista.fi)
10:06:56 califax joins (~califax@user/califx)
10:08:40 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
10:17:27 itaipu joins (~itaipu@168.121.98.38)
10:22:37 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
10:26:52 oneeyedalien joins (~oneeyedal@user/oneeyedalien)
10:27:11 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
10:32:31 Pozyomka joins (~pyon@user/pyon)
10:38:27 × oneeyedalien quits (~oneeyedal@user/oneeyedalien) (Quit: Leaving)
10:40:50 × tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
10:49:51 × euphores quits (~SASL_euph@user/euphores) (Quit: Leaving.)
10:51:41 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
10:56:17 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Remote host closed the connection)
10:56:33 chromoblob joins (~chromoblo@user/chromob1ot1c)
10:57:01 euphores joins (~SASL_euph@user/euphores)
11:05:16 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
11:10:18 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
11:10:54 CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db)
11:15:32 danza joins (~danza@user/danza)
11:23:19 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
11:28:09 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
11:29:41 × danza quits (~danza@user/danza) (Remote host closed the connection)
11:40:59 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
11:45:20 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
11:56:41 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
12:01:21 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
12:06:15 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
12:13:04 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
12:26:15 merijn joins (~merijn@62.45.136.136)
12:30:35 × merijn quits (~merijn@62.45.136.136) (Ping timeout: 240 seconds)
12:33:05 × poscat quits (~poscat@user/poscat) (Remote host closed the connection)
12:33:32 × sudden quits (~cat@user/sudden) (Quit: Lost terminal)
12:35:49 sudden joins (~cat@user/sudden)
12:36:14 poscat joins (~poscat@user/poscat)
12:38:33 × CipherLab quits (~NSA@2a0d:5600:6:108::2e) (Ping timeout: 244 seconds)
12:51:52 ttybitnik joins (~ttybitnik@user/wolper)
12:55:16 × robobub quits (uid248673@id-248673.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
13:07:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
13:10:55 × ttybitnik quits (~ttybitnik@user/wolper) (Quit: Fading out...)
13:11:55 × chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 240 seconds)
13:12:02 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
13:12:07 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
13:16:07 ttybitnik joins (~ttybitnik@user/wolper)
13:24:36 tromp joins (~textual@user/tromp)
13:25:57 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
13:30:39 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
13:43:03 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
13:47:25 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
13:55:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
14:00:01 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
14:08:18 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
14:10:04 spew joins (~spew@user/spew)
14:14:55 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
14:21:24 × tromp quits (~textual@user/tromp) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:37:00 tromp joins (~textual@user/tromp)
14:41:18 gioyik joins (~gioyik@gateway/tor-sasl/gioyik)
14:43:46 × acidjnk quits (~acidjnk@p200300d6e7171990e8909c854c213001.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
14:45:36 somemathguy joins (~somemathg@user/somemathguy)
14:47:05 × gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 252 seconds)
15:09:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
15:14:03 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
15:21:23 × tromp quits (~textual@user/tromp) (Quit: My iMac has gone to sleep. ZZZzzz…)
15:24:24 × CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 260 seconds)
15:24:38 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
15:25:23 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
15:27:49 wootehfoot joins (~wootehfoo@user/wootehfoot)
15:29:35 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
15:38:24 spew_ joins (~spew@user/spew)
15:38:25 × spew quits (~spew@user/spew) (Ping timeout: 264 seconds)
15:39:22 × spew_ quits (~spew@user/spew) (Client Quit)
15:42:14 spew joins (~spew@user/spew)
15:42:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
15:46:57 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds)
15:57:55 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
16:02:07 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
16:10:16 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
16:15:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
16:19:38 × bitdex_ quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
16:21:55 × somemathguy quits (~somemathg@user/somemathguy) (Ping timeout: 264 seconds)
16:29:38 wennefer0_______ joins (~wennefer0@user/wennefer0)
16:32:08 × wennefer0_______ quits (~wennefer0@user/wennefer0) (Remote host closed the connection)
16:41:06 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
16:41:36 × opencircuit quits (~quassel@user/opencircuit) (Remote host closed the connection)
16:41:45 opencircuit joins (~quassel@user/opencircuit)
16:48:22 somemathguy joins (~somemathg@user/somemathguy)
17:01:55 × glguy quits (glguy@libera/staff/glguy) (Quit: Quit)
17:02:00 glguy joins (glguy@libera/staff/glguy)
17:03:18 × infinity0 quits (~infinity0@pwned.gg) (Remote host closed the connection)
17:06:08 infinity0 joins (~infinity0@pwned.gg)
17:10:52 × infinity0 quits (~infinity0@pwned.gg) (Ping timeout: 255 seconds)
17:11:18 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
17:18:00 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
17:20:54 × spew quits (~spew@user/spew) (Quit: nyaa~)
17:22:25 spew joins (~spew@user/spew)
17:28:52 × somemathguy quits (~somemathg@user/somemathguy) (Ping timeout: 255 seconds)
17:30:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
17:30:49 somemathguy joins (~somemathg@user/somemathguy)
17:31:17 infinity0 joins (~infinity0@pwned.gg)
17:34:07 × synchromesh quits (~john@2406:5a00:2412:2c00:7842:6802:4767:2e5b) (Quit: WeeChat 4.1.1)
17:34:42 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
17:38:16 wootehfoot joins (~wootehfoo@user/wootehfoot)
18:01:19 CryptLab joins (~NSA@2a0d:5600:6:108::2e)
18:03:14 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
18:10:55 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving)
18:11:28 tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net)
18:12:15 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
18:12:32 wootehfoot joins (~wootehfoo@user/wootehfoot)
18:17:07 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
18:18:42 tromp joins (~textual@user/tromp)
18:22:43 jmcantrell joins (~weechat@user/jmcantrell)
18:25:59 × somemathguy quits (~somemathg@user/somemathguy) (Quit: WeeChat 4.1.1)
18:28:10 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
18:29:23 × tromp quits (~textual@user/tromp) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:30:19 × bionade24 quits (~quassel@server2.oscloud.info) (Ping timeout: 264 seconds)
18:32:28 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
18:43:34 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
18:47:43 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
18:49:27 Square2 joins (~Square@user/square)
18:51:32 tromp joins (~textual@user/tromp)
19:01:05 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
19:02:05 CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db)
19:05:34 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
19:06:58 edmerry is now known as edm
19:12:26 sroso joins (~sroso@user/SrOso)
19:13:16 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
19:18:25 bionade24 joins (~quassel@server2.oscloud.info)
19:20:03 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
19:22:01 × earthy quits (~arthurvl@2a02-a469-f5e2-1-83d2-ca43-57a2-dc81.fixed6.kpn.net) (Quit: ein reboot macht gut)
19:33:18 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
19:35:20 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 245 seconds)
19:37:42 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
19:37:49 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
19:39:07 <machinedgod> Hi everyone. Linear types question (mostly theoretical curiosity but practical solution is appreciated too): is it possible to make a linear function that acts just like a record selector on data? The reason I ask is because, my intuition says - I will have to ignore (consume) all the fields except the one I need when I pattern match, therefore it violates linearity. However, linear versions of fst
19:39:13 <machinedgod> and snd from linear-base do just that. Is this meant to help bridge the gaps with nonlinear code, or is linear code actually supposed to be like that? Thank you upfront.
19:39:27 <machinedgod> (sorry for the wall of text - didn't realize how much I wrote)
19:41:44 wennefer0_ joins (~wennefer0@user/wennefer0)
19:43:56 × wennefer0_ quits (~wennefer0@user/wennefer0) (Client Quit)
19:44:23 <ncf> machinedgod: record projections take an unrestricted record unless there's only a single field, see https://ghc-proposals.readthedocs.io/en/latest/proposals/0111-linear-types.html#records-and-projections
19:44:51 <ncf> the fst and snd from linear-base have a Consumable constraint on the field that's being discarded, so there's no magic there
19:46:52 × zfnmxt quits (~m-gkkevi@209.209.10.107) (Ping timeout: 246 seconds)
19:51:34 peterbecich joins (~Thunderbi@71.84.33.135)
19:58:24 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 252 seconds)
20:03:33 Sgeo joins (~Sgeo@user/sgeo)
20:09:34 × stefan-__ quits (~m-yh2rcc@42dots.de) (Remote host closed the connection)
20:11:15 stefan-__ joins (~m-yh2rcc@42dots.de)
20:11:49 <machinedgod> Oh, I see! I didn't even notice the Consumable constraint! Thank you, now I know at least my intuition was at the right place.
20:13:09 <machinedgod> ncf: The proposal has much more information than manual - this is great, thank you again.
20:14:16 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
20:16:30 pavonia joins (~user@user/siracusa)
20:18:55 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
20:26:43 × stefan-__ quits (~m-yh2rcc@42dots.de) (Remote host closed the connection)
20:27:06 stefan-__ joins (~m-yh2rcc@42dots.de)
20:30:22 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
20:31:24 × stefan-__ quits (~m-yh2rcc@42dots.de) (Remote host closed the connection)
20:31:50 stefan-__ joins (~m-yh2rcc@42dots.de)
20:35:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
20:42:57 × Square2 quits (~Square@user/square) (Ping timeout: 252 seconds)
20:45:57 Everything joins (~Everythin@172-232-54-192.ip.linodeusercontent.com)
20:46:05 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
20:47:34 peterbecich joins (~Thunderbi@71.84.33.135)
20:50:38 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
21:00:44 × anpad quits (~pandeyan@user/anpad) (Quit: ZNC 1.10.1 - https://znc.in)
21:02:50 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
21:04:10 × tromp quits (~textual@user/tromp) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:07:17 anpad joins (~pandeyan@user/anpad)
21:07:19 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
21:08:21 target_i joins (~target_i@user/target-i/x-6023099)
21:13:50 × peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 265 seconds)
21:15:15 × Everything quits (~Everythin@172-232-54-192.ip.linodeusercontent.com) (Quit: leaving)
21:15:16 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
21:17:44 × jmcantrell quits (~weechat@user/jmcantrell) (Quit: WeeChat 4.8.1)
21:21:16 jmcantrell joins (~weechat@user/jmcantrell)
21:22:04 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
21:30:56 × bionade24 quits (~quassel@server2.oscloud.info) (Quit: Apocalypse Incoming!)
21:31:08 bionade24 joins (~quassel@server2.oscloud.info)
21:33:33 × jle` quits (~jle`@2603:8001:3b00:11:94e9:8912:a399:fd05) (Ping timeout: 252 seconds)
21:34:06 jle` joins (~jle`@2603:8001:3b00:11:cdfa:561d:b734:3c69)
21:35:27 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
21:39:35 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
21:43:44 × weary-traveler quits (~user@user/user363627) (Remote host closed the connection)
21:45:15 × itaipu quits (~itaipu@168.121.98.38) (Ping timeout: 240 seconds)
21:45:15 weary-traveler joins (~user@user/user363627)
21:49:14 leonardo_ joins (~leonardo@user/leonardo-:51495)
22:04:08 × marinelli quits (~weechat@gateway/tor-sasl/marinelli) (Remote host closed the connection)
22:04:27 marinelli joins (~weechat@gateway/tor-sasl/marinelli)
22:08:15 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
22:13:11 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
22:16:20 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
22:18:13 itaipu joins (~itaipu@168.121.98.38)
22:20:50 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
22:26:56 × target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving)
22:33:36 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
22:38:25 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
22:40:50 × itaipu quits (~itaipu@168.121.98.38) (Ping timeout: 265 seconds)
22:50:02 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
22:54:37 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
22:57:17 itaipu joins (~itaipu@168.121.98.38)
23:07:21 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
23:12:00 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
23:14:40 × itaipu quits (~itaipu@168.121.98.38) (Ping timeout: 265 seconds)
23:17:17 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
23:23:52 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
23:32:34 × CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 256 seconds)
23:35:40 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)
23:39:43 × merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
23:57:33 merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl)

All times are in UTC on 2025-12-28.