Comment by lioeters

20 hours ago

The need to remember operator precedence is a consequence of the infix notation syntax.

It’s a tradeoff against lots of irritating silly parentheses.

  • Postfix doesn’t need parentheses.

    Prefix technically doesn’t need, either, if you avoid functions taking variable number of arguments and have a grammar that can reliably detect function calls (could be hard if you’re allowing higher-order functions)

    Even with functions taking a variable number of arguments, you could do it the C way and use the argc, argv trick, giving you

      * 2 + 3 5 6 7 3  ⇒  (* (+ 5 6 7) 3)  ⇒  54
    

    I think you’d have to be a bit of a masochist to do that, though.

    That also is why I think varargs functions tend to be rare in bare bones forths. You’d have to write

      5 6 7 3 + 3 2 *
    

    Using custom names for the varargs functions would help for the 2-argument version.