2014-12-27 14 views

Odpowiedz

6

Association lists to najczęściej używane pojemniki asocjacyjne w elicie. Jest to po prostu lista kluczowych komórek konsolowych, takich jak ta ((key . value)). Możesz użyć funkcji assoc, aby uzyskać wartość odpowiadającą kluczowi i rassoc, aby uzyskać klucz o wymaganej wartości.

Elisp ma wbudowaną funkcję mapcar, która mapuje, ale AFAIK nie ma dobrego obiektu fold. Możesz emulować go za pomocą dowolnego z dostępnych urządzeń do tworzenia pętli. Jednak lepszym rozwiązaniem jest użycie cl-lib i wślizgnięcie się do ziemi CommonLisp. W szczególności, it suppliescl-mapcar i .

+0

pradhan, aby uzyskać wartość z mapy, czy można użyć assq (lub) assoc? –

+0

Zwykle "assoc" ma sens, ponieważ porównuje klucze z 'równym'. Z drugiej strony, 'assq' porównuje się z' eq', który wymaga, aby był dokładnie tym samym obiektem w pamięci. – Pradhan

7

Poza list stowarzyszenia, (których algorytmicznych złożoność jest OK dla małych stolików, ale nie za dużych), są stoły z cebulą, można skonstruować z make-hash-table i puthash, lub jeśli wolisz natychmiastowych wartości, można zapisać je jako #s(hash-table data a 1 b 2) .