我尝试在球拍中使用assoc
创建一个备忘表,并希望将有序对(x,y)与一个值相关联,但我对语法有点不清楚。澄清球拍中的`assoc`语法
比如我有:
[f (lambda (x y)
(let ([ans (assoc [x y] memo)])
但它是不正确的。
我尝试在球拍中使用assoc
创建一个备忘表,并希望将有序对(x,y)与一个值相关联,但我对语法有点不清楚。澄清球拍中的`assoc`语法
比如我有:
[f (lambda (x y)
(let ([ans (assoc [x y] memo)])
但它是不正确的。
的assoc
程序接收的第一个参数的“钥匙”,你要寻找的元素,并作为第二个参数关联的列表 - 在这种情况下,一个协会只是一个键值对。它将返回与给定密钥对应的第一个关联,如果没有找到,则返回#f
。例如:
(assoc 'x '((a 1) (b 2) (x 3) (c 4)))
> '(x 3)
如果您需要使用双钥匙,这很好,它会像这样:
(assoc (list 1 2) '(((1 2) x) ((3 4) y)))
> '((1 2) x)
要增加,在专业级的球拍,你也可以使用hash tables来建立一个查找表。
(define table (make-hash))
(hash-set! table 'password "location-of-treasure")
(printf "Where is the treasure? ~s\n" (hash-ref table 'password))
当然,如果你打算做的是用一对值作为关联的“关键”部分,那很好。这工作:'(assoc'(1 2)'(((1 2)x)((3 4)y)))'=>''((1 2)x)' –