3
目標:實施unfold
函數只使用兩個參數。在計劃中展開功能
的參數:
- 第一個參數爲f這需要一些類型I和返回nil或缺點對的兩個元件(第一這兩個中的一個初始值是下一個元素進入一些類型A的列表以及某種類型I的下一個初始值)。
- 第二個參數是某種類型的我的初始值和回報是A型的項目列表
這是我到目前爲止,我不知道爲什麼它不工作:
(define (descending i)
(if (= i 0)
(list)
(cons i (- i 1))))
(define nil (list))
(define (unfold f init)
(if (eq? (f init) '())
(list)
(cons init (unfold f (f init)))))
(unfold (descending 5))
應該求
'(5 4 3 2 1)
這應該是結果,但並非如此。我究竟做錯了什麼?
我明白了!謝謝!另外,如果我想定義返回'(-100 ... 100)的升序函數,我不確定爲什麼下面的代碼停在-5:(define(ascending i) (if(= i( - i)) (= i(0)) (cons i(+ i 5)))) (展開式升序( - 100)) – 2012-02-15 00:21:57
您的情況存在'(= i( - i))',相當於'(= i 0 )',所以它停在0,最後一個是'-5'。 – 2012-02-15 00:28:51
我想我只需要做(=我(105))。我只是認爲我可以定義這個函數,使它能夠打印所有數字,包括最初的負數。 – 2012-02-15 00:31:59