Как создать отображение словаря в пользовательском словаре в 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))
Другие вопросы по тегам