Как я могу оценить s-выражение только по первому члену?
(define (fn x y) (print x) (print y))
(eval '(fn a b))
Я пытаюсь оценить что-то подобное в большем выражении, но интерпретатор жалуется, что переменные a и b не существуют (несвязанная переменная а).
Есть ли что-то, что я могу сделать, чтобы оставить символы такими, какие они есть?
Я пытался найти информацию об этом, но я не могу найти ее нигде.
Спасибо, но сначала мне нужен список символов, оттуда я буду углубляться в функцию. Eval может быть идеальным, потому что функция затем будет оценивать следующие символы как функции.





Как насчет следующего?
(let ((expr '(fn a b)))
(cons (eval (car expr)) (cdr expr)))
Но учтите, что если вам приходится полагаться на eval, вы почти наверняка делаете что-то неправильно.
Кстати, вы можете получить более прямые ответы, если спросите в IRC; мы в #chicken на Freenode.
спасибо, да, мое решение было очень похоже на это (define (evals x) (apply (eval (car x)) (cdr x)))
(fn 'a 'b)? :)