Re: Technical reasons for some options taken on design of MathML

> Mikko Rantalainen wrote:

[snip]

>
> I don't know the "official" reason for these constructs but my guess
> is that they follow the logic that <apply> is a function
> application. In programming terms one would convert
> markup such as
>    <apply><plus/><cn>5</cn><cn>8</cn></apply>
> to a computer program
>    plus(5,8)
> where the "plus" is name of the function to call. Apply always takes
> the first child (from DOM tree) as the function to use and rest of
> the childs as parameters for that function.
>
> If you think that everything is a function, then writing "A/2"
> really seems like a shorthand notation for divide(A,2).

Yes, but what is the technical/conceptual advantage over something like

<plus><cn>5</cn><cn>8</cn></plus>

as a representation of

>    plus(5,8)
?

In that case you apply the plus function/operation to arguments (tree childs)

In fact, I can read in the initial HTML-3 DTD for math things as

<SQRT>content</SQRT>


The question is, the MathML choice of something like (please note that
there is not sqrt operator in MathML, but basis for this question is the
same)

<apply><sqrt/>Content</apply>

over something like

<SQRT>content</SQRT>

is a pure matter of taste or is there conceptual/technical advantages?

It would be a good thing if some author of MathML explains those issues to
us.


> > - What is the reason for
> >    <msup>base <mrow>index1 index2</mrow></msup>
> > instead of
> >    base<sup>index1 index2</sup>
> > or the
> >    base^{index1 index2}
>
> The reason the last one isn't used is that it doesn't follow the XML
> way of doing things and (it seems that) W3C has decided to use XML
> for markup of practically everything.

Sorry, I explained badly!

I was not referring to the use of TeX syntax (which is not XML and
therefore omitted in MathML). I was referring to the fact that *base* is
outside of the “sup” tag in both SGML/HTML and TeX. That is, in TeX one
does not write things as

^{base}{index1 index2}


> I guess the reason the first one of the above XML variants is used
> is that it makes it perfectly clear which part the superscript is
> for. Consider the following
>
>    <mi>a</mi><mi>b</mi><sup><mi>c</mi></sup><mi>d</mi>
>
> Does that mean "((ab)^c)d" or "a(b^c)d" or something else? Again, if
> you think that XML is *the* way to go, then these design choices
> logically follow. "Everything is a tree".

I do not agree. The MathML syntax is

<msup>base index</msup>

if you have something like

<msup><mi>a</mi><mi>b</mi><mi>c</mi><mi>d</mi></msup>

what mean "((ab)^c)d" or "a(b^c)d" or something else? Also MathML syntax
is ambiguous. This is reason that I carefully used an mrow example in my
previous post

<msup>base <mrow>index1 index2</mrow></msup>

Which is not ambiguous. Also, there is not ambiguity with bases outside
since ((ab)^c)d is encoded as

<mrow><mi>a</mi><mi>b</mi></mrow><sup><mi>c</mi></sup><mi>d</mi>

and a(b^c)d is encoded as

<mi>a</mi><mrow><mi>b</mi></mrow><sup><mi>c</mi></sup><mi>d</mi>

in fact similar constructs already existed in SGML world and i fail to
understand why were not reused.

Are there technical/conceptual advantages introducing the base into the
script node or simply a matter of taste?

> --
> Mikko

Juan R.

Center for CANONICAL |SCIENCE)

Received on Friday, 31 March 2006 14:13:52 UTC