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

Score: 10

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)`.

Score: 5

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)

Score: 4
``````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`.

Score: 2

Functions of type `a->b->c`, which are actually chains 2 of functions like you said, are examples 1 of Currying

More Related questions