Pregunta

¿Hay alguna forma de averiguar en tiempo de ejecución, cuántas entradas (argumentos, parámetros) tiene una función?

Di, quiero:

(define (my-function unknown-function)
  ...
  (number-of-necessary-arguments unknown-function)
  ...)
¿Fue útil?

Solución

Puedes usar procedure-arity.

(procedure-arity expt)                     ; => 2

Tenga en cuenta que al usar procedure-arity con funciones variádicas o case-lambda o similares, los resultados son más complicados:

(procedure-arity apply)                    ; => (arity-at-least 2)
(procedure-arity (case-lambda
                  ((x) x)
                  ((x y z) z)
                  ((a b c d e f . g) g)))  ; => `(1 3 ,(arity-at-least 6))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top