On 9/2/10 2:23 PM, Jonathan S. Shapiro wrote:
> But this has a consequence: the introduction of syntax has to be a binding
> construct, because different operators may end up binding the same function
> in different syntaxes. So we need to use something like:
>
>      mixfix *precedence*  _+_ = add*;*
>
> where "add" is a function of two arguments.

N.B. this is part of the caml4p antipattern. Introducing a separation 
between "the function" and "the syntax" (within the language itself, as 
opposed to within the compiler/denotation) leads to a lot of confusion 
and makes it very easy to break things.

I think it's far better to take the Haskell approach of every function 
having a primary syntax (e.g., prefix for alphabetic, infix for 
symbolic) and then having linguistic rules for converting that primary 
syntax to another syntax as necessary (e.g., sections of infix 
functions, the backtick notation). In particular, it's fine to define 
the *function* _+_ by saying it's equal to add (and then 
specifying/relying on inlining to remove the indirection); but having 
_+_ belong to a separate ontological category from add is just begging 
for problems.

-- 
Live well,
~wren
_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to