Как создать отображение словаря в пользовательском словаре в Racket?
Я определил словарь как это суждение в грамматике BNF:
d ::= () (any boolean) (list cons d d)
Это означает, что словари пусты или (любое логическое значение) или список таких пар.
Если я хочу создать отображение, скажите "истинно", как мне это сделать?
Если я сделаю
(define-values (d) (values '(a true)))
он просто создает новый d, а не соответствует предыдущему определению d.
1 ответ
Решение
IIUC, вы хотите, чтобы ваш словарь был просто списком ассоциаций:
(define d (list (cons 'x #t) (cons 'y #f)))
В зависимости от того, как вы собираетесь реализовать операцию добавления, вы можете либо set!
новое отображение:
(set! d (cons (cons 'z #t) d))
Или просто создайте новый список (желательно):
(define d (list (cons 'z #t) (cons 'x #t) (cons 'y #f)))
В любом случае, словарь d
будет иметь новое отображение в ожидаемом формате:
'((z . #t) (x . #t) (y . #f))