foldr에 대한 단일 호출로만 목록을 역전시키는 함수를 어떻게 정의 할 수 있습니까?foldr을 사용하여 목록 반전
그것은이
(define (rev l)
(foldr ___________________________
이 같아야은 교사가 -.-
foldr에 대한 단일 호출로만 목록을 역전시키는 함수를 어떻게 정의 할 수 있습니까?foldr을 사용하여 목록 반전
그것은이
(define (rev l)
(foldr ___________________________
이 같아야은 교사가 -.-
당신이 documentation 처음 읽는다면 그것은 슈퍼 쉽게에 대한 답변을 제공하지 않기로 결정하는 연습 시험 문제이며, . (순서대로) 매개 변수로 수신 호출 할
foldr
은 세 개의 매개 변수를받는 것을 발견 할 것이다을 처리하기 위해 초기 값
유일한 까다로운 부분은 절차를 정의하는 것입니다. 지금까지 요소와 누적 된 응답을받은 것을 감안할 때, 어떻게 그 요소를 누적 기의 끝에 넣을 수 있습니까? 힌트 :
(lambda (element accumulator) <???>)
추가 힌트 : 문서를 읽고, 당신이 이해할 수있을에서 foldr
프로세스 입력 목록이 왼쪽에서 오른쪽이 채우기에 누락 된 부분, 절차의 일반적인 구조입니다. 이를 확인하려면 cons
을 첫 번째 매개 변수로 foldr
에 전달하면 입력 목록을있는 그대로 복사합니다. 이 목록을 오른쪽에서 왼쪽으로 처리하는 것으로 보이는 foldl
과 대조하십시오. cons
을 첫 번째 매개 변수로 foldl
에 전달하면 새로 생성 된 목록이 반전됩니다.
왼쪽과 오른쪽이 섞여 있다고 생각합니다. 'foldl'을 사용하여 reverse를 구현하는 것은 간단하지만'foldr'로 구현하는 것은 쉽지 않습니다. –
@ ChrisJester-Young 아니요, 혼합되지 않았습니다. 그것이 OP의 연습 문제입니다. - 인위적이고 비효율적이지만 올바른 목록 절차를 사용하는 것은 어렵지 않습니다. –
우리는 귀하가 완전한 해결책을 찾기 위해 커뮤니티에 요청하지 않고 직접이 문제를 해결하려고 시도했다고 생각합니다. 비록 당신이 어떤 노력을했는지 우리에게 보여주기위한 몇 가지 코드가있다면 (틀린 경우 라 할지라도) 질문과 국기를 다시 열어 다시 열어주십시오. 감사. – Kev
이 선생님은 아나 밀라노 바가 아니 었습니까? –
네, 그렇습니다;) – Outback