2017-11-05 2 views
-1

클로저를 반환하는 프로 시저를 작성하려고합니다. 내 시리즈에 어떤 절차를 적용 할 수 있기를 원합니다. 이것은 내가 지금까지 가지고 있고 그것은 나를 위해 일하지 않습니다.계열에 프로 시저를 적용하는 클로저 작성

(define (forAll n m) 
    (lambda (op start) 
     (op (op n start) (+ n 1) m))) 

나는 이러한 작업을 수행 할 수 있도록하려면 : 당신은 당신이 그것에 재귀 수 있도록 로컬 프로 시저의 이름을 줄 필요가

(define my_iterator (forAll 1 5))  
(my_iterator + 0) → 15 
(my_iterator * 1) → 120 
(my_iterator (lambda (x y) (display x)(display " ")) "") → 1 2 3 4 5 

답변

0

을하며 계약보다 더 많은 인수를 가질 필요가 각 반복마다 상태를 전달해야하기 때문에 여기에 대략적으로 구현해야 할 부분이 있습니다.

(define (for-all from to) 
    (define (helper op start from) 
    (if stop-condition-expression 
     start 
     (helper op new-start-expression new-from-expression))) 

    (lambda (op start) 
    (helper op start from))) 
+0

정지 조건은 무엇입니까? –

+0

@ScrappyMontana 도우미에서'from '이'to'보다 큰 경우입니다. – Sylwester

관련 문제