Scheme:如何测试对象是否为lambda表达式

Scheme:如何测试对象是否为lambda表达式,lambda,scheme,Lambda,Scheme,如何测试scheme中的对象是否为lambda表达式?看起来像这样的东西: (define call-if-can (lambda (x) (if (function? x) (x) x))) 谢谢大家! 尝试使用谓词,这是标准方案: (define (call-if-can x) (if (procedure? x) (x) x)) 它按预期工作: (define (test) (+ 1 1)) (call-if-can

如何测试scheme中的对象是否为lambda表达式?看起来像这样的东西:

(define call-if-can (lambda (x)
    (if (function? x)
        (x)
        x)))
谢谢大家!

尝试使用谓词,这是标准方案:

(define (call-if-can x)
  (if (procedure? x)
      (x)
      x))
它按预期工作:

(define (test) (+ 1 1))

(call-if-can 1)
=> 1
(call-if-can test)
=> 2

也许
过程?
是最接近的。“尝试使用过程
过程?
”将更符合计划术语。我还没有看到关于写函数的Scheme的文献。@sylvester我试图避免重复:P。事实上,在这种情况下,谓词是一个更精确的词。