The above style of description carries over almost verbatim into
Web-O-Matic. Here is a complete page definition, including the HTML
parts. To simplify the example, I have left out the formatting required
to make the page look neat - in practice, one would probably align the
field and the result by putting them inside a table. I have also assumed
that there is a built-in function for calculating factorials, whereas it
would actually be necessary to specify the process of invoking a
particular program - D:\FACTORIAL\FAC.EXE
perhaps - and
waiting for it to finish running.
The meaning of <IntegerField i>
is that the page contains an
IntegerField
, to be referred to locally as i
, to
be created when the page is. Similarly for Text result
. In
conventional OOP terminology, these commands create instances of
classes IntegerField
and Text
. In the current
implementation, both classes are built into
the WOM run-time library, so the programmer need not define
them.
The equations between <OnSubmit>
and </OnSubmit>
describe
the relation between these fields. result~value
denotes the
value
attribute of result
, using ~
as an attribute selector. In conventional OOP, this would be a
method call.
To explain the meaning of [t]
and (t>0)
, we need to
introduce time. We can regard an HTML form as having a local time
co-ordinate system, in which it is created at , the first Submit
happens at , the second at , and so on. Then
result~value[t]
means the value of result~value
at time
. result~value[1]
would be the value just after the form has
been submitted for the first time.
The (t>0)
is the closest a normal keyboard can get to the logical
notation , ``For all such that ''. So the
second equation
means ``the value attribute to be displayed in the result space
result
just after the th submission is the value attribute of
the input field i
at the same time, if the error attribute
of the field at this time is false''. The restriction to means
that the equation must hold after all submissions, but not at
when the page is created. At that time, i
does not contain anything whose factorial needs to be calculated.