2025/05/05

Newest at the top

2025-05-05 23:02:43 +0200ljdarj(~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds)
2025-05-05 22:57:09 +0200ttybitnik(~ttybitnik@user/wolper) ttybitnik
2025-05-05 22:46:44 +0200takuan(~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection)
2025-05-05 22:39:46 +0200Guest2892jinsun
2025-05-05 22:39:45 +0200Guest2892(jinsun@user/jinsun) jinsun
2025-05-05 22:39:45 +0200Guest2892(jinsun@here.and.ready-to.party) (Changing host)
2025-05-05 22:38:05 +0200jinsunGuest2892
2025-05-05 22:37:42 +0200jinsun(jinsun@here.and.ready-to.party)
2025-05-05 22:30:02 +0200xacktm(xacktm@user/xacktm) xacktm
2025-05-05 22:27:30 +0200aljazmc(~aljazmc@user/aljazmc) (Quit: Leaving)
2025-05-05 22:25:45 +0200jespada(~jespada@r179-25-149-142.dialup.adsl.anteldata.net.uy) jespada
2025-05-05 22:24:42 +0200jespada_(~jespada@r179-25-149-142.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…)
2025-05-05 22:17:05 +0200prdak(~Thunderbi@user/prdak) (Ping timeout: 265 seconds)
2025-05-05 22:15:31 +0200euleritian(~euleritia@dynamic-176-000-054-130.176.0.pool.telefonica.de)
2025-05-05 22:14:16 +0200euleritian(~euleritia@ip5f5ad197.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds)
2025-05-05 22:12:32 +0200prdak(~Thunderbi@user/prdak) prdak
2025-05-05 22:03:49 +0200jinsun(jinsun@user/jinsun) (Ping timeout: 272 seconds)
2025-05-05 22:01:57 +0200vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2025-05-05 21:51:48 +0200xacktm(xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com)
2025-05-05 21:48:53 +0200fp(~Thunderbi@hof1.kyla.fi) fp
2025-05-05 21:43:08 +0200ljdarj(~Thunderbi@user/ljdarj) ljdarj
2025-05-05 21:40:38 +0200pavonia(~user@user/siracusa) siracusa
2025-05-05 21:35:00 +0200DigitteknohippieDigit
2025-05-05 21:34:38 +0200weary-traveler(~user@user/user363627) user363627
2025-05-05 21:25:52 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah
2025-05-05 21:24:11 +0200 <c_wraith> It's abstracting over the wrong (for most use cases) thing, so it needs more and more pieces to cover common cases
2025-05-05 21:23:33 +0200 <c_wraith> Where this difference really pays off is that Bifunctor's first also works with Either, but if you're using Arrow you need to switch to left instead
2025-05-05 21:20:58 +0200 <c_wraith> Or really, functions on values that can be tupled.
2025-05-05 21:19:28 +0200 <c_wraith> Arrow is about abstracting over functions on tuples
2025-05-05 21:18:55 +0200 <c_wraith> Also, Arrow is a weird fit. like Bifunctor is very directly just giving you access to a covariant functor on two type variables instead of one. That's its whole purpose.
2025-05-05 21:16:41 +0200 <c_wraith> that's a corollary to the principle of least power, at least for abstract interfaces. The more things that can implement an interface, the less powerful it is.
2025-05-05 21:15:26 +0200 <tomsmeding> I guess
2025-05-05 21:15:21 +0200 <EvanR> use the most general thing that would work?
2025-05-05 21:14:47 +0200 <tomsmeding> Arrow is a much stronger requirement than Bifunctor is, on a type -- but in a sense Arrow is _too_ strong: there are too few types that usefully implement Arrow
2025-05-05 21:14:15 +0200 <hellwolf> that makes sense.
2025-05-05 21:14:08 +0200 <hellwolf> okay. So BiFunctor is more general, so it's better.
2025-05-05 21:14:05 +0200 <tomsmeding> did that make any sense?
2025-05-05 21:13:55 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla
2025-05-05 21:13:45 +0200 <tomsmeding> Data.Bifunctor is a small subset of what Data.Arrow does -- a subset that's much more directly useful than arrows in its full generality
2025-05-05 21:13:20 +0200 <tomsmeding> but it's not, it's just `first`
2025-05-05 21:13:16 +0200 <tomsmeding> if you import Data.Arrow, it looks like you're using arrows -- usage of arrows is very rare these days, because people have figured out that the Arrow class is not a good fit for the majority of cases where arrow-like things could be good. So seeing Data.Arrow makes the reader think "hey, is this a special case where arrows _do_ work?"
2025-05-05 21:12:26 +0200 <hellwolf> yea
2025-05-05 21:12:21 +0200 <tomsmeding> over arrow, you mean?
2025-05-05 21:12:07 +0200 <hellwolf> I can see that too, but I can't articulate it.
2025-05-05 21:11:58 +0200 <hellwolf> can you articulate your aesthetic preference...
2025-05-05 21:11:27 +0200 <c_wraith> Yeah, Bifunctor is generally the way to go.
2025-05-05 21:11:26 +0200 <hellwolf> I see
2025-05-05 21:11:17 +0200 <haskellbridge> <sm> 👆️
2025-05-05 21:11:15 +0200 <monochrom> Oh, Bifunctor. That's better.
2025-05-05 21:11:01 +0200 <monochrom> But normally I just write that lambda. :)