(defun $hash_table_okl ()
  (make-hash-table :test #'equal))

(defun $get_hash_okl (elt ht &optional default)
  (unless (hash-table-p ht)
    ($error "Second argument to `get_hash_okl' is not a hash table!"))
  (gethash elt ht default))

(defun $set_hash_okl (elt ht value)
  (unless (hash-table-p ht)
    ($error "Second argument to `set_hash_okl' is not a hash table!"))
  (setf (gethash elt ht) value)
  value)

(defun $hash_table_data_okl (ht)
  (unless (hash-table-p ht)
    ($error "First argument to `hash_table_data_okl' is not a hash table!"))
  (let (res)
    (maphash
     (lambda (key val)
       (setq res (cons `((marrow simp) ,key ,val) res)))
     ht)
    (cons '(mlist simp) res)))

(defun $del_hash_okl (elt ht)
  (unless (hash-table-p ht)
    ($error "Second argument to `del_hash_okl' is not a hash table!"))
  (remhash elt ht))

