У меня есть следующий тупой тестовый код:
#lang racket
(define vars '('g1 'g2 'g3 'g1))
(define addrs '(123 456 789 012))
(define immhs (make-immutable-hasheq empty))
(define immhs* (for/fold ([imhs immhs]) ([var (in-list vars)] [addr (in-list addrs) ]) (hash-set imhs var addr )))
immhs*
(hash-ref immhs* 'g1)
Вывод:
'#hasheq(('g1 . 123) ('g2 . 456) ('g3 . 789) ('g1 . 12))
hash-ref: no value found for key: 'g1
Почему hash-ref
не может ссылаться на 'g1
?(он также не будет работать на 'g2
и т. д.) Затем я использую (hash-keys immhs*)
, он возвращает '('g1 'g2 'g3 'g1)
, где есть 'g1
;и я использую далее (car (hash-keys immhs*))
, он возвращает ''g1
;тогда вопрос в том, почему есть две цитаты '
раньше?