J'essaie de créer un type "dictionnaire", c'est-à-dire une table de hachage avec une chaîne comme clé. Est-ce possible ou sage en Lisp?Utilisation d'un objet string en tant que clé de hachage dans Common Lisp
je remarquai que cela fonctionne comme prévu:
> (setq table (make-hash-table))
#<HASH-TABLE :TEST EQL size 0/60 #x91AFA46>
> (setf (gethash 1 table) "one")
"one"
> (gethash 1 table)
"one"
Cependant, ce qui suit n'a pas:
> (setq table (make-hash-table))
#<HASH-TABLE :TEST EQL size 0/60 #x91AFA0E>
> table
#<HASH-TABLE :TEST EQL size 0/60 #x91AFA0E>
> (setf (gethash "one" table) 1)
1
> (gethash "one" table)
NIL
NIL
Justicle, le CLHS a juste ceci à titre d'exemple. Si ce n'est pas évident, regarder la documentation peut aider: http://www.lispworks.com/documentation/HyperSpec/Body/f_mk_has.htm –
Utilisez EQUALP à la place si vous voulez un hachage de chaîne insensible à la casse. – skypher
Merci les gens. J'avais vérifié les docs, mais je n'avais pas vraiment prêté suffisamment d'attention aux nombreuses fonctions d'égalité pour cette partie particulière pour faire n'importe quoi avec moi. J'étais sous l'hypothèse (incorrecte) que "cela devrait faire ce dont j'ai besoin". – Justicle