(mymachine (
(defmacro demoinside (expr)
(print expr)
)
(defmacro mymachineinside (exprs)
`(if ,(eq exprs nil)
nil
(progn
(print (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 s
(lambda (value)
(cons 'chenbing value)
)
)
(setq two
(lambda (s z)
(funcall s (funcall s z) )
)
)
(setq three
(lambda (s z)
(funcall s (funcall s (funcall s z ) ) )
)
)
(funcall two s nil)
(funcall three s nil)
(setq add
(lambda ( m n s z)
(funcall m s (funcall n s z) )
)
)
(setq power
(lambda ( m n s z)
(funcall (funcall m n s ) z )
)
)
(setq wrap
(lambda (n)
(lambda (next)
(lambda (result)
(funcall n next result)
)
)
)
)
(funcall add two three s nil)
(setq wrapthree (funcall wrap three) )
(funcall power two wrapthree s nil)
(funcall power three wrapthree s nil)
))
))