一致表达

来源:互联网 发布:淘宝账号被限制登录 编辑:程序博客网 时间: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