1

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

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

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

如果我想创建一个映射,说“一个真实的”,我该怎么做?

如果我做

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

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

4

1 回答 1

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))
于 2020-01-25T07:19:44.967 回答