2010-08-12 5 views
2

Je suis en œuvre un interprète pour le LISP défini dans,manuel de mise en œuvre Micro LISP

http://www.scribd.com/vacuum?url=http://www.ee.ryerson.ca/~elf/pub/misc/micromanualLISP.pdf

Mon problème est le stipule le papier qu'une liste est

4. (LIST e1 ... en) is defined for each n to be 
    (CONS e1 (CONS ... (CONS en NIL))). 

Alors, quand une lecture en une liste de l'utilisateur telle que,

(QUOTE (B C D (E F))) 

en utilisant la structure ci-dessus devient,

(QUOTE B C D E F) 

Il n'y a aucun moyen de différencier les listes imbriquées tout cela devient une chaîne de cons.

Ai-je oublié quelque chose ici?

Répondre

5

(QUOTE (B C D (E F))) est

(CONS B (CONS C (CONS D (CONS (CONS E (CONS F NIL)) NIL)))) 

(QUOTE (B C D E F)) est

(CONS B (CONS C (CONS D (CONS E (CONS F NIL)) NIL))) 

Ou pour une autre façon:
(LIST D (LIST E F)) = (CONS D (CONS (LIST E F) NIL))
(LIST D E F) = (CONS D (LIST E F))

1
(QUOTE (B C D (E F))) 
= (... (CONS (E F) NIL))). 
= (... (CONS (CONS E (CONS F NIL)) NIL))). 

qui est différent de

(...(CONS D (CONS E (CONS F NIL))). 
0
(QUOTE (B C D (E F))) = (LIST B C D (LIST E F))