2013-04-12 3 views
0

작은 따옴표 (')를 사용하여 목록 이름을 입력하고 있지만 몇 가지 작업을 수행 한 후에이를 원자로 취급하지 않고 실제로 평가하려고합니다. 내가 SEP라는 기능이LISP : Force evaluation

(setf LT '(A B C)) 

:

그래서 예를 들어, 단지 단순 위해, 나는 다음과 같은 목록을 가지고있다. 함수를 실행하려면 (SEP 'LT)으로 실행해야합니다. 보시다시피, LISP는 LT을 내가 원하는 것이 아닌 목록으로 평가하는 대신 원자로 해석 할 것입니다.

기본적으로 (SEP 'LT)은 실제로는 (SEP '(A B C))이되고 싶습니다.

입력 형식을 변경할 수 없습니다. 어떤 도움을 주시면 감사하겠습니다. 감사! LTdefvar 정의 최상위 변수 인 경우

답변

2

, 다음과 같은 symbol-value와 그 값을 얻을 수 있습니다 :

* (symbol-value 'lt) 
(A B C) 

* (defun sep (name) 
    (assert (symbolp name)) 
    (let ((value (symbol-value name))) 
     ... 
+1

감사합니다! 이것은 내가 찾고 있었던 바로 그 것이다. (btw, 나는'symbolp'가'symbol-p'가 아니라)' – pauliwago

+0

'(assert (symbolp name))'->'(check-type name symbol)'이라고 생각합니다. – Kaz