2

ラケットでメモテーブルを作成しようとしていますassocが、順序対(x、y)を値に関連付けたいのですが、構文が少しわかりません。

たとえば、私は持っています:

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

しかし、それは正しくありません。

4

2 に答える 2

4

assocプロシージャは、最初のパラメータとして、探している要素への「キー」を受け取り、2番目のパラメータとして、関連付けのリストを受け取ります。このコンテキストでは、関連付けは単なるキーと値のペアです。指定されたキーに対応する最初の関連付けを返すか#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)
于 2012-10-26T01:39:08.753 に答える
3

さらに、プロレベルのラケットでは、ハッシュテーブルを使用してルックアップテーブルを作成することもできます。

 (define table (make-hash))
 (hash-set! table 'password "location-of-treasure")
 (printf "Where is the treasure?  ~s\n" (hash-ref table 'password))
于 2012-10-26T20:24:48.983 に答える