Comment pourrais-je écrire mon propre eqv? ou égal? dans le schéma? Aurais-je juste faire un cond et chercher le symbole ?, numéro ?, etc et retourner le # t ou #f approprié?Custom eqv?/Equal? fonctionner dans le schéma
0
A
Répondre
5
Comme par R5RS, les spécifications minimales pour une mise en œuvre de eqv?
(lorsqu'il est passé deux arguments obj1
et obj2
) pour évaluer à #t
sont:
obj1
etobj2
sont tous les deux ou les deux#t
#f
. (comment deux littéraux booléens évaluent la même valeur dépend de l'implémentation).obj1
etobj2
sont tous deux des symboles et
(string=? (symbol->string obj1) (symbol->string obj2)) =) => #t
obj1
etobj2
sont tous deux des nombres, sont numériquement égales (=
), et sont soit à la fois exact ou inexact à la fois.obj1
etobj2
sont les deux caractères et sont le même caractère selon la procédurechar=?
.- les deux
obj1
etobj2
sont la liste vide. obj1
etobj2
sont des paires, des vecteurs ou des chaînes qui indiquent les mêmes emplacements dans le magasin (voir la section 3.4 de R5RS).obj1
etobj2
sont des procédures dont les balises emplacement sont égaux (A expressionlambda
est conceptuellement étiqueté avec un emplacement de stockage. Cela signifie varie entre les implémentations Scheme. Voir également la section 4.1.4 de r5rs).
equal?
pourrait être mis en œuvre en termes de eqv?
qu'il compare récursive le contenu des paires, des vecteurs et des chaînes, l'application eqv?
sur d'autres objets tels que des chiffres et des symboles.
Merci. C'est exactement ce que je cherchais. –