#!r6rs ( import ( rnrs base ( 6 ) ) ( rnrs io simple ( 6 ) ) ) ( define ( deriv exp var ) ( define ( variable? x ) ( symbol? x ) ) ( define ( =number? exp num ) ( and ( number? exp ) ( = exp num ) ) ) ( define ( same-variable? x1 x2 ) ( and ( variable? x1 ) ( variable? x2 ) ( eq? x1 x2 ) ) ) ( define ( make-sum a1 a2 ) ( cond ( ( =number? a1 0 ) a2 ) ( ( =number? a2 0 ) a1 ) ( ( and ( number? a1 ) ( number? a2 ) ) ( + a1 a2 ) ) ( else ( list '+ a1 a2 ) ) ) ) ( define ( make-product m1 m2 ) ( cond ( ( or ( =number? m1 0 ) ( =number? m2 0 ) ) 0 ) ( ( =number? m1 1 ) m2 ) ( ( =number? m2 1 ) m1 ) ( ( and ( number? m1 ) ( number? m2 ) ) ( * m1 m2 ) ) ( else ( list '* m1 m2 ) ) ) ) ( define ( sum? x ) ( and ( pair? x ) ( eq? ( car x ) '+ ) ) ) ( define ( addend s ) ( cadr s ) ) ( define ( augend s ) ( caddr s ) ) ( define ( product? x ) ( and ( pair? x ) ( eq? ( car x ) '* ) ) ) ( define ( multiplier p ) ( cadr p ) ) ( define ( multiplicand p ) ( caddr p ) ) ( cond ( ( number? exp ) 0 ) ( ( variable? exp ) ( if ( same-variable? exp var ) 1 0 ) ) ( ( sum? exp ) ( make-sum ( deriv ( addend exp ) var ) ( deriv ( augend exp ) var ) ) ) ( ( product? exp ) ( make-sum ( make-product ( multiplier exp ) ( deriv ( multiplicand exp ) var ) ) ( make-product ( deriv ( multiplier exp ) var ) ( multiplicand exp ) ) ) ) ( else ( error "unknown expression type: DERIV" exp ) ) ) )
转载于:https://www.cnblogs.com/bhlsheji/p/4007944.html
相关资源:数据结构—成绩单生成器