W3C home > Mailing lists > Public > www-math@w3.org > June 2009

Re: 0-ary lambda

From: David Carlisle <davidc@nag.co.uk>
Date: Sun, 7 Jun 2009 11:14:20 +0100
Message-Id: <200906071014.n57AEKdJ019653@edinburgh.nag.co.uk>
To: andreas.strotmann@ualberta.ca
Cc: www-math@w3.org


Andreas.

> The current spec of MathML3 requires at least one bvar child for
> lambda

I don't think so. The current draft has the same wording as mathml2:
"n (possibly 0) bound variables."


   http://www.w3.org/TR/MathML3/chapter4.html#contm.lambda

   In a lambda construct with n (possibly 0) bound variables, the first n
   children are bvar elements 


Some of the examples have x1 .... xn but that's just the usual
awkwardness of having explicit 1-based list examples of possibly empty
lists. If n is zero you have to interpret 1 ... n as empty.

One reason why this is currently not as clear as it should be is that
the syntax table for lambda (and every other symbol) is supposed to link
to similarly named productions in the schema (where of course
cardinality constraints must be explicit. The bvarQ production is
supposed to mean 0 or more bvars, each with a possibly annotated ci
child. I couldn't get the schema organised along these lines in time for
this draft, for which I appologise. It will be made public as soon as it
exists (ie soon, and well before the next working draft).



That said, I don't think a zero argument lambda is at all useful,
it's the same as its body.

>  to construct a 0-ary function (like random() or timerightnow()).

I disagree. If <csymbol>random</csymbol> is a 0-ary random function then 
<apply><random/><apply>
is the 0-ary application of that function, so a particular random number
which doesn't need a lambda construct, and
<lambda><random/></lambda> is the same thing as <random/>.

> This means that the transformation rule for lambda to "strict" MathML is
> broken as-is in the case of 0-ary lambda, as there is no bvar in the
> resulting apply to trigger binding.


"Rewrite: lambda " applies in this case and 

<lambda><random  cd="random"/></lambda>

maps to

<bind>
<csymbol cd="fns1">lambda</csymbol>
 <csymbol cd="random">random</csymbol>
</bind>

which is
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMS cd="random" name="random"/>
</OMBIND>

Both MML bind and OMBIND explictly allow 0 variables.

David


________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 
________________________________________________________________________
Received on Sunday, 7 June 2009 10:15:06 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Saturday, 20 February 2010 06:13:05 GMT