Как передать оператор в функцию схемы - PullRequest
2 голосов
/ 16 марта 2012

У меня проблемы с функцией схемы.

(define myfun(operator lis)
   (if(null? lis)
     '()
    (cons(operator (car lis)(car lis))myfun(operator (cdr lis))
))))

Функция принимает оператор в качестве параметра и список, например (+'(1 2 3 4)) и ошибка, которую я получаю, когда пытаюсь вызвать функцию: ожидание числа, но получение списка. Итак, мой вопрос, как я могу рекурсивно вызвать функцию с оператором и списком?

ОБНОВЛЕНИЕ: просто нужен знак ' перед оператором.

1 Ответ

4 голосов
/ 16 марта 2012

Просто передайте + в функцию, без кавычек.+ обозначает функцию сложения.

(define (apply-op op x)
  (op x x))

будет выполнять

(apply-op + 2)  ==>  4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...