Evaluaatiotasot

Korvaa s. 70 alaosan

Yleensä Maple suorittaa symboleilleen täysevaluaation, josta oli puhetta mm. sivulla 56. Selitämme vielä täysevaluaation (full evaluation) aiempaa perusteellisemmin. Katsotaanpa edellä olleita komentoja
  > x := y ; y := z; z := 5;
Jos nyt kirjoitamme syöteriville x; niin Maple:n evaluaattori selvittää x:n arvon, toteaa sen olevan y. Sitten se ottaa tutkittavakseen y:n ja toteaa sen arvon olevan z, jonka arvo puolestaan on 5. Nyt evaluaattori on päässyt polkunsa päähän ja palauttaa tulokseksi 5. Tällä hetkellä siis x:n arvo on 5, koska x:llä on kaiken aikaa arvonaan y:n arvon arvo. Jos vapautamme muuttujat z ja y, niin x:n arvo ``perääntyy'' takaisin.
> z:='z':
> x;
                                       z
> y:='y':
> x;
                                       y
Jos sensijaan teemme sijoitukset käänteisessä järjestyksessä, saamme
>  z := 5; y := z;x := y;       
                                    z := 5
                                    y := 5
                                    x := 5
> y:='y';z:='z':x;
                                    y := y
                                       5

> y:='y';z:='z';x;
                                    y := y
                                    z := z
                                       5
Ensimmäisen rivin kolmas komento antoi x:lle arvoksi y:n arvon, joka oli sama kuin z:n, arvo =5. Tällöin x:n arvona on todellakin 5, eikä siinä ole enää jäljellä minkäänlaista viitettä muuttujiin y tai z.

(Puhe siitä, että x:n arvo "näyttää muuttuvan", mutta ei oikeasti muutu, on kyllä turhanaikaista hienostelua, eikä johda mihinkään hyödyllisiin aatoksiin. Unohdetaan se!)