(* 3 4 5) // ok, because of associativity (/ 3 4 5) // not ok, because of the lack of associativity (/ 5) // maybe 1/5 ??? (+ 4 5 6) // ok, 4 + (5 + 6) == (4 + 5) + 6 (+ 5) // ok, unary "positivity" operator (- 4 5 6) // not ok, (4 - 5) - 6 or 4 - (5 - 6) (- 6) // ok, unary negation operator x + - 5 // addition and negation operators x + -5 // addition operator, two's-complement negative number (+ x (- 5)) // addition and negation operators (+ x -5) // addition operator, two's-complement negative number (+ 4) (+ 4 5) (+ 4 5 6) (+ 4 5 6 7 8) + // the interperter iterate through all the branches and accumulates the sum / / | \ \ / / | \ \ 4 5 6 7 8 (@ 4 5) // error @ / \ 4 5 x // error (/ 3 4 5) // error for (int i = 0; i < 1_000_000_000; i++) { (/ i x) // an interpreter checks this 1,000,000,000 times }