Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→ 1,803,676 events total
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.