6

関数が実行時にいくつの入力(引数、パラメーター)を持っているかを知る方法はありますか?

言う、私はしたい:

(define (my-function unknown-function)
  ...
  (number-of-necessary-arguments unknown-function)
  ...)
4

1 に答える 1

12

を使用できますprocedure-arity

(procedure-arity expt)                     ; => 2

procedure-arity可変個引数関数などで使用する場合case-lambda、結果はより複雑になることに注意してください。

(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))
于 2011-09-08T01:41:05.667 に答える