'
f(a+b[i]-g(c));Ensin lasketaan kutsun ympäristössä a+b[i]-g(c) ja välitetään saatu arvo kutsutulle aliohjelmalle.
Näin ei kuitenkaan tarvitse olla! Eikä aina ole. Argumentit voidaan evaluoida myös vasta silloin, kun muodolliseen parametriin viitataan - ja jos ei viitata, voidaan olla kokonaan evaluomatta.
"Tavallista" tapaa, evaluointia ennen aliohjelman käynnistämistä, kutsutaan englanniksi nimellä applicative-order evaluation, sitä toista nimellä normal-order evaluation.
Esimerkkejä jälkimmäisestä:
#define DIVIDES(a,n) (!((n) % (a))) /* true iff n has zero remainder modulo a */(Ja paras sitten muistaa laittaa nuo kaikki sulkeet, tai... ;-)
f(a+b[i]-g(c));Kun (ja jos) aliohjelma f viittaa todelliseen parametriinsa, lauseke a+b[i]-g(c) käydään todellakin laskemassa kutsuneen (ali-)ohjelman viittausympäristössä! Tunnukset a, b, i, g ja c ymmärretään siis täysin kutsujan ympäristössä. Ja esimerkikisi g:n mahdolliset sivuvaikutukset tehdään kutsujan ympäristössä. (Mitäs tämä tarkoittaa aktivaatiotietuepinon käsittelyn kannalta!?) (Asiaan palataan luvussa 8.)