scheme 符号求导程序

SICP 习题:


#lang scheme

( define ( variable? x )
   ( symbol? x ) )

( define ( same-variable? x y )
   ( and ( variable? x )
         ( variable? y )
         ( eq? x y ) ) )

( define ( =number? exp num )
   ( and ( number? exp )
         ( = exp num ) ) )

( define ( addend x )
   ( cadr x ) )

( define ( augend x )
   ( if ( null? ( cdddr x ) )
        ( caddr x )
        ( cons '+ ( cddr x ) ) ) )

( define ( sum? x )
   ( and ( pair? x )
         ( eq? ( car x ) '+ ) ) )

( define ( make-sum x y )
   ( cond
      [ ( =number? x 0 ) y ]
      [ ( =number? y 0 ) x ]
      [ ( and ( number? x )
              ( number? y ) )
        ( + x y ) ]
      [ else
        ( list '+ x y ) ] ) )

( define ( multiplier x )
   ( cadr x ) )

( define ( multiplicand x )
   ( if ( null? ( cdddr x ) )
        ( caddr x )
        ( cons '* ( cddr x ) ) ) )

( define ( product? x )
   ( and ( pair? x )
         ( eq? ( car x ) '* ) ) )

( define ( make-product x y )
   ( cond
      [ ( or ( =number? x 0 )
             ( =number? y 0 ) ) 0 ]
      [ ( =number? x 1 ) y ]
      [ ( =number? y 1 ) x ]
      [ ( and ( number? x )
              ( number? y ) )
        ( * x y ) ]
      [ else
        ( list '* x y ) ] ) )

( define ( exponentiation? exp )
   ( and ( pair? exp )
         ( eq? ( car exp ) '** ) ) )  

( define ( base exp )
   ( cadr exp ) )

( define ( exponent exp )
   ( caddr exp ) )

( define ( make-exponentiation base exp )
   ( cond
      [ ( =number? base 1 ) 1 ]
      [ ( =number? exp 1 ) base ]
      [ ( =number? exp 0 ) 1 ]
      [ else
        ( list '** base exp ) ] ) )

( define ( deriv expr var )
   ( cond
      [ ( number? expr ) 0 ]
      [ ( variable? expr )
        ( if ( same-variable? expr var ) 1 0 ) ]
      [ ( sum? expr )
        ( make-sum ( deriv ( addend expr ) var )
                   ( deriv ( augend expr ) var ) ) ]
      [ ( product? expr )
        ( make-sum ( make-product ( multiplier expr )
                                  ( deriv ( multiplicand expr ) var ) )
                   ( make-product ( deriv ( multiplier expr ) var )
                                  ( multiplicand expr ) ) ) ]
      [ ( exponentiation? expr )
        ( make-product ( make-product ( exponent expr )
                                      ( make-exponentiation ( base expr )
                                                            ( make-sum ( exponent expr ) -1 ) ) )
                       ( deriv ( base expr ) var ) ) ]
      [ else
        ( error "unkown exp" expr ) ] ) )


( deriv '( + 1 x ) 'x )
( deriv '( * ( * x y )
             ( + x 3 ) ) 'x )
( deriv '( * x y ( + x 3 ) ) 'x )



程序scheme是一种用于在移动设备上打开小程序的链接格式。通过使用程序scheme,可以在其他应用或网页中直接跳转到小程序。引用\[1\]中提到了一种实现方式,即通过准备一个H5页面,然后从H5页面跳转到小程序的URL Scheme来打开小程序。具体实现方式是使用JavaScript代码,例如使用location.href来跳转到指定的小程序URL Scheme。引用\[2\]中给出了一个示例,展示了如何通过scheme连接跳转到支付宝小程序。在示例中,使用window.location.href来跳转到指定的支付宝小程序scheme链接。根据具体的小程序使用的平台,scheme的格式可能会有所不同,需要根据实际情况进行相应的调整。 #### 引用[.reference_title] - *1* [微信小程序新能力:URL Scheme,可从短信跳转小程序](https://blog.csdn.net/liubangbo/article/details/117803878)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [支付宝小程序 scheme跳转](https://blog.csdn.net/weixin_38639882/article/details/118059763)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值