# [Haskell-cafe] Left Associativity and Precendence

Sun Oct 23 13:27:02 UTC 2016

```> If precedence is not intuitively clear then its badly written code. It's
not the fault of the reader.

I think this is a subjective choice. I will assume that a reader
understands that `1 + 2 * 3 = 7'. If he doesn't I think he really ought to
take the time and learn the precedences. Some precedences are obvious if
you know the types involved; `a + b && c` can not equal `(a + b) && c` in a
working Haskell program, here you just need to know the types to figure it
out.

A reader will never know the precedence of an expression with operators he
is not familiar with but this shouldn't necessarily dictate how you write
your code. This generalizes to a lot of decisions you need to make while
programming.

I'd recommend to start by learning precedences of operators in Prelude and
then continuing with the rest of base. The combinations of function
application (space), function composition (.), and (\$) are very important
to know by heart.

If you come across an operator you aren't familiar with learn it by
experimenting or looking it up. Try to parenthesize or unparenthesize, also
for code you write yourself. You will build an intuition as you go.

Cheers,

On Sat, Oct 22, 2016 at 11:35 PM Tom Ellis <

> On Sat, Oct 22, 2016 at 02:58:35PM -0400, Steven Leiva wrote:
> > I still don't think I'd be able to figure out "where the parenthesis go"
> if
> > I was given a new expression with functions / operators with 3 or 4
> > different declared precedences. For a beginner, is that a huge problem,
> or
> > is knowledge of the concept enough?
>
> If precedence is not intuitively clear then its badly written code.  It's
> not the fault of the reader.
>
> _______________________________________________