自定义 cons,car,cdr
Scheme 示例:
(define (my_cons x y)
(lambda (z) (z x y)))
(define (my_car m)
(m (lambda (p q) p)))
(define (my_cdr m)
(m (lambda (p q) p)))
Common Lisp:
(defun my_cons (x y)
(lambda (z) (funcall z x y)))
(defun my_ca_dr (m flag)
(funcall m (lambda (p q)
(cond ((= flag 0) p)
((= flag 1) q)))))
(defun my_car (m) (my_ca_dr m 0))
(defun my_cdr (m) (my_ca_dr m 1))
提示:
Common Lisp使用函数作为变量后,调用该变量时需要使用 funcall,(funcall 函数名 参数列表)。