2025/04/11

2025-04-11 00:00:24 +0200 <EvanR> though linear base does
2025-04-11 00:00:37 +0200 <hellwolf> thinking about it, isn't State monad a nice way of bypassing the need of that threading for that use case?
2025-04-11 00:01:23 +0200 <monochrom> But I defy your false dichotomy. I estimate which one is shorter and go with it: manual threading like that vs using State.
2025-04-11 00:02:31 +0200 <monochrom> You see, there are always some annoying people like me who always answers "it depends".
2025-04-11 00:03:06 +0200 <monochrom> Ruining any rule of thumb, style guide, doctrine, dogma, ideology.
2025-04-11 00:03:10 +0200 <hellwolf> today, I actually managed to implement a different threading-hiding solution for lineartypes. Though, the Ur pattern makes most of the problem going away anyways; mine is for something different.
2025-04-11 00:03:42 +0200 <hellwolf> I like it depends, as long as it's explained clearly.
2025-04-11 00:04:22 +0200 <monochrom> I guess except for the it-depends ideology. :)
2025-04-11 00:04:35 +0200 <monochrom> itdependism
2025-04-11 00:04:45 +0200 <hellwolf> changing-goal-post as a merit.
2025-04-11 00:04:56 +0200 <Guest87> int-e monochrom okay, I have a similar implementation ready for haskell, though i am doing it in a text editor so I apologize for any typos
2025-04-11 00:04:58 +0200 <hellwolf> principle as a sin.
2025-04-11 00:05:30 +0200 <hellwolf> (tongue-in-cheek here. personally, I much prefer principle first)
2025-04-11 00:05:49 +0200 <Guest87> data Task = Task {programToRun :: String, input :: String}
2025-04-11 00:05:49 +0200 <Guest87> data Pipeline = Pipeline {initialTask :: String, steps :: [String -> Task]}
2025-04-11 00:05:50 +0200 <Guest87> makePipeline task = Pipeline task []
2025-04-11 00:05:50 +0200 <Guest87> addStep pipeline step = Pipeline (initialTask pipeline) (steps pipeline <> [step])
2025-04-11 00:05:51 +0200 <Guest87> runTask :: Task -> IO (Either String Task)
2025-04-11 00:05:51 +0200 <Guest87> run pipeline = do
2025-04-11 00:05:52 +0200 <Guest87>  case (steps pipeline) of
2025-04-11 00:05:52 +0200 <Guest87>   [] -> putStrLn "done"
2025-04-11 00:05:53 +0200 <Guest87>   [f:nxt] -> (beginRun nxt) . f . initialTask $ pipeline
2025-04-11 00:05:53 +0200 <Guest87> beginRun next task = do
2025-04-11 00:05:53 +0200 <EvanR> aaaaaaaa
2025-04-11 00:05:54 +0200 <Guest87>  step <- runTask task
2025-04-11 00:05:54 +0200 <Guest87>  case step of
2025-04-11 00:05:55 +0200 <Guest87>   Left res -> case next of
2025-04-11 00:05:55 +0200 <Guest87>    [] -> putStrLn "done"
2025-04-11 00:05:56 +0200 <Guest87>    [f:nxt] -> beginRun nxt (f res)
2025-04-11 00:05:56 +0200 <Guest87>   Right t -> beginRun next t
2025-04-11 00:05:59 +0200 <hellwolf> stooooop
2025-04-11 00:06:11 +0200 <Guest87> Ugh I should paste in a gist :(
2025-04-11 00:06:12 +0200 <hellwolf> https://paste.tomsmeding.com/
2025-04-11 00:06:19 +0200 <Guest87> Or there, thank you hellwolf
2025-04-11 00:06:41 +0200 <Guest87> https://paste.tomsmeding.com/tggksoJO
2025-04-11 00:06:52 +0200 <geekosaur> IRC is absolutely terrible for code, and too old to support things like code blocks
2025-04-11 00:07:05 +0200 <Guest87> I am too used to discord and other chats I think
2025-04-11 00:07:18 +0200 <EvanR> IRC gets new features all the time
2025-04-11 00:07:22 +0200 <EvanR> soon... code blocks
2025-04-11 00:07:23 +0200 <haskellbridge> <maralorn> hellwolf: I will try to use monadic-bang I have been hoping for something like it for a long time and had kinda forgotten about the plugin.
2025-04-11 00:07:28 +0200 <EvanR> and animated premium emojis
2025-04-11 00:08:28 +0200 <haskellbridge> <maralorn> Is this an IRC nitro pro channel?
2025-04-11 00:08:29 +0200 <Guest87> So, the problem/annoyance I have is that I want to [String -> Task] to be somehow squashed into a single (String -> Task)
2025-04-11 00:09:26 +0200 <EvanR> Monoid m => Monoid (a -> m)
2025-04-11 00:09:38 +0200 <hellwolf> maralorn: nice! It seems actively maintained, which is a good sign.
2025-04-11 00:09:42 +0200 <EvanR> mconcat :: [a -> m] -> a -> m
2025-04-11 00:09:52 +0200 <EvanR> if Task were a Monoid
2025-04-11 00:10:12 +0200 <haskellbridge> <maralorn> Doesn't look like a monoid to me.
2025-04-11 00:10:30 +0200 <monochrom> [String -> Maybe Task] is much more squashable.
2025-04-11 00:11:01 +0200 <haskellbridge> <maralorn> Would String -> [Task] be an option that looks more feasible.
2025-04-11 00:11:07 +0200 <monochrom> which is still repeating what we said before --- undefined is not very workable with in the first place. Use Nothing.
2025-04-11 00:12:00 +0200 <EvanR> [Task] be a monoid
2025-04-11 00:12:16 +0200 <monochrom> Oh yeah Maybe Task is too. Same difference :)
2025-04-11 00:12:31 +0200 <EvanR> pick your squash
2025-04-11 00:12:37 +0200 <monochrom> Also there are First and Last for overriding or not overriding existing mappings.
2025-04-11 00:13:22 +0200 <monochrom> Also did you know that flip (++) is also a monoid operator :)
2025-04-11 00:14:18 +0200rbdr(~rbdr@dynamic-089-012-130-183.89.12.pool.telefonica.de) (Quit: WeeChat 4.6.0)
2025-04-11 00:14:51 +0200 <Guest87> My current solution does the following:
2025-04-11 00:14:52 +0200 <Guest87> https://paste.tomsmeding.com/8E9is43S
2025-04-11 00:15:38 +0200 <Guest87> It works well, but the only problem is that `n` `addCont` calls means I have to unwrap `n-1` layers to get to the actual next step
2025-04-11 00:16:33 +0200 <EvanR> well if you're always operating on only one end of this list
2025-04-11 00:16:49 +0200 <EvanR> better make that end the list beginning
2025-04-11 00:17:03 +0200machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 245 seconds)
2025-04-11 00:18:11 +0200 <EvanR> if you operate on both ends equally often, there is the functional queue ([Task],[Task]) where one list is backwards
2025-04-11 00:19:15 +0200 <Guest87> Always operating on one end
2025-04-11 00:20:19 +0200 <EvanR> that being said if "n" is not that much it probably doesn't matter either way
2025-04-11 00:20:50 +0200 <Guest87> I am worried some code reviewer will shoot this whole solution down regardless of what `n` is :/
2025-04-11 00:21:16 +0200 <EvanR> boils down to annoying the reader again
2025-04-11 00:21:16 +0200 <Guest87> But also, I could just do the list implementation if that happens
2025-04-11 00:21:50 +0200 <Guest87> Realizing how different/poorly statement my original problem was
2025-04-11 00:22:21 +0200 <Guest87> Now that the context is here, the problem statement would be "Is there a way to do `addCont` without this unwrapping behavior?"
2025-04-11 00:22:30 +0200 <EvanR> step 1. understand the question
2025-04-11 00:22:35 +0200 <EvanR> step 0. write a proper question
2025-04-11 00:23:39 +0200 <EvanR> you are shadowing t twice in your code so it's hard to grok what is going on
2025-04-11 00:24:12 +0200Square(~Square4@user/square) Square
2025-04-11 00:24:25 +0200 <haskellbridge> <loonycyborg> you don't even have a list of tasks
2025-04-11 00:24:31 +0200 <haskellbridge> <loonycyborg> only a way to calculate them
2025-04-11 00:25:27 +0200__monty__(~toonn@user/toonn) (Quit: leaving)
2025-04-11 00:25:57 +0200 <EvanR> alright addCont takes what seems to be an error handler and a program name / input string. Then it calls continue but but continue doesn't return an Either as far as I can tell
2025-04-11 00:26:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 00:26:35 +0200 <monochrom> list of length n is just as inefficient as function chain of length n.
2025-04-11 00:27:17 +0200 <EvanR> but if fixed maybe this addCont produces a sort of recursive "object" as in OOP. But only a single one, not adding anything to anything
2025-04-11 00:27:27 +0200 <monochrom> If there is a code reviewer who does not treat both equally, well, I guess that's why you're paid to appease an arbitrary code reviewer.
2025-04-11 00:27:29 +0200Square2(~Square@user/square) (Ping timeout: 260 seconds)
2025-04-11 00:28:12 +0200 <Guest87> EvanR damn yea, the shadowing is real bad. Here is the full code without shadowing
2025-04-11 00:28:13 +0200 <Guest87> https://paste.tomsmeding.com/4T0PUPHR
2025-04-11 00:28:47 +0200 <EvanR> still, continue returns a Task, not a function to apply input to
2025-04-11 00:28:52 +0200 <EvanR> much less returning an Either
2025-04-11 00:29:15 +0200 <EvanR> though if you install GHC you would already know this
2025-04-11 00:29:54 +0200 <haskellbridge> <loonycyborg> honestly I'd recommend adding type annotations :P
2025-04-11 00:30:20 +0200 <EvanR> Right t2 seems to have a new string, but then you pass it into the recursive call where a function was supposed to be
2025-04-11 00:30:44 +0200 <Guest87> Ah crap, this is what I get for trying to port non-pure code without a type checker
2025-04-11 00:30:45 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-11 00:31:00 +0200 <EvanR> in addStep you use f but f is not introduced anywhere
2025-04-11 00:31:46 +0200lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 252 seconds)
2025-04-11 00:32:57 +0200 <EvanR> yeah a type signature for addCont and addStep ok all top level definitions here would go a long way
2025-04-11 00:33:52 +0200 <Guest87> Thank you for feedback, adding those
2025-04-11 00:40:31 +0200roconnor(~quassel@rocq/roconnor) (Ping timeout: 265 seconds)
2025-04-11 00:41:45 +0200roconnor(~quassel@rocq/roconnor) roconnor
2025-04-11 00:41:51 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 00:43:22 +0200 <Guest87> Holy shit haskell playground is a thing now
2025-04-11 00:46:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-11 00:47:44 +0200 <EvanR> > let tasks = [(++ "!"), (++ "world"), (++ " "), (++ "Hello")] in foldl (.) id tasks ""
2025-04-11 00:47:46 +0200 <lambdabot> "Hello world!"
2025-04-11 00:48:02 +0200 <EvanR> operating on the beginning of this list is operating on the "last task"
2025-04-11 00:48:11 +0200cheater(~Username@user/cheater) (Quit: Going offline, see ya! (www.adiirc.com))
2025-04-11 00:50:16 +0200 <EvanR> foldl (.) id combines them "first task" first
2025-04-11 00:52:00 +0200 <EvanR> the "" at the end is the initial input
2025-04-11 00:53:24 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds)
2025-04-11 00:54:44 +0200 <EvanR> > foldl (.) id [t4, t3, t2, t1] initial
2025-04-11 00:54:45 +0200 <lambdabot> error:
2025-04-11 00:54:45 +0200 <lambdabot> • Variable not in scope: t4 :: c -> c
2025-04-11 00:54:45 +0200 <lambdabot> • Perhaps you meant one of these:
2025-04-11 00:55:11 +0200 <EvanR> > foldl (.) id [z, y, x, w] initial
2025-04-11 00:55:13 +0200 <lambdabot> error: Variable not in scope: initial
2025-04-11 00:55:16 +0200 <EvanR> > foldl (.) id [z, y, x, w] i
2025-04-11 00:55:17 +0200 <lambdabot> error:
2025-04-11 00:55:17 +0200 <lambdabot> • Couldn't match expected type ‘Expr -> Expr’
2025-04-11 00:55:17 +0200 <lambdabot> with actual type ‘Expr’
2025-04-11 00:56:14 +0200 <EvanR> > foldl (.) id [h, g, f] i
2025-04-11 00:56:16 +0200 <lambdabot> h (g (f i))
2025-04-11 00:57:38 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 00:59:22 +0200 <Guest87> Okay, very sorry for the previous code. Here is it with ghc
2025-04-11 00:59:23 +0200 <Guest87> https://play.haskell.org/saved/RpqxGbLD
2025-04-11 01:01:34 +0200 <haskellbridge> <loonycyborg> you can turn [IO Task] into IO [Task] using "sequence" function
2025-04-11 01:03:04 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 01:03:39 +0200 <haskellbridge> <loonycyborg> probably clearer would be to build a list of them and then sequence it
2025-04-11 01:03:47 +0200 <EvanR> alright you have the issue that the meat of your post never happens since beginRun never gets around to it
2025-04-11 01:03:54 +0200 <EvanR> but yeah
2025-04-11 01:06:01 +0200 <EvanR> I presume you want the result of each task to be threaded into the next one
2025-04-11 01:06:54 +0200 <Guest87> +haskellbridge I think what you are describing is what I concluded to be the way to do this efficiently, but I also don't have an intuition for what "sequencing something" means, so I am not sure
2025-04-11 01:06:57 +0200 <EvanR> [String -> IO (Either String String)]
2025-04-11 01:07:24 +0200 <EvanR> this function stands for a Task without the explicit type for it
2025-04-11 01:07:37 +0200 <EvanR> the list can be combined using a fold
2025-04-11 01:08:13 +0200 <EvanR> to get a final String -> IO (Either String String) to run on the initial input
2025-04-11 01:08:29 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-11 01:09:00 +0200 <emojelly> Remember my performance drama, where profiling didn't help? I think I found at least part of the issue, through experimentation.
2025-04-11 01:09:15 +0200sprotte24_(~sprotte24@p200300d16f15a4001c8bedf899879cb7.dip0.t-ipconnect.de) (Quit: Leaving)
2025-04-11 01:09:20 +0200 <emojelly> It seems to be related to how many Monad Transformers I layer. Partly also what those Monad Transformers are.
2025-04-11 01:09:24 +0200 <Guest87> EvanR correct. Running a single Task could require running more Task until the final result is obtained
2025-04-11 01:09:28 +0200 <emojelly> It seems to grow hyperlinearly with each transformer.
2025-04-11 01:10:35 +0200 <emojelly> I tried with an onion made of a few IdentityTs and Either, and it's enough to blow the runtime up massively.
2025-04-11 01:10:46 +0200 <Guest87> So having a list of Task is the correct thing to do here instead of "squashing it all up" into one Task?
2025-04-11 01:10:58 +0200 <EvanR> the list is there so you can edit it
2025-04-11 01:11:08 +0200 <EvanR> if it was a fixed sequence of tasks you wouldn't need it
2025-04-11 01:11:57 +0200 <emojelly> I'm now rewriting my Coroutine-code in Pipes, because that claims to be "fast", specifically also by internally weakening the monad transformer laws.
2025-04-11 01:12:20 +0200 <Guest87> EvanR: That's a good argument, I don't know why I am being so stubborn about not having a list
2025-04-11 01:12:33 +0200 <Guest87> Maybe I just miss working with functions
2025-04-11 01:13:04 +0200 <Guest87> Is there a proper name/term for the problem I am running into when I do it all with one Task?
2025-04-11 01:13:27 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 01:14:28 +0200 <EvanR> functions in haskell are blackboxes the only thing you do with them, other than pass them around, is apply them to an argument
2025-04-11 01:14:55 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-11 01:14:55 +0200 <emojelly> My Monad/Monad Transformer, mixed in with the one from the test framework (Hedgehog), is quite an impressive layer of Coroutine, ExceptT, ReaderT, WriterT, Maybe, IdentityT... I know WriterT has a problem, but even if I try a more minimal example consisting just of Coroutine, IdentityT, and Either, just adding an IdentityT can make things multiple times slower.
2025-04-11 01:15:01 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-11 01:16:16 +0200j1n37-(~j1n37@user/j1n37) (Ping timeout: 268 seconds)
2025-04-11 01:16:34 +0200 <emojelly> This is a bit of a bummer, because I was stupidly assuming that Monad Transformers were mostly "free" in terms of performance, at least in terms of just being part of the type, without much actual usage. But that does not seem to be the case at all. Even an IdentityT can wreak havoc if you e.g. fmap through it (i.e. actually follow transformer laws).
2025-04-11 01:16:56 +0200 <EvanR> Guest87, question, what is the "empty list" of tasks supposed to do
2025-04-11 01:17:39 +0200 <EvanR> or is it never empty
2025-04-11 01:18:14 +0200 <emojelly> I guess this is part of why people use effectful these days? But my usage of Coroutine specifically precludes effectful, I think.
2025-04-11 01:18:24 +0200 <Guest87> Yea for now I am assuming I at least have (Task "identityProgram" startingInput (\t -> return Nothing))
2025-04-11 01:18:39 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2025-04-11 01:18:48 +0200 <EvanR> Guest87, something like ... https://paste.tomsmeding.com/JF0HROx2
2025-04-11 01:19:06 +0200 <EvanR> well you return Nothing so what goes on to the next program
2025-04-11 01:19:40 +0200xff0x(~xff0x@2405:6580:b080:900:1c0d:6c97:349e:6228) (Ping timeout: 265 seconds)
2025-04-11 01:19:59 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 260 seconds)
2025-04-11 01:20:05 +0200 <Guest87> In `addCont`, Nothing is where I end up passing on the result to the next task
2025-04-11 01:20:12 +0200 <Guest87> Otherwise, Nothing means "nothing left to do"
2025-04-11 01:20:25 +0200 <EvanR> but there is no result
2025-04-11 01:20:56 +0200 <EvanR> but since the code never runs in your case, that question doesn't need to be answered
2025-04-11 01:21:16 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 01:23:26 +0200 <EvanR> in my paste, addCont would simply be prepending another Task to the list
2025-04-11 01:23:50 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2025-04-11 01:23:54 +0200xff0x(~xff0x@2405:6580:b080:900:1c0d:6c97:349e:6228)
2025-04-11 01:25:10 +0200 <Guest87> EvanR yup, this is easy to do with a list, I am just being a dummy and feel like using a list means I haven't figured out the elegant solution
2025-04-11 01:26:28 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
2025-04-11 01:26:46 +0200 <EvanR> turning a non-empty [Task] into a Task using a Task -> Task -> Task... fairly "elegant" I'd say
2025-04-11 01:27:21 +0200 <Guest87> xD I am just making things hard for myself I guess
2025-04-11 01:28:14 +0200 <Guest87> Are there any haskell libraries that implement whatever I am dealing with here? At one point I was re-learning the Cont monad, but this doesn't feel like Cont exactly
2025-04-11 01:29:55 +0200 <EvanR> my paste is the entirety of the problem afaiui
2025-04-11 01:30:02 +0200 <EvanR> hardly needs a library
2025-04-11 01:30:26 +0200 <EvanR> but in general "Tasks" sounds like they'd be running concurrently and might need to communicate with each other, and the async library is pretty nice there
2025-04-11 01:31:19 +0200 <EvanR> :t foldl1
2025-04-11 01:31:20 +0200 <lambdabot> Foldable t => (a -> a -> a) -> t a -> a
2025-04-11 01:31:30 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 01:32:19 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-11 01:32:41 +0200 <EvanR> if it was just a bunch of IO actions in a list that needed to run, that's even less of a library, just sequence :: [IO a] -> IO [a]
2025-04-11 01:32:49 +0200jleightcap(7bc4014b62@user/jleightcap) ()
2025-04-11 01:34:05 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-04-11 01:34:16 +0200 <EvanR> and my posted code can probably be golfed with some pointfree compositions
2025-04-11 01:34:26 +0200 <EvanR> to get that a -> a -> a smaller
2025-04-11 01:35:48 +0200cipherrot(~znc-user@user/petrichor) (Ping timeout: 245 seconds)
2025-04-11 01:36:49 +0200 <Guest87> EvanR: I think your Task type needs to be `String -> IO (Either String Task)` (assuming recursive `type` worked)
2025-04-11 01:36:52 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 01:38:21 +0200 <EvanR> it does not
2025-04-11 01:38:44 +0200 <EvanR> I didn't see the point of the Task datatype as stated
2025-04-11 01:39:09 +0200sayurc_(~sayurc@169.150.203.34) sayurc
2025-04-11 01:39:19 +0200sayurc(~sayurc@169.150.203.34) (Read error: Connection reset by peer)
2025-04-11 01:39:37 +0200 <EvanR> it amounted to a function returning a thing to pass to the next function, and a string to pass into that function
2025-04-11 01:40:45 +0200 <Guest87> The issue is that when I "run" a Task, it either gives a result, or gives me another Task to get the final result
2025-04-11 01:41:03 +0200 <Guest87> Kinda like a trampoline situation I think
2025-04-11 01:42:00 +0200petrichor(~znc-user@user/petrichor) petrichor
2025-04-11 01:42:40 +0200 <EvanR> not in my paste, the next task is next in the list that you maintained
2025-04-11 01:42:58 +0200 <EvanR> if the task itself is supposed to determine that, that's another problem
2025-04-11 01:43:14 +0200 <EvanR> then "adding" a task from outside doesn't make much sense
2025-04-11 01:44:59 +0200 <EvanR> if running the task is supposed to yield a new task and so on, that's more like free monads
2025-04-11 01:45:13 +0200 <EvanR> plus interpreter
2025-04-11 01:46:08 +0200 <EvanR> but if all you're doing is IO actions that sometimes fail early
2025-04-11 01:46:24 +0200 <EvanR> that would be a pretty simple free monad
2025-04-11 01:46:45 +0200 <EvanR> or you could just use IO exceptions to fail early, and catch that exception
2025-04-11 01:46:52 +0200 <EvanR> and write IO actions
2025-04-11 01:47:02 +0200 <EvanR> if you were actually using haskell
2025-04-11 01:47:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 01:50:00 +0200 <EvanR> in both cases you would not be able to outside force a task to suddenly be happening at the end
2025-04-11 01:50:21 +0200 <Guest87> Does "Free" in free monad mean "we get this for free", or does it mean something else?
2025-04-11 01:50:50 +0200 <EvanR> it sure does
2025-04-11 01:50:56 +0200 <EvanR> unless you get more specific
2025-04-11 01:52:01 +0200 <EvanR> but warning, just writing an IO program is already this "task runs and generates the next task to run until the final result"
2025-04-11 01:52:28 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 01:52:28 +0200 <haskellbridge> <Bowuigi> It means "we get monadic structure for free" (or rather, from a functor)
2025-04-11 01:52:39 +0200 <EvanR> and stitching is just (>>=) :: IO a -> (a -> IO b) -> IO b
2025-04-11 01:53:27 +0200 <EvanR> if a = b = String
2025-04-11 01:53:40 +0200 <EvanR> then your pipeline could be just an IO String
2025-04-11 01:54:02 +0200 <EvanR> and I lied you can tack more IO actions before and after
2025-04-11 01:55:45 +0200 <Guest87> I am reading the following:
2025-04-11 01:55:45 +0200 <Guest87> https://www.haskellforall.com/2012/06/you-could-have-invented-free-monads.html
2025-04-11 01:56:23 +0200 <Guest87> and it feels kinda similar to what I am dealing with
2025-04-11 01:58:16 +0200 <Guest87> The `catch` function feels similar to my `addCont`
2025-04-11 01:59:13 +0200 <EvanR> say you have the IO String
2025-04-11 01:59:27 +0200 <EvanR> and you want to put String -> IO String "at the end" (post process)
2025-04-11 01:59:35 +0200 <EvanR> that's just >>=
2025-04-11 02:00:34 +0200 <EvanR> that's addCont
2025-04-11 02:01:05 +0200 <EvanR> but if you went the route of an interpreter for a free monad, you would "catch" there
2025-04-11 02:01:35 +0200 <EvanR> and >>= would still add another post processing step in that case as well
2025-04-11 02:02:51 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 02:04:33 +0200jespada(~jespada@r179-25-43-11.dialup.adsl.anteldata.net.uy) (Ping timeout: 248 seconds)
2025-04-11 02:08:04 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 02:10:12 +0200 <Guest87> Hmmm this is very cool
2025-04-11 02:10:33 +0200 <Guest87> EvanR, thank you so much for patiently letting me fix issues in my program and then talking through it
2025-04-11 02:10:59 +0200 <Guest87> I have ran into "Free Monads" before but this is the first time I see a use case, so I will just go and read about it
2025-04-11 02:18:35 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 02:23:18 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-11 02:25:52 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
2025-04-11 02:30:12 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 264 seconds)
2025-04-11 02:30:46 +0200ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2025-04-11 02:33:59 +0200potatoespotatoes(~quassel@user/potatoespotatoes) ()
2025-04-11 02:34:22 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 02:35:42 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2025-04-11 02:36:40 +0200potatoespotatoes(~quassel@130.44.147.204)
2025-04-11 02:36:40 +0200potatoespotatoes(~quassel@130.44.147.204) (Changing host)
2025-04-11 02:36:40 +0200potatoespotatoes(~quassel@user/potatoespotatoes) potatoespotatoes
2025-04-11 02:39:06 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 02:39:15 +0200potatoespotatoes(~quassel@user/potatoespotatoes) (Client Quit)
2025-04-11 02:39:17 +0200sabathan2(~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr) (Ping timeout: 248 seconds)
2025-04-11 02:39:45 +0200potatoespotatoes(~quassel@130.44.147.204) potatoespotatoes
2025-04-11 02:39:45 +0200potatoespotatoes(~quassel@130.44.147.204) (Changing host)
2025-04-11 02:39:45 +0200potatoespotatoes(~quassel@user/potatoespotatoes) potatoespotatoes
2025-04-11 02:42:57 +0200sabathan2(~sabathan@amarseille-159-1-12-107.w86-203.abo.wanadoo.fr)
2025-04-11 02:50:21 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 02:57:20 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 02:57:21 +0200 <haskellbridge> <Bowuigi> lens-regex-pcre introduces a clever approach to implementing and extending structural regular expressions. Are there generalizations of this? Such that you can query parts of a structure and modify them based on that
2025-04-11 02:57:49 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-11 02:58:16 +0200otto_s(~user@p4ff278a2.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2025-04-11 02:58:54 +0200 <geekosaur> isn't that … lens?
2025-04-11 02:59:13 +0200 <haskellbridge> <Bowuigi> No no I mean, optics that check if there's a certain node inside a tree and allow you to modify the place where the query is ran rather than the node
2025-04-11 02:59:45 +0200otto_s(~user@p5de2fd33.dip0.t-ipconnect.de)
2025-04-11 03:01:53 +0200 <haskellbridge> <Bowuigi> "branch . without leaf" matching branches that do not have leaves as their inmediate substructures, for example
2025-04-11 03:02:26 +0200 <glguy> You can write that in regular lens
2025-04-11 03:02:29 +0200 <geekosaur> I think there are optics for that?
2025-04-11 03:03:03 +0200 <haskellbridge> <Bowuigi> I'd assume so yeah
2025-04-11 03:03:22 +0200 <glguy> you need to be careful about going and adding a leaf in that case where there wasn't one there before it you want to be able to use lens law reasoning
2025-04-11 03:08:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 03:08:17 +0200 <haskellbridge> <Bowuigi> Based on that warning I think that filtered is what I'm looking for
2025-04-11 03:09:17 +0200 <haskellbridge> <Bowuigi> Actually no, it's rewriteOf
2025-04-11 03:09:54 +0200xff0x(~xff0x@2405:6580:b080:900:1c0d:6c97:349e:6228) (Ping timeout: 252 seconds)
2025-04-11 03:10:02 +0200 <haskellbridge> <Bowuigi> Based on this example https://github.com/stevenfontanella/microlens/pull/119#issuecomment-496004851
2025-04-11 03:13:43 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 03:17:22 +0200acidjnk(~acidjnk@p200300d6e71c4f7444aa95b6f7c7abd1.dip0.t-ipconnect.de) (Ping timeout: 272 seconds)
2025-04-11 03:24:00 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 03:26:35 +0200__jmcantrell__(~weechat@user/jmcantrell) jmcantrell
2025-04-11 03:26:35 +0200jmcantrellGuest8811
2025-04-11 03:26:35 +0200Guest8811(644f1bed9a@user/jmcantrell) (Killed (copper.libera.chat (Nickname regained by services)))
2025-04-11 03:26:35 +0200__jmcantrell__jmcantrell
2025-04-11 03:26:44 +0200jmcantrell_(644f1bed9a@user/jmcantrell) jmcantrell
2025-04-11 03:29:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 03:31:42 +0200Guest87(~Guest87@2620:72:0:1f18:7d2a:62e7:7a20:d79f) (Quit: Client closed)
2025-04-11 03:32:41 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Quit: Lost terminal)
2025-04-11 03:34:32 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2025-04-11 03:39:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 03:43:03 +0200OftenFaded(~OftenFade@user/tisktisk) OftenFaded
2025-04-11 03:44:55 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 03:55:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 04:00:30 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 04:05:35 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2025-04-11 04:11:21 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 04:16:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-11 04:20:04 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 272 seconds)
2025-04-11 04:21:58 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 276 seconds)
2025-04-11 04:22:26 +0200haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) (Remote host closed the connection)
2025-04-11 04:23:00 +0200haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) hackager
2025-04-11 04:23:00 +0200ChanServ+v haskellbridge
2025-04-11 04:26:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 04:30:15 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Remote host closed the connection)
2025-04-11 04:30:52 +0200Sciencentistguy(~sciencent@hacksoc/ordinary-member) (Quit: Ping timeout (120 seconds))
2025-04-11 04:31:13 +0200Sciencentistguy(~sciencent@hacksoc/ordinary-member) sciencentistguy
2025-04-11 04:32:43 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2025-04-11 04:33:57 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-04-11 04:34:08 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Client Quit)
2025-04-11 04:35:48 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2025-04-11 04:42:15 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 04:45:02 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 04:48:24 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-04-11 04:49:16 +0200roconnor(~quassel@rocq/roconnor) (Ping timeout: 276 seconds)
2025-04-11 04:49:19 +0200roconnor_(~quassel@rocq/roconnor) roconnor
2025-04-11 04:49:54 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 05:00:49 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 05:02:13 +0200Ranhir(~Ranhir@157.97.53.139) (Remote host closed the connection)
2025-04-11 05:04:24 +0200Ranhir(~Ranhir@157.97.53.139) Ranhir
2025-04-11 05:05:38 +0200j1n37(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-04-11 05:05:40 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 05:11:39 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-11 05:16:36 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 05:21:21 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 05:22:21 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-11 05:32:24 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 05:32:48 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) (Quit: Lost terminal)
2025-04-11 05:34:36 +0200ezzieyguywuf(~Unknown@user/ezzieyguywuf) ezzieyguywuf
2025-04-11 05:37:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-04-11 05:43:13 +0200michalz(~michalz@185.246.207.205)
2025-04-11 05:47:51 +0200aforemny(~aforemny@2001:9e8:6cf4:300:5306:52f:8502:4ee0) aforemny
2025-04-11 05:48:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 05:49:48 +0200aforemny_(~aforemny@2001:9e8:6cd3:ed00:7f35:da5a:93ab:c3e3) (Ping timeout: 276 seconds)
2025-04-11 05:53:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 06:00:46 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 276 seconds)
2025-04-11 06:01:05 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2025-04-11 06:03:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 06:10:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-11 06:20:55 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 276 seconds)
2025-04-11 06:21:32 +0200tabaqui(~tabaqui@167.71.80.236) tabaqui
2025-04-11 06:22:00 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 06:27:25 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 06:37:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 06:42:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-11 06:44:58 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 06:50:10 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 06:52:04 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2025-04-11 06:57:52 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-11 07:00:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 07:04:23 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 07:05:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 07:09:20 +0200qeef(~qeef@138-169-143-94.cust.centrio.cz) qeef
2025-04-11 07:16:32 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 07:22:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 07:28:17 +0200forell(~forell@user/forell) (Ping timeout: 248 seconds)
2025-04-11 07:32:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 07:34:22 +0200qeef(~qeef@138-169-143-94.cust.centrio.cz) (Ping timeout: 276 seconds)
2025-04-11 07:35:38 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2025-04-11 07:37:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-11 07:40:03 +0200XZDX(~xzdx@user/XZDX) (Remote host closed the connection)
2025-04-11 07:41:05 +0200Garbanzo(~Garbanzo@2602:304:6eac:dc10::2e)
2025-04-11 07:41:34 +0200remexre_(~remexre@user/remexre) remexre
2025-04-11 07:41:41 +0200remexre(~remexre@user/remexre) (Ping timeout: 268 seconds)
2025-04-11 07:43:26 +0200Eoco(~ian@128.101.131.218) (Ping timeout: 265 seconds)
2025-04-11 07:45:13 +0200Eoco(~ian@128.101.131.218) Eoco
2025-04-11 07:46:43 +0200remexre_(~remexre@user/remexre) (Ping timeout: 276 seconds)
2025-04-11 07:47:47 +0200JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-04-11 07:48:07 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 07:50:12 +0200weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-04-11 07:55:49 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 07:58:25 +0200amadaluzia(~amadaluzi@2a00:23c7:ed8b:6701:6582:5675:67d:4956) (Ping timeout: 276 seconds)
2025-04-11 07:59:38 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2025-04-11 07:59:59 +0200polyphem(~rod@pd9fbfc2f.dip0.t-ipconnect.de) polyphem
2025-04-11 08:03:41 +0200amadaluzia(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-11 08:04:17 +0200amadaluzia(~amadaluzi@user/amadaluzia) (Remote host closed the connection)
2025-04-11 08:05:27 +0200sord937(~sord937@gateway/tor-sasl/sord937) sord937
2025-04-11 08:06:08 +0200remexre(~remexre@user/remexre) remexre
2025-04-11 08:06:10 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 08:06:57 +0200CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2025-04-11 08:07:00 +0200JuanDaughertyColinRobinson
2025-04-11 08:10:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-11 08:11:14 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 272 seconds)
2025-04-11 08:20:55 +0200ft(~ft@p508db594.dip0.t-ipconnect.de) (Quit: leaving)
2025-04-11 08:21:56 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 08:22:20 +0200jmcantrell(~weechat@user/jmcantrell) (Quit: WeeChat 4.6.1)
2025-04-11 08:22:20 +0200jmcantrell_jmcantrell
2025-04-11 08:22:54 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 08:27:40 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 08:27:57 +0200pikajude(~jude@2001:19f0:ac01:373:5400:2ff:fe86:3274) (Quit: ZNC 1.8.2 - https://znc.in)
2025-04-11 08:28:17 +0200pikajude(~jude@2001:19f0:ac01:373:5400:2ff:fe86:3274) pikajude
2025-04-11 08:28:19 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 276 seconds)
2025-04-11 08:33:12 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 264 seconds)
2025-04-11 08:33:39 +0200chexum(~quassel@gateway/tor-sasl/chexum) chexum
2025-04-11 08:37:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 08:37:48 +0200Garbanzo(~Garbanzo@2602:304:6eac:dc10::2e) (Remote host closed the connection)
2025-04-11 08:40:10 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 08:41:58 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 276 seconds)
2025-04-11 08:42:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-11 08:43:56 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2025-04-11 08:45:49 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2025-04-11 08:49:46 +0200Square(~Square4@user/square) (Ping timeout: 276 seconds)
2025-04-11 08:53:22 +0200tomboy64(~tomboy64@user/tomboy64) (Ping timeout: 252 seconds)
2025-04-11 08:53:31 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 08:54:08 +0200acidjnk(~acidjnk@p200300d6e71c4f7444aa95b6f7c7abd1.dip0.t-ipconnect.de) acidjnk
2025-04-11 08:54:09 +0200tomboy64(~tomboy64@user/tomboy64) tomboy64
2025-04-11 08:57:53 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 08:58:14 +0200j1n37-(~j1n37@user/j1n37) j1n37
2025-04-11 08:58:30 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 08:59:31 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 276 seconds)
2025-04-11 09:00:02 +0200caconym(~caconym@user/caconym) (Quit: bye)
2025-04-11 09:01:01 +0200caconym(~caconym@user/caconym) caconym
2025-04-11 09:02:32 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2025-04-11 09:02:50 +0200Feuermagier(~Feuermagi@user/feuermagier) (Quit: Leaving)
2025-04-11 09:07:48 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2025-04-11 09:08:54 +0200Googulator(~Googulato@2a01-036d-0106-211a-98f9-54d1-cd01-d0d3.pool6.digikabel.hu) (Ping timeout: 240 seconds)
2025-04-11 09:15:28 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 09:16:29 +0200vpan(~vpan@212.117.1.172)
2025-04-11 09:18:57 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds)
2025-04-11 09:19:21 +0200Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-04-11 09:20:54 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 244 seconds)
2025-04-11 09:22:06 +0200 <jackdk> Bowuigi I think you don't even have to write `subExprs` by hand - you could stock-derive `Data` and use `uniplate` or anyclass-derive `Plated` and use `plated`, or derive Generic and use `gplate`
2025-04-11 09:23:26 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 09:23:32 +0200__monty__(~toonn@user/toonn) toonn
2025-04-11 09:23:58 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 09:27:19 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-11 09:27:52 +0200j1n37-(~j1n37@user/j1n37) (Ping timeout: 272 seconds)
2025-04-11 09:28:51 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2025-04-11 09:30:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-11 09:31:27 +0200acidjnk_new(~acidjnk@p200300d6e71c4f37f95626b479c3d9ea.dip0.t-ipconnect.de) acidjnk
2025-04-11 09:31:47 +0200rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2025-04-11 09:32:20 +0200rvalue(~rvalue@user/rvalue) rvalue
2025-04-11 09:32:40 +0200acidjnk(~acidjnk@p200300d6e71c4f7444aa95b6f7c7abd1.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2025-04-11 09:35:03 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-11 09:39:33 +0200 <hellwolf> Short notice: Who wants to join a zoom call that discuss lineartypes at 2PM UTC today?
2025-04-11 09:40:38 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 09:41:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 09:42:10 +0200sayurc_(~sayurc@169.150.203.34) (Quit: Konversation terminated!)
2025-04-11 09:45:25 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 248 seconds)
2025-04-11 09:46:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-11 09:52:44 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-11 09:53:27 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 265 seconds)
2025-04-11 09:57:15 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 09:57:57 +0200mima_mima
2025-04-11 09:58:36 +0200marinelli(~weechat@gateway/tor-sasl/marinelli) (Quit: marinelli)
2025-04-11 10:02:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-11 10:08:39 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 10:08:54 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz)
2025-04-11 10:09:24 +0200ColinRobinson(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-04-11 10:14:16 +0200forell(~forell@user/forell) forell
2025-04-11 10:14:21 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 10:15:23 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 10:17:02 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 10:17:19 +0200lxsameer(~lxsameer@Serene/lxsameer) lxsameer
2025-04-11 10:20:16 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 10:22:43 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 276 seconds)
2025-04-11 10:26:02 +0200j1n37-(~j1n37@user/j1n37) j1n37
2025-04-11 10:26:03 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 252 seconds)
2025-04-11 10:31:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 10:32:03 +0200turlando(~turlando@user/turlando) ()
2025-04-11 10:32:51 +0200chele(~chele@user/chele) chele
2025-04-11 10:33:18 +0200califax(~califax@user/califx) (Read error: Connection reset by peer)
2025-04-11 10:33:18 +0200ChaiTRex(~ChaiTRex@user/chaitrex) (Read error: Connection reset by peer)
2025-04-11 10:33:18 +0200gmg(~user@user/gehmehgeh) (Read error: Connection reset by peer)
2025-04-11 10:33:18 +0200chiselfuse(~chiselfus@user/chiselfuse) (Read error: Connection reset by peer)
2025-04-11 10:33:18 +0200chexum(~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
2025-04-11 10:33:30 +0200chexum(~quassel@gateway/tor-sasl/chexum) chexum
2025-04-11 10:33:37 +0200califax(~califax@user/califx) califx
2025-04-11 10:33:41 +0200ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2025-04-11 10:33:56 +0200chiselfuse(~chiselfus@user/chiselfuse) chiselfuse
2025-04-11 10:33:59 +0200gmg(~user@user/gehmehgeh) gehmehgeh
2025-04-11 10:34:00 +0200turlando(~turlando@user/turlando) turlando
2025-04-11 10:35:35 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Quit: Leaving)
2025-04-11 10:36:03 +0200Googulator(~Googulato@81.183.235.203)
2025-04-11 10:36:16 +0200Igloo(~ian@2001:8b0:645c::210) (Ping timeout: 272 seconds)
2025-04-11 10:36:22 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 10:40:44 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 10:42:23 +0200turlando(~turlando@user/turlando) ()
2025-04-11 10:45:23 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 245 seconds)
2025-04-11 10:46:40 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 10:47:59 +0200Igloo(~ian@81.2.99.210) Igfoo
2025-04-11 10:52:06 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-04-11 10:55:52 +0200acidjnk_new(~acidjnk@p200300d6e71c4f37f95626b479c3d9ea.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2025-04-11 11:02:26 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 11:07:38 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) lisbeths
2025-04-11 11:13:37 +0200sprotte24(~sprotte24@p200300d16f1c5b0064420e97db58ee64.dip0.t-ipconnect.de)
2025-04-11 11:13:54 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 11:14:24 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 11:19:55 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 276 seconds)
2025-04-11 11:20:59 +0200lyxia(~lyxia@poisson.chat) (Quit: WeeChat 4.5.1)
2025-04-11 11:25:33 +0200merijn(~merijn@62.45.137.128) merijn
2025-04-11 11:26:05 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 11:30:28 +0200merijn(~merijn@62.45.137.128) (Ping timeout: 268 seconds)
2025-04-11 11:30:58 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 276 seconds)
2025-04-11 11:31:03 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 276 seconds)
2025-04-11 11:35:53 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-04-11 11:40:43 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 276 seconds)
2025-04-11 11:41:15 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 11:41:57 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 252 seconds)
2025-04-11 11:42:02 +0200tcard(~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) tcard
2025-04-11 11:43:02 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 11:44:39 +0200Guest84(~Guest99@194.89.25.85)
2025-04-11 11:44:43 +0200lyxia(~lyxia@poisson.chat)
2025-04-11 11:46:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 11:51:52 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
2025-04-11 11:57:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 12:00:09 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2025-04-11 12:01:31 +0200xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 276 seconds)
2025-04-11 12:02:15 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 12:04:15 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 12:05:40 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-11 12:10:38 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 12:11:38 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 245 seconds)
2025-04-11 12:15:49 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 12:24:51 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 12:26:27 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 12:31:15 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-11 12:31:18 +0200Googulator(~Googulato@81.183.235.203) (Ping timeout: 240 seconds)
2025-04-11 12:36:49 +0200roconnor_roconnor
2025-04-11 12:37:18 +0200Guest84(~Guest99@194.89.25.85) (Ping timeout: 240 seconds)
2025-04-11 12:39:00 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 244 seconds)
2025-04-11 12:40:36 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 12:42:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 12:46:22 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 276 seconds)
2025-04-11 12:49:14 +0200sprotte24(~sprotte24@p200300d16f1c5b0064420e97db58ee64.dip0.t-ipconnect.de) (Quit: Leaving)
2025-04-11 12:49:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 12:51:00 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 276 seconds)
2025-04-11 12:51:05 +0200comonad(~comonad@p200300d0274ac2004a3b1ffc163e1801.dip0.t-ipconnect.de) (Quit: WeeChat 4.6.0-dev)
2025-04-11 12:56:42 +0200Googulator(~Googulato@81.183.235.203)
2025-04-11 12:57:12 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2025-04-11 12:58:21 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 13:00:17 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 13:02:19 +0200jespada(~jespada@r167-61-120-190.dialup.adsl.anteldata.net.uy) jespada
2025-04-11 13:05:44 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-04-11 13:11:39 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 13:16:56 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-11 13:27:26 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 13:34:08 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-11 13:37:31 +0200Unicorn_Princess(~Unicorn_P@user/Unicorn-Princess/x-3540542) Unicorn_Princess
2025-04-11 13:41:43 +0200JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-04-11 13:45:28 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 13:45:36 +0200CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 276 seconds)
2025-04-11 13:46:32 +0200bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2025-04-11 13:50:22 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 14:01:14 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 14:06:39 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-11 14:12:39 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 14:13:54 +0200JuanDaughertyColinRobinson
2025-04-11 14:17:30 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 14:17:52 +0200forell(~forell@user/forell) (Ping timeout: 252 seconds)
2025-04-11 14:18:33 +0200Smiles(uid551636@id-551636.lymington.irccloud.com) Smiles
2025-04-11 14:22:10 +0200 <haskellbridge> <thirdofmay18081814goya> data Pred a where
2025-04-11 14:22:10 +0200 <haskellbridge> ... long message truncated: https://kf8nh.com/_heisenbridge/media/kf8nh.com/IsqfhephrLUQZbBWOtaJJgoT/AzLVmVwqQEE (13 lines)
2025-04-11 14:22:26 +0200 <haskellbridge> <thirdofmay18081814goya> anyone have an idea what's the proper way to implement a class like this?
2025-04-11 14:24:30 +0200 <haskellbridge> <thirdofmay18081814goya> the idea is that we declare at the typelevel that a particular constant should be available ("predfuncs") in scope
2025-04-11 14:25:04 +0200xff0x(~xff0x@2405:6580:b080:900:46de:d563:2315:dd7b)
2025-04-11 14:28:27 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 14:32:09 +0200jespada(~jespada@r167-61-120-190.dialup.adsl.anteldata.net.uy) (Ping timeout: 260 seconds)
2025-04-11 14:33:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-04-11 14:35:43 +0200jespada(~jespada@r179-25-2-204.dialup.adsl.anteldata.net.uy) jespada
2025-04-11 14:36:19 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2025-04-11 14:38:31 +0200 <haskellbridge> <thirdofmay18081814goya> "instance WithPreds [a] (Nonempty :' []) where predfuncs = [assoc Nonempty]" worked
2025-04-11 14:41:56 +0200 <haskellbridge> <thirdofmay18081814goya> hm, ideally I'd want an instance "instance WithPreds [a] preds where predfuncs = map assoc preds"
2025-04-11 14:42:23 +0200 <haskellbridge> <thirdofmay18081814goya> using "preds" here makes ghc report that it's an illegal term-level use of type variable "preds"
2025-04-11 14:44:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 14:49:52 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 14:51:10 +0200weary-traveler(~user@user/user363627) user363627
2025-04-11 14:57:56 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 15:02:53 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-11 15:13:39 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 15:20:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 15:23:41 +0200amadaluzia(~amadaluzi@user/amadaluzia) amadaluzia
2025-04-11 15:23:43 +0200ft(~ft@p508db594.dip0.t-ipconnect.de) ft
2025-04-11 15:23:59 +0200ColinRobinsonJuanDaugherty
2025-04-11 15:31:42 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 15:32:51 +0200jespada(~jespada@r179-25-2-204.dialup.adsl.anteldata.net.uy) (Ping timeout: 276 seconds)
2025-04-11 15:35:16 +0200jespada(~jespada@r179-25-2-204.dialup.adsl.anteldata.net.uy) jespada
2025-04-11 15:35:23 +0200vpan(~vpan@212.117.1.172) (Quit: Leaving.)
2025-04-11 15:37:19 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 15:42:31 +0200JuanDaughertyColinRobinson
2025-04-11 15:45:23 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2025-04-11 15:46:10 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-04-11 15:47:30 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 15:51:24 +0200ColinRobinson(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-04-11 15:52:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-11 16:00:57 +0200infinity0(~infinity0@pwned.gg) (Remote host closed the connection)
2025-04-11 16:01:06 +0200hiecaq(~hiecaq@user/hiecaq) hiecaq
2025-04-11 16:02:14 +0200infinity0(~infinity0@pwned.gg) infinity0
2025-04-11 16:03:16 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 16:05:17 +0200rbdr(~rbdr@dynamic-002-245-152-215.2.245.pool.telefonica.de) rbdr
2025-04-11 16:06:41 +0200rbdr(~rbdr@dynamic-002-245-152-215.2.245.pool.telefonica.de) (Client Quit)
2025-04-11 16:08:23 +0200acidjnk_new(~acidjnk@p200300d6e71c4f37f95626b479c3d9ea.dip0.t-ipconnect.de) acidjnk
2025-04-11 16:08:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-11 16:10:58 +0200hiecaq(~hiecaq@user/hiecaq) (Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.92))
2025-04-11 16:12:06 +0200hiecaq(~hiecaq@user/hiecaq) hiecaq
2025-04-11 16:14:39 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 16:20:04 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-11 16:26:08 +0200euleritian(~euleritia@dynamic-176-006-143-216.176.6.pool.telefonica.de)
2025-04-11 16:27:38 +0200Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2025-04-11 16:37:35 +0200Sgeo(~Sgeo@user/sgeo) Sgeo
2025-04-11 16:37:36 +0200lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.5.2)
2025-04-11 16:44:41 +0200lambdabot(~lambdabot@haskell/bot/lambdabot) (Remote host closed the connection)
2025-04-11 16:46:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 16:54:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 16:57:57 +0200euleritian(~euleritia@dynamic-176-006-143-216.176.6.pool.telefonica.de) (Ping timeout: 248 seconds)
2025-04-11 16:58:00 +0200chele(~chele@user/chele) (Remote host closed the connection)
2025-04-11 16:58:29 +0200euleritian(~euleritia@95.90.214.149)
2025-04-11 17:00:07 +0200 <EvanR> instance WithPreds [a] preds where predfuncs = map assoc preds indeed looks like you tried to use a type variable from the instance head (another universe) at the value level
2025-04-11 17:00:13 +0200lisbeths(uid135845@id-135845.lymington.irccloud.com) lisbeths
2025-04-11 17:00:31 +0200acidjnk_new(~acidjnk@p200300d6e71c4f37f95626b479c3d9ea.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2025-04-11 17:01:02 +0200rbdr(~rbdr@dynamic-002-245-152-215.2.245.pool.telefonica.de) rbdr
2025-04-11 17:04:17 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 17:05:19 +0200 <EvanR> I guess you want to find a way to reflect the type level list of things to the value level
2025-04-11 17:05:57 +0200 <EvanR> usually there's a class for that, or you make one
2025-04-11 17:09:00 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-11 17:15:38 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 17:16:38 +0200 <haskellbridge> <thirdofmay18081814goya> makes sense, ty!
2025-04-11 17:20:54 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-11 17:20:56 +0200Square2(~Square@user/square) Square
2025-04-11 17:21:07 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2025-04-11 17:24:03 +0200Square(~Square4@user/square) Square
2025-04-11 17:26:43 +0200sprotte24(~sprotte24@p200300d16f1c5b003c76b51cf90902ef.dip0.t-ipconnect.de)
2025-04-11 17:31:27 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 17:36:27 +0200notdabs(~Owner@2600:1700:69cf:9000:5926:6835:ef1d:9af3)
2025-04-11 17:36:29 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-11 17:38:34 +0200wbrawner(~wbrawner@129.146.103.146) wbrawner
2025-04-11 17:39:18 +0200Googulator(~Googulato@81.183.235.203) (Ping timeout: 240 seconds)
2025-04-11 17:47:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 17:52:31 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 17:54:43 +0200sayurc(~sayurc@169.150.203.34) sayurc
2025-04-11 17:56:25 +0200lambdabot(~lambdabot@silicon.int-e.eu)
2025-04-11 17:56:25 +0200lambdabot(~lambdabot@silicon.int-e.eu) (Changing host)
2025-04-11 17:56:25 +0200lambdabot(~lambdabot@haskell/bot/lambdabot) lambdabot
2025-04-11 17:56:25 +0200ChanServ+v lambdabot
2025-04-11 18:00:15 +0200euphores(~SASL_euph@user/euphores) (Quit: Leaving.)
2025-04-11 18:03:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 18:07:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 18:07:46 +0200sprotte24(~sprotte24@p200300d16f1c5b003c76b51cf90902ef.dip0.t-ipconnect.de) (Quit: Leaving)
2025-04-11 18:08:18 +0200forell(~forell@user/forell) forell
2025-04-11 18:09:19 +0200poxel(~poxel@user/poxel) (Quit: WeeChat 4.6.0)
2025-04-11 18:11:44 +0200acidjnk_new(~acidjnk@p200300d6e71c4f37f95626b479c3d9ea.dip0.t-ipconnect.de)
2025-04-11 18:16:38 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 18:21:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 18:26:45 +0200euleritian(~euleritia@95.90.214.149) (Ping timeout: 252 seconds)
2025-04-11 18:29:40 +0200euleritian(~euleritia@dynamic-176-006-132-211.176.6.pool.telefonica.de)
2025-04-11 18:32:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 18:34:22 +0200sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2025-04-11 18:37:22 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 18:41:36 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-11 18:43:13 +0200j1n37-(~j1n37@user/j1n37) (Ping timeout: 276 seconds)
2025-04-11 18:47:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 18:49:18 +0200acidjnk_new(~acidjnk@p200300d6e71c4f37f95626b479c3d9ea.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2025-04-11 18:50:27 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 276 seconds)
2025-04-11 18:51:22 +0200Googulator(~Googulato@2a01-036d-0106-211a-315b-d519-517f-afe7.pool6.digikabel.hu)
2025-04-11 18:52:20 +0200euphores(~SASL_euph@user/euphores) euphores
2025-04-11 18:52:51 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-04-11 18:53:42 +0200lxsameer(~lxsameer@Serene/lxsameer) (Ping timeout: 276 seconds)
2025-04-11 18:54:01 +0200tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2025-04-11 18:57:48 +0200machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) machinedgod
2025-04-11 19:00:57 +0200target_i(~target_i@user/target-i/x-6023099) target_i
2025-04-11 19:02:09 +0200acidjnk_new(~acidjnk@p200300d6e71c4f37fdfe54bbfe31434c.dip0.t-ipconnect.de) acidjnk
2025-04-11 19:03:35 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 19:04:46 +0200hiecaq(~hiecaq@user/hiecaq) (Quit: ERC 5.6.0.30.1 (IRC client for GNU Emacs 30.0.92))
2025-04-11 19:06:06 +0200 <bwe> How can I let the functions a variant of `TheseWriter` depending on which error has been collected on the way? https://paste.tomsmeding.com/tfhujvff
2025-04-11 19:06:51 +0200sprotte24(~sprotte24@p200300d16f1c5b003c76b51cf90902ef.dip0.t-ipconnect.de)
2025-04-11 19:07:25 +0200 <EvanR> Writer can't inspect what was written already
2025-04-11 19:07:36 +0200 <EvanR> but State can
2025-04-11 19:08:38 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2025-04-11 19:09:02 +0200 <bwe> …it appears to be as simple as going over the collected list to decide which `TheseWriter` variant should be returned. However, I am stuck at `calc3` because there no return value `Int` can be constructed.
2025-04-11 19:09:19 +0200 <bwe> EvanR: uuh, that sounds like this might be my initiation ritual to State.
2025-04-11 19:12:57 +0200 <EvanR> Writer is "write only"
2025-04-11 19:15:09 +0200 <tomsmeding> (that's why it's called "Writer")
2025-04-11 19:15:56 +0200CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2025-04-11 19:16:16 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 19:17:18 +0200 <EvanR> smh "meaningful names" again
2025-04-11 19:17:36 +0200 <EvanR> shoulda just called it the Analysis monad
2025-04-11 19:20:55 +0200 <ski> an object in the category of commutative groups is always commutative. an object in the category of groups might or might not be commutative. working only with the abstract interface of "group", you cannot assume commutativity (and also cannot assume there's an example of non-commutativity)
2025-04-11 19:20:55 +0200CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 276 seconds)
2025-04-11 19:21:10 +0200 <ski> ditto, for instances of `MonadWriter' (barring knowing anything more about the instance, so that you're "abstract"), you can only assume the operations in the interface. so, can assume writing, cannot assume reading what's been written earlier
2025-04-11 19:21:24 +0200 <ski> @type censor
2025-04-11 19:21:25 +0200 <lambdabot> MonadWriter w m => (w -> w) -> m a -> m a
2025-04-11 19:21:27 +0200 <ski> @type pass
2025-04-11 19:21:28 +0200 <lambdabot> MonadWriter w m => m (a, w -> w) -> m a
2025-04-11 19:21:34 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 19:24:05 +0200 <ski> (and then `Writer w' is basically the simplest possible (generic, in `w') instance of `MonadWriter')
2025-04-11 19:26:53 +0200euleritian(~euleritia@dynamic-176-006-132-211.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2025-04-11 19:27:10 +0200prasad(~Thunderbi@c-73-246-138-70.hsd1.in.comcast.net)
2025-04-11 19:27:12 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-11 19:28:13 +0200 <bwe> EvanR: WriteButNotRead would be more explicit for the uninitiated:)
2025-04-11 19:28:35 +0200wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-04-11 19:29:12 +0200 <EvanR> it's true, PHP has this weird ability to inspect anything that it's outputting to the output stream
2025-04-11 19:29:30 +0200 <EvanR> which has been abused for some seriously silly things
2025-04-11 19:29:39 +0200 <ski> why not `WriteButNotReadAndNotJumpEitherNorAbort' ?
2025-04-11 19:30:29 +0200 <EvanR> there's also the Reader which you usually run into before / at the same time as Writer
2025-04-11 19:30:31 +0200 <ski> there's a lot of stuff that `Writer' doesn't do
2025-04-11 19:30:48 +0200 <EvanR> you wouldn't expect Reader to be able to write
2025-04-11 19:31:49 +0200skiprefers the names "input"/"environment"/"context"/"distribution" and "output"/"logging"/"summarizing" over "reader" and "writer", anyway ..
2025-04-11 19:32:03 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 19:32:37 +0200 <ski> mm. Unix allows write-only files, i suppose
2025-04-11 19:33:15 +0200 <EvanR> "dependency injection"
2025-04-11 19:33:33 +0200 <EvanR> call it that and haskell will hit the big time
2025-04-11 19:33:39 +0200 <ski> how does it inspect it, btw ?
2025-04-11 19:34:41 +0200ski. o O ( "Avoid success at all costs." -- Haskell motto )
2025-04-11 19:35:09 +0200 <ski> (was it Peyton Jones ? Marlow ?)
2025-04-11 19:35:17 +0200 <EvanR> PHP? you can read the output stream and alter it before it's "really" output from anyplace in the code
2025-04-11 19:35:39 +0200 <ski> as in read a buffer ?
2025-04-11 19:36:02 +0200 <ski> or as in dynamically replacing the current output stream, for a given block of code, nestedly ?
2025-04-11 19:36:56 +0200 <ski> (Scheme does the latter. and the old Edinburgh-style I/O of Prolog also does that)
2025-04-11 19:37:10 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 19:37:23 +0200 <EvanR> https://www.php.net/manual/en/outcontrol.output-buffering.php
2025-04-11 19:37:55 +0200 <EvanR> at some point the output buffer was used like a generic communication channel between components it seems xD
2025-04-11 19:39:09 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-04-11 19:40:57 +0200 <ski> (with-output-to-string (lambda () (display (list 2 3 5 7)))) ; => "(2 3 5 7)"
2025-04-11 19:42:18 +0200 <EvanR> that looks more sane than the PHP version
2025-04-11 19:42:24 +0200 <EvanR> output redirect
2025-04-11 19:43:20 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2025-04-11 19:43:27 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 252 seconds)
2025-04-11 19:43:51 +0200 <ski> (`display' is kinda like `print'. a Haskell version of `with-output-to-string' might be `withOutputToString :: IO a -> IO String'. note how this established a dynamic extent, over which the output is redirected, and outside of this extent (say later, or in other threads), output is still sent to the usual place)
2025-04-11 19:43:53 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-04-11 19:45:17 +0200 <EvanR> what about an inner block which unredirected the output
2025-04-11 19:45:26 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-04-11 19:45:38 +0200 <ski> one would have to decide whether only the `Handle'-less operations should be affected, or also if you send explicitly to `stdout'
2025-04-11 19:45:52 +0200 <ski> how would it do that ?
2025-04-11 19:46:12 +0200 <ski> it could redirect back to the original `Handle', possibly
2025-04-11 19:46:34 +0200 <EvanR> (with-output-string (lambda () (without-output-to-stdout (lambda () (display (list 2 3 5 7))))))
2025-04-11 19:46:52 +0200 <ski> or, i suppose one might allow some kind of "temporarily pop off the top output stream from a stack". but would there be any good reason for wanting to support this ?
2025-04-11 19:47:25 +0200 <EvanR> s/without/with/
2025-04-11 19:47:51 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 19:50:13 +0200 <ski> checking Racket (which was where i tested this), i don't see an `with-output-to-port' ("port" is basically the Scheme equivalent of `Handle'). i do see `with-output-to-file', which takes a file path
2025-04-11 19:50:45 +0200 <EvanR> hah... so i wonder what happens if you nest these dynamic extents
2025-04-11 19:51:02 +0200 <ski> what you'd expect
2025-04-11 19:51:12 +0200 <EvanR> part of the input won't appear in the string
2025-04-11 19:51:20 +0200 <EvanR> part of the output won't appear in the string
2025-04-11 19:51:30 +0200 <ski> yep
2025-04-11 19:51:35 +0200 <ski> as intended
2025-04-11 19:51:48 +0200 <EvanR> with-output-to-dev-null
2025-04-11 19:52:02 +0200 <ski> it's similar to dynamic scoping of variables. or `local' in `MonadReader'
2025-04-11 19:52:33 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 19:55:06 +0200 <ski> imagine `ReaderT (IORef Handle) IO', and looking up the current `Handle' when you do your basic I/O operations. and your "withIOHandle :: Handle -> ReaderT (IORef Handle) IO a -> ReaderT (IORef Handle) IO a' operation sets the ref, executes the action, and then sets back to the old handle (this would ignore multiple threads, though)
2025-04-11 19:57:34 +0200 <ski> (or, i guess, using a top-level `IORef', instead of `ReaderT', if you prefer ..)
2025-04-11 19:58:17 +0200 <EvanR> provocative idea
2025-04-11 19:59:55 +0200 <ski> not really that much, imho
2025-04-11 20:00:11 +0200 <ski> i suppose it depends on perspective
2025-04-11 20:00:23 +0200 <ski> but it would make things more composable
2025-04-11 20:00:35 +0200 <EvanR> globals are usually frowned upon xD
2025-04-11 20:00:42 +0200 <ski> being able to run an action more like it was a separate process
2025-04-11 20:00:56 +0200 <ski> (without actually having to spawn a separate process)
2025-04-11 20:01:23 +0200 <EvanR> otoh running an IO action with a custom set of "global" resources of all sorts, like the output handle, the RNG, etc
2025-04-11 20:01:36 +0200 <monochrom> stdin/out/err and FDs 0,1,2 have always been global variables (or worse).
2025-04-11 20:01:45 +0200 <ski> there's already stuff like
2025-04-11 20:01:47 +0200 <ski> @type System.Posix.IO.dupTo
2025-04-11 20:01:48 +0200 <lambdabot> System.Posix.Types.Fd -> System.Posix.Types.Fd -> IO System.Posix.Types.Fd
2025-04-11 20:01:48 +0200 <ski> yep
2025-04-11 20:02:00 +0200 <EvanR> the errno
2025-04-11 20:02:20 +0200 <EvanR> the FP rounding mode
2025-04-11 20:02:50 +0200 <monochrom> I actually gave my students the unix assignment of recursive stdin/out redirection.
2025-04-11 20:03:02 +0200 <ski> yes. those are generally bad for composability
2025-04-11 20:03:38 +0200 <monochrom> https://www.cs.utoronto.ca/~trebla/CSCB09-latest/a3/
2025-04-11 20:03:39 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 20:03:49 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 276 seconds)
2025-04-11 20:07:11 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net)
2025-04-11 20:08:17 +0200krei-se-(~krei-se@p200300f1cfff4b89da9ef3fffe7fdac8.dip0.t-ipconnect.de) (Quit: ZNC 1.9.1 - https://znc.in)
2025-04-11 20:08:18 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-04-11 20:13:49 +0200krei-se(~krei-se@p50829a06.dip0.t-ipconnect.de) krei-se
2025-04-11 20:15:19 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Ping timeout: 260 seconds)
2025-04-11 20:16:12 +0200euleritian(~euleritia@dynamic-176-006-132-211.176.6.pool.telefonica.de)
2025-04-11 20:16:38 +0200inca(~inca@pool-96-255-212-224.washdc.fios.verizon.net) (Ping timeout: 245 seconds)
2025-04-11 20:17:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 20:21:22 +0200acidjnk_new(~acidjnk@p200300d6e71c4f37fdfe54bbfe31434c.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2025-04-11 20:22:01 +0200jespada(~jespada@r179-25-2-204.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-04-11 20:22:54 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-04-11 20:33:26 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 20:38:28 +0200euleritian(~euleritia@dynamic-176-006-132-211.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2025-04-11 20:38:47 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de)
2025-04-11 20:39:44 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2025-04-11 20:40:15 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-04-11 20:40:52 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 20:45:52 +0200L29Ah(~L29Ah@wikipedia/L29Ah) ()
2025-04-11 20:46:06 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-04-11 20:47:01 +0200hololeap(~quassel@user/hololeap) (Quit: Bye)
2025-04-11 20:47:40 +0200rbdr(~rbdr@dynamic-002-245-152-215.2.245.pool.telefonica.de) (Quit: WeeChat 4.6.0)
2025-04-11 20:48:18 +0200weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-04-11 20:48:32 +0200rbdr(~rbdr@dynamic-002-245-152-215.2.245.pool.telefonica.de) rbdr
2025-04-11 20:49:07 +0200hololeap(~quassel@user/hololeap) hololeap
2025-04-11 20:51:28 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 20:52:58 +0200jespada(~jespada@r179-25-2-204.dialup.adsl.anteldata.net.uy) jespada
2025-04-11 20:55:37 +0200sayurc_(~sayurc@177.136.41.195) sayurc
2025-04-11 20:55:48 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 20:55:49 +0200sayurc(~sayurc@169.150.203.34) (Ping timeout: 276 seconds)
2025-04-11 20:58:27 +0200j1n37-(~j1n37@user/j1n37) j1n37
2025-04-11 20:59:11 +0200ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2025-04-11 20:59:43 +0200j1n37(~j1n37@user/j1n37) (Ping timeout: 276 seconds)
2025-04-11 21:00:06 +0200caconym(~caconym@user/caconym) (Quit: bye)
2025-04-11 21:00:48 +0200caconym(~caconym@user/caconym) caconym
2025-04-11 21:00:58 +0200acidjnk_new(~acidjnk@p200300d6e71c4f3760e43f0ee11d5618.dip0.t-ipconnect.de)
2025-04-11 21:01:55 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
2025-04-11 21:01:55 +0200ljdarj1ljdarj
2025-04-11 21:06:51 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 21:11:32 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-04-11 21:17:16 +0200sayurc_(~sayurc@177.136.41.195) (Ping timeout: 276 seconds)
2025-04-11 21:17:17 +0200sayurc(~sayurc@169.150.203.34) sayurc
2025-04-11 21:18:38 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 21:20:00 +0200a_fantom(~fantom@2.219.56.221)
2025-04-11 21:20:06 +0200fantom(~fantom@2.219.56.221) (Ping timeout: 244 seconds)
2025-04-11 21:21:32 +0200__jmcantrell__(~weechat@user/jmcantrell) jmcantrell
2025-04-11 21:21:33 +0200jmcantrell(644f1bed9a@user/jmcantrell) (Killed (tungsten.libera.chat (Nickname regained by services)))
2025-04-11 21:21:33 +0200__jmcantrell__jmcantrell
2025-04-11 21:21:42 +0200jmcantrell_(644f1bed9a@user/jmcantrell) jmcantrell
2025-04-11 21:23:22 +0200fantom(~fantom@2.219.56.221)
2025-04-11 21:23:46 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 21:24:01 +0200sayurc_(~sayurc@177.136.41.195) sayurc
2025-04-11 21:24:25 +0200sayurc(~sayurc@169.150.203.34) (Ping timeout: 276 seconds)
2025-04-11 21:24:45 +0200a_fantom(~fantom@2.219.56.221) (Ping timeout: 244 seconds)
2025-04-11 21:26:02 +0200Googulator(~Googulato@2a01-036d-0106-211a-315b-d519-517f-afe7.pool6.digikabel.hu) (Quit: Client closed)
2025-04-11 21:26:18 +0200Googulator(~Googulato@2a01-036d-0106-211a-315b-d519-517f-afe7.pool6.digikabel.hu)
2025-04-11 21:26:58 +0200pavonia(~user@user/siracusa) siracusa
2025-04-11 21:27:04 +0200j1n37(~j1n37@user/j1n37) j1n37
2025-04-11 21:27:15 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-04-11 21:28:19 +0200j1n37-(~j1n37@user/j1n37) (Ping timeout: 276 seconds)
2025-04-11 21:34:25 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 21:37:46 +0200gmg(~user@user/gehmehgeh) (Quit: Leaving)
2025-04-11 21:39:06 +0200Owner_(~Owner@2600:1700:69cf:9000:a8ba:1089:2e3e:b3d1)
2025-04-11 21:39:21 +0200jmcantrell(~weechat@user/jmcantrell) (Quit: WeeChat 4.6.1)
2025-04-11 21:39:21 +0200jmcantrell_jmcantrell
2025-04-11 21:40:01 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 21:42:04 +0200notdabs(~Owner@2600:1700:69cf:9000:5926:6835:ef1d:9af3) (Ping timeout: 260 seconds)
2025-04-11 21:44:56 +0200euleritian(~euleritia@ip5f5ad695.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
2025-04-11 21:45:30 +0200euleritian(~euleritia@95.90.214.149)
2025-04-11 21:49:09 +0200__jmcantrell__(~weechat@user/jmcantrell) jmcantrell
2025-04-11 21:49:13 +0200jmcantrellGuest8428
2025-04-11 21:49:13 +0200Guest8428(644f1bed9a@user/jmcantrell) (Killed (silver.libera.chat (Nickname regained by services)))
2025-04-11 21:49:13 +0200__jmcantrell__jmcantrell
2025-04-11 21:49:26 +0200jmcantrell_(644f1bed9a@user/jmcantrell) jmcantrell
2025-04-11 21:50:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 21:52:02 +0200Owner_(~Owner@2600:1700:69cf:9000:a8ba:1089:2e3e:b3d1) (Quit: Leaving)
2025-04-11 21:52:19 +0200notdabs(~Owner@2600:1700:69cf:9000:a8ba:1089:2e3e:b3d1)
2025-04-11 21:55:37 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 21:56:46 +0200sayurc(~sayurc@169.150.203.34) sayurc
2025-04-11 21:56:47 +0200sayurc_(~sayurc@177.136.41.195) (Ping timeout: 244 seconds)
2025-04-11 21:58:30 +0200acidjnk_new(~acidjnk@p200300d6e71c4f3760e43f0ee11d5618.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2025-04-11 21:58:44 +0200acidjnk_new(~acidjnk@p200300d6e71c4f3781d551119ad8c4a9.dip0.t-ipconnect.de) acidjnk
2025-04-11 21:59:25 +0200rvalue-(~rvalue@user/rvalue) rvalue
2025-04-11 22:00:23 +0200rvalue(~rvalue@user/rvalue) (Ping timeout: 265 seconds)
2025-04-11 22:02:19 +0200tromp(~textual@2001:1c00:3487:1b00:d08a:2428:1bec:2dd5)
2025-04-11 22:06:00 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 22:08:10 +0200rvalue-rvalue
2025-04-11 22:09:22 +0200vanishingideal(~vanishing@user/vanishingideal) (Remote host closed the connection)
2025-04-11 22:10:51 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 22:19:38 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 22:23:05 +0200cheater(~Username@user/cheater) cheater
2025-04-11 22:24:08 +0200rekahsoft(~rekahsoft@bras-base-orllon1103w-grc-15-174-95-4-83.dsl.bell.ca) rekahsoft
2025-04-11 22:27:28 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 276 seconds)
2025-04-11 22:28:18 +0200michalz(~michalz@185.246.207.205) (Remote host closed the connection)
2025-04-11 22:37:42 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-04-11 22:42:02 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-04-11 22:43:35 +0200 <EvanR> in classic parser with external interface String -> Either Error Expr what's probably happening is a big expression is built up and you can only access it after it is known there was no error somewhere (result finally evaluates to Right something)
2025-04-11 22:44:14 +0200 <EvanR> but if it is the case that the likelihood of an error is very low, and you want to start processing the Expr lazily
2025-04-11 22:44:45 +0200 <EvanR> while taking some big performance trade off if there really is an error
2025-04-11 22:45:09 +0200 <EvanR> is there a type for that