我将字典定义为BNF语法中的判断:
d ::= () (any boolean) (list cons d d)这意味着,字典是空的,或者(任何布尔值)或这样的对的列表。
如果我想创建一个映射,比如"a true",我该怎么做呢?
如果我这样做了
(define-values (d) (values '(a true)))它只是创建了一个新的d,并不映射到之前定义的判断d。
发布于 2020-01-25 15:19:45
IIUC您希望您的字典只是一个关联列表:
(define d (list (cons 'x #t) (cons 'y #f)))根据您将如何实现add操作,您可以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))https://stackoverflow.com/questions/59906387
复制相似问题