Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→ 1,803,991 events total
2025-09-26 11:15:53 <[exa]> yeah you know what, I thought I can live with the ordering of the errors but I was hitting a problem where I didn't know what the useful maxima would be
2025-09-26 11:16:09 <[exa]> now if I could have more maxima, I guess interpretation is gonna be harder but it solves the issue
2025-09-26 11:17:12 <tomsmeding> perhaps a stupid slow but working version of that lattice approach is: type Errors = Set Error; then have `reduce :: Errors -> Errors` that loops over all pairs (e1, e2) in the set (i.e. it's O(n^2)) and if e1 < e2 in your partial order, then e1 is removed from the set
2025-09-26 11:17:38 <tomsmeding> then you could choose to run `reduce` in the (<>) on Errors (if you make it a newtype), or you could run `reduce` at the end once only
2025-09-26 11:17:59 <tomsmeding> you can probably do better than O(n^2) somehow, but this may well be "good enough"
2025-09-26 11:18:07 <tomsmeding> you still have to define your partial order of course
2025-09-26 11:18:09 <[exa]> I have one error where there's timeout in one service and auth failure in another, and both need to be handled (someone needs to tell admins to check credentials, and someone else needs to delay the retry), and they both occlude a few other errors/warnings
2025-09-26 11:18:13 <[exa]> so yeah partial order it is
2025-09-26 11:18:26 <tomsmeding> neat
2025-09-26 11:18:32 <tomsmeding> math!
2025-09-26 11:19:15 <[exa]> I might really want to reword the whole problem to recommendations instead of the error/exception wording, it makes interpretation much easier
2025-09-26 11:19:34 [exa] goes back to the cave to rethink again
2025-09-26 11:19:49 <tomsmeding> I don't think s/Error/Recommendation/g changes anything in the above
2025-09-26 11:20:01 <tomsmeding> just makes all the names longer
2025-09-26 11:20:37 <tomsmeding> also there's plenty precedent for errors not being fatal, see compiler errors
2025-09-26 11:21:07 <tomsmeding> (that's not to say you should not do the rename in your case, I dunno the context and don't need to know it :P)
2025-09-26 11:22:56 <tomsmeding> I wonder if there's a neat way to implement (<) on a partial order by only specifying the pairs that generate the order, i.e. without having to manually deal with transitivity
2025-09-26 11:23:06 CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db)
2025-09-26 11:23:19 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-09-26 11:23:20 <tomsmeding> I guess that's called directed graph reachability
2025-09-26 11:25:34 wootehfoot joins (~wootehfoo@user/wootehfoot)
2025-09-26 11:25:43 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.5.2)
2025-09-26 11:28:09 <tomsmeding> if you do my `reduce` in (<>), then you can reduce the O(n^2) to O(n * m) because you can assume that no redundancies exist within one argument to (<>)
2025-09-26 11:28:43 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2025-09-26 11:29:16 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Client Quit)
2025-09-26 11:29:38 <merijn> [exa]: I mean, the exception system lets you create hierarchical inheritance like behaviour for exceptions, so maybe try something along those lines?
2025-09-26 11:32:00 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Client Quit)
2025-09-26 11:32:35 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2025-09-26 11:32:53 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
2025-09-26 11:33:01 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds)
2025-09-26 11:33:19 wootehfoot joins (~wootehfoo@user/wootehfoot)
2025-09-26 11:34:19 <tomsmeding> merijn: if I'm understanding [exa]'s use case correctly, the idea is that an auth error in some component is useful to report (credentials should be fixed), and a timeout is also useful (retry may help), but if later we find out that something in the config of that component is just broken, the error "config should be fixed" overrides the other ones because a changed config changes everything
2025-09-26 11:34:21 <tomsmeding> anyway
2025-09-26 11:34:47 <tomsmeding> hence the partial-order-of-errors idea where you store only the maxima
2025-09-26 11:35:41 Lord_of_Life_ is now known as Lord_of_Life
2025-09-26 11:36:01 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Client Quit)
2025-09-26 11:37:32 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2025-09-26 11:38:40 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Client Quit)
2025-09-26 11:40:08 × tromp quits (~textual@2001:1c00:3487:1b00:1c2c:dead:822d:e7f7) (Quit: My iMac has gone to sleep. ZZZzzz…)
2025-09-26 11:40:52 Googulator71 joins (~Googulato@81.183.235.203)
2025-09-26 11:41:36 Googulator71 is now known as Googulator
2025-09-26 11:43:59 × Googulator70 quits (~Googulato@81.183.235.203) (Ping timeout: 250 seconds)
2025-09-26 11:44:01 lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2025-09-26 11:45:55 <merijn> tomsmeding: Right, but you can do that using hierarchical exceptions
2025-09-26 11:46:12 <merijn> Since it just relies on a bunch of Typeable based projections
2025-09-26 11:46:56 × trickard_ quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-09-26 11:47:10 trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au)
2025-09-26 11:50:50 × sroso quits (~sroso@user/SrOso) (Quit: Leaving :))
2025-09-26 12:00:44 Googulator26 joins (~Googulato@81.183.235.203)
2025-09-26 12:02:56 trickard_ is now known as trickard
2025-09-26 12:03:31 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 255 seconds)
2025-09-26 12:04:21 × Googulator quits (~Googulato@81.183.235.203) (Ping timeout: 250 seconds)
2025-09-26 12:05:05 ljdarj joins (~Thunderbi@user/ljdarj)
2025-09-26 12:05:45 × trickard quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-09-26 12:08:29 trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au)
2025-09-26 12:09:29 Lycurgus joins (~juan@user/Lycurgus)
2025-09-26 12:14:34 vanishingideal joins (~vanishing@user/vanishingideal)
2025-09-26 12:16:41 Enrico63 joins (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213)
2025-09-26 12:20:38 Googulator1 joins (~Googulato@81.183.235.203)
2025-09-26 12:20:46 Square2 joins (~Square@user/square)
2025-09-26 12:23:51 × Googulator26 quits (~Googulato@81.183.235.203) (Ping timeout: 250 seconds)
2025-09-26 12:26:25 × Square2 quits (~Square@user/square) (Ping timeout: 264 seconds)
2025-09-26 12:36:57 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Quit: WeeChat 4.5.2)
2025-09-26 12:40:42 Googulator5 joins (~Googulato@81.183.235.203)
2025-09-26 12:43:47 × Googulator1 quits (~Googulato@81.183.235.203) (Ping timeout: 250 seconds)
2025-09-26 12:44:36 lortabac joins (~lorenzo@mx1.fracta.dev)
2025-09-26 12:51:02 Googulator84 joins (~Googulato@81.183.235.203)
2025-09-26 12:51:28 trickard_ is now known as trickard
2025-09-26 12:54:11 × Googulator5 quits (~Googulato@81.183.235.203) (Ping timeout: 250 seconds)
2025-09-26 12:55:41 Googulator86 joins (~Googulato@81.183.235.203)
2025-09-26 12:55:52 × ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 256 seconds)
2025-09-26 12:58:57 × Googulator84 quits (~Googulato@81.183.235.203) (Ping timeout: 250 seconds)
2025-09-26 13:04:31 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 250 seconds)
2025-09-26 13:04:52 Googulator40 joins (~Googulato@81.183.235.203)
2025-09-26 13:08:03 × Googulator86 quits (~Googulato@81.183.235.203) (Ping timeout: 250 seconds)
2025-09-26 13:08:08 trampi joins (~trampi@mx.trampusch.info)
2025-09-26 13:11:45 tromp joins (~textual@2001:1c00:3487:1b00:1c2c:dead:822d:e7f7)
2025-09-26 13:12:37 × trickard quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Read error: Connection reset by peer)
2025-09-26 13:13:55 × Enrico63 quits (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) (Quit: Client closed)
2025-09-26 13:15:15 trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au)
2025-09-26 13:20:03 humasect joins (~humasect@dyn-192-249-132-90.nexicom.net)
2025-09-26 13:20:41 Googulator46 joins (~Googulato@81.183.235.203)
2025-09-26 13:23:44 ljdarj joins (~Thunderbi@user/ljdarj)
2025-09-26 13:24:05 × Googulator40 quits (~Googulato@81.183.235.203) (Ping timeout: 250 seconds)
2025-09-26 13:25:13 × humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Ping timeout: 264 seconds)
2025-09-26 13:25:25 trickard_ is now known as trickard
2025-09-26 13:27:39 arandombit joins (~arandombi@user/arandombit)
2025-09-26 13:28:24 × CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 252 seconds)
2025-09-26 13:31:14 lortabac_ joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4)
2025-09-26 13:31:24 × lortabac_ quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Client Quit)
2025-09-26 13:32:11 × arandombit quits (~arandombi@user/arandombit) (Ping timeout: 265 seconds)
2025-09-26 13:36:21 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
2025-09-26 13:39:32 Enrico63 joins (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213)
2025-09-26 13:44:01 ft_ joins (~ft@p4fc2a225.dip0.t-ipconnect.de)
2025-09-26 13:44:12 arandombit joins (~arandombi@user/arandombit)
2025-09-26 13:45:59 Googulator29 joins (~Googulato@81.183.235.203)
2025-09-26 13:49:13 × Googulator46 quits (~Googulato@81.183.235.203) (Ping timeout: 250 seconds)
2025-09-26 13:50:35 Googulator90 joins (~Googulato@81.183.235.203)
2025-09-26 13:53:59 × Googulator29 quits (~Googulato@81.183.235.203) (Ping timeout: 250 seconds)
2025-09-26 13:55:42 Googulator75 joins (~Googulato@81.183.235.203)

All times are in UTC.