LISP는 저를 다시 한번 괴롭 힙니다 ... 목록에서 마지막 요소의 값을 가져올 수없는 이유는 무엇입니까? 나는 목록은 다음과 유사한 설정 한 :마지막 요소의 LISP 자동차?
이제(setq bar '(((1 2) 3 4 5)((6 7) 8 9 10)))
나는 4의 반환받을 :
(cdddar bar)
:
(caddar bar)
(5)에의 복귀가 하지만 5를 얻을 수는 없습니다.
(cadddar bar)
왜 이런가요? d 5의 가치는 어떻게 얻습니까?
오류 :
는; Warning: This function is undefined:
; CADDDAR
Error in KERNEL:%COERCE-TO-FUNCTION: the function CADDDAR is undefined.
[Condition of type UNDEFINED-FUNCTION]
대답은 다음과 같습니다. (car (cdddar lst)) .... 이제 왜! = cadddar인지 모르겠다. – toast
LISP 구현의 깊은 곳 : (defun cadr (x) ...) (defun cdar (x) ...) (defun caar (x) ...) (defun cddr x) ...) 등과 같이 길이가 1 ~ 4 인 'a'와 'd'의 모든 조합에 대해 적용됩니다. 스펙에는 길이가 5 인 항목이 너무 많아서 포함되지 않습니다. # cdadr 계열의 함수에는 특별한 것이 없습니다. 그것들은 유일하게 해석되지 않는다. 그들은 단지 정상적인 기능입니다. 당신은 틈새를 채우기위한 몇 가지 새로운 것들을 환영합니다 (defun ...). – jtdubs