지금 몇 주 동안 누적 함수를 구현하려고했습니다. 필자는 목록 전체를 반복하고 각 요소에 대해 함수를 실행하는 "Map"함수를 제대로 구현했습니다. 내가 구현하는이 기능을 사용하고스키마에서 "누적"기능 구현
(define accumulate
(lambda (op base func ls)
(if(null? ls)
ls
(cond (not (null? (cdr ls)) (op base (map func ls) (accumulate op base func (cdr ls))))
(op base (map func ls) (op base (func(car ls))))
)
)))
;It gets to a point (the last element) after applying the map function to each element,
;where it is '(number) instead of an expected "number" (outside of()). I cannot figure out
;how to circumvent this.
나는이 권리를 얻는 방법에 갇혔어요 "축적". 이 작업을 수행하는 올바른 방법은 무엇입니까?
의도 된 결과는 다음과 같습니다
당신은 목록을 작동하는 접이식 절차를 구현하려는; accumulate: combines using OP the values of a list LS after mapping a function FUNC on it
; (accumulate + 0 sqr '(1 2 3)) => 14
; (accumulate * 1 sqr '(1 2 3)) => 36
;
'cond' 문이 올바르지 않다고 생각합니다. – chepner
정확히 'accumulate'의 출력이 될 것이라고 예상되는 출력을 가진 샘플 입력을 제공하십시오. –
또한 왜, 어떻게해야합니까? (cond ((not (null (cdr ls)) 'map'이 필요합니까? 여러분의 입력 내용이 _lists_의 목록인지 확신 할 수 있습니까? –