Vorige Inhoud Volgende
_________________________________________________________________
LISP 860409 (c) 1986 by ORD-GROUP 41
informatie die bij de atomen is opgeslagen om de bereke-
ningen uit te voeren. De evaluator is ook als functie voor
de gebruiker beschikbaar (dat is EVAL).
- De I/O functies. Dit is de verzameling van alle routines
die de I/O verzorgen. Hierin zitten routines die de toet-
senbord, beeldscherm, printer en disk verzorgen, en routi-
nes die de conversie van S-expressies van en naar de
interne representatie hiervan doen.
- De interne functies. Deze doen al het interne werk zoals
garbage collection en het manipuleren van lijsten.
- Het datageheugen. Dit is een stuk geheugen dat wordt
gebruikt om alle S-expressies op te slaan. Hier staan alle
definities van functies en constantes, tussenuitkomsten
van berekeningen en dergelijke zaken in.
De evaluator is een A-list evaluator. Dat houdt in dat de
functieparameters worden bijgehouden in de vorm van een lijst,
genaamd de A-list. Deze lijst bestaat bij de meeste interpreters
uit paren (atoom.binding) die de waarde van een atoom in een
bepaalde omgeving aangeven. Dat komt in deze interpreter ook
voor, maar het binden van meer dan twee variabelen wordt tegelijk
gedaan door (atomenlijst.bindingenlijst) op de A-list te zetten.
Dit geeft een kleine ruimtebesparing.
Een atoom wordt opgeslagen als een paar (binding.naam) met een
flag die aangeeft dat het een atoom is. De naam van het atoom is
een structuur die van buitenaf niet bekeken kan worden, en de
binding is een paar (type.waarde), dat bekeken kan worden door de
CAR van het atoom te nemen. De type's zijn APVAL, EXPR, FEXPR,
SUBR en FSUBR. De waarde die bij een van de eerste drie typen
hoort is een LISP expressie, en de waarde bij de SUBR en FSUBR is
een pointer naar een subroutine in machinecode (dus niet afdruk-
baar). Met de functie DEF kan onderzocht worden wat voor type (de
binding van) een atoom is.
Mogelijkheden
Globaal overzicht van de mogelijkheden:
- Rekencapaciteit: getallen van -16777215 tot +16777215.
- Lengte van namen: onbeperkt. Dit hebben wij gedaan omdat
iedere bovengrens in principe te laag is. Als wij het over
zou doen, zouden we de getallen ook onbegrensd maken.
- Er kan een printer worden aangestuurd. Om de zo voor LISP
kenmerkende onleesbaarheid wat te verzachten, is er een
verfraaiingsfunctie ingebouwd die voor de printer gebruikt
kan worden.
- Het is mogelijk expressies op disk te zetten en er weer af
te halen. Hierdoor is het mogelijk programma's op een
comfortabele manier met een tekstverwerker te schrijven.
- Er zijn vele (ongeveer 100) standaardfuncties ingebouwd,
waarvan ongeveer de helft in machinecode is gecodeerd. Dit
vergroot de snelheid van de meeste programma's tot een
relatief hoog niveau.
- Er zijn tegenwoordig steeds meer mensen die alleen met
functioneel LISP willen werken. Dat is mogelijk bij deze
interpreter. Ook de niet-functionele kant van LISP is
_________________________________________________________________
Vorige Inhoud Volgende