схема - сделать круг в нетерпении метода - PullRequest
0 голосов
/ 18 апреля 2011

В следующем коде мы строим круг на схеме:

 (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 голосов
/ 18 апреля 2011

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. Анонимная функция (лямбда) проверяет m, чтобы выяснить, какое поле вы хотите получить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...