\int_eval:n {  (1+2) }
gives a "Missing number, treated as zero" message. So does \int_eval:n {
+ (1+2) }. But
\int_eval:n { 0  (1+2) }
evaluates correctly. If + ( or  ( are the first members of an integer
argument, an error results; if they are not the first members, they are
accepted by \int_eval:n etc. I don't know that this is a bug as such but
it certainly feels to me like an untidiness in the l3int interface. It
means that the order in which component parts of an expression are
presented to \int_eval:n matters, even though in an arithmetical sense,
they evaluate to the same number.
I query too whether an expression like
\int_eval:n { 3(1+2) }
should "evaluate" to 3(1+2), rather than 9, without showing an error.
(Alternatively, I find myself wondering what would be entailed to
harmonize the integer interface with the fp one (which has no problem
with these expressions)? Then one could choose whether to evaluate an
expression involving integral numerals in l3fp or l3int without having
to change the expression, as one does at present. For instance, if the
expression involves an exponent, use l3fp; if not use l3int. This choice
becomes more complicated when the expression itself needs to be changed.)
Andrew

This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
