2025/03/28

2025-03-28 00:04:09 +0100j1n37-(~j1n37@user/j1n37) (Read error: Connection reset by peer)
2025-03-28 00:06:31 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 00:07:12 +0100j1n37(~j1n37@user/j1n37) j1n37
2025-03-28 00:08:06 +0100machinedgod(~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 246 seconds)
2025-03-28 00:11:17 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-28 00:15:31 +0100HelloImSteven(~HelloImSt@user/HelloImSteven) (Quit: HelloImSteven)
2025-03-28 00:22:17 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 00:24:01 +0100malte(~malte@mal.tc) malte
2025-03-28 00:24:10 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2025-03-28 00:29:16 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-28 00:36:43 +0100vavakado(~vavakado@user/Vavakado) (Quit: Lost terminal)
2025-03-28 00:40:49 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 00:43:56 +0100malte(~malte@mal.tc) (Ping timeout: 252 seconds)
2025-03-28 00:45:54 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-28 00:46:01 +0100malte(~malte@mal.tc) malte
2025-03-28 00:48:29 +0100xff0x(~xff0x@2405:6580:b080:900:879:4ff2:52d5:5929) (Quit: xff0x)
2025-03-28 00:52:44 +0100malte(~malte@mal.tc) (Ping timeout: 252 seconds)
2025-03-28 00:56:35 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 01:01:32 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-28 01:05:23 +0100anselmschueler(~quassel@user/schuelermine) schuelermine
2025-03-28 01:05:24 +0100 <anselmschueler> Hi
2025-03-28 01:05:24 +0100sprotte24(~sprotte24@p200300d16f0a80004582713a1a0df846.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2025-03-28 01:05:28 +0100 <anselmschueler> ’s been a while
2025-03-28 01:05:55 +0100xff0x(~xff0x@2405:6580:b080:900:879:4ff2:52d5:5929)
2025-03-28 01:06:05 +0100geekosaurwaves
2025-03-28 01:07:51 +0100 <anselmschueler> does anyone know when stimes was changed to document that it’ll work with 0 only for some implementors, and that stimesMonoid was added to enforce stimesMonoid 0 = mempty?
2025-03-28 01:07:59 +0100 <anselmschueler> I seem to remember it wasn’t so some time ago
2025-03-28 01:08:19 +0100 <anselmschueler> specifically when I wrote this rejected proposal: https://github.com/haskell/core-libraries-committee/issues/72
2025-03-28 01:12:23 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 01:12:40 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-03-28 01:14:56 +0100tdammers(~tdammers@110-136-178-143.ftth.glasoperator.nl) (Ping timeout: 265 seconds)
2025-03-28 01:17:25 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-28 01:27:51 +0100tdammers(~tdammers@110-136-178-143.ftth.glasoperator.nl) tdammers
2025-03-28 01:28:09 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 01:30:30 +0100toby-bro(~toby-bro@user/toby-bro) (Ping timeout: 276 seconds)
2025-03-28 01:32:03 +0100malte(~malte@mal.tc) malte
2025-03-28 01:34:41 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-28 01:35:21 +0100st_aldini(~Thunderbi@136.48.22.91) (Remote host closed the connection)
2025-03-28 01:36:12 +0100jacopovalanzano(~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net) (Quit: Client closed)
2025-03-28 01:39:30 +0100JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-03-28 01:41:52 +0100aetepe(~aetepe@188.119.58.34) (Ping timeout: 252 seconds)
2025-03-28 01:44:34 +0100olivial(~benjaminl@user/benjaminl) (Ping timeout: 260 seconds)
2025-03-28 01:46:13 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 01:51:47 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-03-28 01:54:15 +0100acidjnk(~acidjnk@p200300d6e71c4f64e0b826361c3e438a.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
2025-03-28 01:55:34 +0100anselmschueler(~quassel@user/schuelermine) (Remote host closed the connection)
2025-03-28 01:55:57 +0100Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.)
2025-03-28 01:58:11 +0100anselmschueler(~quassel@user/schuelermine) schuelermine
2025-03-28 01:58:14 +0100 <EvanR> :t \n -> (!! n) . iterate
2025-03-28 01:58:15 +0100 <lambdabot> error:
2025-03-28 01:58:15 +0100 <lambdabot> • Couldn't match type ‘a -> [a]’ with ‘[c]’
2025-03-28 01:58:15 +0100 <lambdabot> Expected type: (a -> a) -> [c]
2025-03-28 01:58:35 +0100 <EvanR> :t \n f -> (!! n) . iterate f
2025-03-28 01:58:36 +0100 <lambdabot> Int -> (c -> c) -> c -> c
2025-03-28 02:01:59 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 02:04:21 +0100 <anselmschueler> :h
2025-03-28 02:04:24 +0100 <anselmschueler> :?
2025-03-28 02:04:30 +0100 <anselmschueler> hm
2025-03-28 02:05:31 +0100 <geekosaur> it only supports :t and :k (from ghci) plus "> " to evaluate expressions, otherwise commands start with @
2025-03-28 02:05:36 +0100 <anselmschueler> oh
2025-03-28 02:05:38 +0100 <anselmschueler> ok
2025-03-28 02:06:25 +0100 <geekosaur> (the in-channel help isn't so helpful, you might prefer https://github.com/lambdabot/lambdabot/pull/205/files)
2025-03-28 02:06:48 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-28 02:08:02 +0100 <anselmschueler> @djinn [a] -> (a -> [b]) -> [b]
2025-03-28 02:08:02 +0100 <lambdabot> Error: Undefined type []
2025-03-28 02:09:18 +0100 <geekosaur> djinn doesn't understand recursively defined types. there was a bot that did (exference) but it's bitrotted, and even when working it could fail to find solutions
2025-03-28 02:09:42 +0100 <anselmschueler> geekosaur: the source code is just lost?
2025-03-28 02:09:44 +0100 <anselmschueler> sad
2025-03-28 02:09:50 +0100 <anselmschueler> I assume it’s also a hard problem
2025-03-28 02:09:54 +0100 <anselmschueler> to generate those
2025-03-28 02:10:18 +0100 <geekosaur> no, it's there, it was broken by compiler changes and I couldn't figure out how to update it when I tried forking it
2025-03-28 02:10:23 +0100 <geekosaur> ghc internals change a lot
2025-03-28 02:10:52 +0100 <geekosaur> https://github.com/lspitzner/exference
2025-03-28 02:11:02 +0100 <anselmschueler> ok
2025-03-28 02:11:13 +0100xff0x(~xff0x@2405:6580:b080:900:879:4ff2:52d5:5929) (Ping timeout: 248 seconds)
2025-03-28 02:12:16 +0100 <anselmschueler> hm @free isn’t working
2025-03-28 02:12:19 +0100 <anselmschueler> @free fmap
2025-03-28 02:12:20 +0100 <lambdabot> Extra stuff at end of line in retrieved type "Functor f => (a -> b) -> f a -> f b"
2025-03-28 02:12:48 +0100 <Leary> @djinn (r -> (a -> r -> r) -> r) -> (a -> (s -> (b -> s -> s) -> s)) -> (t -> (b -> t -> t) -> t)
2025-03-28 02:12:48 +0100 <lambdabot> f _ _ a _ = a
2025-03-28 02:12:51 +0100 <geekosaur> @free map
2025-03-28 02:12:52 +0100 <lambdabot> g . h = k . f => $map g . map h = map k . $map f
2025-03-28 02:13:16 +0100 <geekosaur> which is actually fmap; this is something of a hack because @free doesn't understand typeclasses
2025-03-28 02:13:25 +0100otto_s(~user@p5de2f7cc.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
2025-03-28 02:13:25 +0100 <Leary> (i.e. `f _ _ = []`)
2025-03-28 02:13:29 +0100 <anselmschueler> oh
2025-03-28 02:13:52 +0100 <anselmschueler> @free fmap @[]
2025-03-28 02:13:52 +0100 <lambdabot> Extra stuff at end of line
2025-03-28 02:14:01 +0100 <anselmschueler> :(
2025-03-28 02:14:09 +0100 <Axman6> you can play with lambdabot in private messages too
2025-03-28 02:14:15 +0100 <anselmschueler> ok
2025-03-28 02:14:19 +0100 <Leary> @free fmap :: (a -> b) -> F a -> F b
2025-03-28 02:14:19 +0100 <lambdabot> g . h = k . f => $map_F g . fmap h = fmap k . $map_F f
2025-03-28 02:14:28 +0100 <anselmschueler> it’s been too long since I’ve done Haskell
2025-03-28 02:14:33 +0100vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 245 seconds)
2025-03-28 02:14:34 +0100 <anselmschueler> like proper
2025-03-28 02:14:54 +0100otto_s(~user@p5de2fe2d.dip0.t-ipconnect.de)
2025-03-28 02:14:59 +0100 <geekosaur> well, most of these failures are because most of the bot plugins weren't updated
2025-03-28 02:15:10 +0100 <geekosaur> like, no TypeApplications support
2025-03-28 02:15:15 +0100 <anselmschueler> yeah
2025-03-28 02:16:11 +0100 <anselmschueler> two years ago I wrote a small (230 lines) code (still my best Haskell code to date) for directory traversal
2025-03-28 02:16:26 +0100 <anselmschueler> do you think using existentials for that is overkill?
2025-03-28 02:16:40 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-03-28 02:17:03 +0100 <anselmschueler> I had data Landmark = forall t. Landmark { prepare :: FilePath -> IO t, check :: t -> Check }
2025-03-28 02:17:09 +0100 <anselmschueler> so when the program starts it collects data
2025-03-28 02:17:14 +0100JuanDaugherty(~juan@user/JuanDaugherty) (Quit: praxis.meansofproduction.biz (juan@acm.org))
2025-03-28 02:17:26 +0100 <anselmschueler> and then it starts traversing and each time it checks for each file
2025-03-28 02:17:31 +0100 <anselmschueler> something
2025-03-28 02:17:46 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 02:18:00 +0100 <anselmschueler> and existentials seemed like a natural solution
2025-03-28 02:18:04 +0100 <anselmschueler> but idk if it is anymore
2025-03-28 02:19:13 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 248 seconds)
2025-03-28 02:20:08 +0100 <Leary> It's not really any different from `newtype Landmark = Landmark{ prepareAndCheck :: FilePath -> IO Check }`.
2025-03-28 02:20:47 +0100olivial(~benjaminl@user/benjaminl) benjaminl
2025-03-28 02:22:05 +0100notdabs(~Owner@2600:1700:69cf:9000:9c7c:26a2:e9ed:cf3a) (Read error: Connection reset by peer)
2025-03-28 02:22:31 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-28 02:33:32 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 02:34:08 +0100 <EvanR> there's usually a way to reword your datatype so that existentials, and sometimes higher rank types aren't required
2025-03-28 02:34:42 +0100 <EvanR> alternatively with higher rank polymorphism, you can make data types not required
2025-03-28 02:34:56 +0100 <EvanR> whatever is more convenient
2025-03-28 02:35:14 +0100ljdarj1(~Thunderbi@user/ljdarj) ljdarj
2025-03-28 02:35:43 +0100Googulator(~Googulato@2a01-036d-0106-01d5-c415-995d-99e3-7810.pool6.digikabel.hu) (Quit: Client closed)
2025-03-28 02:36:00 +0100Googulator(~Googulato@2a01-036d-0106-01d5-c415-995d-99e3-7810.pool6.digikabel.hu)
2025-03-28 02:37:22 +0100ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds)
2025-03-28 02:37:22 +0100ljdarj1ljdarj
2025-03-28 02:38:39 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds)
2025-03-28 02:41:02 +0100aetepe(~aetepe@188.119.58.34) aetepe
2025-03-28 02:44:12 +0100anselmschueler(~quassel@user/schuelermine) (Ping timeout: 268 seconds)
2025-03-28 02:45:59 +0100aetepe(~aetepe@188.119.58.34) (Ping timeout: 260 seconds)
2025-03-28 02:49:19 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 02:53:57 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-03-28 02:56:09 +0100weary-traveler(~user@user/user363627) user363627
2025-03-28 02:59:24 +0100ljdarj(~Thunderbi@user/ljdarj) (Quit: ljdarj)
2025-03-28 03:03:48 +0100gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2025-03-28 03:03:54 +0100jmcantrell(~weechat@user/jmcantrell) (Quit: WeeChat 4.6.0)
2025-03-28 03:04:32 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2025-03-28 03:04:39 +0100jmcantrell(~weechat@user/jmcantrell) jmcantrell
2025-03-28 03:04:48 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 03:05:20 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2025-03-28 03:11:38 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-03-28 03:17:39 +0100werneta(~werneta@syn-071-083-160-242.res.spectrum.com) werneta
2025-03-28 03:22:51 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 03:27:50 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-28 03:38:36 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 03:39:54 +0100aetepe(~aetepe@188.119.58.34) aetepe
2025-03-28 03:43:30 +0100ensyde(~ensyde@2601:5c6:c200:6dc0::8955)
2025-03-28 03:43:38 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-28 03:44:44 +0100aetepe(~aetepe@188.119.58.34) (Ping timeout: 260 seconds)
2025-03-28 03:51:13 +0100tomku(~tomku@user/tomku) (Ping timeout: 245 seconds)
2025-03-28 03:51:24 +0100 <haskellbridge> <Bowuigi> EvanR programming with rank N stuff only can be annoying sometimes, specially on a total system
2025-03-28 03:51:28 +0100tomku(~tomku@user/tomku) tomku
2025-03-28 03:52:16 +0100 <haskellbridge> <Bowuigi> Mendler-style recursion schemes are fantastic though, if only there was a way to get histomorphisms working on a total setting...
2025-03-28 03:54:22 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 03:55:33 +0100aetepe(~aetepe@188.119.58.34) aetepe
2025-03-28 03:59:06 +0100LainExperiments(~LainExper@user/LainExperiments) LainExperiments
2025-03-28 03:59:22 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-28 04:00:02 +0100aetepe(~aetepe@188.119.58.34) (Ping timeout: 248 seconds)
2025-03-28 04:02:48 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 04:07:24 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-28 04:11:17 +0100aetepe(~aetepe@188.119.58.34) aetepe
2025-03-28 04:12:19 +0100tromp(~textual@2001:1c00:3487:1b00:f8c0:4558:f838:6f52) (Ping timeout: 260 seconds)
2025-03-28 04:13:23 +0100LainExperiments(~LainExper@user/LainExperiments) (Quit: Client closed)
2025-03-28 04:14:36 +0100emmanuelux_(~emmanuelu@user/emmanuelux) emmanuelux
2025-03-28 04:16:05 +0100emmanuelux(~emmanuelu@user/emmanuelux) (Ping timeout: 268 seconds)
2025-03-28 04:16:15 +0100aetepe(~aetepe@188.119.58.34) (Ping timeout: 276 seconds)
2025-03-28 04:17:35 +0100 <haskellbridge> <thirdofmay18081814goya> what exactly is a higher-order effect that algebraic effects can't handle?
2025-03-28 04:17:51 +0100 <haskellbridge> <thirdofmay18081814goya> is it an effect that takes another effect? something like "Effect a -> Effect b"?
2025-03-28 04:18:33 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 04:21:33 +0100LainExperiments(~LainExper@user/LainExperiments) LainExperiments
2025-03-28 04:23:25 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-28 04:34:20 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 04:38:59 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-03-28 04:39:10 +0100 <Leary> thirdofmay: `data Catch e m a where Catch :: m a -> (e -> m a) -> Catch e m a`. The effect `runCatchEM :: forall a. Catch E M (M a) -> M a` is a higher order effect because `Catch` needs to know about `M`, and it isn't algebraic because `runCatch c >>= k /= runCatch (c <&> (>>= k))`.
2025-03-28 04:40:00 +0100LainExperiments3(LainExperi@user/LainExperiments) LainExperiments
2025-03-28 04:41:15 +0100 <jackdk> Is LainExperiments serially-numbered?
2025-03-28 04:42:06 +0100LainExperiments(~LainExper@user/LainExperiments) (Ping timeout: 240 seconds)
2025-03-28 04:45:08 +0100 <haskellbridge> <thirdofmay18081814goya> Leary: I see! thanks a lot for the comment!
2025-03-28 04:46:52 +0100 <EvanR> I had to look at join parts to get that one
2025-03-28 04:49:31 +0100 <haskellbridge> <Liamzee> are people doing much with civilian linear types these days?
2025-03-28 04:49:52 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 04:56:39 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-03-28 04:57:12 +0100 <haskellbridge> <Liamzee> i still feel bad about not writing a linearly typed growable vector lib, because it wouldn't have been any good
2025-03-28 04:58:15 +0100 <jackdk> Axman6 and I have a half-done port of streaming-bytestring to linear types but never finished it
2025-03-28 04:58:44 +0100 <Axman6> We should finish that
2025-03-28 04:59:17 +0100 <Axman6> I feel like there wasn't all that much left
2025-03-28 04:59:44 +0100 <EvanR> https://hackage.haskell.org/package/linear-base-0.4.0/docs/Data-Vector-Mutable-Linear.html
2025-03-28 05:03:00 +0100 <Axman6> Is there a linear state monad or something that can make passing around linear values a little nicer?
2025-03-28 05:06:28 +0100 <jackdk> https://hackage.haskell.org/package/linear-base-0.4.0/docs/Control-Functor-Linear.html#g:4 Not the module I would've expected
2025-03-28 05:07:56 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 05:09:10 +0100 <haskellbridge> <Liamzee> oh, i never realized that linear base had dynamic vectors, only mutable ones
2025-03-28 05:10:00 +0100 <EvanR> there is also a destination array thing in there
2025-03-28 05:10:43 +0100 <Leary> thirdofmay: Err, I guess that should have been `data Catch e m a where Catch :: m x -> (Either e x -> a) -> Catch e m a`, which probably clarifies the rest of what I said.
2025-03-28 05:12:21 +0100aetepe(~aetepe@188.119.58.34) aetepe
2025-03-28 05:13:01 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-28 05:14:05 +0100 <haskellbridge> <Liamzee> but no one has built a linearly typed webserver and put it on hackage?
2025-03-28 05:16:49 +0100 <haskellbridge> <Liamzee> fun recent linear types:
2025-03-28 05:16:50 +0100 <haskellbridge> <Liamzee> https://hackage.haskell.org/package/text-builder-linear
2025-03-28 05:16:54 +0100 <haskellbridge> <Liamzee> by bodigrim
2025-03-28 05:17:03 +0100aetepe(~aetepe@188.119.58.34) (Ping timeout: 245 seconds)
2025-03-28 05:18:36 +0100LainExperiments3(LainExperi@user/LainExperiments) (Quit: Client closed)
2025-03-28 05:19:40 +0100 <EvanR> it's not linearly typed but it does do the thing everyone thinks linear types are for http://www.impredicative.com/ur/
2025-03-28 05:19:49 +0100 <EvanR> Ur/Web
2025-03-28 05:23:23 +0100michalz(~michalz@185.246.207.205)
2025-03-28 05:23:43 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 05:24:38 +0100 <haskellbridge> <thirdofmay18081814goya> does anyone know if there's a way to embed a max number of recursive calls in an arbitrary recursive function?
2025-03-28 05:24:57 +0100 <haskellbridge> <thirdofmay18081814goya> i guess necessarily some method with recursion-schemes right
2025-03-28 05:26:19 +0100 <haskellbridge> <thirdofmay18081814goya> the idea would be to have a recursive function whose specification is separate from the requirement that it terminates after n calls
2025-03-28 05:26:36 +0100 <haskellbridge> <thirdofmay18081814goya> so that you can also use it without enforcing the max recursive call
2025-03-28 05:27:26 +0100 <haskellbridge> <thirdofmay18081814goya> trivially a catamorphism whose algebra returns a pair can do this, any other ideas?
2025-03-28 05:28:06 +0100aetepe(~aetepe@188.119.58.34) aetepe
2025-03-28 05:28:21 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds)
2025-03-28 05:28:46 +0100 <EvanR> this isn't doesn't "monkey patch" the way you want, but the partiality monad will let you decide elsewhere how long a recursive algorithm gets to terminate
2025-03-28 05:29:04 +0100 <Leary> I would write `fixMaxDepth :: Int -> (a -> a) -> Maybe a`.
2025-03-28 05:29:24 +0100 <Leary> Err, maybe not.
2025-03-28 05:29:53 +0100 <Leary> `fixMaxDepth :: Int -> (a -> Either a b) -> Maybe b`?
2025-03-28 05:29:55 +0100LainExperiments(~LainExper@user/LainExperiments) LainExperiments
2025-03-28 05:30:10 +0100 <EvanR> well, now it's nearly the partiality monad
2025-03-28 05:30:48 +0100aforemny_(~aforemny@2001:9e8:6cdb:6d00:dc2e:87c9:d5a9:a75) (Ping timeout: 245 seconds)
2025-03-28 05:31:23 +0100aforemny(~aforemny@i577B139C.versanet.de) aforemny
2025-03-28 05:31:30 +0100 <haskellbridge> <thirdofmay18081814goya> i'll check out the partiality monad, thanks!
2025-03-28 05:33:14 +0100aetepe(~aetepe@188.119.58.34) (Ping timeout: 260 seconds)
2025-03-28 05:34:47 +0100LainExperiments4(~LainExper@user/LainExperiments) LainExperiments
2025-03-28 05:36:06 +0100LainExperiments(~LainExper@user/LainExperiments) (Ping timeout: 240 seconds)
2025-03-28 05:36:07 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2025-03-28 05:38:54 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich
2025-03-28 05:39:30 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 05:40:52 +0100DigitteknohippieDigit
2025-03-28 05:44:37 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-03-28 05:51:33 +0100haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) (Ping timeout: 252 seconds)
2025-03-28 05:53:05 +0100Digitteknohippie(~user@user/digit) Digit
2025-03-28 05:54:07 +0100Digit(~user@user/digit) (Ping timeout: 252 seconds)
2025-03-28 05:54:24 +0100haskellbridge(~hackager@syn-024-093-192-219.res.spectrum.com) hackager
2025-03-28 05:54:24 +0100ChanServ+v haskellbridge
2025-03-28 05:55:18 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 05:55:23 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 245 seconds)
2025-03-28 05:55:35 +0100 <jackdk> thirdofmay18081814goya: Hughes does this for a game tree by generating the infinite tree and then pruning it to N levels, which works because laziness
2025-03-28 06:00:02 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-28 06:03:49 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 06:06:30 +0100LainExperiments4(~LainExper@user/LainExperiments) (Ping timeout: 240 seconds)
2025-03-28 06:08:08 +0100 <haskellbridge> <thirdofmay18081814goya> jackdk: ah very neat, will check this out too, have not considered any notion of laziness so far
2025-03-28 06:08:10 +0100 <haskellbridge> <thirdofmay18081814goya> thanks!
2025-03-28 06:08:49 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-28 06:10:44 +0100peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 265 seconds)
2025-03-28 06:10:54 +0100xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2025-03-28 06:12:03 +0100gmg(~user@user/gehmehgeh) (Remote host closed the connection)
2025-03-28 06:12:45 +0100gmg(~user@user/gehmehgeh) gehmehgeh
2025-03-28 06:13:33 +0100LainExperiments(~LainExper@user/LainExperiments) LainExperiments
2025-03-28 06:17:39 +0100DigitteknohippieDigit
2025-03-28 06:19:33 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 06:21:56 +0100 <ski> Leary : `Either e x -> a' a la "Exceptional Syntax" ?
2025-03-28 06:22:06 +0100 <ski> EvanR : Ur has uniqueness ?
2025-03-28 06:22:53 +0100 <EvanR> does it?
2025-03-28 06:23:01 +0100 <ski> i dunno
2025-03-28 06:23:10 +0100 <ski> you said "it does do the thing everyone thinks linear types are for"
2025-03-28 06:24:07 +0100 <EvanR> memory management, or lack there of
2025-03-28 06:24:34 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2025-03-28 06:27:19 +0100 <ski> mhm
2025-03-28 06:29:09 +0100aetepe(~aetepe@188.119.58.34) aetepe
2025-03-28 06:32:48 +0100Digitteknohippie(~user@user/digit) Digit
2025-03-28 06:33:06 +0100 <Leary> ski: I'm not familiar with the paper. I pulled that `data Catch` out of my arse, though it may have been inspired by 'A Framework for Higher-Order Effects & Handlers'.
2025-03-28 06:33:37 +0100aetepe(~aetepe@188.119.58.34) (Ping timeout: 244 seconds)
2025-03-28 06:34:13 +0100Digit(~user@user/digit) (Ping timeout: 268 seconds)
2025-03-28 06:35:20 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 06:36:40 +0100DigitteknohippieDigit
2025-03-28 06:41:03 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-28 06:44:35 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2025-03-28 06:46:08 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2025-03-28 06:46:09 +0100takuan(~takuan@d8D86B601.access.telenet.be)
2025-03-28 06:51:54 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 06:53:14 +0100Square(~Square@user/square) Square
2025-03-28 06:57:08 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-03-28 06:57:19 +0100weary-traveler(~user@user/user363627) (Remote host closed the connection)
2025-03-28 06:58:01 +0100 <ski> Leary : "Exceptional Syntax" by Nick Benton,Andrew Kennedy in 2001 at <https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/exceptionalsyntax.pdf> (<http://lambda-the-ultimate.org/node/1193)
2025-03-28 06:58:19 +0100nvoid(~nvoid@2601:140:8700:25fe:5820:136c:b0ce:f5b1)
2025-03-28 06:59:07 +0100 <ski> basically argues for (in Haskell terms) `catchBind :: Exception e => IO a -> (e -> IO b) -> (a -> IO b) -> IO b' being more appropriate as a primitive, than `catch :: Exception e => IO a -> (e -> IO a) -> IO a'
2025-03-28 06:59:40 +0100 <ski> one reason being tail calls
2025-03-28 07:04:46 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 07:05:47 +0100nvoid(~nvoid@2601:140:8700:25fe:5820:136c:b0ce:f5b1) (Quit: nvoid)
2025-03-28 07:09:40 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-28 07:10:06 +0100LainExperiments(~LainExper@user/LainExperiments) (Ping timeout: 240 seconds)
2025-03-28 07:10:32 +0100 <sim590> Consider the following problem: https://projecteuler.net/problem=32. Which I have solved. My algorithm uses some math analysis to determine an upper bound for the search space. Anyway, I use the following function to recognize a pandigital triplet: https://paste.debian.net/1365804/. Using this function, my algorithms gave me the right answer. Then, I decided to rewrite the function a bit to make
2025-03-28 07:10:34 +0100 <sim590> it simpler. I rewrote it to https://paste.debian.net/1365805/. I don't understand why, but now my whole algorithme doesn't give me the right answer anymore.
2025-03-28 07:12:49 +0100 <sim590> To me, I thought that the second version made more sense... I'm now doubting if I accidently got the right answer because of a bad upper bound and a bad algorithm... lol
2025-03-28 07:16:51 +0100rvalue(~rvalue@user/rvalue) (Read error: Connection reset by peer)
2025-03-28 07:17:23 +0100rvalue(~rvalue@user/rvalue) rvalue
2025-03-28 07:19:09 +0100LainExperiments(~LainExper@user/LainExperiments) LainExperiments
2025-03-28 07:20:34 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 07:20:57 +0100 <sim590> The funny thing is with the first function, the algorithm executes in 280 seconds while with the second function, it executes in 420 seconds... (it's by now means optimal, I tried a brute force approach with the help of an upper bound)
2025-03-28 07:22:51 +0100emmanuelux_(~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
2025-03-28 07:23:49 +0100 <sim590> Ah. I get it. The second version doesn't take into account repeating numbers while the Set approach took care of that.
2025-03-28 07:24:46 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-28 07:24:49 +0100hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds)
2025-03-28 07:30:14 +0100aetepe(~aetepe@188.119.58.34) aetepe
2025-03-28 07:30:52 +0100 <Leary> thirdofmay: I might be beating a dead horse at this point, but there are some details I kinda bungled due to algebraicity depending on precisely how on operation is expressed (and I prefer to fix these things). `catch :: M a -> (E -> M a) -> M a` naively becomes `catch :: Sig_Catch (M a) -> M a` with `Sig_Catch r = (r, E -> r)` which /isn't/ algebraic, but the last `data Catch` I wrote has a `runCatch` that actually /is/. That's because I cheated and us
2025-03-28 07:30:53 +0100 <Leary> ed `try` disguised as `catch`: `M a -> M (Either E a)` ~ `M a -> Codensity M (Either E a)` ~ `M a -> (Either E a -> M b) -> M b` ~ `Sig_Try (M b) -> M b` where `Sig_Try r = (M a, Either E a -> r)`.
2025-03-28 07:31:40 +0100hattckory(~hattckory@70.27.118.207)
2025-03-28 07:33:50 +0100 <Leary> ski: I see. Those tail calls and algebraicity are probably related.
2025-03-28 07:34:57 +0100aetepe(~aetepe@188.119.58.34) (Ping timeout: 248 seconds)
2025-03-28 07:35:57 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 07:41:00 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-28 07:43:22 +0100echoreply(~echoreply@2001:19f0:9002:1f3b:5400:ff:fe6f:8b8d) (Quit: WeeChat 2.8)
2025-03-28 07:43:55 +0100echoreply(~echoreply@45.32.163.16) echoreply
2025-03-28 07:43:59 +0100Digitteknohippie(~user@user/digit) Digit
2025-03-28 07:45:13 +0100Digit(~user@user/digit) (Ping timeout: 252 seconds)
2025-03-28 07:48:50 +0100 <haskellbridge> <thirdofmay18081814goya> Leary: am parsing these comments, thanks for the answer!
2025-03-28 07:51:45 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 07:56:09 +0100hattckory(~hattckory@70.27.118.207) (Ping timeout: 260 seconds)
2025-03-28 07:58:18 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-03-28 08:00:00 +0100caconym(~caconym@user/caconym) (Quit: bye)
2025-03-28 08:01:02 +0100caconym(~caconym@user/caconym) caconym
2025-03-28 08:03:08 +0100DigitteknohippieDigit
2025-03-28 08:05:36 +0100aetepe(~aetepe@188.119.58.34) aetepe
2025-03-28 08:05:46 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 08:10:15 +0100aetepe(~aetepe@188.119.58.34) (Ping timeout: 276 seconds)
2025-03-28 08:10:32 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-28 08:15:55 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 244 seconds)
2025-03-28 08:15:59 +0100ensyde(~ensyde@2601:5c6:c200:6dc0::8955) (Ping timeout: 260 seconds)
2025-03-28 08:17:48 +0100ensyde(~ensyde@2601:5c6:c200:6dc0::6f7f) ensyde
2025-03-28 08:18:43 +0100jmcantrell(~weechat@user/jmcantrell) (Ping timeout: 244 seconds)
2025-03-28 08:19:11 +0100ft(~ft@p508db463.dip0.t-ipconnect.de) (Quit: leaving)
2025-03-28 08:19:25 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2025-03-28 08:21:32 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 08:26:39 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-03-28 08:30:06 +0100LainExperiments(~LainExper@user/LainExperiments) (Quit: Client closed)
2025-03-28 08:31:37 +0100ash3en(~Thunderbi@ip1f10cbd6.dynamic.kabel-deutschland.de) ash3en
2025-03-28 08:33:39 +0100wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-03-28 08:37:21 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 08:42:14 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-03-28 08:44:16 +0100connrs(~connrs@user/connrs) (Quit: ZNC 1.9.1 - https://znc.in)
2025-03-28 08:52:39 +0100ash3en(~Thunderbi@ip1f10cbd6.dynamic.kabel-deutschland.de) (Ping timeout: 265 seconds)
2025-03-28 08:53:18 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 08:54:35 +0100L29Ah(~L29Ah@wikipedia/L29Ah) (Read error: Connection timed out)
2025-03-28 08:56:56 +0100acidjnk(~acidjnk@p200300d6e71c4f71c835c1b6e3010b6c.dip0.t-ipconnect.de) acidjnk
2025-03-28 08:58:11 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-28 09:00:15 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) lortabac
2025-03-28 09:00:19 +0100connrs(~connrs@user/connrs) connrs
2025-03-28 09:02:36 +0100CiaoSen(~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) CiaoSen
2025-03-28 09:04:51 +0100developer_(~developer@85.50.149.196)
2025-03-28 09:06:46 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 09:07:14 +0100vpan(~vpan@212.117.1.172)
2025-03-28 09:11:39 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-03-28 09:12:06 +0100Googulator(~Googulato@2a01-036d-0106-01d5-c415-995d-99e3-7810.pool6.digikabel.hu) (Ping timeout: 240 seconds)
2025-03-28 09:14:37 +0100auri(~auri@fsf/member/auri) auri
2025-03-28 09:21:30 +0100__monty__(~toonn@user/toonn) toonn
2025-03-28 09:22:34 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 09:29:29 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds)
2025-03-28 09:33:44 +0100econo_(uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
2025-03-28 09:40:37 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-28 09:43:44 +0100sord937(~sord937@gateway/tor-sasl/sord937) sord937
2025-03-28 09:44:54 +0100sprout(~sprout@84-80-106-227.fixed.kpn.net) (Ping timeout: 246 seconds)
2025-03-28 09:45:30 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)