This isn’t a true hash table, it’s really just a pair list, but it behaves how most imperative programmers would expect a hash table to behave. Note: it is a naive implementation, so it has a linear access time.

(define (store data key value)
	((null? data) (cons (list key value) '()))
	((equal? (caar data) key)
	 (cons (list key value) (cdr data)))
	  (cons (car data) (store (cdr data) key value)))))
(define (fetch data key)
	((null? data) '())
	((equal? (caar data) key) (cadar data))
	  (fetch (cdr data) key))))
(set! x (store '() 'hello "World"))
(set! x (store x "The rain in spain" "falls mainly on the plain"))
(set! x (store x '(a b c) 42))
(fetch x '(a b c))
(fetch x "The rain in spain")