Hacker News new | ask | show | jobs
by owlstuffing 107 days ago
Yes, the empty infix operator is often called the "juxt" operator, which is an apt term here.

However, I use the term "binding expressions" intentionally because there’s more going on than ordinary juxtaposition. In a normal juxt expression such as:

    a b c
the evaluation order is static and independent of the type system:

    (a b) c
With binding expressions the precedence is type-directed, so the type system determines which grouping is valid:

    (a b) c
    a (b c)
Additionally, the operation itself can be provided by either operand. For a given expression a b, the compiler may resolve it as:

    a.prefixBind(b)
    b.postfixBind(a)
For example:

    10kg
Here kg is a MassUnit, and MassUnit defines postfixBind(Number) returning Mass, so given there is no left-to-right binding, the expression resolves right-to-left as:

    kg.postfixBind(10)
So while juxtaposition is the syntactic surface, the semantics are type-directed binding.