2025/01/10

Newest at the top

2025-01-10 13:03:49 +0100 <hellwolf> nevermind.
2025-01-10 13:03:31 +0100 <hellwolf> hmm, no, even with orphaned instance you can't swap it out later, since compiling the library would require such type class exist.
2025-01-10 13:01:41 +0100 <hellwolf> Am I crazy to envision that type class and type families (perhaps type family fundeps) too could achieve the module system that we deserve? Though, perhaps packaging around it would be needed to make it more close to module system, instead of boilerplated type classes.
2025-01-10 12:57:23 +0100 <mari47944> i mean swapping technically fits into "fearless refactoring" ^^
2025-01-10 12:56:35 +0100 <merijn> [exa]: Then if you don't wanna swap the arguments the closest you can get is newtype shenanigans
2025-01-10 12:56:07 +0100 <[exa]> `ala` does something similar for lensy stuff
2025-01-10 12:55:45 +0100 <[exa]> mari47944: no I don't think that exists
2025-01-10 12:55:42 +0100mari47944forgot that syntax again...
2025-01-10 12:55:27 +0100 <mari47944> %:t fmapAla
2025-01-10 12:55:27 +0100 <[exa]> merijn: yeah except it's not super functorial in the second arg, so the bifunctor would lie a lot
2025-01-10 12:54:42 +0100 <merijn> [exa]: That, or a newtype wrapper
2025-01-10 12:54:34 +0100 <merijn> [exa]: Then you can do functory things in both :p
2025-01-10 12:54:17 +0100 <merijn> [exa]: Bifunactor? :)
2025-01-10 12:54:03 +0100 <[exa]> ok let's see
2025-01-10 12:53:51 +0100 <mari47944> yeah, nest it
2025-01-10 12:53:49 +0100 <merijn> s/alinab/alist
2025-01-10 12:53:45 +0100[exa]contemplates fmapAla
2025-01-10 12:53:41 +0100 <merijn> alinab: Keep in mind that many papers like these are incredibly concisely written and truly grasping them can take a few reads to unpack
2025-01-10 12:53:22 +0100 <[exa]> "wrap" basically a newtype wrapper that would have to inherit all other instances too, right?
2025-01-10 12:50:07 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2025-01-10 12:50:04 +0100 <mari47944> reorder or wrap it, not aware of anything better
2025-01-10 12:49:23 +0100sprotte24(~sprotte24@p200300d16f053e00ccd1db6c99978e80.dip0.t-ipconnect.de) (Client Quit)
2025-01-10 12:48:29 +0100sprotte24(~sprotte24@p200300d16f053e00ccd1db6c99978e80.dip0.t-ipconnect.de)
2025-01-10 12:47:57 +0100 <[exa]> (background: I didn't write that type but it screams for a functor instance)
2025-01-10 12:47:02 +0100 <hellwolf> Leary: thanks!
2025-01-10 12:46:40 +0100 <[exa]> if I have a datatype with 2 arguments, say `X a b`, and I want to make a Functor instance so that the thing is functorial in the `a` variable (i.e, not the last one as usual), is there some kind of adaptor that would allow me to fit this somewhat nicely, or do I always have to reorder the type arguments?
2025-01-10 12:46:09 +0100alist(~alist@user/alist) (Quit: Leaving)
2025-01-10 12:41:52 +0100TMA(tma@twin.jikos.cz) (Ping timeout: 252 seconds)
2025-01-10 12:41:10 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2025-01-10 12:34:01 +0100todi1todi
2025-01-10 12:28:19 +0100notzmv(~umar@user/notzmv) (Ping timeout: 245 seconds)
2025-01-10 12:27:51 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2025-01-10 12:27:38 +0100 <Leary> (taking `D` as a type unrelated to the constructor)
2025-01-10 12:26:34 +0100 <Leary> If you wish, you can encode the existential with `[forall r. (forall a. D a -> r) -> r]`, but I don't really think that's an improvement.
2025-01-10 12:25:23 +0100JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-01-10 12:25:16 +0100 <Leary> hellwolf: You should regard the syntax `data AnyD = forall a. D a` as a mistake and not be misled by it. One list has a universally quantified type, the other existentially---they're very different.
2025-01-10 12:24:09 +0100CiaoSen(~Jura@2a05:5800:2e7:b00:ca4b:d6ff:fec1:99da) (Ping timeout: 276 seconds)
2025-01-10 12:21:07 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2025-01-10 12:20:51 +0100g00gler(uid125351@id-125351.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2025-01-10 12:19:32 +0100alist(~alist@user/alist) alist
2025-01-10 12:17:56 +0100son0p(~ff@2800:e6:4001:6cc3:2e2c:4b4e:bc2a:6f17) (Ping timeout: 272 seconds)
2025-01-10 12:15:49 +0100mari-estel(~mari-este@user/mari-estel) (Ping timeout: 252 seconds)
2025-01-10 12:15:15 +0100 <hellwolf> say [forall a. D a] vs. [AnyD] where data AnyD = forall a. D a
2025-01-10 12:14:37 +0100 <hellwolf> They look very similar to me, in forms and shapes. But probably someone here knows more can answer immediately, is ImpredicativeType possible to replace the common usage of existential types?
2025-01-10 12:13:45 +0100mari47944(~mari-este@user/mari-estel) mari-estel
2025-01-10 12:07:46 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2025-01-10 11:58:33 +0100alist(~alist@user/alist) (Quit: Leaving)
2025-01-10 11:53:02 +0100 <alist> i think i can parse it but. idk sorry to flood the chat with like this one obsession i have
2025-01-10 11:52:46 +0100 <alist> the paper is also sort of doubly confusing because it seems to use like an old version of set-builder notation? and it sometimes uses lambdas to describe set-theoretic functions haha
2025-01-10 11:50:15 +0100 <alist> to be honest it seems to really have worked, ive been here for two days and both times people were able to answer really specific questions about this paper really quickly