![](/img/trans.png)
[英]How would I write a function in Dr. Racket which consumes a list of 2 possible symbols and replaces them with something else?
[英]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.