Как создать словарь сопоставления на пользовательский словарь в Racket? - PullRequest
1 голос
/ 25 января 2020

Я определил словарь как это суждение в грамматике BNF:

d ::= () (any boolean) (list cons d d)

Значение, словари пусты, или (любой логический) или список таких пар.

Если я хочу чтобы создать сопоставление, скажите «истинно», как мне это сделать?

Если я сделаю

(define-values (d) (values '(a true)))

, он просто создаст новый d, не сопоставляя его с предыдущим суждением d определены.

1 Ответ

1 голос
/ 25 января 2020

IIU C вы хотите, чтобы ваш словарь был просто списком ассоциаций:

(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))
...