The point is that there is no parsing happening here. Just evaluation.

On Mon, Jun 8, 2015 at 3:20 AM Mike Meyer <mwm@mired.org> wrote:


On Jun 8, 2015 05:01, "Martin Vlk" <martin@vlkk.cz> wrote:
>
> Mike Meyer:
> > s mp $ n - 1 parses as s mp (n - 1)
> > s mp n - 1 parses as (s mp n) - 1
>
>
> Hi, I think it is misleading to say that $ "parses" to something.

Which is why I didn't say such a thing. The two sentences show how the expressions he was having trouble with are parsed. 

> ($) is an infix operator with type:
>
> ($) :: (a -> b) -> a -> b       -- Defined in ‘GHC.Base’
> infixr 0 $
>
> So what it does is it takes a function on the left hand side and applies
> it to the second argument on the right hand side. The trick is it has
> the lowest possible precedence value (0) so everything on the right hand
> side will be evaluated before applying the function on the left.

Which explains why the expression containing a $ parses as it does, which is also useful information.

_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners