2014-05-24 38 views
-2

此问题存储有关纳税人的信息以及他们的税收如何计算。需要新型纳税人:;;纳税人是 结构(make-taxpayer inc c),其中;; inc是一个非负数 (纳税人的收入),和;; c是 消耗非负的函数(Num - > Num);;收入和产生税收的非负金额 ;; (定义 - 结构纳税人(收入 计算))编写一个计划函数平均税 - 消费纳税人结构名称为lotp的 列表,并产生所有纳税人在lotp中所欠税额的平均值 。如果lotp为空,则产生 0。例如,使用与当前的联邦税率相对应的函数,(平均税(列表(制造税纳税人70000(lambda (a)(+ 6593(* 0.22( - a 43953)))))(制造税纳税人0 (拉姆达(一)(* 0.15)))(补充纳税人140000(拉姆达(A)(+ 28837(* 0.29( - 一136270))))))) => 14080.68Lambda在计划中遇到问题

我试图解决上述问题......下面是我的尝试:

(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 

任何意见,至于为什么错误发生什么办法,我可以使用?

回答

0

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

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