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

时间:2013-02-27 02:41:34

标签: racket

你好我需要创建一个消耗列表的函数,该列表只汇总列表中的数字并忽略任何其他类型的数据(字符串等)

示例(仅添加数字(缺点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”为空)))))

非常感谢您的帮助!

1 个答案:

答案 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函数需要一个函数来应用每个元素,起始值和列表。