I wonder how far that could go? Is there anything in SML that
you can't do in Ocaml with similar enough syntax that Camlp4
could cope with it?

For me, personally, the question is not whether it can be done, but whether I want it or not!

I am used to OCaml and don't want to switch to the unfamiliar, somewhat strange syntax of SML. The webpage http://www.ps.uni-sb.de/~rossberg/SMLvsOcaml.html gives a (seemingly) thorough comparision between SML and OCaml (both syntax and language features are compared). The following are only some of the things I would only hardly be able to cope with:

characters written as #"J" instead of 'J',
fn x => e instead of fun x -> e
case of instead of match with
different declarations for values and functions (val, fun, in OCaml only let)
datatype instead of type, plus eqtypes
strance multiple values definition

These are only minor differences, but if one is accustumed to one taste, one would suffer when forcefully introduced to another one.

By the way, there are also some strange syntax structures introduced by camlp4 that I don't like...

- Tom