Logs: liberachat/#haskell
| 2025-09-26 07:53:19 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2025-09-26 07:56:28 | × | hughjfchen quits (~hughjfche@vmi2417424.contaboserver.net) (Quit: WeeChat 4.7.1) |
| 2025-09-26 07:57:25 | × | annamalai quits (~annamalai@157.32.118.51) (Ping timeout: 245 seconds) |
| 2025-09-26 07:57:54 | → | hughjfchen joins (~hughjfche@vmi2417424.contaboserver.net) |
| 2025-09-26 08:02:59 | → | inline joins (~inline@ip-005-146-196-132.um05.pools.vodafone-ip.de) |
| 2025-09-26 08:04:43 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-09-26 08:05:37 | → | Googulator89 joins (~Googulato@81.183.235.203) |
| 2025-09-26 08:07:18 | → | chele joins (~chele@user/chele) |
| 2025-09-26 08:09:19 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 2025-09-26 08:09:24 | Googulator89 | is now known as Googulator |
| 2025-09-26 08:12:50 | → | dhil joins (~dhil@5.151.29.138) |
| 2025-09-26 08:13:46 | → | Googulator75 joins (~Googulato@81.183.235.203) |
| 2025-09-26 08:14:23 | → | Googulator13 joins (~Googulato@81.183.235.203) |
| 2025-09-26 08:14:49 | × | ridcully quits (~ridcully@p57b5234b.dip0.t-ipconnect.de) (Quit: WeeChat 4.7.0) |
| 2025-09-26 08:15:16 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-09-26 08:17:17 | × | Googulator quits (~Googulato@81.183.235.203) (Ping timeout: 250 seconds) |
| 2025-09-26 08:18:09 | × | Googulator75 quits (~Googulato@81.183.235.203) (Ping timeout: 250 seconds) |
| 2025-09-26 08:18:13 | → | tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) |
| 2025-09-26 08:20:10 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2025-09-26 08:20:50 | Googulator13 | is now known as Googulator |
| 2025-09-26 08:20:59 | → | annamalai joins (~annamalai@157.32.127.99) |
| 2025-09-26 08:22:19 | → | arandombit joins (~arandombi@user/arandombit) |
| 2025-09-26 08:24:02 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 2025-09-26 08:26:08 | → | Googulator25 joins (~Googulato@81.183.235.203) |
| 2025-09-26 08:26:22 | × | Googulator quits (~Googulato@81.183.235.203) (Quit: Client closed) |
| 2025-09-26 08:26:51 | → | Enrico63 joins (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) |
| 2025-09-26 08:27:12 | × | arandombit quits (~arandombi@user/arandombit) (Ping timeout: 265 seconds) |
| 2025-09-26 08:28:09 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-09-26 08:34:45 | → | __monty__ joins (~toonn@user/toonn) |
| 2025-09-26 08:35:45 | → | ridcully joins (~ridcully@p57b5234b.dip0.t-ipconnect.de) |
| 2025-09-26 08:40:47 | → | Googulator70 joins (~Googulato@81.183.235.203) |
| 2025-09-26 08:41:21 | → | poscat0x04 joins (~poscat@user/poscat) |
| 2025-09-26 08:43:03 | × | poscat quits (~poscat@user/poscat) (Ping timeout: 244 seconds) |
| 2025-09-26 08:43:43 | × | Googulator25 quits (~Googulato@81.183.235.203) (Ping timeout: 250 seconds) |
| 2025-09-26 08:46:51 | → | PKDrinker joins (~PKDrinker@user/PKDrinker) |
| 2025-09-26 08:47:33 | × | PKDrinker quits (~PKDrinker@user/PKDrinker) (Remote host closed the connection) |
| 2025-09-26 08:50:28 | → | arandombit joins (~arandombi@user/arandombit) |
| 2025-09-26 08:53:24 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Read error: Connection reset by peer) |
| 2025-09-26 08:56:55 | → | fp joins (~Thunderbi@wireless-86-50-141-96.open.aalto.fi) |
| 2025-09-26 08:57:24 | × | fp quits (~Thunderbi@wireless-86-50-141-96.open.aalto.fi) (Client Quit) |
| 2025-09-26 08:58:08 | × | arandombit quits (~arandombi@user/arandombit) (Ping timeout: 265 seconds) |
| 2025-09-26 08:59:36 | → | fp joins (~Thunderbi@2001:708:20:1406::10c5) |
| 2025-09-26 09:01:28 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 2025-09-26 09:04:25 | × | Enrico63 quits (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) (Quit: Client closed) |
| 2025-09-26 09:11:35 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 2025-09-26 09:12:44 | → | arandombit joins (~arandombi@user/arandombit) |
| 2025-09-26 09:15:12 | × | poscat0x04 quits (~poscat@user/poscat) (Remote host closed the connection) |
| 2025-09-26 09:15:21 | → | poscat joins (~poscat@user/poscat) |
| 2025-09-26 09:17:34 | → | michals joins (~michals@ip-109-42-117-69.web.vodafone.de) |
| 2025-09-26 09:17:40 | × | arandombit quits (~arandombi@user/arandombit) (Ping timeout: 244 seconds) |
| 2025-09-26 09:33:36 | × | michals quits (~michals@ip-109-42-117-69.web.vodafone.de) (Quit: michals) |
| 2025-09-26 09:34:06 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 252 seconds) |
| 2025-09-26 09:41:41 | → | Jackneill_ joins (~Jackneill@94-21-95-86.pool.digikabel.hu) |
| 2025-09-26 09:44:07 | × | Jackneill quits (~Jackneill@91-83-15-174.pool.digikabel.hu) (Ping timeout: 240 seconds) |
| 2025-09-26 09:49:16 | × | pabs3 quits (~pabs3@user/pabs3) (Read error: Connection reset by peer) |
| 2025-09-26 09:49:20 | → | Enrico63 joins (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) |
| 2025-09-26 09:50:06 | → | pabs3 joins (~pabs3@user/pabs3) |
| 2025-09-26 09:52:10 | → | arandombit joins (~arandombi@2603:7000:4600:ffbe:ddc9:88a6:9e65:4919) |
| 2025-09-26 09:52:10 | × | arandombit quits (~arandombi@2603:7000:4600:ffbe:ddc9:88a6:9e65:4919) (Changing host) |
| 2025-09-26 09:52:10 | → | arandombit joins (~arandombi@user/arandombit) |
| 2025-09-26 09:56:39 | × | arandombit quits (~arandombi@user/arandombit) (Ping timeout: 252 seconds) |
| 2025-09-26 10:00:01 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 2025-09-26 10:06:25 | × | CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 250 seconds) |
| 2025-09-26 10:12:23 | → | mari-estel joins (~mari-este@user/mari-estel) |
| 2025-09-26 10:14:15 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) (Ping timeout: 252 seconds) |
| 2025-09-26 10:18:03 | → | arandombit joins (~arandombi@user/arandombit) |
| 2025-09-26 10:26:12 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection) |
| 2025-09-26 10:48:58 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org )) |
| 2025-09-26 10:48:58 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds) |
| 2025-09-26 10:53:57 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:55ab:e185:7f81:54a4) |
| 2025-09-26 10:58:15 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 2025-09-26 11:00:26 | → | merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl) |
| 2025-09-26 11:02:55 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Ping timeout: 240 seconds) |
| 2025-09-26 11:04:05 | × | Enrico63 quits (~Enrico63@2a0b:e541:10d0:0:9efc:e8ff:fe24:3213) (Quit: Client closed) |
| 2025-09-26 11:05:50 | <[exa]> | is there some good way/approach/systematization to "combine" errors? E.g. I have 2 parts of a program, one fails in a way that looks like a retry would help, another fails in a way that suggests reconfiguration is needed. I want them to somehow automagically combine so that other parts of the program may derive e.g. if they should retry or contact admins instead |
| 2025-09-26 11:05:57 | <[exa]> | maybe s/errors/recommendations/ at this point |
| 2025-09-26 11:06:37 | <[exa]> | and well ofc if there was a good functional way to model that, it would be <3 :) |
| 2025-09-26 11:08:31 | <tomsmeding> | [exa]: Validation? |
| 2025-09-26 11:08:53 | <tomsmeding> | @hackage validation |
| 2025-09-26 11:08:53 | <lambdabot> | https://hackage.haskell.org/package/validation |
| 2025-09-26 11:09:20 | <tomsmeding> | i.e. just Either but with no Monad instance, and an Applicative instance that proceeds and collects all errors instead of stopping |
| 2025-09-26 11:09:43 | <[exa]> | yeah well validation collects the errors into a semigroup (that's good) but I was kinda asking more about how to structure (and interpret) that semigroup |
| 2025-09-26 11:09:49 | → | wootehfoot joins (~wootehfoo@user/wootehfoot) |
| 2025-09-26 11:10:13 | <tomsmeding> | data Error = RetryNeeded | ReconfigNeeded; type Errors = [Error] |
| 2025-09-26 11:10:28 | × | merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 2025-09-26 11:10:34 | <tomsmeding> | perhaps instead data Error = RetryNeeded | ReconfigNeeded deriving (Eq, Ord); type Errors = Set Error |
| 2025-09-26 11:10:55 | <[exa]> | yeah that way I could do a maximum on that and just go with what's worst |
| 2025-09-26 11:10:56 | × | trickard quits (~trickard@cpe-50-98-47-163.wireline.com.au) (Ping timeout: 240 seconds) |
| 2025-09-26 11:11:07 | <haskellbridge> | <sm> [exa] I think that gets pretty complicated and a more sequential / prioritised handling of single errors can be more practical |
| 2025-09-26 11:11:39 | <tomsmeding> | if you just want the maximum, type Errors = Data.Monoid.Max Error |
| 2025-09-26 11:11:41 | → | trickard_ joins (~trickard@cpe-50-98-47-163.wireline.com.au) |
| 2025-09-26 11:11:46 | <[exa]> | yeah I got to a situation where handing the error combinations by one is a bit to much |
| 2025-09-26 11:11:54 | <[exa]> | so kinda scanning for possibilities |
| 2025-09-26 11:12:54 | <haskellbridge> | <sm> if you can meaningfully collect and list them all, that could be another approach |
| 2025-09-26 11:13:39 | <tomsmeding> | if your errors are not linearly ordered then I wonder if there's some clever kind of lattice-based deduplication algorithm you could run on the Set Error :p |
| 2025-09-26 11:13:45 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 2025-09-26 11:15:05 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 2025-09-26 11:15:12 | <[exa]> | hm lattice |
| 2025-09-26 11:15:12 | <tomsmeding> | if you want more detail you can either add fields to the RetryNeeded/ReconfigNeeded constructors, or instead transpose the thing and have `data Error` be the long sum type of actual fine-grained errors, and have `isRetryNeeded :: Error -> Bool` and `isReconfigNeeded :: Error -> Bool` |
| 2025-09-26 11:15:22 | <tomsmeding> | lattice ~ partial order in my mind |
All times are in UTC.