난 당신이 개인적으로 반전을 과도하게 일을하는지 생각합니다.
우리가 원하는 것은 cdr x
과 car x
이 끝에 붙어있는 목록입니다. 여기에 하나의 트릭은 car x
가리스트되지 않는 것입니다, 그래서 우리는 그것을 추가하기 전에 목록에 변환 할 : 당신이 기본에 충실하고 싶었다면
(define (first-to-last x) (append (cdr x) (list (car x))))
이 cons
은 넣어 정말 기본적인 방법입니다 것들을 함께 목록으로 만들었지 만 조금 더 많은 작업이 필요합니다. 기본적으로 append
과 실질적으로 동일한 것을 정의하면 결국 cons
이라고합니다. append
이 이미 존재한다는 점을 감안할 때 매우 쉽지만 무의미합니다.
편집 : 나는 당신이 어떤 이유로 또는 다른위한 reverse
을 사용하려는 경우, 당신은 같은 것을 할 수있을 것 같아요 :
(define (first-to-last x) (reverse (cons (car x) (reverse (cdr x)))))
그것은 조금 더 그리고 같은 종류의 서투른 나 파업을하지만,로한다고 어쨌든 작동합니다.
(reverse (cdr (reverse (cdr (reverse b)))))는 목록에서 첫 번째 요소와 마지막 요소를 제거 할 수 있지만 요소를 올바른 위치로 이동하는 방법을 알지 못합니다. . – user1023900