2025/10/27

Newest at the top

2025-10-27 06:07:51 +0100michalz(~michalz@185.246.207.221)
2025-10-27 06:06:46 +0100irfan(~irfan@user/irfan) irfan
2025-10-27 06:06:08 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-27 06:01:16 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-27 06:01:09 +0100Googulator(~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed)
2025-10-27 06:00:48 +0100Googulator56(~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu)
2025-10-27 05:59:10 +0100karenw(~karenw@user/karenw) (Ping timeout: 246 seconds)
2025-10-27 05:56:50 +0100Square2(~Square@user/square) Square
2025-10-27 05:56:30 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-27 05:56:06 +0100Googulator(~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu)
2025-10-27 05:55:51 +0100Googulator(~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed)
2025-10-27 05:51:38 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-27 05:50:46 +0100trickard_(~trickard@cpe-55-98-47-163.wireline.com.au)
2025-10-27 05:50:04 +0100trickard_(~trickard@cpe-55-98-47-163.wireline.com.au) (Ping timeout: 246 seconds)
2025-10-27 05:41:11 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-10-27 05:40:00 +0100trickard_(~trickard@cpe-55-98-47-163.wireline.com.au)
2025-10-27 05:39:47 +0100trickard(~trickard@cpe-55-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-10-27 05:39:11 +0100aforemny(~aforemny@2001:9e8:6cd1:6c00:4f63:56d8:3d93:b87f) (Ping timeout: 244 seconds)
2025-10-27 05:39:09 +0100aforemny_(~aforemny@2001:9e8:6cf1:1000:4e89:d612:c448:7493) aforemny
2025-10-27 05:35:52 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-27 05:32:48 +0100chromoblob(~chromoblo@user/chromob1ot1c) chromoblob\0
2025-10-27 05:32:22 +0100chromoblob(~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer)
2025-10-27 05:32:16 +0100 <hololeap> so maybe that makes existential quantification behave like universal quantification in this example
2025-10-27 05:29:57 +0100 <hololeap> I think the weird thing about my example is that every operation I can do on Hashed and HashSet already has a Hashable constraint
2025-10-27 05:29:20 +0100 <monochrom> Yours is different from X, Y, E. Yours is a bonus feature that allows a constraint on a type parameter.
2025-10-27 05:27:00 +0100 <monochrom> err, "data E = forall a. Hashable a => E (Hashed a) (HashSet a)"
2025-10-27 05:26:28 +0100 <monochrom> Existential type would be like "data E = forall a. Haskable a => ..."
2025-10-27 05:26:26 +0100 <hololeap> I would think it means the same thing
2025-10-27 05:26:14 +0100 <hololeap> but how is this different: `= Hashable a => NEHashSet (Hashed a) (HashSet a)`
2025-10-27 05:25:20 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-10-27 05:25:02 +0100 <hololeap> ok
2025-10-27 05:24:43 +0100 <monochrom> I will use a toy example. "data X a = X a" vs "data Y = Y (forall a. a)". I can make "x :: X Int; x = X 5". I cannot make a value of Y, short of Y undefined.
2025-10-27 05:23:56 +0100 <hololeap> I remember one of them is using ExistentialQuantification, but which one?
2025-10-27 05:23:03 +0100 <hololeap> between that and `= Hashable a => NEHashSet (Hashed a) (HashSet a)`
2025-10-27 05:22:30 +0100 <hololeap> monochrom: what is the difference?
2025-10-27 05:20:15 +0100 <hololeap> that's actually a reason not to use GHC2021
2025-10-27 05:20:13 +0100 <monochrom> RankNTypes would be like "data N = N (forall a. Hashable a => ...)"
2025-10-27 05:20:05 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-10-27 05:19:34 +0100 <hololeap> I didn't think of GADTs
2025-10-27 05:19:13 +0100 <hololeap> I thought it was using RankNTypes and I wanted to make it explicit
2025-10-27 05:18:47 +0100 <monochrom> FWIW, it also means you don't need explicit RankNTypes :)
2025-10-27 05:18:29 +0100 <monochrom> :)
2025-10-27 05:18:22 +0100 <hololeap> oh... I have GHC2021 turned on
2025-10-27 05:17:51 +0100 <monochrom> Oh! It's equivalent to "data N a where N :: Hashable a => N (Hashed a) (HashSet a)". You're using GADTs.
2025-10-27 05:17:21 +0100 <hololeap> glguy: what is the difference between on the outside vs the inside?
2025-10-27 05:15:47 +0100 <hololeap> so the ordering doesn't really matter. I could do what jackdk says and then remove the inner Foldable constraint on the data type
2025-10-27 05:15:08 +0100 <hololeap> it's mostly to be able to use `all` and `any`
2025-10-27 05:14:49 +0100 <hololeap> Foldable doesn't make sense?
2025-10-27 05:13:03 +0100 <Leary> Yes, that's equivalent to `deriving Foldable`. Not that it really makes sense for unordered containers in the first place.
2025-10-27 05:12:23 +0100 <jackdk> Ah, you're correct. Nevertheless, you can define `toList` without constraints (`toList ha hsa = unhash ha : toList hsa`) and then `foldMap f = foldMap f . toList`