> The code for \setcounter{counter}{number} is
>
> value set_counter ps = do
> {
> let ctr = read_expanded_argument ps in
> let arg = Parser.str_to_int (read_expanded_argument ps) in
>
> ParseState.set_counter ps ctr arg
> };
>
> It would be much neater to write something like:
>
> command \setcounter (ctr : expanded) (arg : int) =
> {
> ParseState.set_counter ps ctr arg
> };
Please do not underestimate the abstractional power of a functional
programming language such as OCaml. Your first example can
probably be polished a bit, even within the language.
If one imagines how crude the facilities that TeX itself offers
are, and what LaTeX or ConTeXt have made of it over the years,
then I am convinced being offered an interface within OCaml would
bring up styles beyond our imagination!
One of the main advantages of _not_ using a preprocessor or
macro system of any sort is that one would finally get usable
error messages from the system. I would not give that up too
easily.
Ant certainly looks very interesting. Keep up the good work!
Best,
Andres
--
Andres Loeh, Universiteit Utrecht
mailto:[log in to unmask] mailto:[log in to unmask]
http://www.andres-loeh.de