Monad of no `return` Proposal (MRP): Moving `return` out of `Monad`
Bardur Arantsson
spam at scientician.net
Fri Oct 2 22:08:47 UTC 2015
On 10/02/2015 11:55 PM, Mario Blažević wrote:
> On 15-10-02 04:50 PM, Bardur Arantsson wrote:
>> On 10/02/2015 12:09 PM, Henrik Nilsson wrote:
>>> Hi all,
>>>
>> [--snip--]
>>> So from that
>>> perspective, using the applicative operators directly,
>>> without any syntactic sugar, actually amounts to a much
>>> more transparent and honest syntax, even if a bit more
>>> verbose in some cases.
>>
>> "Verbose" is the understatement of the year. There's a lot of code where
>> ApplicativeDo makes the difference between "readable" and "unreadable".
>> Like it or not, but programmers are used to *naming things* (even
>> locally) and using those local names to refer to things.
>
> Naming of applicative sub-expressions is perfectly doable without
> reaching for any syntactic sugar. An applicative do like
>
> do a <- f long expression
> b <- g long expression
> return (h a b)
>
> would be equivalent to
>
> let a = f long expression
> b = g long expression
> in f <$> a <*> b
>
> The benefits of applicative do, if I understand the motivation
> correctly, are not so much to help in writing new code intended to be
> applicative. Instead it lets the programmer write in monadic style and
> at the same time enables the compiler to convert the code to applicative
> style if possible. This has the potential to automatically improve
> performance of legacy Haskell codebase, as well as any new
> beginner-friendly code that relies on syntactic sugar.
>
... if you already know how to do that. That's the point.
Regards,
More information about the Libraries
mailing list