La plate-forme sur laquelle je travaille est DrScheme.Schéma d'équivalence symbolique
J'ai vu qu'une paire (a b)
[construit par (cons a b)
] est mis en œuvre dans la langue comme une procédure qui ressemble à ceci:
(define (cons a b)
(lambda(pick)
(cond ((= pick 1) a)
((= pick 2) b))))
et les sélecteurs:
(define (car x) (x 1))
(define (cdr x) (x 2))
Ensuite, il sont des listes, construites avec une expression comme (cons a (cons b (cons c (cons ...))))
.
Maintenant, ce que j'essaie de comprendre ce (dactylographié sur l'invite de DrScheme):
> (define l1 '(a b c))
> (define l2 (list 'a 'b 'c))
> l1
(a b c)
> l2
(a b c)
> (eq? l1 l2)
#f
Ok, l2 est juste une liste (qui est une procédure, ect ...) comme i » Nous avons décrit la situation, mais ... ce que est l1? Un symbole? Une séquence de personnage? Et quoi que ce soit, comment est-il mis en œuvre dans la langue? Merci!
ne devrait pas 'equal?' Retourner '#t'? – finrod
@finrod: Bien sûr, faute de frappe. – sepp2k
Donc je peux penser aux symboles Scheme comme s'ils seraient des pointeurs C? – Metz