Proposal: Applicative => Monad: Call for consensus
roconnor at theorem.ca
roconnor at theorem.ca
Thu Jan 6 19:20:58 CET 2011
On Thu, 6 Jan 2011, Tyson Whitehead wrote:
> On January 6, 2011 11:42:09 Iavor Diatchki wrote:
>>> AFAIU, In applicative style programming "join" has proven to be a lot
>>> more useful than "bind".
>>
>> I am not sure what you mean here, I find the "do" notation quite useful.
>
> I think he was meaning when you are using monads in a more "function style"
> (applicative) than "imperative style" (do notation).
>
> As an example, consider the definition of ">>=" using join and the "$" and
> "<$>" application operators
>
> x >>= f = join $ f <$> x
>
> versus that using "do" notation
>
> x >>= f = do
> x' <- x
> f x'
Notice that in the applicative style we didn't need to name the "x'"
value.
To add to this excellet comment, the idea of applicative style is to use a
long string of functions and parameters with various <$> and <*> in
between them with the occassional peppering of join and other combinators.
I understand this is becomming quite popular with parser combinators.
e.g. (this example is from mm_freak):
char '(' *> skipSpace *> someToken <* skipSpace <* char ')'
Haskell is famous for allowing users the choice of multiple programming
styles:
* matching on the LHS vs case statements on the RHS
* where clauses vs let statements
* 2-D layout vs braces and semi-colons
Given this, it seems only appropriate to support both applicative style
and do notation programming.
--
Russell O'Connor <http://r6.ca/>
``All talk about `theft,''' the general counsel of the American Graphophone
Company wrote, ``is the merest claptrap, for there exists no property in
ideas musical, literary or artistic, except as defined by statute.''
More information about the Libraries
mailing list