Logs: liberachat/#haskell
| 2025-10-14 11:08:24 | × | Zemy quits (~Zemy@syn-076-184-041-021.res.spectrum.com) (Read error: Connection reset by peer) |
| 2025-10-14 11:08:29 | → | Zemy_ joins (~Zemy@2600:100c:b035:5997:18fe:25ff:fe03:e2c) |
| 2025-10-14 11:09:00 | → | Zemy joins (~Zemy@syn-076-184-041-021.res.spectrum.com) |
| 2025-10-14 11:10:25 | → | MelodyOwO joins (~MelodyOwO@user/MelodyOwO) |
| 2025-10-14 11:12:57 | × | Zemy_ quits (~Zemy@2600:100c:b035:5997:18fe:25ff:fe03:e2c) (Ping timeout: 252 seconds) |
| 2025-10-14 11:13:14 | <dminuoso> | Morj: Every time I stare at rust Im a bit confused how people willingly drift towards it. |
| 2025-10-14 11:16:21 | <dminuoso> | Every time I dabbled with it, it felt more like most rust idioms exist to please the borrow checker, not because it leads to good semantics that you can reason about. |
| 2025-10-14 11:16:37 | <dminuoso> | Even something mundane as writing a graph library is hell. |
| 2025-10-14 11:17:01 | <lortabac> | Morj: there is 'ala', which is in lens (and other packages too) |
| 2025-10-14 11:17:06 | <lortabac> | > ala Sum foldMap [1,2,3] |
| 2025-10-14 11:17:07 | <lambdabot> | 6 |
| 2025-10-14 11:17:30 | <dminuoso> | But maybe I haven't spent enough time with Rust yet, and you need a state of enlightenment before you can see it shine. |
| 2025-10-14 11:18:28 | × | peutri_ quits (~peutri@bobo.desast.re) (Ping timeout: 246 seconds) |
| 2025-10-14 11:19:04 | <merijn> | dminuoso: It sounds like you just don't have the problems Rust solves |
| 2025-10-14 11:19:29 | <merijn> | dminuoso: Rust seems great IFF I couldn't afford a garbage collector/less explicit memory control |
| 2025-10-14 11:19:33 | <merijn> | dminuoso: If you |
| 2025-10-14 11:19:48 | <merijn> | If you're fine with GC and less memory control, you're better off just writing Haskell |
| 2025-10-14 11:20:01 | <merijn> | And 90-95% of code just does not require anything like that |
| 2025-10-14 11:20:14 | <dminuoso> | merijn: Maybe I'm just biased a bit *because* I have learned to work with C++ - in comparison Rust feels a lot more effort to avoid reference counting. |
| 2025-10-14 11:20:15 | <merijn> | So I've never had a real use case to use Rust |
| 2025-10-14 11:20:33 | <merijn> | dminuoso: I mean, you *can* just do reference counting in Rust afaik |
| 2025-10-14 11:20:49 | <dminuoso> | Sure, but then you wouldn't need to borrow references. |
| 2025-10-14 11:23:25 | → | xff0x joins (~xff0x@2405:6580:b080:900:c19d:50a:4f2f:38d7) |
| 2025-10-14 11:27:12 | × | pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer) |
| 2025-10-14 11:28:00 | → | peutri joins (~peutri@bobo.desast.re) |
| 2025-10-14 11:31:33 | → | chele joins (~chele@user/chele) |
| 2025-10-14 11:35:52 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds) |
| 2025-10-14 11:36:25 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 2025-10-14 11:43:03 | <jackdk> | merijn: Now that we have the machinery to deprecate instances, we could restart the crusade to fix the most cursed monoid instance |
| 2025-10-14 11:43:40 | <jackdk> | merijn: Also, we now have RequiredTypeArguments which makes it clearer when one is expected to pass an explicit type (as opposed to using haddocks or Proxy arguments) |
| 2025-10-14 11:44:01 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 246 seconds) |
| 2025-10-14 11:44:50 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 2025-10-14 11:46:07 | <haskellbridge> | <Morj> lortabac oh thanks, I remember there was something, but couldn't recall. This is the one I thought about |
| 2025-10-14 11:46:41 | <lortabac> | jackdk: what is "the most cursed monoid instance"? |
| 2025-10-14 11:47:02 | × | trickard quits (~trickard@cpe-54-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2025-10-14 11:47:16 | → | trickard_ joins (~trickard@cpe-54-98-47-163.wireline.com.au) |
| 2025-10-14 11:47:31 | <jackdk> | lortabac: I consider `instance Ord k => Monoid (Map k)` to be a massive footgun, and think `instance (Ord k, Semigroup v) => Monoid (Map k v)` to be a better canonical instance. |
| 2025-10-14 11:47:33 | <haskellbridge> | <Morj> dminuoso It makes more sense to use rust if you're coming from c++. I don't think it's a good choice instead of haskell in most cases. I write rust at work nowadays: the high-perf libraries are great, the application around it could be improved a lot with a smart runtime and a gc |
| 2025-10-14 11:48:28 | <lortabac> | jackdk: thanks, I didn't even know that instance existed |
| 2025-10-14 11:48:47 | → | weary-traveler joins (~user@user/user363627) |
| 2025-10-14 11:48:56 | → | Square joins (~Square4@user/square) |
| 2025-10-14 11:49:15 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 252 seconds) |
| 2025-10-14 11:49:28 | <jackdk> | lortabac: I consider it a footgun because it often does almost what you want: merge two maps together. But when keys clash it keeps the value in the left map, which is often surprising |
| 2025-10-14 11:50:25 | <lortabac> | indeed your proposal makes more sense |
| 2025-10-14 11:52:37 | <__monty__> | It's a useful behavior IMO, some languages have an operator for that kind of merging. |
| 2025-10-14 11:53:33 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 2025-10-14 11:54:39 | <jackdk> | __monty__: People who want it will still be able to get it via `Map k (First v)` (`First` from `Data.Semigroup`) |
| 2025-10-14 11:55:39 | <lortabac> | it's useful but it doesn't make sense as a canonical instance |
| 2025-10-14 11:56:21 | <lortabac> | you can still make an operator with that behavior |
| 2025-10-14 11:59:35 | → | Zemy_ joins (~Zemy@2600:100c:b035:5997:3087:68ff:feb8:f43e) |
| 2025-10-14 11:59:35 | × | Zemy quits (~Zemy@syn-076-184-041-021.res.spectrum.com) (Read error: Connection reset by peer) |
| 2025-10-14 12:00:02 | → | Zemy joins (~Zemy@syn-076-184-041-021.res.spectrum.com) |
| 2025-10-14 12:00:51 | × | Zemy_ quits (~Zemy@2600:100c:b035:5997:3087:68ff:feb8:f43e) (Read error: Connection reset by peer) |
| 2025-10-14 12:08:24 | × | Googulator quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 2025-10-14 12:08:41 | → | Googulator joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 2025-10-14 12:10:04 | → | inline joins (~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) |
| 2025-10-14 12:11:02 | → | Zemy_ joins (~Zemy@2600:100c:b035:5997:4c73:91ff:fe3e:e2e1) |
| 2025-10-14 12:11:02 | × | Zemy quits (~Zemy@syn-076-184-041-021.res.spectrum.com) (Read error: Connection reset by peer) |
| 2025-10-14 12:12:12 | → | Zemy joins (~Zemy@syn-076-184-041-021.res.spectrum.com) |
| 2025-10-14 12:15:16 | × | Zemy_ quits (~Zemy@2600:100c:b035:5997:4c73:91ff:fe3e:e2e1) (Ping timeout: 256 seconds) |
| 2025-10-14 12:16:29 | <mreh> | jackdk: what happened to Queensland FP? |
| 2025-10-14 12:17:42 | <mreh> | lack of funding? |
| 2025-10-14 12:19:26 | <jackdk> | mreh: Correct. Its funding was not renewed. The Brisbane Functional Programming Group, however, resurrected itself after the pandemic: https://bfpg.org |
| 2025-10-14 12:20:17 | <mreh> | jackdk: cool, I enjoyed that talk you gave on reflex a while back |
| 2025-10-14 12:22:19 | <jackdk> | mreh: Thanks, that's good of you to say |
| 2025-10-14 12:24:04 | <mreh> | recognised the name |
| 2025-10-14 12:25:09 | × | inline quits (~inlinE@ip-178-202-059-161.um47.pools.vodafone-ip.de) (Quit: Leaving) |
| 2025-10-14 12:25:16 | mreh | wishes there was a Haskell meetup in London again |
| 2025-10-14 12:25:23 | <merijn> | jackdk: You've got my signature :p |
| 2025-10-14 12:25:27 | → | rvalue joins (~rvalue@about/hackers/rvalue) |
| 2025-10-14 12:25:29 | × | rvalue quits (~rvalue@about/hackers/rvalue) (Excess Flood) |
| 2025-10-14 12:25:37 | × | Googulator quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 2025-10-14 12:25:39 | → | Googulator81 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 2025-10-14 12:25:55 | <merijn> | __monty__: It's useful, but not AS useful as the semigroup version |
| 2025-10-14 12:26:07 | <merijn> | __monty__: I've used the semigroup monoid on Map hundreds of times |
| 2025-10-14 12:26:13 | <merijn> | The left-biased merge never |
| 2025-10-14 12:26:22 | <merijn> | And when you want that you can just use `unions` |
| 2025-10-14 12:27:01 | <jackdk> | mreh: I would've thought there'd be a fair number of Haskellers in London? |
| 2025-10-14 12:27:23 | <mreh> | there's no "just use" when you're using a Map in Writer :'( |
| 2025-10-14 12:27:53 | <merijn> | mreh: Yes there is |
| 2025-10-14 12:28:03 | <merijn> | mreh: It's called "Map k (First v)" |
| 2025-10-14 12:28:36 | <merijn> | So the current behaviour is trivially reconstructible via a newtype wrapper on values |
| 2025-10-14 12:28:49 | → | rvalue joins (~rvalue@about/hackers/rvalue) |
| 2025-10-14 12:28:50 | × | rvalue quits (~rvalue@about/hackers/rvalue) (Excess Flood) |
| 2025-10-14 12:29:30 | <mreh> | that's true |
| 2025-10-14 12:31:34 | <mreh> | jackdk: I went to a meetup maybe 10 years ago, it's since folded |
| 2025-10-14 12:31:52 | × | trickard_ quits (~trickard@cpe-54-98-47-163.wireline.com.au) (Ping timeout: 260 seconds) |
| 2025-10-14 12:32:08 | <merijn> | mreh: Yet another reason, the Semigroup version is superior :p |
| 2025-10-14 12:32:19 | → | trickard_ joins (~trickard@cpe-54-98-47-163.wireline.com.au) |
| 2025-10-14 12:34:01 | → | rvalue joins (~rvalue@about/hackers/rvalue) |
| 2025-10-14 12:36:42 | ski | . o O ( <https://en.wikipedia.org/wiki/Monoid_ring> ) |
| 2025-10-14 12:43:55 | × | rvalue quits (~rvalue@about/hackers/rvalue) (Quit: bmV2ZXJnb25uYWdpdmV5b3V1cG5ldmVyZ29ubmFsZXR5b3Vkb3du) |
| 2025-10-14 12:44:43 | <tomsmeding> | ski: why does that not open with "a monoid ring is a formal polynomial ring in a monoid with coefficient from a ring" |
| 2025-10-14 12:45:42 | <tomsmeding> | perhaps that would be too "monoid in the category of endofunctors" for wikipedia |
| 2025-10-14 12:46:05 | → | Googulator75 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 2025-10-14 12:46:12 | → | rvalue joins (~rvalue@about/hackers/rvalue) |
| 2025-10-14 12:46:14 | × | Googulator81 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Quit: Client closed) |
| 2025-10-14 12:50:46 | → | Googulator49 joins (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) |
| 2025-10-14 12:50:50 | × | Googulator75 quits (~Googulato@2a01-036d-0106-03fa-dc7a-fb6e-71bb-aaf0.pool6.digikabel.hu) (Client Quit) |
| 2025-10-14 13:00:52 | Googulator49 | is now known as Googulator |
All times are in UTC.