Drracket列出只添加数字而忽略其他数据类型

Drracket列出只添加数字而忽略其他数据类型,racket,Racket,您好,我需要创建一个函数,该函数使用的列表只对列表中的数字求和,而忽略任何其他类型的数据(字符串等) 示例(仅添加数字(cons 5(cons“b”)(cons 2(cons“whatsup”empty())) 应该是(cons 7(cons“b”(cons“whatsup”为空))) 在收集数字并将其全部相加时,保持所有字符串或其他数据类型的顺序 如果没有数字,只有字符串,那么前面应该是0 示例(仅添加数字(cons“eb”(cons“b”(cons(使posn 5 0)(cons“whats

您好,我需要创建一个函数,该函数使用的列表只对列表中的数字求和,而忽略任何其他类型的数据(字符串等)

示例(仅添加数字(cons 5(cons“b”)(cons 2(cons“whatsup”empty())) 应该是(cons 7(cons“b”(cons“whatsup”为空)))

在收集数字并将其全部相加时,保持所有字符串或其他数据类型的顺序

如果没有数字,只有字符串,那么前面应该是0

示例(仅添加数字(cons“eb”(cons“b”(cons(使posn 5 0)(cons“whatsup”为空);) 应显示为(cons 0(cons“eb”(cons“b”(cons(使posn 5 0)(cons“whatsup”为空);)


非常感谢你的帮助

这闻起来有点像家庭作业,我会让你走上正轨:

#!/usr/bin/racket
#lang racket

(define (sum lst)
  (foldl (lambda (num sum)
           (if (number? num) (+ sum num) sum))
         0
         lst))

(sum '(1 2 "hello"))
这将返回一个平面列表的总和。。。应该是一个更简单的步骤,将其推到列表的前面


请注意,该函数为每个元素、起始值和列表应用一个函数。

如果答案对您有帮助,您应该选择它作为正确答案。这似乎是一个典型的家庭作业问题。。。希望您没有使用stackoverflow为您完成工作。我建议你表现出你在这方面的努力。考虑使用递归算法。此外,考虑把这在计算机科学堆栈交换作为一个算法问题。我不知道为什么FoLDR过滤器等没有定义在我的球拍…我有5.3.3版,我应该把它们定义为助手函数吗?嘿,我不知道为什么Drracket中没有定义foldr,foldl也没有,我可以使用其他类型吗?你可以自己创建,可能使用
map