2025-03-28 00:04:09 +0100 | j1n37- | (~j1n37@user/j1n37) (Read error: Connection reset by peer) |
2025-03-28 00:06:31 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 00:07:12 +0100 | j1n37 | (~j1n37@user/j1n37) j1n37 |
2025-03-28 00:08:06 +0100 | machinedgod | (~machinedg@d108-173-18-100.abhsia.telus.net) (Ping timeout: 246 seconds) |
2025-03-28 00:11:17 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-28 00:15:31 +0100 | HelloImSteven | (~HelloImSt@user/HelloImSteven) (Quit: HelloImSteven) |
2025-03-28 00:22:17 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 00:24:01 +0100 | malte | (~malte@mal.tc) malte |
2025-03-28 00:24:10 +0100 | __monty__ | (~toonn@user/toonn) (Quit: leaving) |
2025-03-28 00:29:16 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-28 00:36:43 +0100 | vavakado | (~vavakado@user/Vavakado) (Quit: Lost terminal) |
2025-03-28 00:40:49 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 00:43:56 +0100 | malte | (~malte@mal.tc) (Ping timeout: 252 seconds) |
2025-03-28 00:45:54 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-28 00:46:01 +0100 | malte | (~malte@mal.tc) malte |
2025-03-28 00:48:29 +0100 | xff0x | (~xff0x@2405:6580:b080:900:879:4ff2:52d5:5929) (Quit: xff0x) |
2025-03-28 00:52:44 +0100 | malte | (~malte@mal.tc) (Ping timeout: 252 seconds) |
2025-03-28 00:56:35 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 01:01:32 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-28 01:05:23 +0100 | anselmschueler | (~quassel@user/schuelermine) schuelermine |
2025-03-28 01:05:24 +0100 | <anselmschueler> | Hi |
2025-03-28 01:05:24 +0100 | sprotte24 | (~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 +0100 | xff0x | (~xff0x@2405:6580:b080:900:879:4ff2:52d5:5929) |
2025-03-28 01:06:05 +0100 | geekosaur | waves |
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 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 01:12:40 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-03-28 01:14:56 +0100 | tdammers | (~tdammers@110-136-178-143.ftth.glasoperator.nl) (Ping timeout: 265 seconds) |
2025-03-28 01:17:25 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-28 01:27:51 +0100 | tdammers | (~tdammers@110-136-178-143.ftth.glasoperator.nl) tdammers |
2025-03-28 01:28:09 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 01:30:30 +0100 | toby-bro | (~toby-bro@user/toby-bro) (Ping timeout: 276 seconds) |
2025-03-28 01:32:03 +0100 | malte | (~malte@mal.tc) malte |
2025-03-28 01:34:41 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-28 01:35:21 +0100 | st_aldini | (~Thunderbi@136.48.22.91) (Remote host closed the connection) |
2025-03-28 01:36:12 +0100 | jacopovalanzano | (~jacopoval@cpc151911-cove17-2-0-cust105.3-1.cable.virginm.net) (Quit: Client closed) |
2025-03-28 01:39:30 +0100 | JuanDaugherty | (~juan@user/JuanDaugherty) JuanDaugherty |
2025-03-28 01:41:52 +0100 | aetepe | (~aetepe@188.119.58.34) (Ping timeout: 252 seconds) |
2025-03-28 01:44:34 +0100 | olivial | (~benjaminl@user/benjaminl) (Ping timeout: 260 seconds) |
2025-03-28 01:46:13 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 01:51:47 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
2025-03-28 01:54:15 +0100 | acidjnk | (~acidjnk@p200300d6e71c4f64e0b826361c3e438a.dip0.t-ipconnect.de) (Ping timeout: 268 seconds) |
2025-03-28 01:55:34 +0100 | anselmschueler | (~quassel@user/schuelermine) (Remote host closed the connection) |
2025-03-28 01:55:57 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) (Quit: Leaving.) |
2025-03-28 01:58:11 +0100 | anselmschueler | (~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 +0100 | merijn | (~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 +0100 | merijn | (~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 +0100 | xff0x | (~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 +0100 | otto_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 +0100 | vanishingideal | (~vanishing@user/vanishingideal) (Ping timeout: 245 seconds) |
2025-03-28 02:14:34 +0100 | <anselmschueler> | like proper |
2025-03-28 02:14:54 +0100 | otto_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 +0100 | vanishingideal | (~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 +0100 | JuanDaugherty | (~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 +0100 | merijn | (~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 +0100 | peterbecich | (~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 +0100 | olivial | (~benjaminl@user/benjaminl) benjaminl |
2025-03-28 02:22:05 +0100 | notdabs | (~Owner@2600:1700:69cf:9000:9c7c:26a2:e9ed:cf3a) (Read error: Connection reset by peer) |
2025-03-28 02:22:31 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-28 02:33:32 +0100 | merijn | (~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 +0100 | ljdarj1 | (~Thunderbi@user/ljdarj) ljdarj |
2025-03-28 02:35:43 +0100 | Googulator | (~Googulato@2a01-036d-0106-01d5-c415-995d-99e3-7810.pool6.digikabel.hu) (Quit: Client closed) |
2025-03-28 02:36:00 +0100 | Googulator | (~Googulato@2a01-036d-0106-01d5-c415-995d-99e3-7810.pool6.digikabel.hu) |
2025-03-28 02:37:22 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 248 seconds) |
2025-03-28 02:37:22 +0100 | ljdarj1 | ljdarj |
2025-03-28 02:38:39 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 268 seconds) |
2025-03-28 02:41:02 +0100 | aetepe | (~aetepe@188.119.58.34) aetepe |
2025-03-28 02:44:12 +0100 | anselmschueler | (~quassel@user/schuelermine) (Ping timeout: 268 seconds) |
2025-03-28 02:45:59 +0100 | aetepe | (~aetepe@188.119.58.34) (Ping timeout: 260 seconds) |
2025-03-28 02:49:19 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 02:53:57 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-03-28 02:56:09 +0100 | weary-traveler | (~user@user/user363627) user363627 |
2025-03-28 02:59:24 +0100 | ljdarj | (~Thunderbi@user/ljdarj) (Quit: ljdarj) |
2025-03-28 03:03:48 +0100 | gmg | (~user@user/gehmehgeh) (Remote host closed the connection) |
2025-03-28 03:03:54 +0100 | jmcantrell | (~weechat@user/jmcantrell) (Quit: WeeChat 4.6.0) |
2025-03-28 03:04:32 +0100 | gmg | (~user@user/gehmehgeh) gehmehgeh |
2025-03-28 03:04:39 +0100 | jmcantrell | (~weechat@user/jmcantrell) jmcantrell |
2025-03-28 03:04:48 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 03:05:20 +0100 | xff0x | (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
2025-03-28 03:11:38 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
2025-03-28 03:17:39 +0100 | werneta | (~werneta@syn-071-083-160-242.res.spectrum.com) werneta |
2025-03-28 03:22:51 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 03:27:50 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-28 03:38:36 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 03:39:54 +0100 | aetepe | (~aetepe@188.119.58.34) aetepe |
2025-03-28 03:43:30 +0100 | ensyde | (~ensyde@2601:5c6:c200:6dc0::8955) |
2025-03-28 03:43:38 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-28 03:44:44 +0100 | aetepe | (~aetepe@188.119.58.34) (Ping timeout: 260 seconds) |
2025-03-28 03:51:13 +0100 | tomku | (~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 +0100 | tomku | (~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 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 03:55:33 +0100 | aetepe | (~aetepe@188.119.58.34) aetepe |
2025-03-28 03:59:06 +0100 | LainExperiments | (~LainExper@user/LainExperiments) LainExperiments |
2025-03-28 03:59:22 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds) |
2025-03-28 04:00:02 +0100 | aetepe | (~aetepe@188.119.58.34) (Ping timeout: 248 seconds) |
2025-03-28 04:02:48 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 04:07:24 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-28 04:11:17 +0100 | aetepe | (~aetepe@188.119.58.34) aetepe |
2025-03-28 04:12:19 +0100 | tromp | (~textual@2001:1c00:3487:1b00:f8c0:4558:f838:6f52) (Ping timeout: 260 seconds) |
2025-03-28 04:13:23 +0100 | LainExperiments | (~LainExper@user/LainExperiments) (Quit: Client closed) |
2025-03-28 04:14:36 +0100 | emmanuelux_ | (~emmanuelu@user/emmanuelux) emmanuelux |
2025-03-28 04:16:05 +0100 | emmanuelux | (~emmanuelu@user/emmanuelux) (Ping timeout: 268 seconds) |
2025-03-28 04:16:15 +0100 | aetepe | (~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 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 04:21:33 +0100 | LainExperiments | (~LainExper@user/LainExperiments) LainExperiments |
2025-03-28 04:23:25 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-28 04:34:20 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 04:38:59 +0100 | merijn | (~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 +0100 | LainExperiments3 | (LainExperi@user/LainExperiments) LainExperiments |
2025-03-28 04:41:15 +0100 | <jackdk> | Is LainExperiments serially-numbered? |
2025-03-28 04:42:06 +0100 | LainExperiments | (~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 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 04:56:39 +0100 | merijn | (~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 +0100 | merijn | (~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 +0100 | aetepe | (~aetepe@188.119.58.34) aetepe |
2025-03-28 05:13:01 +0100 | merijn | (~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 +0100 | aetepe | (~aetepe@188.119.58.34) (Ping timeout: 245 seconds) |
2025-03-28 05:18:36 +0100 | LainExperiments3 | (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 +0100 | michalz | (~michalz@185.246.207.205) |
2025-03-28 05:23:43 +0100 | merijn | (~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 +0100 | aetepe | (~aetepe@188.119.58.34) aetepe |
2025-03-28 05:28:21 +0100 | merijn | (~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 +0100 | LainExperiments | (~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 +0100 | aforemny_ | (~aforemny@2001:9e8:6cdb:6d00:dc2e:87c9:d5a9:a75) (Ping timeout: 245 seconds) |
2025-03-28 05:31:23 +0100 | aforemny | (~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 +0100 | aetepe | (~aetepe@188.119.58.34) (Ping timeout: 260 seconds) |
2025-03-28 05:34:47 +0100 | LainExperiments4 | (~LainExper@user/LainExperiments) LainExperiments |
2025-03-28 05:36:06 +0100 | LainExperiments | (~LainExper@user/LainExperiments) (Ping timeout: 240 seconds) |
2025-03-28 05:36:07 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) bitdex |
2025-03-28 05:38:54 +0100 | peterbecich | (~Thunderbi@syn-047-229-123-186.res.spectrum.com) peterbecich |
2025-03-28 05:39:30 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 05:40:52 +0100 | Digitteknohippie | Digit |
2025-03-28 05:44:37 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
2025-03-28 05:51:33 +0100 | haskellbridge | (~hackager@syn-024-093-192-219.res.spectrum.com) (Ping timeout: 252 seconds) |
2025-03-28 05:53:05 +0100 | Digitteknohippie | (~user@user/digit) Digit |
2025-03-28 05:54:07 +0100 | Digit | (~user@user/digit) (Ping timeout: 252 seconds) |
2025-03-28 05:54:24 +0100 | haskellbridge | (~hackager@syn-024-093-192-219.res.spectrum.com) hackager |
2025-03-28 05:54:24 +0100 | ChanServ | +v haskellbridge |
2025-03-28 05:55:18 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |
2025-03-28 05:55:23 +0100 | xff0x | (~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 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
2025-03-28 06:03:49 +0100 | merijn | (~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn |