计划 - 用急切的方法制作一个圆圈

时间:2011-04-18 08:10:55

标签: scheme

在下一个代码中,我们在Scheme中构建一个圆圈:

 (define make-circle (lambda (x-center y-center radius)
(cons 'circle 
(lambda (m)
        (cond ((eq? m 'x) x-center)
                  ((eq? m 'y) y-center)
        (else radius))))))

变量m的含义是什么?意思 - 从我们得到m的地方,以及意思是什么,例如,cond:“((eq? m 'x) x-center)”。

1 个答案:

答案 0 :(得分:0)

m最有可能意味着“消息”。它可用于获取圆形数据结构的相应字段,例如

(define my-circle (make-circle 1 2 3))

; cdr is here because circle is a cons of 'circle and lambda, 
; better abstract it out in real code
((cdr my-circle) 'y) 

将导致2。匿名函数(lambda)测试m以确定要获取的字段。