Scheme Double所有列表值和写映射函数

时间:2017-07-25 16:45:47

标签: scheme mapping

我对家庭作业的问题如下:

JSFiddle

我有第一部分((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作为参数以及列表。

1 个答案:

答案 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)