# Operators¶

On top of functions, it is sometimes useful to define operators for common operations. Like `+`

and `*`

for infix addition and multiplication.

```
operator (x: Int) + (y: Int) -> Int {
int_add(x, y)
}
```

Operators are also curried function, and be called as a regular function by wrapping it in parentheses.

```
(+)(3, 5)
(+)(3)(5)
let add = (+)
add(3, 5)
```

## Associativity & Precedence¶

When defining an operator, you can use the attributes `#prec`

and `#assoc`

to specify.

```
#assoc(left) #prec(higher(+))
operator (x: Int) * (y: Int) -> Int {
int_mul(x, y)
}
```