2014-05-24 78 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)))