Вот как вы должны вызывать вашу процедуру:
(myadd 3 4) ; option 1
Поскольку она ожидает двух параметров x
и y
, которые связаны с 3
и 4
в примере. Это не сработает:
(myadd '(3 4))
Выше передается аргумент single - список с двумя элементами. Не только число аргументов неверно, но и тип, так как процедура ожидает два числа.
Теперь, если два значения, которые вы хотите передать процедуре myadd
, приходят как список откуда-то еще у вас есть две возможности передать их, либо явно извлечь их:
(define args '(3 4))
(myadd (car args) (cadr args)) ; option 2
, либо использовать apply
, чтобы вызвать вашу процедуру со списком:
(apply myadd '(3 4)) ; option 3
Любой из трех параметров, описанных выше, вернет значение 7
, но я держу пари, что вам просто интересен самый простой вариант - вариант №1.