The differentiation program with abstract data

it2025-09-27  60

#!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

相关资源:数据结构—成绩单生成器
最新回复(0)