(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 true
(lambda (u v)
u
)
)
(setq false
(lambda (u v)
v
)
)
(setq myif
(lambda (condition )
(lambda (then else)
(condition then else)
)
)
)
( ( myif true) 'a 'b )
( ( myif false) 'a 'b )
(setq zero
(lambda (s z)
z
)
)
(setq one
(lambda (s z)
(s z)
)
)
(setq two
(lambda (s z)
(s (one s z) )
)
)
(setq three
(lambda (s z)
(s (two s z) )
)
)
(setq wrapvalue
(lambda ( step)
(lambda (u v)
(step u v)
)
)
)
(setq iszero
(lambda (n)
(n (lambda (x) true) false)
)
)
( (myif (iszero zero) ) 'a 'b)
( (myif (iszero one) ) 'a 'b)
( (myif (iszero two) ) 'a 'b)
( (myif (iszero three) ) 'a 'b)
))
))
本文通过定义宏和递归函数展示了LISP语言的特点。包括如何使用宏来打印表达式并递归处理列表,定义逻辑判断及数值运算,并实现了简单的数值表示和判断逻辑。

4607

被折叠的 条评论
为什么被折叠?



