After loading the clasp-table-bug system provided below, calling (gethash-table "a") returns NIL instead of 0, but after compiling the function interactively, it behaves correctly.
cat >clasp-table-bug.asd <<EOF
(defsystem "clasp-table-bug"
:depends-on ("alexandria" "shasht")
:components ((:file "clasp-table-bug")))
EOF
cat >clasp-table-bug.lisp <<EOF
(uiop:define-package #:clasp-table-bug
(:use #:common-lisp))
(in-package #:clasp-table-bug)
;; With DEFPARAMETER, it works.
(alexandria:define-constant +table+
;; With this, it works.
#+(or)
(alexandria:plist-hash-table (list "a" 0) :test 'equal)
(shasht:read-json "{\"a\":0}")
:test 'equalp)
(defun gethash-table (name)
(gethash name +table+))
;; This returns NIL at first, until you recompile the function
#+(or)
(gethash-table "a")
;; This returns the right thing
#+(or)
(gethash "a" +table+)
EOF
After loading the clasp-table-bug system provided below, calling
(gethash-table "a")
returns NIL instead of 0, but after compiling the function interactively, it behaves correctly.The system depends on Alexandria and shasht.