プログラム中でハッシュを定義する - lisp-cookbook-ja/common-lisp GitHub Wiki

ハッシュ ライブラリ fare-utils alexandria arnesi

プログラム中でハッシュを定義する

以下のようにするとプログラム中でハッシュを定義することができます。 検索用のテスト関数も:testで指定することが可能です。(デフォルトでは、eql)

(let ((ht (make-hash-table :test #'equal)))
  (setf (gethash "apple" ht) 150
        (gethash "banana" ht) 300
        (gethash "lemon" ht) 300))

見ての通りやや面倒なので、便利にするライブラリも様々提供されています。

;; alexandria
(alexandria:plist-hash-table '("apple" 150
                               "banana" 300
                               "lemon" 300)
                             :test #'equal)

;; fare-utils
(fare-utils:alist->hash-table '(("apple" 150)
                                ("banana" 300)
                                ("lemon" 300))
                              :test #'equal)

;; arnesi
(arnesi:build-hash-table (list :test #'equal)
                         '(("apple" 150)
                           ("banana" 300)
                           ("lemon" 300)))