이는 커먼 리스프 코드 :상호 재귀 공통의 리스프
(defun take (L)
(if (null L) nil
(cons (car L) (skip (cdr L)))))
(defun skip (L)
(if (null L) nil
(cons (car L) (take (cdr L)))))
생각이 여기 입력 목록에있는 모든 홀수 순서 요소를 줄 것이다 "걸릴"모든을 줄 것이다 "건너 뛰기"이다 입력 목록의 시퀀스 요소를 짝수로 만듭니다. 그러나 두 경우 모두 전체 목록이 반환됩니다.
이 코드의 오류는 무엇입니까? SML의 비슷한 코드가 원하는 출력을 제공하기 때문에 CL이 목록을 처리하는 방법과 관련이 있습니다. 즉 신비 없도록
fun take(lst) =
if lst = nil then nil
else hd(lst)::skip(tl(lst))
and
skip(lst) =
if lst = nil then nil
else hd(lst)::take(tl(lst));
'take'는 홀수 색인 요소를 반환하지 않지만 짝수 요소는 반환합니다. '(car L) == (nth 0 L)'을 포함하면 '0', 'take'는 '0', '2', '4'등의 원소를 반환합니다. –