## Non-deterministic versus parallel function application

Greetings,

Ehrhard and Regnier described a functional programming language -- the differential lambda calculus -- which added to the lambda calculus a commutative monoid structure and a differential operation. One feature of this calculus is that application is linear in the first argument.

I am studying a weaker system that adds only the commutative monoid structure, and I insist that application preserves addition in the first argument (which is implied in E.R.'s system). This means:
(g+h)*m = g*m + h*m
0*m = 0
(where * is application)

The above has the feel of non-determinism to it. Given 'g' or 'h' applied to 'm' the result is 'g' applied to 'm' or 'h' applied to 'm.'

However, in general:
g*(m+n) =/= g*m + g*n

So it is not as if 'g' makes a non-deterministic choice of 'm' or 'n.' While some have called this non-determinism, others have called parallelism.

Any thoughts on what the correct word describing such an application might be?

## STEPS 2011 Progress Report (personal computing in 20kLOC)

The recent mention of the Nile programming language reminded me to post about the STEPS 2011 Progress Report.
The overall goal of STEPS is to make a working model of as much personal computing phenomena and user experience as possible in a very small number of lines of code (and using only our code). Our total lines of codeâ€‘count target for the entire system â€œfrom endâ€‘user down to the metalâ€ is 20,000, whichâ€”if we can do a lot within this limitâ€”we think will be a very useful model and substantiate one part of our thesis: that systems which use millions to hundreds of millions of lines of code to do comparable things are much larger than they need to be.
...
Our general approach is to pick an area whose parts seem to be relatedâ€”for example: 2.5D antiâ€‘aliased alphaed computer graphicsâ€”try to find the mathematical relations that cover the desired phenomena, design a â€œproblem oriented languageâ€ (POL) that is a â€œrunnable mathâ€ version of the mathematics, implement that language, then use it to write the program code for the target area.
...
STEPS is now to the point where it is more fun to use and demonstrate than to talk and write about. Quite a bit of the original proposal is now working well enough to give all our presentations and write this entire report for the NSF and Viewpoints Research Institute websites. In the STEPS system, this document is live: the examples are actually runnable demos; the code shown is changeable and testable, etc.

A large part of the work over the last year has gone into making the test versions more real and usable.

Previous discussion of this project on LtU includes: