# [ACCEPTED]-What type of math is this: a -> b -> c-monads

Type declarations are **not** associative, `a -> (b -> c)`

is 4 not equivalent to `(a -> b) -> c`

. Also, you can't "switch" the 3 arrows, `a <- b <- c`

is not valid syntax.

The usual reference 2 to associativity is in this case that `->`

it 1 *right associative*, which means that `a -> b -> c`

is interpreted as `a -> (b -> c)`

.

Speaking broadly this falls into the realm 6 of Lambda Calculus.

Since this notation has to do with types 5 of functions type inference might be of interest to you 4 as well.

(The wrong assumptions you made 3 about associativity should already be cleared 2 up sufficiently by the other answers so 1 i will not reiterate that)

```
a -> (b -> c)
```

and

```
(a -> b) -> c
```

are *not* equivalent in Haskell. That is 9 type theory which can be founded in category 8 theory.

The former is a function taking an 7 argument of type `a`

and returning a function 6 of type `b -> c`

. While the latter is a function 5 taking a function of type `a -> b`

as argument and 4 returning a value of type `c`

.

What do you mean 3 by the complement of a function? The type 2 of the inverse function of a function of 1 type `a -> (b -> c)`

has the type `(b -> c) -> a`

.

Functions of type `a->b->c`

, which are actually chains 2 of functions like you said, are examples 1 of Currying

More Related questions

We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.