繁体   English   中英

我将如何在 Racket 博士中编写一个 function 消耗一个数字列表并生成一个已映射的新数字列表?

[英]How would I write a function in Dr. Racket which consumes a list of numbers and produces a new list of numbers which have been mapped?

我将如何在 Racket 博士中编写一个 function ,它使用一个数字列表(所有数字都是 25)并生成一个新的数字列表,其中每个前面的元素都添加了 50?

到目前为止,这是我的代码:

(define (new-funct f lst)
  (cond
    [(empty? lst) empty]
    [else (cons (f (first lst))
            (new-funct f (rest lst)))]))

(define (make-addition m)
  (lambda (n) (+ m n)))

(define add50 (make-addition 50))

如果我输入:

(new-funct add50 (list 25 25 25 25 25)) 

我预期的 output 是

(list 25 75 125 175 225)

为了解释 output,第一个元素保持不变。 然后,将 50 加到 25 中得到 75。然后,将 50 加到 75 中得到 125,依此类推。

而不是这个 output,我得到:

(list 75 75 75 75 75)

我将如何更正我的代码? 谢谢。

我建议在一系列索引上使用map到 map 并添加:

(define (agg-adder n lst)
  (map
    (λ (i x) (+ x (* n i)))
    (range (length lst))
    lst))

这将产生一个新列表,其中元素是原始列表中每个x的每个x + (n * (index of x))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM