OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

Re: [xml-dev] Question for the Math-oriented people: is an assignment a

[ Lists Home | Date Index | Thread Index ]

```
Roger L. Costello wrote:

> Consider this formula:
>    kilometers = miles * 1.62
> A programmer might interpret it like this:
>     "kilometers is assigned the result of multiplying the
>       value of miles times 1.62."
> That is, the equals symbol is treated as an "assignment operator".
>
> An alternate way of interpreting it is to treat the equals symbol as a
> "relational operator".  Thus, the above formula would be interpreted as:
>    "Does the value of kilometers equal the value of miles
>      times 1.62?"
> [...]
> I would like to devise an expression that would be interpreted along the
> lines of the first way [...]
> If it is true that this interpretation:
>
>     "kilometers is assigned the result of multiplying the
>       value of miles times 1.62."
>
> is a statement of a function then what kind of function is it?

The usual way of dealing with assignment in a functional
setting is to introduce the concept of an "environment"
or a "store".  An environment is a finite map (think
"associative array") that maps identifiers to values.
Assignment statements are then functions that take an
environment as input and return a new environment as
output.

So the denotation of a statement like:

kilometers = miles * 1.62

might be something like (in pseudocode):

function f(env) = store(env, "kilometers", lookup(env,"miles") * 1.62);

where 'lookup :: (environment, identifier) -> value'
looks up the value of an identifier in an environment and
'store :: (enviroment, identifier, value) -> environment'
returns a new, modified environment.

> Is it a
> lamda function?  I am not exactly certain what a "lamda function" is,
> but from the description in the MathML book it seems that lamda function
> is appropriate.

ITYM "lambda".  A lambda expression is a way of writing
functions without having to give them a name.  For example,
in Scheme:

(define (addone x) (+ x 1))

is essentially the same as:

(define addone (lambda (x) (+ x 1)))

so:

=== ((lambda (x) (+ x 1)) 3)
=== (+ 3 1)
=== 4

--Joe English

jenglish@flightlab.com
```

 News | XML in Industry | Calendar | XML Registry Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement Copyright 2001 XML.org. This site is hosted by OASIS