J'ai cette tâche où je travaille avec un évaluateur metacircular, et je définir une nouvelle cond
comme ceci:Pourquoi est-ce que je peux définir une nouvelle cond, et Scheme ne sera pas confondu avec mon nouveau cond sur la condition conditionnelle?
(define cond 3)
En plus else
:
(define (else x) (/ x 2)
Ma question est pourquoi est-ce (ci-dessous) fonctionne réellement?
(cond ((= cond 2) 0)
(else (else 4)))
Comment savoir quel schéma cond
est mon sens et mon else
cond, sur la cond
et else
conditionnelle?
(Ne hésitez pas à modifier le titre, comme je ne suis pas sûr de savoir comment formuler ma question)
Au moins dans Racket, ce n'est définitivement pas le cas. Les deux identificateurs 'cond' et' else' sont liés aux nouvelles définitions, et les expressions lancent une exception pour essayer d'appliquer '3' en tant que procédure. –
Où cela fonctionne-t-il? Pour autant que je sache, cela ne devrait pas fonctionner dans une implémentation de Scheme. – molbdnilo