如何在Racket中的自定义词典上创建词典映射?

时间:2020-01-25 04:41:50

标签: list dictionary racket bnf redex

我已将字典定义为BNF语法中的此判断:

O(number of items * maximum weight)

意思是,字典为空,或(任何布尔值)或此类对的列表。

如果要创建映射,请说“是”,该怎么办?

如果我愿意

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

它只是创建一个新的d,不映射到先前定义的d。

1 个答案:

答案 0 :(得分: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))