Próbuję utworzyć typ "słownikowy" - tj. Tablicę skrótów z ciągiem znaków jako kluczem. Czy to możliwe czy mądre w Lisp?Używanie obiektu typu string jako klucza mieszania w Common Lisp
Zauważyłem, że to działa zgodnie z oczekiwaniami:
> (setq table (make-hash-table))
#<HASH-TABLE :TEST EQL size 0/60 #x91AFA46>
> (setf (gethash 1 table) "one")
"one"
> (gethash 1 table)
"one"
Jednak po nie:
> (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, CLHS ma to tylko jako przykład. Jeśli nie jest to oczywiste, pomocna może być analiza dokumentacji: http://www.lispworks.com/documentation/HyperSpec/Body/f_mk_has.htm –
Zamiast tego użyj EQUALP, jeśli chcesz uwzględniać wielkość liter w haśle ciągów. – skypher
Dzięki ludziom. Sprawdziłem dokumenty, ale tak naprawdę nie zwracałem wystarczającej uwagi na wiele funkcji równości dla tej części, aby pobiegać cokolwiek ze mną. Byłem pod (niepoprawnym) założeniem, że "powinno po prostu robić to, czego potrzebuję". – Justicle