我编写了一个程序来计算列表形式的表达式的导数,因此4x^3
表示为(* 4 (expt x 3))
,并且我正在编写一个测试套件来打印结果。我有一个函数runtest
,它接受一个表达式并计算关于它的导数x
并返回结果
(define (runtest test)
(display "diff x ")(display test)(display " => ")(display (diff 'x test)))
以便显示结果diff x expression => result
我将以下定义为测试:
(define test1 '4)
(define test2 '(* 2 x))
(define test3 '(* 2 y))
(define test4 '(+ x (* x x)))
(define test5 '(expt x 4))
然后我将所有测试放在一个列表中,这样我就可以映射列表并返回结果:
(define test-suite (list test1 test2 test3 test4 test5))
当我运行(map runtest test-suite)
而不是单独返回每个时,我会得到一个没有换行符的长列表,而我想要的是:
diff x 4 => 0
diff x '(* 2 x) => '(+ (* 0 x) (* 2 1))
diff x '(* 2 y) => '(+ (* 0 y) (* 2 0))
diff x '(+ x (* x x)) => '(+ 1 (* 2 x))
diff x '(expt x 4) => '(* 4 (expt x 3))
我错过了什么?