2026/06/30

Newest at the top

2026-06-30 10:49:25 +0000 <tomsmeding> hence 'a -> b' is said to be covariant in b (because b' <= b ==> a -> b' <= a -> b), and contravariant in a (because a' <= a ==> a -> b <= a' -> b)
2026-06-30 10:49:23 +0000 <fp> Mm I see
2026-06-30 10:48:25 +0000 <tomsmeding> but if you're expecting a function A' -> B, then a function A -> B also works, as passing an A' to that is fine by subtyping
2026-06-30 10:47:45 +0000 <tomsmeding> because whenever B -> A works, getting a more precise A out (i.e. an A') would be acceptable
2026-06-30 10:47:29 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2026-06-30 10:47:20 +0000 <tomsmeding> but then if you think about it, B -> A' should be a subtype of B -> A, but A -> B should be a subtype of A' -> B
2026-06-30 10:46:49 +0000 <tomsmeding> co(ntra)variance in type systems relates to subtyping, where the idea is that a subtype A' of A is to be accepted wherever A is
2026-06-30 10:46:17 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-06-30 10:46:00 +0000 <tomsmeding> a covariant functor has fmap : (a -> b) -> T a -> T b; a contravariant functor has fmap : (a -> b) -> T b -> T a
2026-06-30 10:45:33 +0000 <tomsmeding> fp: I think there are two different notions of co(ntra)variant here: one is that of a co(ntra) variant functor, and the other is that of co(ntra)variance in type systems
2026-06-30 10:44:12 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2026-06-30 10:41:32 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-06-30 10:41:08 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Read error: Connection reset by peer)
2026-06-30 10:37:26 +0000 <fp> Like I'm familiar with invariance in the sense of like a physical energy system where it's behavior is invariant wrt the total energy of the system, i.e. no energy is lost or destroyed regardless of the evolution of the system. So you can understand the invariance as "the total energy can't vary"
2026-06-30 10:36:56 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-06-30 10:31:52 +0000 <fp> When one says that some T :: * -> * is Co/Contra/Invariant over a -> b, what is "varying"? I understand that it means you can turn a -> b into T a -> T b or T b -> T a or not, but to me that follows only from the Co/Contra/In, not the variant
2026-06-30 10:31:42 +0000emmanuelux(~em@user/emmanuelux) (Ping timeout: 256 seconds)
2026-06-30 10:30:45 +0000emmanuelux_(~em@168.104.204.77.rev.sfr.net)
2026-06-30 10:27:47 +0000 <tomsmeding> I guess an inverted tree
2026-06-30 10:27:32 +0000 <tomsmeding> that sounds like a tree :p
2026-06-30 10:25:40 +0000poscat(~poscat@user/poscat) poscat
2026-06-30 10:23:00 +0000merijn(~merijn@77.242.116.146) (Ping timeout: 265 seconds)
2026-06-30 10:22:36 +0000poscat(~poscat@user/poscat) (Remote host closed the connection)
2026-06-30 10:16:51 +0000DigitteknohippieDigit
2026-06-30 10:16:48 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 246 seconds)
2026-06-30 10:12:25 +0000Digitteknohippie(~user@user/digit) Digit
2026-06-30 10:10:53 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2026-06-30 10:10:21 +0000kuribas(~user@2a02-1810-2825-6000-bae0-9ec9-ef49-8ccc.ip6.access.telenet.be)
2026-06-30 10:08:32 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-06-30 10:04:39 +0000fp2fp
2026-06-30 10:04:39 +0000fp(~Thunderbi@130.233.70.229) (Read error: Connection reset by peer)
2026-06-30 10:04:26 +0000__monty__(~toonn@user/toonn) toonn
2026-06-30 10:04:13 +0000fp2(~Thunderbi@130.233.70.229) fp
2026-06-30 10:03:30 +0000Digit(~user@user/digit) (Ping timeout: 248 seconds)
2026-06-30 09:55:50 +0000Digit(~user@user/digit) Digit
2026-06-30 09:52:18 +0000digitteknohippie(~user@user/digit) (Remote host closed the connection)
2026-06-30 09:52:18 +0000Digitdigitteknohippie
2026-06-30 09:48:21 +0000merijn(~merijn@77.242.116.146) merijn
2026-06-30 09:47:50 +0000jreicher(~joelr@user/jreicher) jreicher
2026-06-30 09:47:19 +0000jreicher(~joelr@user/jreicher) (Killed (manganese.libera.chat (Nickname regained by services)))
2026-06-30 09:46:45 +0000merijn(~merijn@77.242.116.146) (Ping timeout: 265 seconds)
2026-06-30 09:46:03 +0000Digit(~user@user/digit) Digit
2026-06-30 09:42:39 +0000karenw(~karenw@user/karenw) karenw
2026-06-30 09:32:17 +0000 <probie> monochrom: Are lists always bad for data? A single list is bad, but if you have many (singly-linked) lists and a lot of sharing going on I'm not willing to immediately write it off as "bad"
2026-06-30 09:21:07 +0000fp(~Thunderbi@130.233.70.229) fp
2026-06-30 09:08:26 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2026-06-30 09:05:07 +0000danza(~danza@user/danza) danza
2026-06-30 09:03:01 +0000merijn(~merijn@77.242.116.146) merijn
2026-06-30 09:02:01 +0000acidjnk(~acidjnk@p200300d6e74def67cefedba3bc5cab81.dip0.t-ipconnect.de) acidjnk
2026-06-30 09:01:51 +0000acidjnk_new(~acidjnk@p200300d6e74def67cefedba3bc5cab81.dip0.t-ipconnect.de)