0
인자로 2 개의 숫자를 얻는 지연 목록을 구현하고자합니다 : low & int. lambda는 low보다 크고 int로 나눌 수있는 모든 정수의 lazy-list를 반환합니다. 구현의구성표 : 람다 반환 # <void> 대신 아무 것도 없음
> (define lz1 (div-from 5 12))
> (take lz1 3)
'(12 24 36)
내 시도 :
>(define gen_item
(lambda (n int)
(cons (cond ((= 0 (modulo n int)) n))
(lambda() (gen_item (+ n 1) int)))))
것은이 implemenatation을 사용 : 예를 들어
>(define take
(lambda (lz-lst n)
(if (= n 0)
(list)
(cons (car lz-lst)
(take (tail lz-lst) (sub1 n))))))
난 람다 실행하면 :
을(테이크 (gen_item 5 ~ 12) 20)
반환 값 :
'(#<void> #<void> #<void> #<void> #<void>
#<void> #<void> 12 #<void> #<void>
#<void> #<void> #<void> #<void> #<void>
#<void> #<void> #<void> #<void> 24)
어떻게 내가 람다 반환 #<void>
을 방지 할 수 있습니다 대신 아무 것도 반환하지?
감사합니다.
대단히 고마워요. 나는 여전히 한 가지 질문이 있습니다. 왜 빈 람다를 사용 했습니까? –
@ 필illPilon 어떤 빈 람다? 나는 빈 람다를 보지 않는다. –
@PillPilon 나는 Chris에 동의한다. 나는 빈 몸으로 람다를 볼 수 없다. 정식이없는 람다는 거기에 있지만 구현시에도 (일반적으로 썽크라고도 함) – Sylwester