在球拍中澄清`assoc`语法

时间:2012-10-26 01:36:03

标签: scheme racket

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

例如我有:

[f (lambda (x y)
               (let ([ans (assoc [x y] memo)])

但这不正确。

2 个答案:

答案 0 :(得分:3)

要添加,在专业级Racket中,您还可以使用hash tables来构建查找表。

 (define table (make-hash))
 (hash-set! table 'password "location-of-treasure")
 (printf "Where is the treasure?  ~s\n" (hash-ref table 'password))

答案 1 :(得分:2)

assoc过程接收第一个参数作为您要查找的元素的“键”,并作为第二个参数接收一个关联列表 - 在此上下文中, association 只是一个键值对。它将返回与给定键对应的第一个关联,如果没有找到则返回#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)