簡體   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