2025/03/30

Newest at the top

2025-03-30 13:01:24 +0200 <Rembane> thirdofmay18081814goya: No worries! :)
2025-03-30 13:01:16 +0200 <int-e> And Control.Monad.Error mimicked that after the MonadFail class was introduced.
2025-03-30 13:00:33 +0200 <int-e> `fail` used to be in `Monad` and the Monad instance for Either used to be instance Error e => Monad (Either e) where `Error` had a function to convert String into an e, which was used to implement `fail`.
2025-03-30 13:00:31 +0200 <haskellbridge> <thirdofmay18081814goya> @Rembane neat! didn't know about it, ty
2025-03-30 12:59:54 +0200hattckory(~hattckory@70.27.118.207) (Ping timeout: 260 seconds)
2025-03-30 12:59:26 +0200 <int-e> yes
2025-03-30 12:59:19 +0200 <Rembane> int-e: Ah, this has some history.
2025-03-30 12:59:03 +0200sprotte24(~sprotte24@p200300d16f1e0e006577a4ba097b8b9e.dip0.t-ipconnect.de) (Quit: Leaving)
2025-03-30 12:58:05 +0200 <int-e> Rembane: Well I used it before it was deprecated because it offered the behavior that Either had before the MonadFail proposal.
2025-03-30 12:56:57 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-03-30 12:56:47 +0200 <Rembane> Was it a good MonadFail instance?
2025-03-30 12:56:39 +0200 <Rembane> That sounds potentially controversial. I never used ErrorT because of the deprecated message on top of the documentation of the module.
2025-03-30 12:54:30 +0200 <int-e> ExceptT e Foo a uses the MonadFail instance of Foo. ErrorT e Foo a was removed because it was deprecated in favor of ExceptT despite having a different MonadFail instance.
2025-03-30 12:54:10 +0200 <Rembane> Got it.
2025-03-30 12:53:42 +0200 <int-e> Either doesn't have a MonadFail instance
2025-03-30 12:51:59 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-30 12:49:09 +0200 <Rembane> I thought Either did that, what does it do instead?
2025-03-30 12:48:47 +0200 <[exa]> what's annoying on validation and either that neither of these provides the "just shortcircuit with errory error" behavior unless you write the MonadFail yourself
2025-03-30 12:48:35 +0200 <Rembane> [exa]: Yeah, it's usually better for inspiration than a clear definition. :D
2025-03-30 12:48:15 +0200sprotte24(~sprotte24@p200300d16f1e0e006577a4ba097b8b9e.dip0.t-ipconnect.de)
2025-03-30 12:47:40 +0200 <[exa]> absolutely not sure, just wanted to point out that the "opposite" is a very free definition :D
2025-03-30 12:47:11 +0200 <Rembane> [exa]: Bah, they don't actually exist. The closest I can get to them is Dual. What would Up and Down do?
2025-03-30 12:46:43 +0200pavonia(~user@user/siracusa) (Quit: Bye!)
2025-03-30 12:45:44 +0200 <Rembane> [exa]: I think we have some of those. They're usually Monoid/Semigroup newtypes.
2025-03-30 12:44:53 +0200 <[exa]> Rembane: so many opposites. Why don't we have a Up Down type?
2025-03-30 12:41:10 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-30 12:36:13 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-30 12:24:36 +0200merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds)
2025-03-30 12:15:49 +0200NewtonTrendy(~ubuntu@user/bopqod) (Quit: WeeChat 3.5)
2025-03-30 12:14:23 +0200polyphem(~rod@p4fc2c911.dip0.t-ipconnect.de) polyphem
2025-03-30 12:11:29 +0200Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2025-03-30 11:59:42 +0200vgtw(~vgtw@user/vgtw) vgtw
2025-03-30 11:59:24 +0200vgtw(~vgtw@user/vgtw) (Ping timeout: 260 seconds)
2025-03-30 11:58:23 +0200hattckory(~hattckory@70.27.118.207)
2025-03-30 11:56:51 +0200ash3en(~Thunderbi@89.56.182.235) ash3en
2025-03-30 11:54:18 +0200vgtw(~vgtw@user/vgtw) vgtw
2025-03-30 11:48:44 +0200vgtw(~vgtw@user/vgtw) (Ping timeout: 252 seconds)
2025-03-30 11:48:32 +0200__monty__(~toonn@user/toonn) toonn
2025-03-30 11:48:29 +0200 <Rembane> ...for some values of opposite. :D
2025-03-30 11:48:21 +0200 <Rembane> There's an opposite to Either that's very useful for validating e.g. forms. When there can be loads of errors in different places and execution should never stop. Just seeing the definition makes me surprisingly happy: https://hackage.haskell.org/package/validation-1.1.3/docs/Data-Validation.html#t:Validation
2025-03-30 11:43:45 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca) (Ping timeout: 248 seconds)
2025-03-30 11:39:06 +0200hattckory(~hattckory@bras-base-toroon4524w-grc-30-70-27-118-207.dsl.bell.ca)
2025-03-30 11:33:11 +0200tromp(~textual@2001:1c00:3487:1b00:9865:6ec1:d353:2dc8)
2025-03-30 11:25:46 +0200Tuplanolla(~Tuplanoll@91-159-69-59.elisa-laajakaista.fi) Tuplanolla
2025-03-30 11:18:53 +0200XZDXXZDX_
2025-03-30 11:08:27 +0200acidjnk(~acidjnk@p200300d6e71c4f61790abc3a16c69e44.dip0.t-ipconnect.de) acidjnk
2025-03-30 10:51:18 +0200XZDX(~xzdx@user/XZDX) XZDX
2025-03-30 10:50:48 +0200wootehfoot(~wootehfoo@user/wootehfoot) wootehfoot
2025-03-30 10:39:09 +0200DigitteknohippieDigit
2025-03-30 10:37:08 +0200L29Ah(~L29Ah@wikipedia/L29Ah) L29Ah