I just wrote a Reverse Polish Notation calculator. It’s beautiful. Extending a Forth compiler with new words must be a dream.
The ease of parsing functions of higher arity is astonishing. As long as you know how many arguments a function expects, you can feed them in trivially by popping them off a stack. Variadic functions can be given lists of arguments since the calculator expects a fixed number of arguments for each function.
I wonder how RPN handles partial function application. Associativity seems to just become a cyclic shift, at least at first glance. I’m going to figure out distributivity and commutativity later today.
The lack of ambiguity and the corresponding lack of parentheses is nice.
I can see why some people are addicted to using RPN calculators.