我对家庭作业的问题如下:
我有第一部分((define (double-list-elements s)
(if (null? s)
'()
(cons (* 2 (car s))
(double-list-elements (cdr s)))))
)完成
double-list-elements-one
但老实说我完全不知道如何继续(define (double-list-elements s)
(if (null? s)
'()
(cons (* 2 (car s))
(double-list-elements (cdr s)))))
(define (custom-map proc lst)
(if (null? lst)
'()
(cons (proc lst)
(custom-map proc (cdr lst)))))
(define (double-list-elements-one func s)
(custom-map double-list-elements s))
(double-list-elements-one double-list-elements '(1 2 3 4 5 6))
。任何指针都将非常感激。
关闭但没有雪茄:
(list (list 2 4 6 8 10 12) (list 4 6 8 10 12) (list 6 8 10 12) (list 8 10 12) (list 10 12) (list 12))
输出= {{1}}
我需要将double-list-elements传递给double-list-elements-one作为参数以及列表。
答案 0 :(得分:1)
您只需编写自己的map
,它非常非常与您已有的相似,只需将更改的部分作为过程参数传递,然后在右侧调用它位:
(define (mymap proc lst)
(if (null? lst)
'()
(cons <invoke proc on current element>
(mymap proc (cdr lst)))))
(define (double-list-elements-one s)
(mymap <pass a proper lambda> s))
(double-list-elements-one '(1 2 3 4 5))
=> '(2 4 6 8 10)