一致表达
来源:互联网 发布:淘宝账号被限制登录 编辑:程序博客网 时间:2024/04/30 14:49
(defun mycons ( x y)
(lambda (p ) (funcall p x y ) )
)
(defun mycar (z)
(funcall z (lambda ( a b) a) )
)
(defun mycdr (z)
(funcall z (lambda (a b ) b) )
)
(mycar (mycons 4 5) )
(mycdr (mycons 4 5) )
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$4
(defun mycons2 ( x y)
(lambda (p ) (funcall p x (lambda () y ) ) )
)
(defun mycar2 (z)
(funcall z (lambda ( a b) a) )
)
(defun mycdr2 (z)
(funcall z (lambda (a b ) (funcall b )) )
)
(mycar2 (mycons2 4 5) )
(mycdr2 (mycons2 4 5) )
(defun int (n)
(mycons2 n (int (+ n 1) ))
)
(setq chen (int 1) )
(mycar2 chen)
(mycdr2 chen)
'can't success
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
语法转换lambda()是自动加的
(defun mycons3 ( x y)
(lambda (p ) (funcall p x y ) )
)
(defun mycar3 (z)
(funcall z (lambda ( a b) a) )
)
(defun mycdr3 (z)
(funcall z (lambda (a b ) (funcall b )) )
)
(print (mycar3 (mycons3 4 (lambda () 5 )) ))
(print (mycdr3 (mycons3 4 (lambda () 5 )) ))
(defun int (n)
(mycons3 n (lambda () (int (+ n 1) )))
)
(setq chen (int 10) )
(print (mycar3 chen) )
(print (mycar3 (mycdr3 chen)))
(print (mycar3 (mycdr3 (mycdr3 chen))))
it works
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
语法转换quote是自动加的
(defun mycons4 ( x y)
(lambda (p ) (funcall p x y ) )
)
(defun mycar4 (z)
(funcall z (lambda ( a b) a) )
)
(defun mycdr4 (z)
(funcall z (lambda (a b ) (funcall b )) )
)
(mycar4 (mycons4 4 (quote 5 )) )
(mycdr4 (mycons4 4 (quote 5 )) )
(defun int (n)
(mycons4 n (quote (int (+ n 1) ))
)
(setq chen (int 1) )
(mycar4 chen)
(mycar4 (mycdr4 chen))
(mycar4 (mycdr4 (mycdr4 chen)))
it doesn't work