← Back to context

Comment by pitchlatte

21 hours ago

that’s not even notation though, that’s a rubric for the order of operations.

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.