CALC WITHOUT CONTROL 1

本文探讨了使用递归和Lambda表达式实现数值运算的方法,包括加法、减法及求和等操作,并通过具体的代码示例展示了如何利用这些概念进行编程实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(mymachine   (

(defmacro  demoinside  (expr)

(print  expr)

)

(defmacro  mymachineinside  (exprs)

`(if  ,(eq  exprs  nil) 

      nil

     (progn

          (demoinside ,(car  exprs)) 

         (mymachineinside  ,(cdr  exprs) )

      )

)

)

 

(mymachineinside   (

(defmacro  demo  (expr)

(print  expr)

)

(defmacro  mymachine  (exprs)

`(if  ,(eq  exprs  nil) 

      nil

     (progn

          (demo ,(car  exprs)) 

         (mymachine  ,(cdr  exprs) )

      )

)

)

(setq zero  

       (lambda (f  x)

           x

       )

)

 

(setq  one 

        (lambda  (f  x)

          (funcall f x)

        )

)

 

(setq addone

       (lambda (n)

          (lambda (f x)

               (funcall f  (funcall  n  f  x) )

          )

       )

)

 

(setq  two 

        (funcall addone  one)

)

 

(setq  three 

        (funcall addone  two)

)

 

(setq  chenbing

       (lambda (value)

           (cons 'chenbing value)

       )

)

(setq  add

      (lambda (m n)

        (funcall  m   addone  n ) 

      )

)

 

(setq five 

      (funcall  add  two three) 

)

 

(funcall  five  chenbing  nil)

 

 

 

 

(setq  true

       (lambda (u v)

          u

       )

)

 

(setq  false

       (lambda (u v)

          v

       )

)

 

(setq iszero 

      (lambda (n)

        (funcall  n  (lambda(x)false)  true)

      )

)

 

(setq  myif  

        (lambda (con  then else)

            (funcall  con  then else)

        )

)

(funcall myif true 'a 'b)

(funcall myif false 'a 'b)

 

 

 

(setq  wrapsub

      (lambda (f)

          (lambda (p)

               (cons false  (funcall myif  (car p) (cdr p)  (funcall  f  (cdr p) ) ) ) 

          )      

      )

 

(setq  subone

      (lambda (n)

         (lambda ( f  x)

             (cdr  (funcall  n  (funcall wrapsub  f )  (cons  true  x) ) )

         )

       )

)

 

(setq four (funcall  subone  five) )

(funcall  four  chenbing  nil)

 

(setq  sum 

(lambda( n)

(funcall  myif  (funcall iszero  n)  zero  (funcall add  n    (funcall  subone n)  ) )

)

)

 

(setq  result  (funcall  sum  zero) )

(funcall  result  chenbing  nil)

(setq  result  (funcall  sum  five) )

(funcall  result  chenbing  nil)

(setq   ten  (funcall  add  five  five) )

(funcall  ten  chenbing  nil)

(setq  result  (funcall  sum  ten) )

(funcall  result  chenbing  nil)

 

))

))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值