+
обычная процедура в схеме, и если вы оцениваете это оценит символ, и вы получите в зависимости от реализации представление объекта процедуры:
+ ; ==> <procedure: +> (or something similar)
Теперь +
просто переменная, , при оценке, оценивает процедуру. Как назвать это просто suround его в скобках:
(+) ; ==> 0
Что происходит, что схема видит круглые скобки, затем вычисляет первый аргумент +
и становится процедура <procedure: +>
. Поскольку это процедура, аргументы оцениваются в любом порядке, и последняя процедура применяется с этими оцененными аргументами.
Если tab
является объектом процедуры, которую вы не можете применить car
или cdr
. Вы можете сделать это до результата вызова, если он оценит пару. Аналогично, если вы хотите вызвать процедуру translate
с аргументом x
, это должно выглядеть как (translate x)
. Соединив все это:
(define p
(let* ((tab-result (tab))
(x (car tab-result))
(y (cadr tab-result)))
(list (translate x) y)))
Спасибо! (Это показало, что мне нужно отдохнуть :)) –