Мне нужна функция arguments.callee
JavaScript в Racket (Scheme). Ты знаешь как?
Вот пример в JavaScript
function makeFactorialFunc() {
return function(x) {
if (x <= 1)
return 1;
return x * arguments.callee(x - 1);
};
}
Вы не можете получить текущую исполняемую функцию динамически в Racket, но вы, безусловно, можете реализовать функцию в своем вопросе в Racket, просто указав ей имя:
(define (make-factorial-func)
(define (func x)
(if (<= x 1)
1
(* x (func (- x 1)))))
func)
Возможно, вы чувствуете, что по какой-то причине вам нужна динамическая arguments.callee
, и можно достичь этой цели с помощью какого-то другого механизма, но, видя, что вы не предоставляете никакого контекста, почему вы считаете его необходимым в своем вопрос, я не могу догадаться, что это за другой механизм.
rec
arguments.callee
недоступен в строгом режиме JavaScript. По той же причине эта функция недоступна в схеме / ракетке. (Это затрудняет эффективную компиляцию) developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…arguments.callee
полезен, когда вам нужно динамически обернуть скрипт в функции и вызвать эту новую функцию рекурсивным способом.