;;; 2.15b.scm ;;; ;;; $Id: 2.15b.scm 1.2 2024/12/07 12:12:25 s Exp $ ; ; bc, Before-tax cash flow ; nbc, nominal before-tax cash flow ; da, Depletion ; ti, Taxable income ; tax ; ac, After-tax cash flow ; tr, tax rate ; ir, infration rate ; ic, initial capital expenditure ; dr, discount rate ; df, discount factor ; ny ; pvac, present value of ac (use gauche.sequence) (define (main args) ; procedure (define sum (lambda (x) (fold + 0 x))) ; input (define tr 0.34) (define ir 0.04) (define dr 0.12) (define ic 10e6) (define ny 5) (define bc (list (- ic) 2990e3 2990e3 2990e3 2990e3 2990e3)) (define da (list 0 (/ ic ny) (/ ic ny) (/ ic ny) (/ ic ny) (/ ic ny))) (define keisen "") (define dash "-") ; calculation (define infl_fac (map-with-index (lambda (i _) (expt (+ 1 ir) i)) bc)) (define nbc (map (lambda (x y) (* x y)) infl_fac bc)) (define ti (map (lambda (x y) (if (>= x y) (- x y) 0)) nbc da)) (define tax (map (lambda (x) (* x tr)) ti)) (define ac (map (lambda (x y) (- x y)) nbc tax)) (define df (map-with-index (lambda (i _) (/ (expt (+ 1 dr) i))) bc)) (define pvac (map (lambda (x y) (* x y)) ac df)) (define sumpvac (sum pvac)) ; output (print "2.15b.scm") (format #t "~10@a~10@a~10@a~10@a~10@a~10@a~10@a~10@a~10@a~10@a\n" "year" "bc" "infl_fac" "nbc" "da" "ti" "tax" "ac" "df" "pvac") (for-each-with-index (lambda (i x1 x2 x3 x4 x5 x6 x7 x8 x9) (format #t "~10d~10d~10,3f~10d~10d~10d~10d~10d~10,3f~10d\n" i (x->integer x1) x2 (x->integer x3) (x->integer x4) (x->integer x5) (x->integer x6) (x->integer x7) x8 (x->integer x9) ) ) bc infl_fac nbc da ti tax ac df pvac ) (format #t "~90@a~10d\n" "sum of pvac=" (x->integer sumpvac)) (print "note") (print "bc: before-tax cash flow, infl_fac: inflation factor, nbc: nominal beforetax cash flow") (print "da: depletion, ti: taxable income, ac: after-tax cash flow, df: discount factor") (print "pvac: present value of after-tax cash flow") 0) ;;; end