2016-12-24 12 views

답변

1

eval을 제거하십시오. 그냥 `(lambda() ,x)입니다. 리스트 VAL-Xx 변수의 값이다(lambda() VAL-X)를 반환

. 그리고 람다리스트는 Emacs에 의해 함수로 해석된다.

+0

'x'가'(1 2)'와 같은 값을 갖는다면 이것은 행복하게 트림됩니다. – Stefan

+1

@Stefan : 가능한 한 OP에 가까이 다가려고 노력했습니다. 그리고 이것은'(람다() (1 2))'를 반환합니다 - 트림이 없습니다. 호출 할 때 * 함수가 트림하는 것을 의미하면 다른 문제입니다 (OP에도 적용됩니다). 'x'가 에러없이 평가 될 수없는 어떤 것이라면''x''가 보통 적절합니다. – Drew

1

더 나은 솔루션은 파일의 시작 부분에

;; -*- lexical-binding:t -*- 

를 추가하는 것입니다. 이 작업을 마치면, (lambda() x)을 쓰는 것만으로 끝난다. Emacs는 그 람다 주변의 값으로부터 x을 바꾼다 (즉, 적절한 닫힘을 만들 것이다).

+0

문제는 항상 그렇게 할 수 없다는 것입니다. 예를 들어, 어휘 바인딩을 사용하지 않는 라이브러리를 확장한다고 가정 해보십시오. –

+0

파일을'lexical-binding'으로 변환하는 것은 항상 쉽고, 보통 쉽습니다. – Stefan