2013-03-27 4 views
3

Emacs Lisp에서 변수의 점으로 된 쌍을 만들고 싶습니다. 하지만 내가 할 수있는 유일한 방법은 정말 다루기 힘들 것 같습니다. 간단한 예를 들어 :Emacs 점 쌍형 구문 개선

(let ((width (calculate-width) 
     (height (calculate-height)) 
    `(,width . ,height)) 

이 역 인용 부호, 이중 인용을 끝내 구문은 나에게 냄새,하지만 난 내 Google - Fu는 나를 실패 깔끔한 방법 등을 찾을 수 없습니다.

값이 변수 인 경우 점으로 구분 된 쌍을 구성하는 더 좋은 방법이 있습니까?

(설명의 경우, 점선 쌍이어야 직선 목록을하지 않습니다.).

답변

8

당신은 사용할 수 cons :

(let ((width (calculate-width)) 
     (height (calculate-height)) 
    (cons width height)) 
나는 그것을 어려운 방법 일을 알고 있었다
+1

, 그러나 나는 단점이 두 번째 논쟁으로 비 목록을 받아 들일 것임을 알지 못했다. 그게 완벽 해. 고마워! –

+3

@KrisJenkins 단점 셀은 첫 번째 구성 요소와 두 번째 구성 요소에 모두 저장할 수 있습니다. 리스트는 단순히 단락 셀의 특수한 경우이며, 두 번째 요소가 또 다른 단점 셀이고, 두 번째 요소가 또 다른 단점 셀인 등 단락 셀입니다. ''(foo bar baz)'는''(foo. (bar. (baz. nil)))와 매우 동일합니다. 이 통찰력은'cons','car','cdr'와 다른 모든 Lisp리스트 함수의 의미를 이해하는 데있어 기본입니다. – lunaryorn

+1

감사합니다. Clojure가 첫 번째 Lisp 이었기 때문에 두 번째 인수가 시퀀스 여야한다는 죄수의 구현에서 몇 가지 기대를했습니다. –