蠢货别忘(一)common lisp funcall

自定义 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 函数名 参数列表)。

猜你喜欢

转载自www.cnblogs.com/qq1144054302/p/10633504.html