문제

추가 요소의 머리 목록(연 목록)를 간단하다:

> (cons '(ding . 53) '((foo . 42) (bar . 27)))
((ding . 53) (foo . 42) (bar . 27))

추가 꼬리의 목록은 조금 더 까다롭지만.후 일부는 실험,나이:

> (define (alist-append alist pair) `(,@alist ,pair))
> (alist-append '((foo . 42) (bar . 27)) '(ding . 53))
'((foo . 42) (bar . 27) (ding . 53))

그러나,그것은 나에게는 이것에 유용한 솔루션입니다.그래서 이것은 어떻게 일반적으로 수행 방식?또는 이것이 사실이다.

도움이 되었습니까?

해결책

를 추가하지 않 a-list.당신은 단점에는 목록입니다.

목록 논리적으로 집합니다.당신에 대해 걱정하지 않기 위해 요소의 설정합니다.당신이 걱정하는 모든 존재의 특별한 요소입니다.의 경우에 목록,모든 당신에 대해 관심이 있는지 여부를 존재하는 협회를 위해 주어진 태그(즉,한 켤레는 누구의 차량은 지정된 값),그리고,해당 연결에 연결된 값을(즉,이 구현에서 지휘관의 쌍).

다른 팁

Common Lisp 라는 함수를 정의 ACONS 에 대한 정확하게 이 목적으로,어디서

(acons key value alist)

에 해당합니다:

(cons (cons key value) alist)

이것은 강력하게 제안하는 단순히 consing 에는 목록은 숙.참고 이 두 가지를 의미한다:

  1. 으로 검색하는 일반적으로 수행 앞쪽에서 뒤쪽에,최근에 추가되는 연결을 우선하고 있습니다.이를 위해 사용될 수 있는 순진한 구현의 어휘하고 역동적인 환경입니다.
  2. 동 consing 목록에 O(1)추가적 O(n)n 길이의 목록,그래서 유용한 사용은 최고의 성능을 위해 뿐만 아니라 문체하는 것이 바람직하다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top