(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