只需评估第一个符号(CHICKEN Scheme)

4
我该如何仅通过第一个术语来评估s表达式?
(define (fn x y) (print x) (print y))
(eval '(fn a b))

我正在尝试在一个更大的表达式中评估类似这样的内容,但解释器抱怨ab变量不存在(未绑定变量a)。

有没有什么办法可以保留符号不变?

我一直在试图找到相关信息,但无论如何都找不到。


(fn 'a 'b)? :) - rsm
谢谢,但最初我需要符号列表,然后我将深入评估函数。Eval可能是完美的选择,因为该函数将随后评估下一个符号作为函数。 - shuji
1个回答

2

以下方案如何?

(let ((expr '(fn a b)))
  (cons (eval (car expr)) (cdr expr)))

但请注意,如果您必须依赖于eval,那么您几乎肯定正在做错误的事情。


1
顺便说一下,如果你在IRC上提问,可能会得到更直接的回复;我们在Freenode的#chicken频道里。 - sjamaan
谢谢,是的,我的解决方案非常类似于这个(define (evals x) (apply (eval (car x)) (cdr x))) - shuji

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接