我嘗試在球拍中使用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)' –