【问题标题】:Trouble with Lambda in SchemeScheme中的Lambda问题
【发布时间】:2014-05-24 03:53:47
【问题描述】:

此问题存储有关纳税人及其纳税方式的信息 被计算。需要一个新类型的纳税人:;;纳税人是 结构(make-taxpayer inc c),其中 ;; inc 是一个非负数 (纳税人的收入),以及;; c 是一个函数 (Num -> Num) 消耗一个非负数;;收入并产生非负金额 税收;;欠该收入(定义结构纳税人(收入 计算)) 编写一个 Scheme 函数 average-taxes 消耗 纳税人结构列表,称为lotp,并产生平均值 lotp 中所有纳税人的应缴税款。如果lotp为空,那么 0 产生。例如,使用当前对应的函数 联邦税率,(平均税(列表(make-taxpayer 70000(lambda (a) (+ 6593 (* 0.22 (- a 43953)))) (make-taxpayer 0 (lambda (a) (* 0.15 a))) (make-taxpayer 140000 (lambda (a) (+ 28837 (* 0.29 (- a 136270))))))) => 14080.68

我正在尝试解决上述问题...以下是我的尝试:

(define-struct taxpayer (income calculation))

(define (average-taxes lotp)
  (/
   (foldr + 0
         (map (lambda (t) ((taxpayer-calculation t) taxpayer-income t)) lotp))
    (length lotp)))
I get the following error when running this test:

    (define mylist
      (list
    (make-taxpayer 70000 (lambda (a) (+ 6593 (* 0.22 (- a 43953)))))
    (make-taxpayer 0 (lambda (a) (* 0.15 a)))
    (make-taxpayer 140000 (lambda (a) (+ 28837
    (* 0.29 (- a 136270)))))))

    (average-taxes mylist) =>

    ... 2 Quesion 4.rkt:11:21: expects only 1 argument, but found 2

关于为什么会发生错误以及我可以使用哪些方法的任何建议?

【问题讨论】:

    标签: lambda scheme


    【解决方案1】:

    你有一个简单的错字; taxpayer-income是一个程序所以你需要说(taxpayer-income t)

    (define (average-taxes lotp)
      (/ 
       (foldr + 0
              (map (lambda (t) ((taxpayer-calculation t) (taxpayer-income t))) lotp))
       (length lotp)))
    

    【讨论】:

      猜你喜欢
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 2011-02-19
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多