Make it possible to evaluate monadic actions when assigning record fields

apfelmus apfelmus at quantentunnel.de
Thu Jul 12 05:18:42 EDT 2007


Adde wrote:
> apfelmus wrote:
>> In any case, I'm *strongly against* further syntactic sugar for
>> monads, including #1518. The more tiresome monads are, the more
>> incentive you have to avoid them.
>
> Monads are a part of Haskell. The more tiresome monads are to use, the
> more tiresome Haskell is to use. I suggest we leave the decision of
> where and when to use them to each individual user of the language.

Well, only the monads will remain as "tiresome" as they are now. Also,
the most intriguing fact about monads (or rather about Haskell) is that
they are not a (built-in) part of the language, they are "just" a type
class. Sure, there is do-notation, but >>= is not much clumsier than that.

In the end, I think that applicatively used monads are the wrong
abstraction. For occasional use, liftM2 and `ap` often suffice. If the
applicative style becomes prevalent, then Applicative Functors are
likely to be the conceptually better choice. This is especially true for
MonadReader. Arithmetic expressions are a case for liftM, too. And an
instance (Monad m, Num a) => Num (m a)  allows to keep infix (+) and (*).

Put differently, I don't see a compelling use-case for the proposed
syntax extension. But I've seen many misused monads.

Regards,
apfelmus



More information about the Haskell-prime mailing list