2010-07-03 6 views
8

Je suis confus quant à la façon dont car et cdr fonctionnent sur les listes. Voici un exemple de ce que j'ai essayé:Schéma: CAR et CDR d'une liste

(define sample (read)) 
(display sample) 
(display (car sample)) 
(display (cdr sample)) 
(display (car (cadr sample))) 
(display (cdr (cdr sample))) 

En entrant la valeur '(A B C D E F), voici ce que je reçois:

'(a b c d e f) 
quote 
((a b c d e f)) 
a 
() 

Je ne suis pas en mesure de comprendre que la façon dont quote peut être le car de sample. En outre, pourquoi (cdr sample) produit ((a b c d e f))?

Langue: DrScheme - r5rs - Schéma

Répondre

17

Si vous vouliez simplement taper la liste , vous devez simplement taper . Ce que vous avez tapé, à la place, était (quote (a b c d e f)) car l'opérateur ' est l'abréviation de (quote ...).

Votre liste contient littéralement le premier élément quote et le deuxième élément . Bien sûr, lorsque vous écrivez du code source, vous avez besoin de quote pour empêcher l'exécution des expressions S.

+0

Merci. Je suis un débutant complet à Scheme. CA aide ! –