;;; 4.11a.scm ;;; 2016-03-26, 2024-09-15 ;;; $Id: 4.11a.scm 1.2 2024/11/02 07:43:49 s Exp $ (define (main args) ; x : cash flow stream ; s : spot rate ; d : discount factor ; pv : present value ; procedure (define sum (lambda (x) (fold + 0 x))) ; input (define x '(-40 10 10 10 10 10 10 )) (define s_percent '( 0 5.0 5.3 5.6 5.8 6.0 6.1)) ; calculate (define k (iota (length x))) (define s (map (lambda (x) (/ x 100)) s_percent)) (define d (map (lambda (x i) (/ 1 (expt (+ 1 x) i))) s k)) (define xd (map * x d )) (define pv (sum xd)) ; output (print "4.11a.scm") (print "k " (map (lambda (x) (format "~6d" x)) k )) (print "s " (map (lambda (x) (format "~6,3f" x)) s )) (print "d " (map (lambda (x) (format "~6,3f" x)) d )) (print "x " (map (lambda (x) (format "~6d" x)) x )) (print "xd" (map (lambda (x) (format "~6,2f" x)) xd)) (print "pv" (format "~7,2f" pv)) 0) ;;; end