你好我需要创建一个消耗列表的函数,该列表只汇总列表中的数字并忽略任何其他类型的数据(字符串等)
示例(仅添加数字(缺点5(缺点“b”(缺点2(缺点“whatsup”为空))))) 应该出来(cons 7(cons“b”(cons“whatsup”空)))
在收集数字并将它们全部添加时,保持所有字符串或其他数据类型的顺序。
如果没有数字,只有字符串,那么前面的数字应为0
示例(仅添加数字(cons“eb”(cons“b”(cons(make posn 5 0)(cons“whatsup”为空))))) 应该出来(cons 0(cons“eb”(cons“b”(cons(make posn 5 0)(cons“whatsup”为空)))))
非常感谢您的帮助!
答案 0 :(得分:0)
由于这有点像家庭作业,我会让你走上正轨:
#!/usr/bin/racket
#lang racket
(define (sum lst)
(foldl (lambda (num sum)
(if (number? num) (+ sum num) sum))
0
lst))
(sum '(1 2 "hello"))
所以这将返回一个平面列表的总和...应该是一个更简单的步骤,将其推到列表的前面。
请注意,foldl
函数需要一个函数来应用每个元素,起始值和列表。