의 기호 평등 다음 함수 : REPL에서CL의 웹 응용 프로그램
(defun check-for-arrow (x)
(format t "**~s**~s**~s**~s**"
(length (string x))
x
(eq x '->)
(and (eq (elt (string x) 0) #\-)
(eq (elt (string x) 1) #\>))) ; for debug
(eq x '->))
을 불러와 :
(check-for-arrow '->)
인쇄, 추적과 :
0> Calling (CHECK-FOR-ARROW ->)
**2**->**T**T**
<0 CHECK-FOR-ARROW returned T
대신에, Hunchentoot 웹 응용 프로그램 내에서 호출 될 때 양식에서 읽은 데이터를 '->'기호를 통해 호출하면 다음과 같이 인쇄됩니다.
0> Calling (NORMALIZER::CHECK-FOR-ARROW ->)
**2**->**NIL**T**
<0 NORMALIZER::CHECK-FOR-ARROW returned NIL
Lisp는 Clozure Common Lisp입니다.
다른 방법으로 기호를 사용할 수 있습니까? 심볼에 'eq'를 사용하거나 문자열에서 화살표를 변환하고 문자열이 동일한 지 확인해야합니까?
감사합니다.
주 : '->'와 같은 것은 기호와 원자입니다. 원자라는 단어는 단지 기호와 다른 의미를 지닙니다. 단점이 아닌 모든 것은 원자입니다. 따라서 숫자 '3', 문자열' "foo"', 벡터'# (1 2 3)', ...은 모두 원자이지만 - 기호가 아닙니다. –