racket 中 `assoc` 语法的澄清

kfe*_*fem 2 scheme racket

我正在尝试assoc在球拍中使用来创建备忘录表,并希望将有序对 (x,y) 与一个值相关联,但我对语法有点不清楚。

例如我有:

[f (lambda (x y)
               (let ([ans (assoc [x y] memo)])
Run Code Online (Sandbox Code Playgroud)

但这是不正确的。

Ósc*_*pez 5

assoc过程接收您要查找的元素的“键”作为其第一个参数,并接收关联列表作为第二个参数 - 在这种情况下,关联只是一个键值对。它将返回与给定键对应的第一个关联,或者#f如果没有找到关联。例如:

(assoc 'x '((a 1) (b 2) (x 3) (c 4)))
> '(x 3)
Run Code Online (Sandbox Code Playgroud)

如果您需要使用对作为键,那很好,它将像这样工作:

(assoc (list 1 2) '(((1 2) x) ((3 4) y)))
> '((1 2) x)
Run Code Online (Sandbox Code Playgroud)