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