(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 two
(lambda (s z)
(s (s z) )
)
)
(funcall two formal nil)
(setq three
(lambda (s z)
(s (s (s z) ) )
)
)
(funcall two formal nil)
(funcall three formal nil)
(setq add
(lambda (m n s z)
(funcall m s (funcall n s z) )
)
)
(funcall add two three formal nil)
(setq wrap
(lambda (n)
(lambda (next)
(lambda (result)
(funcall n next result)
)
)
)
)
(setq mul
(lambda ( m n s z)
(funcall (funcall m (funcall n s) ) z)
)
)
(setq wraptwo (funcall wrap two) )
(setq wrapthree (funcall wrap three) )
(funcall mul wraptwo wrapthree formal nil)
))
))