(x < y) ∧ (b = c) .... (x < y) && (b == c)
(p1 → e1, ... pn → en) .... return (p1 ? e1
: p2 ? e1
: ...
pn ? en
: NULL)
Wow, so much less cryptic!Hope this helps.
Everything else is very simple pseudocode albeit with use of a few Greek letters or symbols, so I could hardly call this inaccessible to somebody who has been programming for 30 years...
are accessible with common knowledge to someone with programming experience but without a background in mathematics?
def r(some_params):
if predicate_11(some_params): return s(f1(some_params))
else: return s(f2(some_params))
def s(some_params):
if predicate_21(some_params): return r(some_params)
else: return t(f3(some_params))
def t(some_params):
if predicate_31(some_params): return f4(some_params)
elseif predicate_23(some_params): return r(some_params)
else: return t(f3(some_params))
I've replaced pi with `predicate` and xi with `some_params`.The second one, structurally, can also be understood without knowing math but what's actually executed does require some familiarity with math. It's, like above, using a conditional expression described earlier and the lambda notation for defining anonymous functions (to be clear, he also uses it as an example of something that's not quite valid since the name `sqrt` will not be bound inside the lambda, but we can approximate it, invalid multi-line Python lambda incoming):
sqrt = lambda a, x, epsilon: if abs(x*x - a) < epsilon: return x # that is, we've found a close-enough approximation
else: return sqrt(a, (x+a/x)/2, epsilon) # get a closer approximation to the square root
The previous line of code in that section (no lambda) is equivalent to a Python def: def sqrt(a,x,epsilon):
if abs(x*x-a) < epsilon: return x
else: return sqrt(a, (x+a/x)/2, epsilon)
(NB: All the extra `return`s have to be added because Python is not an expression-oriented language. The language McCarthy is describing is so each expression produces a new value without the need for explicit returns.)Both of those are there to motivate the introduction of the label form at the bottom of that section.