2009-12-07 7 views
1

J'essaie d'apprendre Lisp et comme je fais mes premiers pas je me suis coincé. Comment puis-je obtenir sous forme d'élément c liste suivante: (a b (c.d))De retour d'un élément d'une liste

J'ai essayé: (caar (last '(a b (c.d)))) mais il retourne c.d et non seulement c
Cela fonctionne s'il y a des espaces entre c,. , D-à-dire: (caar (last '(a b (c . d))))

Le problème que je suis en train de la liste a décide spécifiée sans espaces. Est-ce que cela peut être fait ou c'est une faute de frappe dans l'exercice?

Merci.

LE: uisng GNU Clisp http://clisp.cons.org/ Est-il possible que la question elle est causée par la mise en œuvre?

+3

Sonne comme une faute de frappe. Quel Lisp utilisez-vous? – CBFraser

+0

En quoi cette question est-elle différente de l'autre que vous avez déjà publiée? –

+0

Je suis vraiment nouveau à lisp, première leçon et j'essaie juste de comprendre donc la question me semblait différente: - ?? désolé si c'était similaire – daniels

Répondre

4

Votre code est bon, il est une faute de frappe (ou peut-être une police vraiment mauvais?) Dans l'exercice. En Lisp (Common Lisp et Scheme sont les deux que j'ai testés tout à l'heure, je ne connais pas Clojure), [presque] les seules divisions entre les symboles sont les espaces et les parenthèses. Même si . est utilisé comme syntaxe littérale pour cons, si vous tapez '(c.d), vous obtenez un symbole dans une liste, et non deux symboles dans une cellule.

Par exemple,

'c.d  ; is one symbol 
'(c . d) ; is two symbols in a single cons cell 
'((c)d) ; is two symbols, the first in a nested list 

Edit: Depuis que vous utilisez Common Lisp, voici the list of relevant characters et the reader algorithm. En résumé, ( et ) sont caractères de terminaison, alors que . n'est pas. CLisp fonctionne selon la spécification Common Lisp.

2

Je semble que vous avez une faute de frappe dans l'exercice.

La (c. D) est une cellule cons représenté avec la notation paire pointillée.

Voici un lien qui a plus sur ce http://c2.com/cgi/wiki?DottedPairNotation

Questions connexes