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