News for hackers. Stuff that matters.
Re:Escaping Hell with Monads (2017) by nemetroid on Friday February 23, 2018 @12:31PM (#16447776)
Right is the right result and Left is the wrong result. That's about as easy it gets when it comes to remembering things. There is already a strong convention for using Either for this purpose and it's built into the standard library, since the Monad instance is designed to allow you to do this.

If you create your own data type for this, you are designing yourself into the Monad transformer hell you mention in another comment.

Re:Escaping Hell with Monads (2017) by hota_mazi on Friday February 23, 2018 @12:52PM (#16447945)
> That's about as easy it gets when it comes to remembering things

I use a statically typed language so I have fewer things to remember because the compiler does the bookkeeping for me.

`Either` is a generic variant record, it should not be used to carry errors.

And as a general rule, any programming construct that relies on convention instead of static typing is prone to generating bugs.

Re:Escaping Hell with Monads (2017) by nemetroid on Tuesday February 27, 2018 @11:50AM (#16475230)
> `Either` is a generic variant record, it should not be used to carry errors.

The name suggests that, but the Monad instance suggests that Either is an asymmetric data type, where the left and right branches carry different meaning.

> And as a general rule, any programming construct that relies on convention instead of static typing is prone to generating bugs.

If the Either branches were named `Error` and `Success`, using `Error` to carry errors would be just as much of a convention as using `Left` for that purpose (a more sensible convention, but nonetheless a convention). The only way you'd get around that is if you'd somehow encode in the language what is and what isn't an error and use that to statically force correct branch usage.

Re:Escaping Hell with Monads (2017) by taeric on Friday February 23, 2018 @04:30PM (#16449798)
To be fair, this is more relying on a pun than it is convention.

I don't think this changes your point, though.