0
我想實現一個懶列表獲得2個數字爲論據:低& INT。拉姆達會返回一個可通過INT比低更大整除的所有整數的懶列表。方案:拉姆達回報#<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>
和返回任何結果呢?
謝謝。
非常感謝。我還有一個問題:你爲什麼使用空的lambda? –
@PillPilon什麼空拉姆達?我沒有看到空的lambda。 –
@PillPilon我同意克里斯。我不能選擇空身體的lambda。一個沒有正式表達式的lambda在那裏,但它也在你的實現中(通常稱爲thunk) – Sylwester