Logs: liberachat/#haskell
| 2025-10-27 04:09:07 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2025-10-27 04:09:22 | <Leary> | Uhh. I don't think that constraint is satisfiable without `instance Hashable a`. |
| 2025-10-27 04:12:23 | <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` |
| 2025-10-27 04:13:03 | <Leary> | Yes, that's equivalent to `deriving Foldable`. Not that it really makes sense for unordered containers in the first place. |
| 2025-10-27 04:14:49 | <hololeap> | Foldable doesn't make sense? |
| 2025-10-27 04:15:08 | <hololeap> | it's mostly to be able to use `all` and `any` |
| 2025-10-27 04:15:47 | <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 04:17:21 | <hololeap> | glguy: what is the difference between on the outside vs the inside? |
| 2025-10-27 04:17:51 | <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 04:18:22 | <hololeap> | oh... I have GHC2021 turned on |
| 2025-10-27 04:18:29 | <monochrom> | :) |
| 2025-10-27 04:18:47 | <monochrom> | FWIW, it also means you don't need explicit RankNTypes :) |
| 2025-10-27 04:19:13 | <hololeap> | I thought it was using RankNTypes and I wanted to make it explicit |
| 2025-10-27 04:19:34 | <hololeap> | I didn't think of GADTs |
| 2025-10-27 04:20:05 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-27 04:20:13 | <monochrom> | RankNTypes would be like "data N = N (forall a. Hashable a => ...)" |
| 2025-10-27 04:20:15 | <hololeap> | that's actually a reason not to use GHC2021 |
| 2025-10-27 04:22:30 | <hololeap> | monochrom: what is the difference? |
| 2025-10-27 04:23:03 | <hololeap> | between that and `= Hashable a => NEHashSet (Hashed a) (HashSet a)` |
| 2025-10-27 04:23:56 | <hololeap> | I remember one of them is using ExistentialQuantification, but which one? |
| 2025-10-27 04:24:43 | <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 04:25:02 | <hololeap> | ok |
| 2025-10-27 04:25:20 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2025-10-27 04:26:14 | <hololeap> | but how is this different: `= Hashable a => NEHashSet (Hashed a) (HashSet a)` |
| 2025-10-27 04:26:26 | <hololeap> | I would think it means the same thing |
| 2025-10-27 04:26:28 | <monochrom> | Existential type would be like "data E = forall a. Haskable a => ..." |
| 2025-10-27 04:27:00 | <monochrom> | err, "data E = forall a. Hashable a => E (Hashed a) (HashSet a)" |
| 2025-10-27 04:29:20 | <monochrom> | Yours is different from X, Y, E. Yours is a bonus feature that allows a constraint on a type parameter. |
| 2025-10-27 04:29:57 | <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 04:32:16 | <hololeap> | so maybe that makes existential quantification behave like universal quantification in this example |
| 2025-10-27 04:32:22 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer) |
| 2025-10-27 04:32:48 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 2025-10-27 04:35:52 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-27 04:39:09 | → | aforemny_ joins (~aforemny@2001:9e8:6cf1:1000:4e89:d612:c448:7493) |
| 2025-10-27 04:39:11 | × | aforemny quits (~aforemny@2001:9e8:6cd1:6c00:4f63:56d8:3d93:b87f) (Ping timeout: 244 seconds) |
| 2025-10-27 04:39:47 | × | trickard quits (~trickard@cpe-55-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 2025-10-27 04:40:00 | → | trickard_ joins (~trickard@cpe-55-98-47-163.wireline.com.au) |
| 2025-10-27 04:41:11 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 2025-10-27 04:50:04 | × | trickard_ quits (~trickard@cpe-55-98-47-163.wireline.com.au) (Ping timeout: 246 seconds) |
| 2025-10-27 04:50:46 | → | trickard_ joins (~trickard@cpe-55-98-47-163.wireline.com.au) |
| 2025-10-27 04:51:38 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-27 04:55:51 | × | Googulator quits (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed) |
| 2025-10-27 04:56:06 | → | Googulator joins (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) |
| 2025-10-27 04:56:30 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2025-10-27 04:56:50 | → | Square2 joins (~Square@user/square) |
| 2025-10-27 04:59:10 | × | karenw quits (~karenw@user/karenw) (Ping timeout: 246 seconds) |
| 2025-10-27 05:00:48 | → | Googulator56 joins (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) |
| 2025-10-27 05:01:09 | × | Googulator quits (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed) |
| 2025-10-27 05:01:16 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-27 05:06:08 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2025-10-27 05:06:46 | → | irfan joins (~irfan@user/irfan) |
| 2025-10-27 05:07:51 | → | michalz joins (~michalz@185.246.207.221) |
| 2025-10-27 05:10:37 | irfan | is now known as flareon |
| 2025-10-27 05:11:25 | flareon | is now known as vulpix |
| 2025-10-27 05:11:31 | vulpix | is now known as evee |
| 2025-10-27 05:12:10 | × | evee quits (~irfan@user/irfan) (Quit: WeeChat 4.7.1) |
| 2025-10-27 05:15:02 | × | jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 240 seconds) |
| 2025-10-27 05:17:02 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-27 05:20:37 | → | Googulator21 joins (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) |
| 2025-10-27 05:20:49 | × | Googulator56 quits (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed) |
| 2025-10-27 05:21:05 | → | irfan joins (~irfan@user/irfan) |
| 2025-10-27 05:21:14 | × | irfan quits (~irfan@user/irfan) (Client Quit) |
| 2025-10-27 05:21:55 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2025-10-27 05:25:46 | × | Googulator21 quits (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed) |
| 2025-10-27 05:25:47 | → | Googulator26 joins (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) |
| 2025-10-27 05:32:46 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-27 05:37:22 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2025-10-27 05:43:05 | → | peterbecich joins (~Thunderbi@172.222.148.214) |
| 2025-10-27 05:48:32 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-27 05:50:17 | × | haltingsolver quits (~cmo@2604:3d09:207f:8000::d1dc) (Ping timeout: 260 seconds) |
| 2025-10-27 05:53:25 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2025-10-27 05:57:20 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 2025-10-27 05:58:21 | trickard_ | is now known as trickard |
| 2025-10-27 06:04:02 | → | Frostillicus joins (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) |
| 2025-10-27 06:04:18 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-27 06:04:46 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org )) |
| 2025-10-27 06:07:59 | × | rvalue quits (~rvalue@about/hackers/rvalue) (Read error: Connection reset by peer) |
| 2025-10-27 06:08:25 | → | rvalue joins (~rvalue@about/hackers/rvalue) |
| 2025-10-27 06:08:59 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 2025-10-27 06:20:05 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-27 06:20:39 | × | Googulator26 quits (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed) |
| 2025-10-27 06:20:40 | → | Googulator15 joins (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) |
| 2025-10-27 06:24:55 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 2025-10-27 06:35:53 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-27 06:42:08 | × | peterbecich quits (~Thunderbi@172.222.148.214) (Ping timeout: 240 seconds) |
| 2025-10-27 06:42:22 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2025-10-27 06:45:03 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 2025-10-27 06:50:41 | × | Googulator15 quits (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) (Quit: Client closed) |
| 2025-10-27 06:50:46 | → | Googulator96 joins (~Googulato@2a01-036d-0106-03fa-d161-d36f-e0e5-1b0a.pool6.digikabel.hu) |
| 2025-10-27 06:53:56 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-27 06:58:49 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 2025-10-27 06:59:02 | × | Frostillicus quits (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) (Ping timeout: 240 seconds) |
| 2025-10-27 07:00:48 | → | diddy joins (~user@user/pranshu) |
| 2025-10-27 07:02:16 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-10-27 07:04:12 | × | Square2 quits (~Square@user/square) (Remote host closed the connection) |
| 2025-10-27 07:04:13 | → | Square joins (~Square4@user/square) |
| 2025-10-27 07:04:36 | → | Square2 joins (~Square@user/square) |
| 2025-10-27 07:07:17 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 2025-10-27 07:09:37 | × | Square2 quits (~Square@user/square) (Ping timeout: 264 seconds) |
| 2025-10-27 07:12:21 | → | tromp joins (~textual@2001:1c00:3487:1b00:b825:23c0:1f89:fdbd) |
All times are in UTC.