2026/01/08

2026-01-08 00:01:10 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-01-08 00:03:43 +0100trickard_trickard
2026-01-08 00:04:40 +0100 <newmind> any interest in a claude-code clone written in haskell, i'm currently working on something that's already supporting most of claude-code's features (minus a lot of polish) and a few extra things (llm tool generation) and would love some external feedback/ideas/contributions while it's still fairly early in development
2026-01-08 00:07:40 +0100 <ncf> 1. no 2. fuck off
2026-01-08 00:08:04 +0100 <newmind> alright? sorry? mind telling me what i did wrong here?
2026-01-08 00:12:05 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 00:13:01 +0100timide(~timide@user/timide) (Remote host closed the connection)
2026-01-08 00:16:44 +0100 <EvanR> wow
2026-01-08 00:17:02 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2026-01-08 00:21:30 +0100newmind(~newmind@91-133-90-252.dyn.cablelink.at) (Quit: Client closed)
2026-01-08 00:21:57 +0100newmind(~newmind@91-133-90-252.dyn.cablelink.at)
2026-01-08 00:23:29 +0100Sgeo(~Sgeo@user/sgeo) Sgeo
2026-01-08 00:25:11 +0100xff0x(~xff0x@2405:6580:b080:900:4b0b:90a:cd82:2bd2) (Quit: xff0x)
2026-01-08 00:25:29 +0100xff0x(~xff0x@2405:6580:b080:900:4b0b:90a:cd82:2bd2)
2026-01-08 00:27:51 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 00:29:52 +0100marlino(~marlino@96-8-193-27.block0.gvtc.com) (WeeChat 4.8.1)
2026-01-08 00:29:52 +0100 <haskellbridge> <sm> llms and ai are extremely disruptive and people have strong feelings for and against
2026-01-08 00:31:48 +0100 <newmind> certainly, and there are many ethical and societal considerations that come with that, for sure. doesn't mean they will be going away any time soon, nor that any use of them is automatically problematic though, right?
2026-01-08 00:33:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-01-08 00:35:24 +0100 <mauke> doubtful
2026-01-08 00:37:21 +0100 <jreicher> newmind: it might be a bit like asking whether writing gambling software is automatically problematic. In theory, no, but...
2026-01-08 00:40:07 +0100xff0x(~xff0x@2405:6580:b080:900:4b0b:90a:cd82:2bd2) (Quit: xff0x)
2026-01-08 00:40:26 +0100xff0x(~xff0x@2405:6580:b080:900:4b0b:90a:cd82:2bd2)
2026-01-08 00:40:30 +0100 <newmind> i think it would be closer to writing a game framework that can be used to create gambling software, but i get what you're saying from a certain point. especially in the commercialization of AI there's a lot going on that's "not good" to put it very mildly
2026-01-08 00:43:18 +0100 <jreicher> Well when you say a clone of "claude-code" you're already specifying the use (code). And IMO LLMs/AI are deeply (and automatically) problematic for that. I quite like them for summarising a variety of prose sources though; I think that works quite well.
2026-01-08 00:43:38 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 00:45:07 +0100 <newmind> well, i't an attempt to reign in the most problematic parts (arbitrary command execution, uncontrolled side effects) to a certain extend by running it through polysemy/effects. it's not automatically solving all the problems while still being useful, but it gives you at least some more control over whats running, and how
2026-01-08 00:45:19 +0100Tuplanolla(~Tuplanoll@88-114-88-95.elisa-laajakaista.fi) (Ping timeout: 240 seconds)
2026-01-08 00:46:04 +0100DragonMaus(~DragonMau@user/dragonmaus) (Remote host closed the connection)
2026-01-08 00:46:35 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Ping timeout: 245 seconds)
2026-01-08 00:46:41 +0100DragonMaus(~DragonMau@user/dragonmaus) DragonMaus
2026-01-08 00:48:07 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 00:48:34 +0100 <jreicher> Actually I should probably be more specific where code is concerned too. I strongly dislike using an agent to generate code. But using an agent for something like snippet completion is quite good; a bit like a more contextual language server.
2026-01-08 00:48:58 +0100DragonMaus(~DragonMau@user/dragonmaus) (Remote host closed the connection)
2026-01-08 00:49:35 +0100DragonMaus(~DragonMau@user/dragonmaus) DragonMaus
2026-01-08 00:50:08 +0100newmind(~newmind@91-133-90-252.dyn.cablelink.at) (Quit: Client closed)
2026-01-08 00:50:19 +0100newmind(~newmind@91-133-90-252.dyn.cablelink.at)
2026-01-08 00:52:21 +0100DragonMaus(~DragonMau@user/dragonmaus) (Remote host closed the connection)
2026-01-08 00:52:28 +0100 <newmind> personally, i'm more accepting when it comes to actual generation: i'm fine with an LLM generating functions and even modules, but not in a unsupervised manner. the code quality itself is too low, unstructured and has a tendency to take shortcuts instead of solving problems "the right way". if you constrain the types of a function a bit though, the
2026-01-08 00:52:29 +0100 <newmind> results are actually quite usable
2026-01-08 00:52:59 +0100DragonMaus(~DragonMau@user/dragonmaus) DragonMaus
2026-01-08 00:55:07 +0100 <newmind> but what i'm working on isn't really limited to coding per se. it's a TUI chat interface with an LLM backend and a set of tools that can be called (and run through polysemy, so just by the type signature you see what can even be accessed).
2026-01-08 00:57:02 +0100Googulator(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu) (Quit: Client closed)
2026-01-08 00:57:19 +0100Googulator(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu)
2026-01-08 00:57:19 +0100 <TMA> it is a hit and miss in my experience. sometimes the result is usable or almost so, sometimes it "reasons" that it will ignore the instructions. "Do this." "Doing this is hard, let's do a simplified version instead."
2026-01-08 00:57:28 +0100marinelli(~weechat@gateway/tor-sasl/marinelli) (Remote host closed the connection)
2026-01-08 00:57:29 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2026-01-08 00:57:49 +0100marinelli(~weechat@gateway/tor-sasl/marinelli) marinelli
2026-01-08 00:57:53 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2026-01-08 00:57:53 +0100xff0x(~xff0x@2405:6580:b080:900:4b0b:90a:cd82:2bd2) (Quit: xff0x)
2026-01-08 00:58:11 +0100xff0x(~xff0x@2405:6580:b080:900:4b0b:90a:cd82:2bd2)
2026-01-08 00:59:18 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 00:59:34 +0100xff0x(~xff0x@2405:6580:b080:900:4b0b:90a:cd82:2bd2) (Client Quit)
2026-01-08 00:59:46 +0100 <newmind> yeah, and then it sticks to doing something in a convoluted way instead of taking an obviously simpler, more elegant and more universal solution... in this aspect it mimics a junior dev quite realistically, just without out the "able-to-learn" parts
2026-01-08 00:59:47 +0100xff0x(~xff0x@2405:6580:b080:900:4b0b:90a:cd82:2bd2)
2026-01-08 01:03:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 01:06:33 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
2026-01-08 01:11:45 +0100 <monochrom> As an individual citizen of #haskell I say that I'm not interested in a Claude program but that's just me. As a moderator I say that "fuck off" is uncalled for.
2026-01-08 01:13:46 +0100 <geekosaur> +1
2026-01-08 01:14:15 +0100 <newmind> it's perfectly fine, i fully get that it might be a charged topic, i was just wondering if i might have expressed myself in a way that's generally offensive >.>
2026-01-08 01:15:05 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 01:15:14 +0100 <monochrom> I think you're doing fine. You just asked "anyone interested?" so it's fair game.
2026-01-08 01:19:47 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-01-08 01:25:43 +0100Googulator14(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu)
2026-01-08 01:25:43 +0100Googulator(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu) (Quit: Client closed)
2026-01-08 01:27:49 +0100 <newmind> besides, the assessment seemed to be, at the very least, factually accurate :)
2026-01-08 01:30:53 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 01:31:26 +0100trickard(~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-01-08 01:31:28 +0100annamalai(~annamalai@2409:4042:eb8:bd50::9eca:160e) (Ping timeout: 246 seconds)
2026-01-08 01:31:39 +0100trickard_(~trickard@cpe-50-98-47-163.wireline.com.au)
2026-01-08 01:36:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-01-08 01:36:37 +0100shr\ke(~shrike@user/shrke:31298) (Ping timeout: 264 seconds)
2026-01-08 01:36:55 +0100trickard_trickard
2026-01-08 01:37:47 +0100shr\ke(~shrike@user/paxhumana) paxhumana
2026-01-08 01:37:47 +0100shr\ke(~shrike@user/paxhumana) (Changing host)
2026-01-08 01:37:47 +0100shr\ke(~shrike@user/shrke:31298) shr\ke
2026-01-08 01:40:21 +0100trickard(~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-01-08 01:42:14 +0100trickard_(~trickard@cpe-50-98-47-163.wireline.com.au)
2026-01-08 01:46:42 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 01:49:16 +0100raincomplex(~rain@user/raincomplex) raincomplex
2026-01-08 01:51:15 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 01:52:16 +0100L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2026-01-08 01:55:04 +0100 <EvanR> in the sense that a program is a proof of some theorem, if I can get a computer to give me the correct program that's great. But that's not what we're doing right now with AI
2026-01-08 01:55:48 +0100 <EvanR> it's more like mass copywrite infringement search
2026-01-08 01:56:35 +0100 <jreicher> Even correct programs aren't proofs of theorems. "In retrospect it seems to be doing the right thing."
2026-01-08 01:56:38 +0100 <EvanR> of code that is hardly a proof of anything
2026-01-08 01:56:39 +0100ryanbooker(uid4340@id-4340.hampstead.irccloud.com) ryanbooker
2026-01-08 01:57:22 +0100 <EvanR> jreicher, correct in the sense that I explicitly specified the theorem
2026-01-08 01:57:36 +0100 <EvanR> not "write me an MMO in haskell"
2026-01-08 01:58:01 +0100 <newmind> that would be the dream, yeah: provide a spec, and it spits out a program that fulfills that (and while we're at it, also does proofably terminate and run in limited space).. but current AI agents are doing the exact opposite, little more than running in yolo mode and just executing whatever comes to mind.. what i'm proposing is a middle ground: at
2026-01-08 01:58:02 +0100 <newmind> least run code that's checked by a compiler and can't do anything completely nuts
2026-01-08 01:58:48 +0100 <jreicher> Even if AI could do it, I think the bigger problem is motivating humans to write specs in the first place. That's been possible for half a century and still almost nobody doesit.
2026-01-08 01:58:49 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 01:59:15 +0100 <EvanR> that part is beyond my paygrade xD
2026-01-08 01:59:30 +0100 <newmind> in the meantime, for _a lot_ of real world software problems, it's a lot more grey: people can specify "what they want" only in very loose terms
2026-01-08 02:00:03 +0100 <EvanR> people with mathematical or engineering maturity are better at specifying what they want or what they have
2026-01-08 02:00:55 +0100 <EvanR> hopefully that bleeds onto programming at some point
2026-01-08 02:00:56 +0100 <jreicher> Never thought about this before, but maybe there's a market for AI /only/ because of informal specification. If the spec was formal non-AI program generation might be possible?
2026-01-08 02:01:26 +0100 <geekosaur> that was the theory behind UML, I think?
2026-01-08 02:01:30 +0100 <ncf> take it to #haskell-offtopic please, this is not the place to discuss LLMs
2026-01-08 02:02:08 +0100 <EvanR> yeah I don't see the connection to haskell specifically
2026-01-08 02:02:58 +0100 <jreicher> Fair
2026-01-08 02:03:10 +0100omidmash5(~omidmash@user/omidmash) omidmash
2026-01-08 02:03:35 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 02:03:39 +0100 <haskellbridge> <sm> it means that if you come into a space and talk about the ai thing you're building, you need to be ready for all kinds of response
2026-01-08 02:03:41 +0100 <haskellbridge> <sm> (I'm not excusing rudeness, but I understand it)
2026-01-08 02:05:09 +0100xff0x(~xff0x@2405:6580:b080:900:4b0b:90a:cd82:2bd2) (Ping timeout: 244 seconds)
2026-01-08 02:05:09 +0100omidmash(~omidmash@user/omidmash) (Ping timeout: 244 seconds)
2026-01-08 02:05:09 +0100omidmash5omidmash
2026-01-08 02:06:27 +0100 <newmind> the connection would be that haskell (or strongly typed languages in particular) provide guardrails and constraints to LLM generated code that does not exist in other languages, including that generated haskell code is safer (not absolutely safe) to generate and run than in most other languages (especially with the Safe extension enabled). but i
2026-01-08 02:06:28 +0100 <newmind> take your point, i was just generally looking for feedback, viewpoints and ideas
2026-01-08 02:08:00 +0100prite(~pritam@user/pritambaral) (Quit: Konversation terminated!)
2026-01-08 02:08:55 +0100 <int-e> discover new ways in which well-typed programs go wrong
2026-01-08 02:09:40 +0100 <EvanR> some of those premises about haskell don't add up ...
2026-01-08 02:10:05 +0100 <int-e> You'd need {-# LANGUAGE AdditivePromises #-} for that.
2026-01-08 02:10:13 +0100 <EvanR> executing "untrusted" code is still a horrible idea in haskell
2026-01-08 02:10:21 +0100 <EvanR> and not sure why that's even required
2026-01-08 02:10:34 +0100 <int-e> > text "why oh why indeed"
2026-01-08 02:10:35 +0100 <lambdabot> why oh why indeed
2026-01-08 02:11:16 +0100 <EvanR> the amount of infrastructure required for lambdabot xD
2026-01-08 02:11:34 +0100 <EvanR> he's running in the equivalent of that underwater prison in avengers
2026-01-08 02:12:27 +0100 <int-e> huh
2026-01-08 02:13:42 +0100 <newmind> obviously, yes. and i'd never advocate for blindly running untrusted code either. but it's a lot easier to reason about a function with a type signature than just executing a bash script blindly. it's not meant as a airtight sandbox that holds up against adverserial attacks, but it is another layer. and it is quite a bit more than what current
2026-01-08 02:13:43 +0100 <newmind> agents are doing
2026-01-08 02:14:36 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 02:15:52 +0100 <int-e> EvanR: I'm kind of curious what evoked that picture.
2026-01-08 02:17:55 +0100 <EvanR> haskell itself isn't making code inherently safe, you have whatever layers of stuff and planning for something like an eval bot
2026-01-08 02:18:36 +0100 <EvanR> in any language
2026-01-08 02:19:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 02:22:03 +0100 <jreicher> My understanding of type checking has always been that it's only checking whether the programmer has contradicted themselves. The programmer writes the type assertions, and the programmer writes the code. Type checker checks if that set of assertions is inconsistent according to the type inference rules.
2026-01-08 02:22:22 +0100 <jreicher> Nothing in that guarantees safety.
2026-01-08 02:22:52 +0100Lycurgus(~juan@user/Lycurgus) Lycurgus
2026-01-08 02:23:15 +0100bggd(~bgg@user/bggd) bggd
2026-01-08 02:23:20 +0100 <newmind> exactly, the language itself has nothing to do with the inherent safety, that was never my claim. but what it has is a type system that does let you reason where and how IO actually happens. if you need _safety_ you still need sandboxing, vms and whatever else you would use for any other binary
2026-01-08 02:24:48 +0100divlamir(~divlamir@user/divlamir) (Read error: Connection reset by peer)
2026-01-08 02:24:52 +0100divlamir_(~divlamir@user/divlamir) divlamir
2026-01-08 02:25:44 +0100divlamir_divlamir
2026-01-08 02:30:24 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 02:36:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-01-08 02:42:00 +0100lbseale(~quassel@user/ep1ctetus) ep1ctetus
2026-01-08 02:42:13 +0100Googulator14(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu) (Quit: Client closed)
2026-01-08 02:42:30 +0100Googulator14(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu)
2026-01-08 02:45:07 +0100lbseale(~quassel@user/ep1ctetus) (Client Quit)
2026-01-08 02:45:50 +0100lbseale(~quassel@user/ep1ctetus) ep1ctetus
2026-01-08 02:48:27 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 02:53:24 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-01-08 03:00:54 +0100Lycurgus(~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org ))
2026-01-08 03:00:56 +0100omidmash1(~omidmash@user/omidmash) omidmash
2026-01-08 03:02:30 +0100omidmash(~omidmash@user/omidmash) (Ping timeout: 244 seconds)
2026-01-08 03:02:30 +0100omidmash1omidmash
2026-01-08 03:04:09 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-01-08 03:04:14 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 03:09:07 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-01-08 03:09:09 +0100libertyprime(~libertypr@121.74.62.77) libertyprime
2026-01-08 03:09:22 +0100 <monochrom> You can extend that argument to all correctness proofs. The proof only checks that the program doesn't contradict the claim. Nothing says the claim guarantees safety in the first place.
2026-01-08 03:10:39 +0100 <geekosaur> (or anything else, for that matter)
2026-01-08 03:10:52 +0100 <monochrom> But the apologetic is that if you make you say the same thing in two ways, once as the program and once more as the claim, and if they are consistent, that's heightened confidence that you have made fewer mistakes.
2026-01-08 03:11:08 +0100 <monochrom> err, s/if you make you/if I make you/
2026-01-08 03:12:47 +0100 <EvanR> I write my program from scratch several times so there's less chance of a bug
2026-01-08 03:12:51 +0100 <monochrom> Extra credit if you also provide test cases. (That's like saying the same thing the third way.)
2026-01-08 03:13:20 +0100 <EvanR> 99% times 99% times 99% correct equals
2026-01-08 03:13:29 +0100 <EvanR> 999999% correct
2026-01-08 03:14:06 +0100libertyprime(~libertypr@121.74.62.77) (Quit: leaving)
2026-01-08 03:14:14 +0100 <monochrom> (In fact when I pose a programming homework question when teaching, I provide examples and sample test cases. It's good old reliability by redundancy.)
2026-01-08 03:20:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 03:23:08 +0100rainbyte(~rainbyte@186.22.19.214) (Read error: Connection reset by peer)
2026-01-08 03:24:42 +0100rainbyte(~rainbyte@186.22.19.214) rainbyte
2026-01-08 03:24:52 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-01-08 03:26:52 +0100 <EvanR> now I ran into a funny... in some cases repeating a test causes your confidence to go from 95% to 99% to 99.99999%, in other cases repeated trials causes chance of success to go from 95% 30% 2% xD
2026-01-08 03:27:19 +0100rekahsoft(~rekahsoft@70.51.99.245) (Ping timeout: 246 seconds)
2026-01-08 03:27:42 +0100 <EvanR> probability is so subjective
2026-01-08 03:29:39 +0100 <monochrom> Just rebrand, akak move the goalpost. If the chance of success drops, then speak of the chance of reproducing a heisenbug. >:)
2026-01-08 03:31:08 +0100 <newmind> or if you have 499 testcases that pass, and one that fails, guess which one is the interesting one?
2026-01-08 03:31:33 +0100 <monochrom> I guess moving the goalpost to the opposite side entirely is not what people think when they move the goalpost. >:)
2026-01-08 03:32:25 +0100 <monochrom> The 501st test case. :)
2026-01-08 03:32:58 +0100 <monochrom> "Forwarding thinking"
2026-01-08 03:35:47 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 03:40:35 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 03:46:30 +0100acidjnk(~acidjnk@p200300d6e7171923580d90e1926e8255.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
2026-01-08 03:51:36 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 03:53:43 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 240 seconds)
2026-01-08 03:57:01 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-01-08 04:04:11 +0100mange(~mange@user/mange) mange
2026-01-08 04:07:24 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 04:11:15 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 240 seconds)
2026-01-08 04:13:52 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-01-08 04:24:31 +0100annamalai(~annamalai@157.33.204.61) annamalai
2026-01-08 04:25:57 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 04:30:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-01-08 04:41:20 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 04:45:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 04:53:07 +0100haritz(~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in)
2026-01-08 04:56:00 +0100omidmash(~omidmash@user/omidmash) (Quit: The Lounge - https://thelounge.chat)
2026-01-08 04:57:10 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 05:00:31 +0100omidmash(~omidmash@user/omidmash) omidmash
2026-01-08 05:01:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 05:01:56 +0100img(~img@user/img) (Quit: ZNC 1.10.1 - https://znc.in)
2026-01-08 05:03:09 +0100img(~img@user/img) img
2026-01-08 05:06:28 +0100vidak(~vidak@2407:e400:7800:2c01:d0be:76f8:cc84:bd4a) (Quit: Konversation terminated!)
2026-01-08 05:12:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 05:16:25 +0100ryanbooker(uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2026-01-08 05:17:15 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 05:28:19 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 05:32:31 +0100vidak(~vidak@180-150-95-190.b4965f.per.static.aussiebb.net) vidak
2026-01-08 05:32:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 05:35:15 +0100trickard_trickard
2026-01-08 05:44:07 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 05:50:35 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 05:58:15 +0100takuan(~takuan@d8D86B9E9.access.telenet.be)
2026-01-08 06:02:10 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 06:06:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 06:08:06 +0100torn(~torn@91-133-90-252.dyn.cablelink.at)
2026-01-08 06:17:56 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 06:22:49 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-01-08 06:25:03 +0100Googulator14(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu) (Quit: Client closed)
2026-01-08 06:25:25 +0100Googulator14(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu)
2026-01-08 06:33:43 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 06:41:15 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 06:43:48 +0100michalz(~michalz@185.246.207.221)
2026-01-08 06:53:02 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 06:57:35 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2026-01-08 07:08:25 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 07:12:35 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 07:13:53 +0100karenw(~karenw@user/karenw) karenw
2026-01-08 07:16:07 +0100jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 240 seconds)
2026-01-08 07:16:45 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-01-08 07:19:31 +0100karenw(~karenw@user/karenw) (Quit: Deep into that darkness peering...)
2026-01-08 07:19:45 +0100karenw(~karenw@user/karenw) karenw
2026-01-08 07:21:23 +0100libertyprime(~libertypr@121.74.62.77) libertyprime
2026-01-08 07:23:49 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 07:28:37 +0100jreicher(~joelr@user/jreicher) (Quit: bbs)
2026-01-08 07:28:58 +0100vidak(~vidak@180-150-95-190.b4965f.per.static.aussiebb.net) (Quit: Konversation terminated!)
2026-01-08 07:29:35 +0100Lycurgus(~juan@user/Lycurgus) Lycurgus
2026-01-08 07:30:15 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 07:37:13 +0100mange(~mange@user/mange) (Remote host closed the connection)
2026-01-08 07:41:52 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 07:43:11 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2026-01-08 07:46:15 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 07:46:35 +0100jreicher(~joelr@user/jreicher) jreicher
2026-01-08 07:47:30 +0100Lycurgus(~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org ))
2026-01-08 07:57:27 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 08:01:31 +0100AlexZenon(~alzenon@178.34.150.138) (Ping timeout: 265 seconds)
2026-01-08 08:02:34 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2026-01-08 08:05:34 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 246 seconds)
2026-01-08 08:06:25 +0100libertyprime(~libertypr@121.74.62.77) (Quit: leaving)
2026-01-08 08:07:12 +0100AlexZenon(~alzenon@178.34.163.50)
2026-01-08 08:12:39 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-01-08 08:13:14 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 08:18:37 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-01-08 08:20:46 +0100vidak(~vidak@2407:e400:7800:2c01:d0be:76f8:cc84:bd4a) vidak
2026-01-08 08:22:09 +0100annamalai(~annamalai@157.33.204.61) (Ping timeout: 252 seconds)
2026-01-08 08:26:04 +0100tromp(~textual@2001:1c00:3487:1b00:a460:d351:8685:d1f0)
2026-01-08 08:29:03 +0100merijn(~merijn@62.45.136.136) merijn
2026-01-08 08:33:05 +0100halloy7365(~halloy736@2407:7000:af54:9000:2d67:a726:905c:972e)
2026-01-08 08:33:49 +0100halloy7365(~halloy736@2407:7000:af54:9000:2d67:a726:905c:972e) (Client Quit)
2026-01-08 08:34:07 +0100merijn(~merijn@62.45.136.136) (Ping timeout: 240 seconds)
2026-01-08 08:38:14 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 08:43:13 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-01-08 08:44:10 +0100housemate(~housemate@202.7.247.224) (Quit: https://ineedsomeacidtocalmmedown.space/)
2026-01-08 08:48:16 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 246 seconds)
2026-01-08 08:53:25 +0100stefan-_(~cri@42dots.de) (Ping timeout: 264 seconds)
2026-01-08 08:54:02 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 08:54:18 +0100stefan-_(~cri@42dots.de) stefan-_
2026-01-08 08:55:14 +0100annamalai(~annamalai@157.33.203.8) annamalai
2026-01-08 08:55:31 +0100duckworld(~duckworld@user/duckworld) (Ping timeout: 240 seconds)
2026-01-08 08:58:42 +0100housemate(~housemate@202.7.247.224) housemate
2026-01-08 08:58:46 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2026-01-08 09:09:48 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 09:09:51 +0100danza(~danza@user/danza) danza
2026-01-08 09:10:06 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2026-01-08 09:10:45 +0100duckworld(~duckworld@user/duckworld) duckworld
2026-01-08 09:13:34 +0100notzmv(~umar@user/notzmv) (Ping timeout: 244 seconds)
2026-01-08 09:15:01 +0100Square3(~Square@user/square) (Ping timeout: 244 seconds)
2026-01-08 09:16:35 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2026-01-08 09:17:59 +0100synchromesh(~john@2406:5a00:2412:2c00:4db3:269e:6459:c957) (Read error: Connection reset by peer)
2026-01-08 09:18:59 +0100synchromesh(~john@2406:5a00:2412:2c00:d907:3b01:3c28:cb58) synchromesh
2026-01-08 09:19:49 +0100lortabac(~lortabac@mx1.fracta.dev) (Ping timeout: 264 seconds)
2026-01-08 09:21:03 +0100lortabac(~lortabac@mx1.fracta.dev) lortabac
2026-01-08 09:30:11 +0100chele(~chele@user/chele) chele
2026-01-08 09:39:28 +0100orcus-(~orcus@user/brprice) brprice
2026-01-08 09:39:37 +0100orcus(~orcus@user/brprice) (Ping timeout: 264 seconds)
2026-01-08 09:42:52 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-01-08 09:43:37 +0100emmanuelux(~emmanuelu@user/emmanuelux) (Remote host closed the connection)
2026-01-08 09:46:15 +0100acidjnk(~acidjnk@p200300d6e7171973ed8816f9e416ce0a.dip0.t-ipconnect.de) acidjnk
2026-01-08 09:49:35 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2026-01-08 09:56:55 +0100peterbecich(~Thunderbi@71.84.33.135) (Ping timeout: 240 seconds)
2026-01-08 09:58:07 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 255 seconds)
2026-01-08 09:58:47 +0100merijn(~merijn@77.242.116.146) merijn
2026-01-08 09:59:48 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2026-01-08 10:00:10 +0100 <dutchie> question about coerce: I have a newtype of NonEmpty (Map Text Value), and I want to write something like `modify (coerce $ NonEmpty.cons Map.empty)` but it doesn't typecheck
2026-01-08 10:00:16 +0100 <dutchie> (in a state monad)
2026-01-08 10:00:35 +0100 <dutchie> should coerce be able to do this? or am I missing what's going on
2026-01-08 10:00:45 +0100kuribas(~user@2a02-1810-2825-6000-e123-c17a-ed17-774f.ip6.access.telenet.be) kuribas
2026-01-08 10:01:02 +0100 <dutchie> the error is "Couldn't match representation of type ‘a0’ with that of ‘Value’`
2026-01-08 10:01:08 +0100 <dutchie> s/`/"/
2026-01-08 10:03:08 +0100 <danza> :t cons
2026-01-08 10:03:10 +0100 <lambdabot> Cons s s a a => a -> s -> s
2026-01-08 10:04:47 +0100 <danza> cons is partially applied, so you are applying coerce to a function
2026-01-08 10:07:49 +0100Googulator14Googulator
2026-01-08 10:08:04 +0100 <dutchie> right, does that not work? I want to coerce `NonEmpty (Map) -> NonEmpty (Map)` to a function on my newtype
2026-01-08 10:08:26 +0100 <dutchie> so do I have to do `coerce . cons . coerce`? feels like I might as well explicitly unwrap/wrap then
2026-01-08 10:09:14 +0100 <int-e> presumably you need a type signature like (Map.empty :: Map Text Value) so that the inner type is actually fully known.
2026-01-08 10:09:43 +0100 <merijn> Map's key type is not coercible, afaik
2026-01-08 10:09:47 +0100 <merijn> At least, it shouldn't be
2026-01-08 10:09:55 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 240 seconds)
2026-01-08 10:10:03 +0100 <dutchie> ah explicit annotation on Map.empty does it
2026-01-08 10:10:12 +0100 <int-e> merijn: yeah but it's complaining about the Value type
2026-01-08 10:10:45 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-01-08 10:10:51 +0100 <int-e> and specifying the key type is less of a hassle than figuring out whether we have partial type signatures :P
2026-01-08 10:11:51 +0100tromp(~textual@2001:1c00:3487:1b00:a460:d351:8685:d1f0) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-01-08 10:12:16 +0100 <danza> what is the point of having a newtype if then you use coerce
2026-01-08 10:15:59 +0100 <int-e> dutchie: Btw there's an error message reading exercise here: it complains that it doesn't know that some `a0` and `Value` have the same representation. It's easy to guess where the `Value` comes from, but GHC should also tell you what it introduced `a0` for.
2026-01-08 10:21:15 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 240 seconds)
2026-01-08 10:22:48 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 244 seconds)
2026-01-08 10:25:52 +0100merijn(~merijn@77.242.116.146) merijn
2026-01-08 10:30:55 +0100GdeVolpiano(~GdeVolpia@user/GdeVolpiano) (Ping timeout: 240 seconds)
2026-01-08 10:31:42 +0100fp(~Thunderbi@2001-14ba-6e24-3000--198.rev.dnainternet.fi) fp
2026-01-08 10:32:30 +0100danza(~danza@user/danza) (Remote host closed the connection)
2026-01-08 10:32:58 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-01-08 10:33:26 +0100GdeVolpiano(~GdeVolpia@user/GdeVolpiano) GdeVolpiano
2026-01-08 10:34:44 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Quit: xff0x)
2026-01-08 10:40:02 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
2026-01-08 10:40:11 +0100 <dutchie> it didn't mention the a0 or I probably would have figured it out :(
2026-01-08 10:40:12 +0100danza(~danza@user/danza) danza
2026-01-08 10:40:37 +0100 <dutchie> danza: I'm using the newtype to hide details outside the module but this is an internal function
2026-01-08 10:40:59 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-01-08 10:41:20 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-01-08 10:41:23 +0100kuribas(~user@2a02-1810-2825-6000-e123-c17a-ed17-774f.ip6.access.telenet.be) (ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.3))
2026-01-08 10:45:23 +0100 <danza> i see, makes sense
2026-01-08 10:51:35 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 240 seconds)
2026-01-08 10:53:35 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 265 seconds)
2026-01-08 10:56:46 +0100jreicher(~joelr@user/jreicher) (Quit: brb)
2026-01-08 10:57:04 +0100karenw(~karenw@user/karenw) (Ping timeout: 246 seconds)
2026-01-08 11:03:51 +0100danz98640(~danza@user/danza) danza
2026-01-08 11:05:07 +0100gmg(~user@user/gehmehgeh) (Ping timeout: 252 seconds)
2026-01-08 11:05:26 +0100merijn(~merijn@77.242.116.146) merijn
2026-01-08 11:05:55 +0100danza(~danza@user/danza) (Ping timeout: 240 seconds)
2026-01-08 11:06:27 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2026-01-08 11:10:01 +0100fp(~Thunderbi@2001-14ba-6e24-3000--198.rev.dnainternet.fi) (Ping timeout: 265 seconds)
2026-01-08 11:10:55 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 240 seconds)
2026-01-08 11:19:05 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2026-01-08 11:20:31 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 246 seconds)
2026-01-08 11:22:20 +0100bggd(~bgg@user/bggd) (Remote host closed the connection)
2026-01-08 11:22:49 +0100Vq(~vq@user/vq) (Ping timeout: 264 seconds)
2026-01-08 11:22:54 +0100merijn(~merijn@77.242.116.146) merijn
2026-01-08 11:24:11 +0100Vq(~vq@user/vq) Vq
2026-01-08 11:24:41 +0100notzmv(~umar@user/notzmv) notzmv
2026-01-08 11:25:27 +0100torn(~torn@91-133-90-252.dyn.cablelink.at) (Quit: Client closed)
2026-01-08 11:28:11 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-01-08 11:33:07 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 246 seconds)
2026-01-08 11:37:08 +0100tromp(~textual@2001:1c00:3487:1b00:a460:d351:8685:d1f0)
2026-01-08 11:40:44 +0100Tuplanolla(~Tuplanoll@88-114-88-95.elisa-laajakaista.fi) Tuplanolla
2026-01-08 11:43:55 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 240 seconds)
2026-01-08 11:55:25 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-01-08 11:59:57 +0100fp(~Thunderbi@130.233.70.102) fp
2026-01-08 12:17:03 +0100xff0x(~xff0x@2405:6580:b080:900:1a94:9136:5419:ce9c)
2026-01-08 12:20:55 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 240 seconds)
2026-01-08 12:30:46 +0100jreicher(~joelr@user/jreicher) jreicher
2026-01-08 12:31:40 +0100Inline(~Inline@cgn-195-14-217-102.nc.de) (Quit: KVIrc 5.2.6 Quasar http://www.kvirc.net/)
2026-01-08 12:34:52 +0100merijn(~merijn@77.242.116.146) merijn
2026-01-08 12:38:12 +0100gmg(~user@user/gehmehgeh) (Quit: Leaving)
2026-01-08 12:38:42 +0100Inline(~Inline@cgn-195-14-217-102.nc.de) Inline
2026-01-08 12:39:16 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 246 seconds)
2026-01-08 12:41:47 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2026-01-08 12:45:09 +0100weary-traveler(~user@user/user363627) user363627
2026-01-08 12:52:13 +0100_d0t(~{-d0t-}@user/-d0t-/x-7915216) (Ping timeout: 256 seconds)
2026-01-08 12:52:30 +0100merijn(~merijn@77.242.116.146) merijn
2026-01-08 12:55:41 +0100_d0t(~{-d0t-}@user/-d0t-/x-7915216) {-d0t-}
2026-01-08 12:57:48 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Remote host closed the connection)
2026-01-08 12:58:04 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-01-08 13:02:05 +0100gmg(~user@user/gehmehgeh) (Ping timeout: 252 seconds)
2026-01-08 13:05:19 +0100__monty__(~toonn@user/toonn) toonn
2026-01-08 13:11:01 +0100vanishingideal(~vanishing@user/vanishingideal) (Remote host closed the connection)
2026-01-08 13:12:55 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2026-01-08 13:23:46 +0100dequbed(~dequbed@banana-new.kilobyte22.de) (Ping timeout: 255 seconds)
2026-01-08 13:32:24 +0100nadja(~dequbed@banana-new.kilobyte22.de) dequbed
2026-01-08 13:32:44 +0100nadja(~dequbed@banana-new.kilobyte22.de) (Client Quit)
2026-01-08 13:33:20 +0100Inline(~Inline@cgn-195-14-217-102.nc.de) (Quit: KVIrc 5.2.6 Quasar http://www.kvirc.net/)
2026-01-08 13:33:43 +0100machinedgod(~machinedg@d75-159-126-101.abhsia.telus.net) machinedgod
2026-01-08 13:34:55 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 246 seconds)
2026-01-08 13:37:23 +0100gmg(~user@user/gehmehgeh) (Quit: Leaving)
2026-01-08 13:38:20 +0100merijn(~merijn@77.242.116.146) merijn
2026-01-08 13:41:37 +0100trickard(~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-01-08 13:41:50 +0100trickard_(~trickard@cpe-50-98-47-163.wireline.com.au)
2026-01-08 13:43:39 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2026-01-08 13:43:55 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 240 seconds)
2026-01-08 13:48:10 +0100merijn(~merijn@77.242.116.146) merijn
2026-01-08 13:52:30 +0100nadja(~dequbed@banana-new.kilobyte22.de) dequbed
2026-01-08 13:53:43 +0100s4msung(sdqoRqmCHs@user/s4msung) (Quit: s4msung)
2026-01-08 13:53:43 +0100yushyin(C2iywkXWw5@mail.karif.server-speed.net) (Quit: WeeChat 4.7.1)
2026-01-08 13:53:43 +0100noctuks(6ytiZUtHp5@user/noctux) (Quit: WeeChat 4.7.1)
2026-01-08 13:53:46 +0100Inline(~Inline@cgn-195-14-217-102.nc.de) Inline
2026-01-08 13:54:19 +0100noctuks(rYHDFdD8sa@user/noctux) noctux
2026-01-08 13:54:21 +0100yushyin(2oGK0f75bd@mail.karif.server-speed.net) yushyin
2026-01-08 13:54:24 +0100s4msung(zozxDe14NI@user/s4msung) s4msung
2026-01-08 14:01:08 +0100qqq(~qqq@185.54.21.105) (Quit: Lost terminal)
2026-01-08 14:10:23 +0100itaipu(~itaipu@168.121.99.54) itaipu
2026-01-08 14:13:55 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-01-08 14:15:01 +0100Lycurgus(~juan@user/Lycurgus) Lycurgus
2026-01-08 14:15:59 +0100Typer_of_Terms(~Typer_of_@85.62.22.209) Typer_of_Terms
2026-01-08 14:24:32 +0100hakutaku(~textual@chen.yukari.eu.org) (Remote host closed the connection)
2026-01-08 14:24:49 +0100hakutaku(~textual@chen.yukari.eu.org)
2026-01-08 14:27:00 +0100DetourNetworkUK(~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer)
2026-01-08 14:28:18 +0100DetourNetworkUK(~DetourNet@user/DetourNetworkUK) DetourNetworkUK
2026-01-08 14:29:18 +0100bliminse(~bliminse@user/bliminse) (Quit: leaving)
2026-01-08 14:33:04 +0100bliminse(~bliminse@user/bliminse) bliminse
2026-01-08 14:35:18 +0100trickard_trickard
2026-01-08 14:38:15 +0100poscat(~poscat@user/poscat) poscat
2026-01-08 14:40:00 +0100poscat0x04(~poscat@user/poscat) (Ping timeout: 252 seconds)
2026-01-08 14:45:20 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 245 seconds)
2026-01-08 14:46:29 +0100newmind(~newmind@91-133-90-252.dyn.cablelink.at) (Quit: Client closed)
2026-01-08 14:47:11 +0100newmind(~newmind@91-133-90-252.dyn.cablelink.at)
2026-01-08 14:47:50 +0100Googulator(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu) (Quit: Client closed)
2026-01-08 14:48:04 +0100Googulator(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu)
2026-01-08 14:49:34 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2026-01-08 14:49:49 +0100Vq(~vq@user/vq) (Ping timeout: 264 seconds)
2026-01-08 14:49:54 +0100merijn(~merijn@77.242.116.146) merijn
2026-01-08 14:51:32 +0100Vq(~vq@user/vq) Vq
2026-01-08 15:03:46 +0100timide(~timide@user/timide) timide
2026-01-08 15:04:38 +0100danza(~danza@user/danza) danza
2026-01-08 15:07:13 +0100danz98640(~danza@user/danza) (Ping timeout: 264 seconds)
2026-01-08 15:15:35 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 240 seconds)
2026-01-08 15:22:28 +0100ttybitnik(~ttybitnik@user/wolper) ttybitnik
2026-01-08 15:28:35 +0100pabs3(~pabs3@user/pabs3) (Ping timeout: 240 seconds)
2026-01-08 15:31:04 +0100synchromesh(~john@2406:5a00:2412:2c00:d907:3b01:3c28:cb58) (Read error: Connection reset by peer)
2026-01-08 15:32:14 +0100pabs3(~pabs3@user/pabs3) pabs3
2026-01-08 15:32:40 +0100synchromesh(~john@2406:5a00:2412:2c00:d907:3b01:3c28:cb58) synchromesh
2026-01-08 15:34:02 +0100trickard(~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-01-08 15:34:16 +0100trickard_(~trickard@cpe-50-98-47-163.wireline.com.au)
2026-01-08 15:39:18 +0100thenightmail(~thenightm@user/thenightmail) thenightmail
2026-01-08 15:39:31 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 244 seconds)
2026-01-08 15:42:39 +0100merijn(~merijn@77.242.116.146) merijn
2026-01-08 15:45:45 +0100trickard_trickard
2026-01-08 15:45:49 +0100danza(~danza@user/danza) (Remote host closed the connection)
2026-01-08 15:45:52 +0100Lycurgus(~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org ))
2026-01-08 15:45:55 +0100duckworld(~duckworld@user/duckworld) (Ping timeout: 240 seconds)
2026-01-08 16:00:30 +0100duckworld(~duckworld@user/duckworld) duckworld
2026-01-08 16:04:39 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2026-01-08 16:08:21 +0100Sgeo(~Sgeo@user/sgeo) Sgeo
2026-01-08 16:16:50 +0100Googulator(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu) (Quit: Client closed)
2026-01-08 16:17:07 +0100Googulator(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu)
2026-01-08 16:17:28 +0100spew(~spew@user/spew) spew
2026-01-08 16:32:35 +0100jmcantrell_(~weechat@user/jmcantrell) jmcantrell
2026-01-08 16:32:47 +0100trickard(~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-01-08 16:33:00 +0100trickard_(~trickard@cpe-50-98-47-163.wireline.com.au)
2026-01-08 16:33:41 +0100jmcantrell_jmcantrell
2026-01-08 16:34:42 +0100Enrico63(~Enrico63@host-95-251-99-143.retail.telecomitalia.it) Enrico63
2026-01-08 16:41:10 +0100target_i(~target_i@user/target-i/x-6023099) target_i
2026-01-08 16:41:35 +0100jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 240 seconds)
2026-01-08 16:45:23 +0100tromp(~textual@2001:1c00:3487:1b00:a460:d351:8685:d1f0) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-01-08 16:49:10 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 246 seconds)
2026-01-08 17:01:23 +0100trickard_trickard
2026-01-08 17:04:31 +0100tromp(~textual@2001:1c00:3487:1b00:a460:d351:8685:d1f0)
2026-01-08 17:05:22 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2026-01-08 17:07:11 +0100danza(~danza@user/danza) danza
2026-01-08 17:09:22 +0100Lycurgus(~juan@user/Lycurgus) Lycurgus
2026-01-08 17:13:06 +0100comerijn(~merijn@77.242.116.146) merijn
2026-01-08 17:15:35 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 240 seconds)
2026-01-08 17:15:42 +0100Googulator(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu) (Quit: Client closed)
2026-01-08 17:15:48 +0100Googulator3(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu)
2026-01-08 17:16:58 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-01-08 17:17:31 +0100comerijn(~merijn@77.242.116.146) (Ping timeout: 246 seconds)
2026-01-08 17:20:55 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Ping timeout: 240 seconds)
2026-01-08 17:27:57 +0100newmind(~newmind@91-133-90-252.dyn.cablelink.at) (Quit: Client closed)
2026-01-08 17:34:04 +0100Typer_of_Terms(~Typer_of_@85.62.22.209) ()
2026-01-08 17:36:47 +0100newmind(~newmind@91-133-90-252.dyn.cablelink.at)
2026-01-08 17:40:59 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-01-08 17:45:04 +0100m_a_r_k(~m_a_r_k@archlinux/support/mark) (Ping timeout: 244 seconds)
2026-01-08 17:45:50 +0100Googulator46(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu)
2026-01-08 17:46:16 +0100Googulator3(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu) (Quit: Client closed)
2026-01-08 17:50:51 +0100m_a_r_k(~m_a_r_k@archlinux/support/mark) m_a_r_k
2026-01-08 17:51:19 +0100fp(~Thunderbi@130.233.70.102) (Ping timeout: 240 seconds)
2026-01-08 17:57:01 +0100mulk(~mulk@pd95143a6.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2026-01-08 17:57:37 +0100mulk(~mulk@pd95143a6.dip0.t-ipconnect.de) mulk
2026-01-08 17:59:29 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 18:00:46 +0100trickard(~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2026-01-08 18:01:00 +0100trickard_(~trickard@cpe-50-98-47-163.wireline.com.au)
2026-01-08 18:03:40 +0100Enrico63(~Enrico63@host-95-251-99-143.retail.telecomitalia.it) (Quit: Client closed)
2026-01-08 18:03:57 +0100Enrico63(~Enrico63@host-95-251-99-143.retail.telecomitalia.it) Enrico63
2026-01-08 18:13:06 +0100tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2026-01-08 18:13:15 +0100euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2026-01-08 18:16:09 +0100m_a_r_k(~m_a_r_k@archlinux/support/mark) (Remote host closed the connection)
2026-01-08 18:26:21 +0100m_a_r_k(~m_a_r_k@archlinux/support/mark) m_a_r_k
2026-01-08 18:33:14 +0100vanishingideal(~vanishing@user/vanishingideal) (Remote host closed the connection)
2026-01-08 18:35:26 +0100ljdarj(~Thunderbi@user/ljdarj) ljdarj
2026-01-08 18:37:48 +0100tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection)
2026-01-08 18:38:06 +0100tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) tcard
2026-01-08 18:38:22 +0100Googulator46(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu) (Quit: Client closed)
2026-01-08 18:38:41 +0100Googulator46(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu)
2026-01-08 18:40:08 +0100comerijn(~merijn@77.242.116.146) merijn
2026-01-08 18:40:09 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Read error: Connection reset by peer)
2026-01-08 18:42:44 +0100itaipu(~itaipu@168.121.99.54) (Read error: Connection timed out)
2026-01-08 18:48:05 +0100gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2026-01-08 18:48:48 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2026-01-08 18:51:51 +0100Enrico63(~Enrico63@host-95-251-99-143.retail.telecomitalia.it) (Ping timeout: 272 seconds)
2026-01-08 18:53:22 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2026-01-08 19:00:46 +0100itaipu(~itaipu@168.121.99.54) itaipu
2026-01-08 19:03:09 +0100Enrico63(~Enrico63@host-95-251-99-143.retail.telecomitalia.it) Enrico63
2026-01-08 19:03:56 +0100danz94513(~danza@user/danza) danza
2026-01-08 19:04:27 +0100newmind(~newmind@91-133-90-252.dyn.cablelink.at) (Quit: Client closed)
2026-01-08 19:05:03 +0100danza(~danza@user/danza) (Read error: Connection reset by peer)
2026-01-08 19:09:53 +0100Square3(~Square@user/square) Square
2026-01-08 19:12:39 +0100Lycurgus(~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org ))
2026-01-08 19:15:49 +0100Googulator82(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu)
2026-01-08 19:17:50 +0100Googulator46(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu) (Quit: Client closed)
2026-01-08 19:18:01 +0100tromp(~textual@2001:1c00:3487:1b00:a460:d351:8685:d1f0) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-01-08 19:19:13 +0100mulk(~mulk@pd95143a6.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
2026-01-08 19:19:20 +0100Milan_Vanca(~milan@user/Milan-Vanca:32634) Milan_Vanca
2026-01-08 19:20:10 +0100mulk(~mulk@pd95143a6.dip0.t-ipconnect.de) mulk
2026-01-08 19:25:52 +0100newmind(~newmind@91-133-90-252.dyn.cablelink.at)
2026-01-08 19:27:24 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-01-08 19:28:53 +0100euphores(~SASL_euph@user/euphores) euphores
2026-01-08 19:29:08 +0100tromp(~textual@2001:1c00:3487:1b00:a460:d351:8685:d1f0)
2026-01-08 19:37:13 +0100itaipu(~itaipu@168.121.99.54) (Ping timeout: 264 seconds)
2026-01-08 19:40:36 +0100synchromesh(~john@2406:5a00:2412:2c00:d907:3b01:3c28:cb58) (Read error: Connection reset by peer)
2026-01-08 19:40:51 +0100Leary(~Leary@user/Leary/x-0910699) (Remote host closed the connection)
2026-01-08 19:41:06 +0100Leary(~Leary@user/Leary/x-0910699) Leary
2026-01-08 19:41:41 +0100synchromesh(~john@2406:5a00:2412:2c00:d907:3b01:3c28:cb58) synchromesh
2026-01-08 19:45:10 +0100Everything(~Everythin@172-232-54-192.ip.linodeusercontent.com) (Quit: leaving)
2026-01-08 19:56:14 +0100tromp(~textual@2001:1c00:3487:1b00:a460:d351:8685:d1f0) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-01-08 19:57:28 +0100chele(~chele@user/chele) (Remote host closed the connection)
2026-01-08 19:59:39 +0100itaipu(~itaipu@168.121.99.54) itaipu
2026-01-08 20:02:54 +0100tromp(~textual@2001:1c00:3487:1b00:a460:d351:8685:d1f0)
2026-01-08 20:03:47 +0100trickard_trickard
2026-01-08 20:03:49 +0100peterbecich(~Thunderbi@71.84.33.135) peterbecich
2026-01-08 20:05:36 +0100bggd(~bgg@user/bggd) bggd
2026-01-08 20:06:49 +0100shr\ke(~shrike@user/shrke:31298) (Remote host closed the connection)
2026-01-08 20:17:15 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 240 seconds)
2026-01-08 20:20:04 +0100jreicher(~joelr@user/jreicher) (Quit: In transit)
2026-01-08 20:24:34 +0100Googulator82(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu) (Quit: Client closed)
2026-01-08 20:24:50 +0100Googulator82(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu)
2026-01-08 20:31:30 +0100Guest94(~Guest94@2402:a00:402:648b:9145:dcf0:d0e8:6860)
2026-01-08 20:32:23 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-01-08 20:37:43 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 246 seconds)
2026-01-08 20:37:53 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-01-08 20:39:13 +0100Lord_of_Life_Lord_of_Life
2026-01-08 20:40:59 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 20:43:07 +0100ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Ping timeout: 256 seconds)
2026-01-08 20:43:35 +0100comerijn(~merijn@77.242.116.146) (Ping timeout: 240 seconds)
2026-01-08 20:46:17 +0100Guest63(~Guest22@ip-005-147-245-066.um06.pools.vodafone-ip.de)
2026-01-08 20:50:30 +0100Guest63(~Guest22@ip-005-147-245-066.um06.pools.vodafone-ip.de) (Client Quit)
2026-01-08 20:52:22 +0100comerijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 20:53:13 +0100 <tomsmeding> Everyone knows how foldl should never be used and you should use foldl' instead. Few people know that mapAccumL has _exactly_ the same issue, and there is no mapAccumL' in base
2026-01-08 20:53:27 +0100newmind(~newmind@91-133-90-252.dyn.cablelink.at) (Ping timeout: 272 seconds)
2026-01-08 20:54:22 +0100Guest94(~Guest94@2402:a00:402:648b:9145:dcf0:d0e8:6860) (Quit: Client closed)
2026-01-08 20:54:50 +0100 <larsivi> fwiw, for a newbie coming from languages without use of weird little markers here and there, the little ' at the end there is not particularly easy to pick up :)
2026-01-08 20:54:57 +0100 <monochrom> mapAccumL is kind of going out of style because you can use the State monad instead, and you have multiple strictness options there.
2026-01-08 20:55:13 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-01-08 20:55:13 +0100itaipu(~itaipu@168.121.99.54) (Ping timeout: 264 seconds)
2026-01-08 20:55:20 +0100 <tomsmeding> in fact, mapAccumL is defined in terms of traverse with a lazy state monad
2026-01-08 20:56:10 +0100 <tomsmeding> monochrom: you could use a state monad, but you should be careful with moving away from plain list functions because you might miss out on fusion RULEs that can cost integer factors in performance
2026-01-08 20:56:15 +0100 <haskellbridge> <sm> yikes.. I am using that
2026-01-08 20:56:42 +0100 <tomsmeding> sm: if the list is not that long it's not that bad of a problem :)
2026-01-08 20:56:48 +0100 <monochrom> Ah.
2026-01-08 20:57:14 +0100 <c_wraith> yeah, mapAccumL is like the worst possible strictness behavior.
2026-01-08 20:57:15 +0100 <tomsmeding> (my post was inspired by optimising an application that, indirectly, applies these list functions to lists millions of elements long)
2026-01-08 20:57:23 +0100 <larsivi> Is there a list of all such things that are improved and shouldn't be used? Preferably with some explanations.
2026-01-08 20:57:25 +0100 <dolio> > foldl (\_ e -> e) (error "last: empty list") [1,2,3]
2026-01-08 20:57:26 +0100 <lambdabot> 3
2026-01-08 20:57:32 +0100 <dolio> > foldl' (\_ e -> e) (error "last: empty list") [1,2,3]
2026-01-08 20:57:33 +0100 <lambdabot> *Exception: last: empty list
2026-01-08 20:57:33 +0100 <lambdabot> CallStack (from HasCallStack):
2026-01-08 20:57:33 +0100 <lambdabot> error, called at <interactive>:3:21 in interactive:Ghci1
2026-01-08 20:57:55 +0100 <monochrom> As usual, a stricter mapAccumL is always welcome, but as usual again, we all vote that someone else should do it.
2026-01-08 20:58:00 +0100 <tomsmeding> dolio: ah nice, so that's the one counterexample :)
2026-01-08 20:58:02 +0100 <haskellbridge> <sm> https://hackage-content.haskell.org/package/infinite-list-0.1.3/docs/Data-List-Infinite.html#v:map… seems to be the strict version
2026-01-08 20:58:28 +0100 <c_wraith> note that mapAccumL *does* have a way to sneak strictness in, and it's the worst possible way
2026-01-08 20:58:58 +0100 <c_wraith> you link evaluation of the state to evaluation of the map result, and force each map result sequentially before examining the final state
2026-01-08 20:59:14 +0100 <Leary> tomsmeding: The other countexample is on any traversable that isn't right-biased.
2026-01-08 20:59:34 +0100 <tomsmeding> I'm interested in lists only in this case, but yes :p
2026-01-08 20:59:34 +0100 <monochrom> Worst is a monad. pure :: a -> Worst a; join :: Worst (Worst a) -> Worst a. >:)
2026-01-08 20:59:38 +0100 <c_wraith> reverse is an example of something where foldl vs foldl' just doesn't matter
2026-01-08 21:00:09 +0100 <dolio> Yeah. It might make some microscopic difference, but not much.
2026-01-08 21:00:27 +0100 <c_wraith> if it does, the optimizer should be working harder. :)
2026-01-08 21:15:04 +0100newmind(~newmind@91-133-90-252.dyn.cablelink.at)
2026-01-08 21:15:36 +0100Googulator82(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu) (Quit: Client closed)
2026-01-08 21:15:44 +0100Googulator82(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu)
2026-01-08 21:21:24 +0100tromp(~textual@2001:1c00:3487:1b00:a460:d351:8685:d1f0) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-01-08 21:21:45 +0100 <Leary> @where dangerous
2026-01-08 21:21:45 +0100 <lambdabot> https://github.com/NorfairKing/haskell-dangerous-functions
2026-01-08 21:21:48 +0100 <Leary> larsivi: ^
2026-01-08 21:22:11 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 250 seconds)
2026-01-08 21:22:26 +0100peterbecich(~Thunderbi@71.84.33.135) (Quit: peterbecich)
2026-01-08 21:22:30 +0100tromp(~textual@2001:1c00:3487:1b00:a460:d351:8685:d1f0)
2026-01-08 21:23:53 +0100 <EvanR> yes foldl and foldl' are strictly (no pun intended) different beasts and not simply one is a more optimized version of the other
2026-01-08 21:24:03 +0100 <EvanR> which might be why we still have them
2026-01-08 21:25:11 +0100 <EvanR> larsivi, and foldl' was one of the first things covered in "tutorials" way back when. Once you see this, "primed" versions of other functions start to raise enough eyebrows to not be surprising
2026-01-08 21:25:50 +0100merijn(~merijn@77.242.116.146) merijn
2026-01-08 21:25:56 +0100comerijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Read error: Connection reset by peer)
2026-01-08 21:28:11 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-01-08 21:30:29 +0100Googulator82(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu) (Quit: Client closed)
2026-01-08 21:30:52 +0100Googulator82(~Googulato@2a01-036d-0106-4994-68db-cf64-05de-a70a.pool6.digikabel.hu)
2026-01-08 21:30:55 +0100yin(~zero@user/zero) (Ping timeout: 246 seconds)
2026-01-08 21:31:15 +0100merijn(~merijn@77.242.116.146) (Ping timeout: 240 seconds)
2026-01-08 21:32:04 +0100haritz(~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8)
2026-01-08 21:32:05 +0100haritz(~hrtz@2a01:4b00:bc2e:7000:d5af:a266:ca31:5ef8) (Changing host)
2026-01-08 21:32:05 +0100haritz(~hrtz@user/haritz) haritz
2026-01-08 21:33:55 +0100yin(~zero@user/zero) zero
2026-01-08 21:36:56 +0100pavonia(~user@user/siracusa) siracusa
2026-01-08 21:39:06 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2026-01-08 21:42:42 +0100jreicher(~joelr@user/jreicher) jreicher
2026-01-08 21:43:40 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 21:50:15 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 21:52:45 +0100 <jreicher> tomsmeding: I've sometimes wondered why foldl exists at all.
2026-01-08 21:53:30 +0100Enrico63(~Enrico63@host-95-251-99-143.retail.telecomitalia.it) (Quit: Client closed)
2026-01-08 21:54:27 +0100 <monochrom> It came from an old time when people did not notice or did not mind the space growth in e.g. foldl (+)
2026-01-08 21:55:43 +0100 <monochrom> and also when they just copied the standard libraries of other functional languages (and those languages are not lazy).
2026-01-08 21:56:16 +0100 <tomsmeding> jreicher: on lists, foldl is almost useless (`last` notwithstanding), but on general Foldables, foldl is just the mirror image of foldr
2026-01-08 21:56:51 +0100 <jreicher> monochrom: but why not "replace" foldl with foldl'? Even if you're copying the standard libraries from other languages, you don't need to keep the same implementation.
2026-01-08 21:56:54 +0100 <tomsmeding> so monochrom's explanation is historically correct (because foldl started out as a plain-list function), but these days, there is a reason for hvaing foldl
2026-01-08 21:56:56 +0100michalz(~michalz@185.246.207.221) (Remote host closed the connection)
2026-01-08 21:57:01 +0100 <jreicher> tomsmeding: yes, that's my point. if foldl is useless, why keep it?
2026-01-08 21:57:15 +0100 <tomsmeding> % :t foldl
2026-01-08 21:57:15 +0100 <yahb2> foldl :: Foldable t => (b -> a -> b) -> b -> t a -> b
2026-01-08 21:57:51 +0100 <tomsmeding> jreicher: I just explained how foldl is not useless any more on certain types that are not [a]
2026-01-08 21:58:08 +0100 <monochrom> This community is too polite to delete things in the stdlib or on the wiki. :)
2026-01-08 21:58:51 +0100 <monochrom> I mean :( even >:( but it's a good day let's just :)
2026-01-08 21:58:53 +0100 <tomsmeding> in particular, if you have `data RevList a = Nil | Snoc (RevList a) a deriving (Foldable)`, then foldr will have the useless behaviour and foldl will be as useful as foldr is on [a]
2026-01-08 21:59:36 +0100 <tomsmeding> granted, [a] is much more common than RevList, but still, removing it now would be a bit brash
2026-01-08 21:59:41 +0100Enrico63(~Enrico63@host-95-251-99-143.retail.telecomitalia.it) Enrico63
2026-01-08 21:59:56 +0100 <monochrom> OK yeah Foldable should have all 4 combinations and then you choose the best one for the actual use case.
2026-01-08 21:59:57 +0100itaipu(~itaipu@168.121.99.54) itaipu
2026-01-08 22:00:40 +0100 <tomsmeding> (and indeed, Foldable does have foldr' since GHC 7.6 :p)
2026-01-08 22:01:19 +0100 <jreicher> I can't shake the feeling that it shouldn't be necessary to have four instead of two, but I can't assemble a coherent argument just at the moment.
2026-01-08 22:01:23 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 22:01:50 +0100 <monochrom> > foldr (&&) False (False : undefined)
2026-01-08 22:01:51 +0100 <lambdabot> False
2026-01-08 22:01:58 +0100 <monochrom> I don't want your foldr' for that.
2026-01-08 22:02:15 +0100 <tomsmeding> jreicher: you can reduce it to two: foldMap and foldMap'
2026-01-08 22:02:16 +0100 <monochrom> But I would want your foldr' for some other data structure.
2026-01-08 22:02:25 +0100ridcully(~ridcully@pd951fc06.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2026-01-08 22:02:43 +0100ridcully(~ridcully@pd951f83e.dip0.t-ipconnect.de) ridcully
2026-01-08 22:03:10 +0100 <monochrom> My point is that I want to be allowed to choose between foldr and foldr' and you don't know a priori which one is best for me.
2026-01-08 22:04:15 +0100 <dolio> Yes, the only question is which one gets which name.
2026-01-08 22:04:44 +0100 <tomsmeding> a prime for a strict version is so entrenched at this point that doing it the other way round would be a crime. :)
2026-01-08 22:04:56 +0100 <ncf> if we had better identifiers we could have foldl! for the strict version
2026-01-08 22:05:17 +0100 <tomsmeding> (that always makes me think of Ruby's chop!)
2026-01-08 22:05:19 +0100 <monochrom> Oh haha that inspires me. foldr' and foldr_ to make it more confusing. :)
2026-01-08 22:05:55 +0100 <monochrom> What is Ruby's chop? Is it similar to Prolog's cut?
2026-01-08 22:05:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)
2026-01-08 22:06:04 +0100 <tomsmeding> no, it just sounds funny with the !
2026-01-08 22:06:12 +0100 <dolio> It's in-place trimming or something.
2026-01-08 22:06:35 +0100Enrico63(~Enrico63@host-95-251-99-143.retail.telecomitalia.it) (Quit: Client closed)
2026-01-08 22:06:45 +0100 <dolio> Exclamation points indicate mutation, I think.
2026-01-08 22:07:02 +0100monochrominvents Prolog's dice, which means "if random() > 0.5 then cut else nop", so literally dice in two senses. >:)
2026-01-08 22:07:23 +0100 <monochrom> Oh, like Perl's chop.
2026-01-08 22:07:27 +0100 <dolio> Yeah.
2026-01-08 22:07:39 +0100 <monochrom> @stab monochrom
2026-01-08 22:07:39 +0100lambdabotthrows some pointy lambdas at monochrom
2026-01-08 22:07:40 +0100trickard(~trickard@cpe-50-98-47-163.wireline.com.au) (Ping timeout: 246 seconds)
2026-01-08 22:07:42 +0100 <monochrom> @stab monochrom
2026-01-08 22:07:42 +0100lambdabotpulls monochrom through the Evil Mangler
2026-01-08 22:07:45 +0100 <monochrom> @stab monochrom
2026-01-08 22:07:45 +0100lambdabotmoulds monochrom into a delicous cookie, and places it in her oven
2026-01-08 22:08:06 +0100trickard_(~trickard@cpe-50-98-47-163.wireline.com.au)
2026-01-08 22:08:14 +0100 <monochrom> There is one that says "chop ... into pieces" or something like that.
2026-01-08 22:09:40 +0100 <monochrom> Oh haha there is also a Banach-Tarski one. :)
2026-01-08 22:10:05 +0100 <darkling> monochrommonochrom. An anagram. :)
2026-01-08 22:10:30 +0100 <monochrom> haha
2026-01-08 22:11:17 +0100 <monochrom> I think the mathematicians also have a joke along the line of "what's the anagram of Banach-Tarski"
2026-01-08 22:11:36 +0100 <darkling> That's the joke I was thinking of.
2026-01-08 22:11:51 +0100 <monochrom> hehe
2026-01-08 22:17:11 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-01-08 22:18:08 +0100Square3Square
2026-01-08 22:21:55 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds)