# Operators as Functions

The addition operator + has type int->int->int. It is normally written infix, e.g., 3 + 4. By putting parentheses around it, we can make it a prefix operator:

# ( + );;
- : int -> int -> int = <fun>

# ( + ) 3 4;;
- : int = 7

# let add3 = ( + ) 3;;
- : int -> int = <fun>

- : int = 5


The same technique works for any built-in operator.

Normally the spaces are unnecessary. We could write (+) or ( + ), but it is idiomatic to include them. Beware of multiplication, which must be written as ( * ), because (*) would be parsed as beginning a comment.

We can even define our own new infix operators, for example:

let ( ^^ ) x y = max x y


And now 2 ^^ 3 evaluates to 3.

The rules for which punctuation can be used to create infix operators are not necessarily intuitive. Nor is the relative precedence with which such operators will be parsed. So be careful with this usage.