球拍中的arguments.callee(方案)?

时间:2018-07-31 04:21:31

标签: javascript arguments scheme racket

我需要Racket(方案)中JavaScript的功能arguments.callee。你知道吗?

这是JavaScript中的示例

function makeFactorialFunc() {
 return function(x) {
   if (x <= 1)
     return 1;
   return x * arguments.callee(x - 1);
 };
}

1 个答案:

答案 0 :(得分:3)

您无法在Racket中以动态方式获取当前正在执行的函数,但是您肯定可以在Racket中通过仅给函数命名来实现该函数:

(define (make-factorial-func)
  (define (func x)
    (if (<= x 1)
        1
        (* x (func (- x 1)))))
  func)

您可能出于某种原因而感觉需要arguments.callee的动态性,并且有可能通过其他某种机制来实现该目标,但是您似乎并没有提供任何背景信息为什么您认为在您的问题中这是必要的,我无法猜测其他机制可能是什么。