Newest at the top
2025-05-05 23:11:22 +0200 | swamp_ | (~zmt00@user/zmt00) zmt00 |
2025-05-05 23:10:25 +0200 | j1n37- | (~j1n37@user/j1n37) (Ping timeout: 252 seconds) |
2025-05-05 23:09:42 +0200 | Square | (~Square@user/square) Square |
2025-05-05 23:09:29 +0200 | j1n37 | (~j1n37@user/j1n37) j1n37 |
2025-05-05 23:02:43 +0200 | ljdarj | (~Thunderbi@user/ljdarj) (Ping timeout: 252 seconds) |
2025-05-05 22:57:09 +0200 | ttybitnik | (~ttybitnik@user/wolper) ttybitnik |
2025-05-05 22:46:44 +0200 | takuan | (~takuan@d8D86B601.access.telenet.be) (Remote host closed the connection) |
2025-05-05 22:39:46 +0200 | Guest2892 | jinsun |
2025-05-05 22:39:45 +0200 | Guest2892 | (jinsun@user/jinsun) jinsun |
2025-05-05 22:39:45 +0200 | Guest2892 | (jinsun@here.and.ready-to.party) (Changing host) |
2025-05-05 22:38:05 +0200 | jinsun | Guest2892 |
2025-05-05 22:37:42 +0200 | jinsun | (jinsun@here.and.ready-to.party) |
2025-05-05 22:30:02 +0200 | xacktm | (xacktm@user/xacktm) xacktm |
2025-05-05 22:27:30 +0200 | aljazmc | (~aljazmc@user/aljazmc) (Quit: Leaving) |
2025-05-05 22:25:45 +0200 | jespada | (~jespada@r179-25-149-142.dialup.adsl.anteldata.net.uy) jespada |
2025-05-05 22:24:42 +0200 | jespada_ | (~jespada@r179-25-149-142.dialup.adsl.anteldata.net.uy) (Quit: My Mac has gone to sleep. ZZZzzz…) |
2025-05-05 22:17:05 +0200 | prdak | (~Thunderbi@user/prdak) (Ping timeout: 265 seconds) |
2025-05-05 22:15:31 +0200 | euleritian | (~euleritia@dynamic-176-000-054-130.176.0.pool.telefonica.de) |
2025-05-05 22:14:16 +0200 | euleritian | (~euleritia@ip5f5ad197.dynamic.kabel-deutschland.de) (Ping timeout: 252 seconds) |
2025-05-05 22:12:32 +0200 | prdak | (~Thunderbi@user/prdak) prdak |
2025-05-05 22:03:49 +0200 | jinsun | (jinsun@user/jinsun) (Ping timeout: 272 seconds) |
2025-05-05 22:01:57 +0200 | vanishingideal | (~vanishing@user/vanishingideal) vanishingideal |
2025-05-05 21:51:48 +0200 | xacktm | (xacktm@user/xacktm) (Quit: fBNC - https://bnc4free.com) |
2025-05-05 21:48:53 +0200 | fp | (~Thunderbi@hof1.kyla.fi) fp |
2025-05-05 21:43:08 +0200 | ljdarj | (~Thunderbi@user/ljdarj) ljdarj |
2025-05-05 21:40:38 +0200 | pavonia | (~user@user/siracusa) siracusa |
2025-05-05 21:35:00 +0200 | Digitteknohippie | Digit |
2025-05-05 21:34:38 +0200 | weary-traveler | (~user@user/user363627) user363627 |
2025-05-05 21:25:52 +0200 | L29Ah | (~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 +0200 | Tuplanolla | (~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. |