Не является ли quote <attr>
в выражении [(equal? msg (quote <attr>)) <attr>]
также методом?
Предположим, вы имеете в виду «функцию», тогда да, но это функция, которая будет оцененаво время выполнения.Например, my-class
- это функция, которая будет оцениваться во время компиляции, поскольку она была определена с помощью define-syntax
.
Кажется, вы используете my-class
для расширения определения "метода" bigger-x
, который представляет собой функцию, которая сравнивает некоторое значение x
с аргументом.В этом случае cond
будет оцениваться во время выполнения, а (quote <attr>)
расширится до символа, если <attr>
окажется идентификатором.Без некоторого контекста трудно понять, что может быть x
(и возникнет исключение, если переменная x
не найдена во время выполнения), и способ определения my-class
потребует от вас всегда передавать (method (bigger-x other) (> x (other 'x)))
(или аналогичный синтаксис, поскольку method
, bigger-x
и т. д. будут связаны как переменные), чтобы он соответствовал допустимому синтаксису.